/[drupal]/contributions/modules/uc_addresses/uc_addresses_address_pane.inc
ViewVC logotype

Contents of /contributions/modules/uc_addresses/uc_addresses_address_pane.inc

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.17 - (show annotations) (download) (as text)
Mon Apr 20 20:54:43 2009 UTC (7 months, 1 week ago) by freixas
Branch: MAIN
CVS Tags: HEAD
Changes since 1.16: +0 -0 lines
File MIME type: text/x-php
*** empty log message ***
1 <?php
2 // $Id: uc_addresses_address_pane.inc,v 1.3 2008/05/29 15:52:50 freixas Exp $
3
4 /**
5 * @file
6 * This file contains the callbacks for the default address panes and their
7 * corresponding helper functions.
8 *
9 * Address panes are defined using hook_address_pane() and use a callback to handle
10 * the different processes involved in address viewing/editing. The default address
11 * panes are defined in uc_addresses_address_pane() in
12 * uc_addresses.module.
13 *
14 * @ingroup uc_addresses
15 */
16
17 /**
18 * Create, edit, process or view the Address pane.
19 *
20 * @param $op The name of the operation to perform. One of 'new',
21 * 'add, 'edit', 'process' or 'view'.
22 * @param $address The address object.
23 * @param $form_values If op = 'process', this is an array storing the
24 * values the user entered for the form.
25 * @return If $op is 'new', 'add' or 'edit', return a form. If $op is
26 * 'process', return an address object. If $op is 'view', return
27 * an array of address fields to view.
28 * @ingroup forms
29 */
30 function uc_addresses_pane_address($op, $address, $form_values) {
31 global $user;
32
33 switch ($op) {
34 case 'new':
35 case 'add':
36 $description = t('Enter your new address information.');
37 $form['address'] = array(
38 '#type' => 'fieldset',
39 '#title' => t('Add an address'),
40 '#collapsible' => TRUE,
41 '#collapsed' => FALSE,
42 );
43
44 if (!$address) {
45 $address = uc_addresses_blank_address();
46 }
47
48 if (uc_address_field_enabled('first_name')) {
49 $form['address']['first_name'] = uc_textfield(uc_get_field_name('first_name'), $address->first_name, uc_address_field_required('first_name'));
50 }
51 if (uc_address_field_enabled('last_name')) {
52 $form['address']['last_name'] = uc_textfield(uc_get_field_name('last_name'), $address->last_name, uc_address_field_required('last_name'));
53 }
54 if (uc_address_field_enabled('company')) {
55 $form['address']['company'] = uc_textfield(uc_get_field_name('company'), $address->company, uc_address_field_required('company'), NULL, 64);
56 }
57 if (uc_address_field_enabled('street1')) {
58 $form['address']['street1'] = uc_textfield(uc_get_field_name('street1'), $address->street1, uc_address_field_required('street1'), NULL, 64);
59 }
60 if (uc_address_field_enabled('street2')) {
61 $form['address']['street2'] = uc_textfield(uc_get_field_name('street2'), $address->street2, uc_address_field_required('street2'), NULL, 64);
62 }
63 if (uc_address_field_enabled('city')) {
64 $form['address']['city'] = uc_textfield(uc_get_field_name('city'), $address->city, uc_address_field_required('city'));
65 }
66 if (uc_address_field_enabled('country')) {
67 $form['address']['country'] = uc_country_select(uc_get_field_name('country'), $address->country, NULL, 'name', uc_address_field_required('country'));
68 }
69 if (uc_address_field_enabled('zone')) {
70 $country_id = $address->country;
71 if ($op == 'add') {
72 if (isset($_POST['panes'], $_POST['panes']['address'], $_POST['panes']['address']['country'])) {
73 $country_id = intval($_POST['panes']['address']['country']);
74 }
75 }
76 else {
77 if (isset($_POST['country'])) {
78 $country_id = intval($_POST['country']);
79 }
80 }
81
82 $form['address']['zone'] = uc_zone_select(uc_get_field_name('zone'), $address->zone, NULL, $country_id, 'name', uc_address_field_required('zone'));
83 }
84 if (uc_address_field_enabled('postal_code')) {
85 $form['address']['postal_code'] = uc_textfield(uc_get_field_name('postal_code'), $address->postal_code, uc_address_field_required('postal_code'), NULL, 10, 10);
86 }
87 if (uc_address_field_enabled('phone')) {
88 $form['address']['phone'] = uc_textfield(uc_get_field_name('phone'), $address->phone, uc_address_field_required('phone'), NULL, 32, 16);
89 }
90 if ($op == 'add') {
91 $form['address']['address_name'] = uc_textfield(t('Save as'), $address->address_name, FALSE, t('Enter a name for this address (e.g. Home or Work)'));
92
93 $form['address']['save'] = array(
94 '#type' => 'checkbox',
95 '#title' => t('Default address'),
96 '#suffix' => t('Make this address the default address'),
97 '#default_value' => $address->is_default,
98 );
99 }
100
101 drupal_add_js(drupal_get_path('module', 'uc_addresses') .'/uc_addresses.js');
102
103 return array('description' => $description, 'contents' => $form['address'], 'theme' => 'uc_addresses_pane');
104
105 case 'edit':
106 if ($address->is_default) {
107 $description = t('Edit your default address information.');
108 }
109 else {
110 $description = t('Edit your address information.');
111 }
112 $form['address'] = array(
113 '#type' => 'fieldset',
114 '#title' => t("Edit address information"),
115 '#collapsible' => TRUE,
116 '#collapsed' => FALSE,
117 );
118 $form['address']['aid'] = array(
119 '#type' => 'hidden',
120 '#value' => $address->aid
121 );
122 if (uc_address_field_enabled('first_name')) {
123 $form['address']['first_name'] = uc_textfield(uc_get_field_name('first_name'), $address->first_name, uc_address_field_required('first_name'));
124 }
125 if (uc_address_field_enabled('last_name')) {
126 $form['address']['last_name'] = uc_textfield(uc_get_field_name('last_name'), $address->last_name, uc_address_field_required('last_name'));
127 }
128 if (uc_address_field_enabled('phone')) {
129 $form['address']['phone'] = uc_textfield(uc_get_field_name('phone'), $address->phone, uc_address_field_required('phone'), NULL, 32, 16);
130 }
131 if (uc_address_field_enabled('company')) {
132 $form['address']['company'] = uc_textfield(uc_get_field_name('company'), $address->company, uc_address_field_required('company'), NULL, 64);
133 }
134 if (uc_address_field_enabled('street1')) {
135 $form['address']['street1'] = uc_textfield(uc_get_field_name('street1'), $address->street1, uc_address_field_required('street1'), NULL, 64);
136 }
137 if (uc_address_field_enabled('street2')) {
138 $form['address']['street2'] = uc_textfield(uc_get_field_name('street2'), $address->street2, uc_address_field_required('street2'), NULL, 64);
139 }
140 if (uc_address_field_enabled('city')) {
141 $form['address']['city'] = uc_textfield(uc_get_field_name('city'), $address->city, uc_address_field_required('city'));
142 }
143 if (uc_address_field_enabled('country')) {
144 $form['address']['country'] = uc_country_select(uc_get_field_name('country'), $address->country, NULL, 'name', uc_address_field_required('country'));
145 }
146 if (uc_address_field_enabled('zone')) {
147 if (isset($_POST['panes'], $_POST['panes']['address'], $_POST['panes']['address']['country'])) {
148 $country_id = intval($_POST['panes']['address']['country']);
149 }
150 else {
151 $country_id = $address->country;
152 }
153 $form['address']['zone'] = uc_zone_select(uc_get_field_name('zone'), $address->zone, NULL, $country_id, 'name', uc_address_field_required('zone'));
154 }
155 if (uc_address_field_enabled('postal_code')) {
156 $form['address']['postal_code'] = uc_textfield(uc_get_field_name('postal_code'), $address->postal_code, uc_address_field_required('postal_code'), NULL, 10, 10);
157 }
158 $form['address']['address_name'] = uc_textfield(t('Save as'), $address->address_name, FALSE, t('Enter a name for this address (e.g. Home or Work)'));
159 $form['address']['save'] = array(
160 '#type' => 'checkbox',
161 '#title' => t('Default address'),
162 '#suffix' => t('Make this address the default address'),
163 '#default_value' => $address->is_default,
164 '#disabled' => $address->is_default,
165 );
166
167 drupal_add_js(drupal_get_path('module', 'uc_addresses') .'/uc_addresses.js');
168
169 return array('description' => $description, 'contents' => $form['address'], 'theme' => 'uc_addresses_pane');
170
171 case 'process':
172 $address->first_name = $form_values['first_name'];
173 $address->last_name = $form_values['last_name'];
174 $address->company = $form_values['company'];
175 $address->street1 = $form_values['street1'];
176 $address->street2 = $form_values['street2'];
177 $address->city = $form_values['city'];
178 $address->zone = $form_values['zone'];
179 $address->postal_code = $form_values['postal_code'];
180 $address->country = $form_values['country'];
181 $address->phone = $form_values['phone'];
182 $address->address_name = $form_values['address_name'];
183 $address->is_default = $form_values['save'];
184 return TRUE;
185
186 case 'view':
187 $view[] = array('title' => t('Address'), 'data' => uc_addresses_address($address));
188 if (uc_address_field_enabled('phone') && !empty($address->phone)) {
189 $view[] = array('title' => t('Phone'), 'data' => check_plain($address->phone));
190 }
191 return $view;
192 }
193 }
194
195 /**
196 * Create a blank address. This is the address we use when first
197 * displaying a form used to add an address.
198 *
199 * @return A blank address object
200 */
201 function uc_addresses_blank_address()
202 {
203 $address = new stdClass();
204 $address->first_name = '';
205 $address->last_name = '';
206 $address->company = '';
207 $address->street1 = '';
208 $address->street2 = '';
209 $address->city = '';
210 $address->zone = '';
211 $address->postal_code = '';
212 $address->country = '';
213 $address->phone = '';
214 $address->address_name = '';
215 $address->is_default = false;
216 return $address;
217 }
218
219 /**
220 * Theme the address forms in tables.
221 *
222 * @param $form The address form to theme.
223 * @return The themed form (as a string).
224 */
225 function theme_uc_addresses_pane($form) {
226 $req = '<span class="form-required">*</span>';
227
228 $output = '';
229 if (isset($form['copy_address'])) {
230 $output = drupal_render($form['copy_address']);
231 }
232
233 $output .= '<div class="address-pane-table"><table>';
234
235 foreach (element_children($form) as $field) {
236 if ($field == 'aid') {
237 continue;
238 }
239 $title = $form[$field]['#title'] .':';
240 unset($form[$field]['#title']);
241 if (substr($field, -7) == 'street1') {
242 $title = uc_get_field_name('street') .':';
243 }
244 elseif (substr($field, -7) == 'street2') {
245 $title = ' ';
246 }
247 $output .= '<tr><td class="field-label">';
248 if ($form[$field]['#required']) {
249 $output .= $req;
250 }
251 $output .= $title .'</td><td>'. drupal_render($form[$field]) .'</td></tr>';
252 }
253 $output .= '</table></div>';
254
255 foreach (element_children($form) as $element) {
256 $output .= drupal_render($form[$element]);
257 }
258
259 return $output;
260 }
261
262 /**
263 * Build a list of address panes defined in the enabled modules.
264 *
265 * @param $view ???
266 * @return A sorted array of panes.
267 */
268 function _address_pane_list($view = 'view') {
269 static $panes;
270
271 $panes = module_invoke_all('address_pane', NULL);
272 for ($i = 0; $i < count($panes); $i++) {
273 $panes[$i]['enabled'] = variable_get('uc_addresses_address_pane_'. $panes[$i]['id'] .'_enabled', (!isset($panes[$i]['enabled']) ? TRUE : $panes[$i]['enabled']));
274 $panes[$i]['weight'] = variable_get('uc_addresses_address_pane_'. $panes[$i]['id'] .'_weight_'. $view, (!isset($panes[$i]['weight']) ? 0 : $panes[$i]['weight']));
275 }
276 usort($panes, 'uc_weight_sort');
277
278 return $panes;
279 }
280
281 /**
282 * Return data from an address pane by pane ID and the array key.
283 *
284 * @param $pane_id The id of the pane.
285 * @param $key The key used to access a value in the pane.
286 * @return The requested value or NULL if the key doesn't exist.
287 */
288 function _address_pane_data($pane_id, $key) {
289 $panes = _address_pane_list();
290 foreach ($panes as $pane) {
291 if ($pane['id'] == $pane_id) {
292 return $pane[$key];
293 }
294 }
295 }

  ViewVC Help
Powered by ViewVC 1.1.2