| [ Index ] |
PHP Cross Reference of Drupal 6 (yi-drupal) |
[Summary view] [Print] [Text view]
1 <?php 2 3 /** 4 * Preset Admin callbacks and required functions. 5 */ 6 function imagecache_ui_preset_overview() { 7 $header = array(t('Preset Name'), t('Storage'), t('Actions')); 8 $rows = array(); 9 // Always clear the preset cache on this display. 10 foreach (imagecache_presets(TRUE) as $preset) { 11 $row = array(); 12 $row[] = l($preset['presetname'], 'admin/build/imagecache/'. $preset['presetid']); 13 $links = array(); 14 switch ($preset['storage']) { 15 case IMAGECACHE_STORAGE_DEFAULT: 16 $row[] = t('Default'); 17 $links[] = l(t('View'), 'admin/build/imagecache/'. $preset['presetid']); 18 $links[] = l(t('Flush'), 'admin/build/imagecache/'. $preset['presetid'] .'/flush' ); 19 break; 20 case IMAGECACHE_STORAGE_OVERRIDE: 21 $row[] = t('Override'); 22 $links[] = l(t('Edit'), 'admin/build/imagecache/'. $preset['presetid']); 23 $links[] = l(t('Revert'), 'admin/build/imagecache/'. $preset['presetid'] .'/delete'); 24 $links[] = l(t('Flush'), 'admin/build/imagecache/'. $preset['presetid'] .'/flush' ); 25 $links[] = l(t('Export'), 'admin/build/imagecache/'. $preset['presetid'] .'/export' ); 26 break; 27 case IMAGECACHE_STORAGE_NORMAL: 28 $row[] = t('Normal'); 29 $links[] = l(t('Edit'), 'admin/build/imagecache/'. $preset['presetid']); 30 $links[] = l(t('Delete'), 'admin/build/imagecache/'. $preset['presetid'] .'/delete'); 31 $links[] = l(t('Flush'), 'admin/build/imagecache/'. $preset['presetid'] .'/flush' ); 32 $links[] = l(t('Export'), 'admin/build/imagecache/'. $preset['presetid'] .'/export' ); 33 break; 34 } 35 $row[] = implode(' ', $links); 36 $rows[] = $row; 37 } 38 $output = theme('table', $header, $rows); 39 return $output; 40 } 41 42 function imagecache_ui_preset_delete_form($form_state, $preset = array()) { 43 if (empty($preset)) { 44 drupal_set_message(t('The specified preset was not found'), 'error'); 45 drupal_goto('admin/build/imagecache'); 46 } 47 48 $form = array(); 49 $form['presetid'] = array('#type' => 'value', '#value' => $preset['presetid']); 50 return confirm_form( 51 $form, 52 t('Are you sure you want to delete the preset %preset?', 53 array('%preset' => $preset['presetname']) 54 ), 55 'admin/build/imagecache', 56 t('This action cannot be undone.'), 57 t('Delete'), t('Cancel') 58 ); 59 } 60 61 function imagecache_ui_preset_delete_form_submit($form, &$form_state) { 62 $preset = imagecache_preset($form_state['values']['presetid']); 63 imagecache_preset_delete($preset); 64 drupal_set_message(t('Preset %name (ID: @id) was deleted.', array('%name' => $preset['presetname'], '@id' => $preset['presetid']))); 65 $form_state['redirect'] = 'admin/build/imagecache'; 66 } 67 68 69 function imagecache_ui_preset_flush_form(&$form_state, $preset = array()) { 70 if (empty($preset)) { 71 drupal_set_message(t('The specified preset was not found'), 'error'); 72 $form_state['redirect'] = 'admin/build/imagecache'; 73 } 74 75 $form = array(); 76 $form['presetid'] = array('#type' => 'value', '#value' => $preset['presetid']); 77 return confirm_form( 78 $form, 79 t('Are you sure you want to flush the preset %preset?', 80 array('%preset' => $preset['presetname']) 81 ), 82 'admin/build/imagecache', 83 t('This action cannot be undone.'), 84 t('Flush'), t('Cancel') 85 ); 86 } 87 88 function imagecache_ui_preset_flush_form_submit($form, &$form_state) { 89 $preset = imagecache_preset($form_state['values']['presetid']); 90 imagecache_preset_flush($preset); 91 drupal_set_message(t('Preset %name (ID: @id) was flushed.', array('%name' => $preset['presetname'], '@id' => $preset['presetid']))); 92 $form_state['redirect'] = 'admin/build/imagecache'; 93 } 94 95 96 /** 97 * Imagecache preset export form. 98 */ 99 function imagecache_ui_preset_export_form(&$form_state, $preset = array()) { 100 if (empty($preset)) { 101 drupal_set_message(t('The specified preset was not found'), 'error'); 102 $form_state['redirect'] = 'admin/build/imagecache'; 103 } 104 105 if (isset($preset['presetid'])) { 106 unset($preset['presetid']); 107 } 108 if (isset($preset['storage'])) { 109 unset($preset['storage']); 110 } 111 foreach ($preset['actions'] as $id => $action) { 112 unset($preset['actions'][$id]['actionid']); 113 unset($preset['actions'][$id]['presetid']); 114 } 115 $exported = '$presets = array();'; 116 $exported .= "\n"; 117 $exported .= '$presets[\''. $preset['presetname'] .'\'] = '; 118 $exported .= var_export($preset, TRUE) .';'; 119 $rows = substr_count($exported, "\n") + 1; 120 121 $form = array(); 122 $form['export'] = array( 123 '#type' => 'textarea', 124 '#default_value' => $exported, 125 '#rows' => $rows, 126 '#resizable' => FALSE, 127 ); 128 return $form; 129 } 130 131 132 function imagecache_ui_preset_form($form_state, $preset = array()) { 133 $form = array(); 134 135 $form['presetid'] = array( 136 '#type' => 'value', 137 '#value' => isset($preset['presetid']) ? $preset['presetid'] : '', 138 ); 139 140 // Browsers don't submit disabled form values so we've got to put two copies 141 // of the name on the form: one for the submit handler and one for the user. 142 if (isset($preset['storage']) && $preset['storage'] === IMAGECACHE_STORAGE_DEFAULT) { 143 $form['presetname'] = array( 144 '#type' => 'value', 145 '#value' => $preset['presetname'], 146 ); 147 $form['presetname_display'] = array( 148 '#type' => 'textfield', 149 '#size' => '64', 150 '#title' => t('Preset Namespace'), 151 '#default_value' => $preset['presetname'], 152 '#disabled' => TRUE, 153 ); 154 } 155 else { 156 $form['presetname'] = array( 157 '#type' => 'textfield', 158 '#size' => '64', 159 '#title' => t('Preset Namespace'), 160 '#default_value' => isset($preset['presetname']) ? $preset['presetname'] : '', 161 '#description' => t('The namespace is used in URL\'s for images to tell imagecache how to process an image. Please only use alphanumeric characters, underscores (_), and hyphens (-) for preset names.'), 162 '#validate' => array('imagecache_element_presetname_validate' => array()), 163 ); 164 } 165 166 $form['submit'] = array( 167 '#type' => 'submit', 168 '#value' => isset($preset['storage']) && $preset['storage'] === IMAGECACHE_STORAGE_DEFAULT ? t('Override Defaults') : t('Save Preset'), 169 '#weight' => 9, 170 ); 171 172 // For new presets don't show the preview or all actions to be added. 173 if (empty($preset['presetid'])) { 174 return $form; 175 } 176 177 $form['actions'] = array( 178 '#type' => 'fieldset', 179 '#title' => t('Actions'), 180 '#tree' => TRUE, 181 '#theme' => 'imagecache_ui_preset_actions', 182 ); 183 184 foreach ($preset['actions'] as $i => $action) { 185 // skip unknown actions... 186 if (!$definition = imagecache_action_definition($action['action'])) { 187 continue; 188 } 189 $action_form['name'] = array( 190 '#value' => t($definition['name']), 191 ); 192 193 $action_form['action'] = array( 194 '#type' => 'value', 195 '#value' => $action['action'], 196 ); 197 $action_form['actionid'] = array( 198 '#type' => 'value', 199 '#value' => $action['actionid'], 200 ); 201 $action_form['presetid'] = array( 202 '#type' => 'value', 203 '#value' => $action['presetid'], 204 ); 205 206 $action_form['settings'] = array( 207 '#theme' => $action['action'], 208 '#value' => $action['data'], 209 ); 210 $action_form['data'] = array( 211 '#type' => 'value', 212 '#value' => $action['data'], 213 ); 214 $action_form['weight'] = array( 215 '#type' => 'weight', 216 '#default_value' => $action['weight'], 217 '#access' => $preset['storage'] !== IMAGECACHE_STORAGE_DEFAULT, 218 ); 219 $action_form['configure'] = array( 220 '#value' => l(t('Configure'), 'admin/build/imagecache/'. $action['presetid'] .'/'. $action['actionid'] ), 221 '#access' => $preset['storage'] !== IMAGECACHE_STORAGE_DEFAULT, 222 ); 223 $action_form['remove'] = array( 224 '#value' => l(t('Delete'), 'admin/build/imagecache/'. $action['presetid'] .'/'. $action['actionid'] .'/delete'), 225 '#access' => $preset['storage'] !== IMAGECACHE_STORAGE_DEFAULT, 226 ); 227 $form['actions'][$i] = $action_form; 228 } 229 230 $form['actions']['new'] = array( 231 '#tree' => FALSE, 232 '#type' => 'fieldset', 233 '#title' => t('New Actions'), 234 '#collapsible' => TRUE, 235 '#collapsed' => count($preset['actions']) > 0, 236 '#access' => $preset['storage'] !== IMAGECACHE_STORAGE_DEFAULT, 237 ); 238 foreach (imagecache_action_definitions() as $action => $definition) { 239 $form['actions']['new'][] = array( 240 '#type' => 'markup', 241 '#prefix' => '<div>', 242 '#suffix' => '</div>', 243 '#value' => l(t('Add !action', array('!action' => $definition['name'])), 244 'admin/build/imagecache/'. $preset['presetid'] .'/add/'. $action) . 245 ' - '. $definition['description'], 246 ); 247 } 248 249 // Display a preview image for this action. Put it below the submit button so 250 // users don't have to do a bunch of scrolling. 251 $preview_path = file_create_path('imagecache_sample.png'); 252 if (!file_exists($preview_path)) { 253 // Copy of the image into the files directory so rather than generating it 254 // from the original so we don't end up creating subdirectories mirroring 255 // the path to the this module. 256 $preview_path = drupal_get_path('module', 'imagecache_ui') .'/sample.png'; 257 file_copy($preview_path, 'imagecache_sample.png'); 258 } 259 imagecache_image_flush($preview_path); 260 $imagecache_path = imagecache_create_url($preset['presetname'], $preview_path, TRUE); 261 $form['preview'] = array( 262 '#type' => 'item', 263 '#title' => t('Preview'), 264 '#value' => l($imagecache_path, $imagecache_path) .'<br />'. l("<img src='$imagecache_path' />", $imagecache_path, array('html' => TRUE)), 265 '#weight' => 10, 266 ); 267 268 return $form; 269 } 270 271 function imagecache_ui_preset_form_validate($form, &$form_state) { 272 $values = $form_state['values']; 273 // Check for duplicates 274 foreach (imagecache_presets() as $preset) { 275 if ($values['presetname'] == $preset['presetname'] && $values['presetid'] != $preset['presetid']) { 276 form_set_error('presetname', t('The preset name you have chosen is already in use.')); 277 break; 278 } 279 } 280 281 // Check for illegal characters in preset names 282 if (preg_match('/[^0-9a-zA-Z_\-]/', $values['presetname'])) { 283 form_set_error('presetname', t('Please only use alphanumeric characters, underscores (_), and hyphens (-) for preset names.')); 284 } 285 } 286 287 function imagecache_ui_preset_form_submit($form, &$form_state) { 288 // Save the preset first to retrieve the presetid when overriding 289 $preset = imagecache_preset_save($form_state['values']); 290 291 // Populate the presetid as needed for overrides 292 if (isset($form_state['values']['actions'])) { 293 foreach($form_state['values']['actions'] as $action) { 294 if (empty($action['presetid'])) { 295 $action['presetid'] = $preset['presetid']; 296 } 297 imagecache_action_save($action); 298 } 299 } 300 301 // Push back to the preset form 302 $form_state['redirect'] = 'admin/build/imagecache/'. $preset['presetid']; 303 } 304 305 function theme_imagecache_ui_preset_actions($form) { 306 $header = array(t('Action'), t('Settings')); 307 // $header = array(, t('Weight'), '',''); 308 $rows = array(); 309 foreach(element_children($form) as $key) { 310 if (!is_numeric($key)) { 311 continue; 312 } 313 $row = array(); 314 $row[] = drupal_render($form[$key]['name']); 315 $row[] = drupal_render($form[$key]['settings']); 316 317 // Check for form access before rendering these portions of the table / header 318 if (!empty($form[$key]['weight']['#access'])) { 319 if (empty($header['weight'])) { 320 $header['weight'] = t('Weight'); 321 } 322 $form[$key]['weight']['#attributes']['class'] = 'imagecache-action-order-weight'; 323 $row[] = drupal_render($form[$key]['weight']); 324 } 325 if (!empty($form[$key]['configure']['#access'])) { 326 if (empty($header['configure'])) { 327 $header['configure'] = ''; 328 } 329 $row[] = drupal_render($form[$key]['configure']); 330 } 331 if (!empty($form[$key]['remove']['#access'])) { 332 if (empty($header['remove'])) { 333 $header['remove'] = ''; 334 } 335 $row[] = drupal_render($form[$key]['remove']); 336 } 337 $rows[] = array( 338 'data' => $row, 339 'class' => 'draggable', 340 ); 341 } 342 343 $output = ''; 344 if ($rows) { 345 drupal_add_tabledrag('imagecache-preset-actions', 'order', 'sibling', 'imagecache-action-order-weight'); 346 $output = theme('table', $header, $rows, array('id' => 'imagecache-preset-actions')); 347 } 348 $output .= drupal_render($form); 349 return $output; 350 } 351 352 353 /** 354 * Page with form for adding a new action to add to a preset. 355 */ 356 function imagecache_ui_action_add_page($preset, $actionname) { 357 // Make sure the name is valid. 358 if (!$definition = imagecache_action_definition($actionname)) { 359 drupal_set_message(t('Unknown action.'), 'error'); 360 drupal_goto('admin/build/imagecache/'. $preset['presetid']); 361 } 362 $action = array( 363 'presetid' => $preset['presetid'], 364 'action' => $actionname, 365 'data' => array(), 366 ); 367 return drupal_get_form('imagecache_ui_action_form', $preset, $action); 368 } 369 370 371 function imagecache_ui_action_form($form_state, $preset, $action) { 372 // Do some error checking. 373 if (empty($preset['presetid'])) { 374 drupal_set_message(t('Unknown preset.'), 'error'); 375 drupal_goto('admin/build/imagecache'); 376 } 377 if (empty($action['action']) || !$definition = imagecache_action_definition($action['action'])) { 378 drupal_set_message(t('Unknown action.'), 'error'); 379 drupal_goto('admin/build/imagecache/'. $preset['presetid']); 380 } 381 if ($action['presetid'] != $preset['presetid']) { 382 drupal_set_message(t('This %action action is not associated %preset preset.', array('%action' => $action['action'], '%preset' => $preset['presetname'])), 'error'); 383 drupal_goto('admin/build/imagecache/'. $preset['presetid']); 384 } 385 386 $form['#tree'] = TRUE; 387 $form['presetid'] = array( 388 '#type' => 'value', 389 '#value' => $action['presetid'], 390 ); 391 $form['actionid'] = array( 392 '#type' => 'value', 393 '#value' => isset($action['actionid']) ? $action['actionid']: '', 394 ); 395 $form['action'] = array( 396 '#type' => 'value', 397 '#value' => $action['action'], 398 ); 399 400 if (!empty($definition['file'])) { 401 require_once($definition['file']); 402 } 403 if (function_exists($action['action'] .'_form')) { 404 $form['data'] = call_user_func($action['action'] .'_form', $action['data']); 405 } 406 407 $form['submit'] = array( 408 '#type' => 'submit', 409 '#value' => empty($action['actionid']) ? t('Create Action') : t('Update Action'), 410 ); 411 return $form; 412 } 413 414 function imagecache_ui_action_form_submit($form, &$form_state) { 415 imagecache_action_save($form_state['values']); 416 if (empty($form_state['values']['presetid'])) { 417 drupal_set_message(t('The action was succesfully created.')); 418 } 419 else { 420 drupal_set_message(t('The action was succesfully updated.')); 421 } 422 $form_state['redirect'] = 'admin/build/imagecache/'. $form_state['values']['presetid']; 423 } 424 425 426 function imagecache_ui_action_delete_form($form_state, $preset = array(), $action = array()) { 427 if (empty($action)) { 428 drupal_set_message(t('Unknown Action.'), 'error'); 429 drupal_goto('admin/build/imagecache'); 430 } 431 if (empty($preset)) { 432 drupal_set_message(t('Unknown Preset.'), 'error'); 433 drupal_goto('admin/build/imagecache'); 434 } 435 436 $form = array(); 437 $form['actionid'] = array('#type' => 'value', '#value' => $action['actionid']); 438 return confirm_form( 439 $form, 440 t('Are you sure you want to delete the !action action from preset !preset?', 441 array('!preset' => $preset['presetname'], '!action' => $action['name']) 442 ), 443 'admin/build/imagecache', 444 t('This action cannot be undone.'), 445 t('Delete'), t('Cancel') 446 ); 447 } 448 449 function imagecache_ui_action_delete_form_submit($form, &$form_state) { 450 $action = imagecache_action($form_state['values']['actionid']); 451 imagecache_action_delete($action); 452 drupal_set_message(t('The action has been deleted.')); 453 $form_state['redirect'] = 'admin/build/imagecache/'. $action['presetid']; 454 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Mon Jul 9 18:01:44 2012 | Cross-referenced by PHPXref 0.7 |