| [ Index ] |
PHP Cross Reference of Drupal 6 (gatewave) |
[Summary view] [Print] [Text view]
1 <?php 2 // $Id: date_api.admin.inc,v 1.1.2.3 2010/08/12 18:40:48 karens Exp $ 3 4 /** 5 * @file 6 * Administrative page callbacks for the date_api module. 7 */ 8 9 /** 10 * Allow users to configure additional date format types. 11 */ 12 function date_api_date_formats_form($form_state) { 13 // Add date_api.js and js settings. 14 date_api_add_system_javascript(); 15 16 $form = array(); 17 18 // Display existing format types and their formats. 19 date_api_date_format_form_elements($form); 20 21 $form = system_settings_form($form); 22 return $form; 23 } 24 25 /** 26 * Allow users to configure custom date formats. 27 */ 28 function date_api_configure_custom_date_formats() { 29 // Add date_api.js and js settings. 30 date_api_add_system_javascript(); 31 $output = ''; 32 33 // Get list of custom date formats. 34 $formats = date_get_formats('custom', TRUE); 35 36 if (!empty($formats)) { 37 $rows = array(); 38 foreach ($formats as $format => $format_info) { 39 $display_text = date_format_date(date_now(), 'custom', $format); 40 $delete_link = l(t('remove'), 'admin/settings/date-time/formats/delete/' . $format_info['dfid']); 41 $row = array($display_text, $delete_link); 42 $rows[] = $row; 43 } 44 $output = theme('table', array(), $rows); 45 46 } 47 else { 48 $output = t('No custom formats configured. Please <a href="@link">add</a> some.', array('@link' => url('admin/settings/date-time/formats/add'))); 49 } 50 51 return $output; 52 } 53 54 55 /** 56 * Allow users to add additional date formats. 57 */ 58 function date_api_add_date_formats_form($form_state) { 59 // Add date_api.js and js settings. 60 date_api_add_system_javascript(); 61 62 $form['add_date_format'] = array( 63 '#type' => 'textfield', 64 '#title' => t('Format string'), 65 '#attributes' => array('class' => 'custom-format'), 66 '#description' => t('A user-defined date format. See the <a href="@url">PHP manual</a> for available options. This format is currently set to display as <span>%date</span>.', array('@url' => 'http://php.net/manual/function.date.php', '%date' => date_format_date(date_now(), 'custom', '-'))), 67 ); 68 69 70 $form['update'] = array( 71 '#type' => 'submit', 72 '#value' => t('Save configuration'), 73 '#weight' => 3, 74 '#submit' => array('date_api_date_time_settings_submit'), 75 ); 76 77 $form['#validate'][] = 'date_api_date_time_settings_validate'; 78 79 return $form; 80 } 81 82 /** 83 * Add drop down selects for date format types. 84 * 85 * @param &$form 86 * The form being altered. 87 */ 88 function date_api_date_format_form_elements(&$form) { 89 $form['date_formats'] = array( 90 '#type' => 'fieldset', 91 '#title' => t('Date formats'), 92 ); 93 94 // Get list of all available date format types. 95 $format_types = date_get_format_types('', TRUE); 96 97 // Get list of all available date formats. 98 $all_formats = array(); 99 $date_formats = date_get_formats('', TRUE); // Call this to rebuild the list, and to have default list. 100 foreach ($date_formats as $type => $format_info) { 101 $all_formats = array_merge($all_formats, $format_info); 102 } 103 $custom_formats = date_get_formats('custom'); 104 foreach ($format_types as $type => $type_info) { 105 // If a system type, only show the available formats for that type and 106 // custom ones. 107 if ($type_info['locked'] == 1) { 108 $formats = date_get_formats($type); 109 if (empty($formats)) { 110 $formats = $all_formats; 111 } 112 elseif (!empty($custom_formats)) { 113 $formats = array_merge($formats, $custom_formats); 114 } 115 } 116 // If a user configured type, show all available date formats. 117 else { 118 $formats = $all_formats; 119 } 120 121 $choices = array(); 122 foreach ($formats as $f => $format) { 123 $choices[$f] = date_format_date(date_now(), 'custom', $f); 124 } 125 $default = variable_get('date_format_' . $type, array_shift(array_keys($formats))); 126 127 // Get format type info for this format type. 128 $type_info = date_get_format_types($type); 129 130 date_api_date_format_select_field($form, $type, $type_info, $default, $choices, 1); 131 } 132 } 133 134 function date_api_date_time_settings_validate($form, &$form_state) { 135 $formats = date_get_formats('custom'); 136 if (!empty($formats) && in_array($form_state['values']['add_date_format'], array_keys($formats))) { 137 form_set_error('add_date_format', t('This format already exists. Please enter a unique format string.')); 138 } 139 } 140 141 function date_api_date_time_settings_submit($form, &$form_state) { 142 if (!empty($form_state['values']['add_date_format'])) { 143 $format = array(); 144 $format['format'] = $form_state['values']['add_date_format']; 145 $format['type'] = 'custom'; 146 $format['locked'] = 0; 147 $format['is_new'] = 1; 148 date_format_save($format); 149 } 150 151 // Unset, to prevent this getting saved as a variables. 152 unset($form_state['values']['add_date_format']); 153 154 drupal_set_message(t('Configuration saved.')); 155 } 156 157 /** 158 * Menu callback; present a form for deleting a date format. 159 */ 160 function date_api_delete_format_form(&$form_state, $dfid) { 161 $form = array(); 162 $form['dfid'] = array( 163 '#type' => 'value', 164 '#value' => $dfid, 165 ); 166 $format = date_get_format($dfid); 167 168 $output = confirm_form($form, 169 t('Are you sure you want to remove the format %format?', array('%format' => date_format_date(date_now(), 'custom', $format['format']))), 170 'admin/settings/date-time/formats/custom', 171 t('This action cannot be undone.'), 172 t('Remove'), t('Cancel'), 173 'confirm' 174 ); 175 176 return $output; 177 } 178 179 /** 180 * Delete a configured date format. 181 */ 182 function date_api_delete_format_form_submit($form, &$form_state) { 183 if ($form_state['values']['confirm']) { 184 $format = date_get_format($form_state['values']['dfid']); 185 date_format_delete($form_state['values']['dfid']); 186 drupal_set_message(t('Removed date format %format.', array('%format' => date_format_date(date_now(), 'custom', $format['format'])))); 187 $form_state['redirect'] = 'admin/settings/date-time/formats/custom'; 188 } 189 } 190 191 192 193 /** 194 * Menu callback; present a form for deleting a date format type. 195 */ 196 function date_api_delete_format_type_form(&$form_state, $format_type) { 197 $form = array(); 198 $form['format_type'] = array( 199 '#type' => 'value', 200 '#value' => $format_type, 201 ); 202 $type_info = date_get_format_types($format_type); 203 204 $output = confirm_form($form, 205 t('Are you sure you want to remove the format type %format?', array('%format' => $type_info['title'])), 206 'admin/settings/date-time/formats', 207 t('This action cannot be undone.'), 208 t('Remove'), t('Cancel'), 209 'confirm' 210 ); 211 212 return $output; 213 } 214 215 /** 216 * Delete a configured date format type. 217 */ 218 function date_api_delete_format_type_form_submit($form, &$form_state) { 219 if ($form_state['values']['confirm']) { 220 $type_info = date_get_format_types($form_state['values']['format_type']); 221 date_format_type_delete($form_state['values']['format_type']); 222 drupal_set_message(t('Removed date format type %format.', array('%format' => $type_info['title']))); 223 $form_state['redirect'] = 'admin/settings/date-time/formats'; 224 } 225 } 226 227 /** 228 * Helper function; return form fields for date format selects. 229 */ 230 function date_api_date_format_select_field(&$form, $type, $type_info, $default, $choices, $show_remove = 0) { 231 // Show date format select list. 232 $form['date_formats']['date_format_' . $type] = array( 233 '#prefix' => '<div class="date-container"><div class="select-container">', 234 // Leave the date-container div open if we are going to be adding to and 235 // then closing it below. 236 '#suffix' => ($show_remove == 1 && $type_info['locked'] == 0) ? '</div>' : '</div></div>', 237 '#type' => 'select', 238 '#title' => t('!type date format', array('!type' => $type_info['title'])), 239 '#attributes' => array('class' => 'date-format'), 240 '#default_value' => (isset($choices[$default]) ? $default : 'custom'), 241 '#options' => $choices, 242 ); 243 244 // If this isn't a system provided type, allow the user to remove it from 245 // the system. 246 if ($show_remove == 1 && $type_info['locked'] == 0) { 247 $form['date_formats']['date_format_' . $type . '_delete'] = array( 248 '#prefix' => '<div class="date-format-delete">', 249 '#suffix' => '</div></div>', 250 '#value' => l(t('remove'), 'admin/settings/date-time/delete/' . $type), 251 ); 252 } 253 } 254 255
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Thu Mar 24 11:18:33 2011 | Cross-referenced by PHPXref 0.7 |