diff options
| -rw-r--r-- | imagecache_auto.admin.inc | 36 | ||||
| -rw-r--r-- | imagecache_auto.module | 28 | 
2 files changed, 54 insertions, 10 deletions
| diff --git a/imagecache_auto.admin.inc b/imagecache_auto.admin.inc new file mode 100644 index 0000000..4d31bc5 --- /dev/null +++ b/imagecache_auto.admin.inc @@ -0,0 +1,36 @@ +<?php +// $Id$ + +/** + * @file + * + * Administration page callbacks. + */ + +/** + * Form builder. Configure ImageCache Auto. + * + * @ingroup forms + * @see system_settings_form() + */ +function imagecache_auto_admin_settings() { +  $form['imagecache_auto_max_width'] = array( +    '#type'          => 'textfield', +    '#title'         => t('Maximum preset width (pixels)'), +    '#default_value' => variable_get('imagecache_auto_max_width', '10000'), +    '#size'          => 10, +    '#maxlength'     => 64,     +    '#description'   => t('The maximum width an automatically created ImageCache preset can have.'), +  ); + +  $form['imagecache_auto_max_height'] = array( +    '#type'          => 'textfield', +    '#title'         => t('Maximum preset height (pixels)'), +    '#default_value' => variable_get('imagecache_auto_max_height', '10000'), +    '#size'          => 10, +    '#maxlength'     => 64,     +    '#description'   => t('The maximum height an automatically created ImageCache preset can have.'), +  ); + +  return system_settings_form($form); +} diff --git a/imagecache_auto.module b/imagecache_auto.module index f55fcd5..e022fa5 100644 --- a/imagecache_auto.module +++ b/imagecache_auto.module @@ -14,9 +14,9 @@  function imagecache_auto_menu() {    $items = array(); -  $items['admin/settings/imagecache/auto'] = array( -    'title'            => 'ImageCache Auto Configuration', -    'description'      => 'Adjust ImageCache Auto settings.', +  $items['admin/build/imagecache/auto'] = array( +    'title'            => 'ImageCache Auto', +    'description'      => 'ImageCache Auto settings.',      'page callback'    => 'drupal_get_form',      'page arguments'   => array('imagecache_auto_admin_settings'),      'access arguments' => array('administer site configuration'), @@ -27,7 +27,7 @@ function imagecache_auto_menu() {    $items[file_directory_path() .'/imagecache_auto'] = array(      'page callback'   => 'imagecache_auto',      'access callback' => TRUE, -    'type' => MENU_CALLBACK +    'type'            => MENU_CALLBACK,    );    return $items; @@ -35,24 +35,32 @@ function imagecache_auto_menu() {  /**   * Automatically create ImageCache presets. - * - * @todo - *   Specify maximum and minimum dimensions.   */  function imagecache_auto() {    include_once('imagecache_auto.inc'); -  $args    = func_get_args(); -  $options = array( +  $max_width  = variable_get('imagecache_auto_max_width',  '10000'); +  $max_height = variable_get('imagecache_auto_max_height', '10000'); +  $args       = func_get_args(); +  $options    = array(      'width'  => (int) check_plain(array_shift($args)),      'height' => (int) check_plain(array_shift($args)),      'path'   => implode('/', $args),    ); +  // Validation. +  if ($options['width'] == NULL || $options['width'] < 0 || $options['width'] > $max_width) { +    drupal_not_found(); +  } +  else if ($options['height'] == NULL || $options['height'] < 0 || $options['height'] > $max_height) { +    drupal_not_found(); +  } +    // Make sure that the preset exists.    imagecache_auto_create_preset($options);    // Redirect to the image cache image version. -  $path = file_directory_path() .'/imagecache/'. $options['width'] .'x'. $options['height'] .'/'. $options['path']; +  $preset = $options['width'] .'x'. $options['height']; +  $path   = file_directory_path() .'/imagecache/'. $preset .'/'. $options['path'];    drupal_goto($path);  } | 
