You are here

function img_assist_admin_settings in Image Assist 6.2

Same name and namespace in other branches
  1. 5.3 img_assist.module \img_assist_admin_settings()
  2. 5 img_assist.module \img_assist_admin_settings()
  3. 5.2 img_assist.module \img_assist_admin_settings()
  4. 6 img_assist.module \img_assist_admin_settings()

Implementation of hook_settings().

1 string reference to 'img_assist_admin_settings'
img_assist_menu in ./img_assist.module
Implementation of hook_menu().

File

./img_assist.module, line 212
Image Assist module

Code

function img_assist_admin_settings() {
  require_once drupal_get_path('module', 'img_assist') . '/includes/img_assist.token.inc';

  // Access settings.
  $form['access'] = array(
    '#type' => 'fieldset',
    '#title' => t('Access settings'),
    '#collapsible' => TRUE,
    '#collapsed' => TRUE,
  );
  $form['access']['img_assist_paths_type'] = array(
    '#type' => 'radios',
    '#title' => t('Display Image assist on paths'),
    '#default_value' => variable_get('img_assist_paths_type', 2),
    '#options' => array(
      t('on specific paths'),
      t('not on specific paths'),
      t('all paths'),
    ),
  );
  $form['access']['img_assist_paths'] = array(
    '#type' => 'textarea',
    '#title' => t('Paths'),
    '#default_value' => variable_get('img_assist_paths', "node/*\ncomment/*"),
    '#cols' => 40,
    '#rows' => 5,
    '#description' => t("Enter one page per line as Drupal paths. The '*' character is a wildcard. Example paths are %blog for the blog page and %blog-wildcard for every personal blog. %front is the front page.", array(
      '%blog' => 'blog',
      '%blog-wildcard' => 'blog/*',
      '%front' => '<front>',
    )),
  );
  $form['access']['img_assist_textareas_type'] = array(
    '#type' => 'radios',
    '#title' => t('Display Image assist on text areas'),
    '#default_value' => variable_get('img_assist_textareas_type', 2),
    '#options' => array(
      t('Show on every textarea except the listed textareas.'),
      t('Show on only the listed textareas.'),
      t('Show on all textareas.'),
    ),
  );
  $form['access']['img_assist_textareas'] = array(
    '#type' => 'textarea',
    '#title' => t('Text areas'),
    '#default_value' => variable_get('img_assist_textareas', "edit-body\nedit-comment"),
    '#cols' => 40,
    '#rows' => 5,
    '#description' => t("Enter one text area form-id per line. Form-id's are used by Drupal to typify them, which allows themers and coders to modify certain form fields, but not all. Find form-id's using this method: view the source of the webpage, then search for the string that's just above the text area and you'll see the form-id nearby. The '*' character is a wildcard. For example, you can specify all CCK fields as %cck-example.", array(
      '%cck-example' => 'edit-field-*',
    )),
  );
  $form['access']['img_assist_link'] = array(
    '#type' => 'select',
    '#title' => t('Textarea image link'),
    '#default_value' => variable_get('img_assist_link', 'icon'),
    '#options' => array(
      'icon' => t('Show icon'),
      'text' => t('Show text link'),
      'none' => t('Do not show a link'),
    ),
    '#description' => t('Choose what to show under the textareas for which Image assist is enabled.'),
  );

  // Prepare select options for image browser views.
  $options = array();
  views_include('admin');
  $views = views_get_all_views();
  $base_tables = views_fetch_base_tables();
  foreach ($views as $view) {

    // Exclude malformed views (@see views/admin.inc).
    if (!empty($view->disabled) || empty($view->display)) {
      continue;
    }

    // Exclude views considered unusable for IA.
    if (!($view->base_table == 'node' || $view->base_table == 'files')) {
      continue;
    }
    $options[$view->name] = $view
      ->get_title() == '' ? $view->name : $view
      ->get_title();
  }
  $form['access']['img_assist_views'] = array(
    '#type' => 'select',
    '#multiple' => TRUE,
    '#title' => t('Image browser views'),
    '#default_value' => variable_get('img_assist_views', drupal_map_assoc(array(
      'img_assist_browser',
    ))),
    '#options' => $options,
    '#required' => TRUE,
    '#description' => t('Select the views to use for selecting images.'),
  );
  if (module_exists('taxonomy')) {
    $vocs = array(
      0 => '<' . t('none') . '>',
    );
    foreach (taxonomy_get_vocabularies() as $vid => $voc) {
      $vocs[$vid] = $voc->name;
    }
    if (count($vocs) > 1) {
      $form['access']['img_assist_vocabs'] = array(
        '#type' => 'select',
        '#multiple' => TRUE,
        '#title' => t('Select the vocabularies to use for Image assist'),
        '#default_value' => variable_get('img_assist_vocabs', array()),
        '#options' => $vocs,
        '#description' => t('Select the vocabularies you want to be able to filter thumbnails by. This setting changes the behavior of Image assist at startup from loading all image thumbnails to displaying a list of image names until a filter is chosen.'),
      );
    }
  }

  // Image settings.
  $form['image'] = array(
    '#type' => 'fieldset',
    '#title' => t('Image generation settings'),
    '#collapsible' => TRUE,
    '#collapsed' => TRUE,
  );
  $form['image']['img_assist_max_size'] = array(
    '#type' => 'textfield',
    '#title' => t('Maximum inline image size allowed'),
    '#default_value' => variable_get('img_assist_max_size', '640x640'),
    '#size' => 9,
    '#maxlength' => 9,
    '#description' => t('Enter the number of maximum image dimensions to display with Image assist. This is a way to prevent users from breaking your layouts. This is applied when the filter tag is processed, so it will affect existing images. If an existing image exceeds these dimensions, a smaller derivative of the image will be substituted (or a smaller version will be created if you have allowed Image assist to create its own derivatives).'),
  );
  if (function_exists('image_get_sizes')) {
    $max_size = explode('x', variable_get('img_assist_max_size', '640x640'));
    $oversize_count = 0;
    foreach (image_get_sizes() as $key => $size) {
      $dimensions = $size['width'] . 'x' . $size['height'];
      if (!empty($size['width']) && $size['width'] <= $max_size[0] || !empty($size['height']) && $size['height'] <= $max_size[1]) {
        $derivatives[$dimensions] = $size['label'];
      }
      elseif ($key == IMAGE_THUMBNAIL) {

        // Thumbnail option is shown even if it is larger than maximum size.
        $derivatives[$dimensions] = $size['label'];
      }
      else {
        $oversize_count++;
      }
      $allsizes[$key] = $size['label'];
    }
    $form['image']['img_assist_popup_label'] = array(
      '#type' => 'select',
      '#title' => t('Popup size'),
      '#default_value' => variable_get('img_assist_popup_label', IMAGE_PREVIEW),
      '#options' => $allsizes,
      '#description' => t('Select the size of the image that is popped up.'),
    );
    $oversize_alert = $oversize_count ? '<br /><strong>' . format_plural($oversize_count, '1 image size is not being shown because it exceeds the the maximum inline image size setting (see above).', '@count image sizes are not being shown because they exceed the the maximum inline image size setting (see above).') . '</strong>' : '';
    $form['image']['img_assist_default_label'] = array(
      '#type' => 'select',
      '#title' => t('Default size for inline images'),
      '#default_value' => variable_get('img_assist_default_label', '100x100'),
      '#options' => $derivatives,
      '#description' => t('Select a derivative to be used by default for inline images.') . $oversize_alert,
    );
  }
  $form['image']['img_assist_create_derivatives'] = array(
    '#type' => 'checkboxes',
    '#title' => t('Creation of image derivatives'),
    '#default_value' => variable_get('img_assist_create_derivatives', array()),
    '#options' => array(
      'properties' => t('Create 200x200 images for the image properties window (useful if the thumbnail size is small).'),
      'custom_advanced' => t('Allow users with %access permission to create custom size inline images.', array(
        '%access' => 'access advanced options',
      )),
      'custom_all' => t('Allow all users to create custom size inline images.'),
    ),
    '#description' => t('These options allow Image assist to generate its custom image sizes (in the same manner as image.module) when a user would prefer a different size from the default image sizes defined in the image.module settings.'),
  );

  // Other properties.
  $form['properties'] = array(
    '#type' => 'fieldset',
    '#title' => t('Image property dialog settings'),
    '#collapsible' => TRUE,
    '#collapsed' => TRUE,
  );
  $form['properties']['img_assist_default_link_behavior'] = array(
    '#type' => 'select',
    '#title' => t('Default link behavior'),
    '#default_value' => variable_get('img_assist_default_link_behavior', 'none'),
    '#options' => array(
      'none' => t('Not a link'),
      'node' => t('Link to image page'),
      'popup' => t('Open in popup window'),
      'url' => t('Go to URL'),
    ),
    '#description' => t('The link behavior can be overridden when inserting images by users with the proper permissions, but these defaults will still be used for everyone else.'),
  );
  $form['properties']['img_assist_default_link_url'] = array(
    '#type' => 'textfield',
    '#title' => t('Default URL'),
    '#default_value' => variable_get('img_assist_default_link_url', 'http://'),
    '#size' => 30,
    '#maxlength' => 255,
    '#description' => t('The default URL is used when Go to URL is choosen as the link behavior.'),
  );
  $form['properties']['img_assist_default_insert_mode'] = array(
    '#type' => 'select',
    '#title' => t('Default insert mode'),
    '#default_value' => variable_get('img_assist_default_insert_mode', 'none'),
    '#options' => array(
      'filtertag' => t('Filter Tag'),
      'html' => t('HTML Code'),
    ),
    '#description' => t('The insert behavior can be overridden by users with the %permission permission when inserting images.  <strong>Warning:</strong> If images are inserted as HTML, Image Assist is not able to correct a link or image URL afterwards.  Please also note that users will not be able to edit already inserted images when using HTML code and the TinyMCE plugin.', array(
      '%permission' => t('access advanced options'),
    )),
  );
  $form['properties']['img_assist_load_title'] = array(
    '#type' => 'radios',
    '#title' => t('Preset caption title'),
    '#default_value' => variable_get('img_assist_load_title', 1),
    '#options' => array(
      t('Disabled'),
      t('Enabled'),
    ),
    '#description' => t('If enabled, the title from the image will be loaded as the bolded caption by default.'),
  );
  $token_installed = module_exists('token');
  $token_instructions = !$token_installed ? t('Requires the !token module.', array(
    '!token' => l('Token', 'http://drupal.org/project/token'),
  )) : t('See below for a list of available replacement patterns.');
  $form['properties']['img_assist_title_pattern'] = array(
    '#type' => 'textfield',
    '#title' => t('Caption title pattern'),
    '#default_value' => variable_get('img_assist_title_pattern', '[title]'),
    '#size' => 60,
    '#maxlength' => 255,
    '#description' => t('The pattern to generate the bolded caption title from.') . ' ' . $token_instructions,
    '#disabled' => !$token_installed,
  );
  $form['properties']['img_assist_load_description'] = array(
    '#type' => 'radios',
    '#title' => t('Preset caption text'),
    '#default_value' => variable_get('img_assist_load_description', 1),
    '#options' => array(
      t('Disabled'),
      t('Enabled'),
    ),
    '#description' => t('If enabled, the body text from the image will be loaded as the caption by default.'),
  );
  $form['properties']['img_assist_description_pattern'] = array(
    '#type' => 'textfield',
    '#title' => t('Caption text pattern'),
    '#default_value' => variable_get('img_assist_description_pattern', '[body]'),
    '#size' => 60,
    '#maxlength' => 255,
    '#description' => t('The pattern to generate the caption text from.') . ' ' . $token_instructions,
    '#disabled' => !$token_installed,
  );
  if ($token_installed) {
    $form['properties']['token_help'] = array(
      '#title' => t('Replacement patterns'),
      '#type' => 'fieldset',
      '#collapsible' => TRUE,
      '#collapsed' => TRUE,
    );
    $form['properties']['token_help'][] = array(
      '#value' => theme('token_help', 'node'),
    );
  }
  if (module_exists('content')) {
    $options = array();
    $info = _content_type_info();
    foreach ($info['content types']['image']['fields'] as $field) {
      $options[$field['field_name']] = t($field['widget']['label']) . ' (' . $field['field_name'] . ')';
    }
    $form['properties']['img_assist_display_properties'] = array(
      '#type' => 'checkboxes',
      '#title' => t('Image properties shown'),
      '#default_value' => variable_get('img_assist_display_properties', array()),
      '#options' => $options,
      '#description' => t('All selected CCK fields from the Image node will be displayed in the Image Assist pop-up window.'),
    );
    if (empty($options)) {
      $form['properties']['img_assist_display_properties']['#description'] .= '<br />' . t('<strong>Note:</strong> The <a href="!content-type">Image content-type</a> does not contain any CCK fields currently.', array(
        '!content-type' => url('admin/content/node-type/image/fields'),
      ));
    }
  }

  // Image display settings.
  $form['display'] = array(
    '#type' => 'fieldset',
    '#title' => t('Image display settings'),
    '#collapsible' => TRUE,
    '#collapsed' => TRUE,
  );
  $form['display']['img_assist_page_styling'] = array(
    '#type' => 'select',
    '#title' => t('Include img_assist.css on all pages for styling inline images?'),
    '#default_value' => variable_get('img_assist_page_styling', 'yes'),
    '#options' => array(
      'yes' => t('yes'),
      'no' => t('no'),
    ),
    '#description' => t('Advanced users can customize their theme\'s CSS file so that inclusion of the img_assist.css file will not be necessary. See notes at the bottom of img_assist.css for details.'),
  );
  return system_settings_form($form);
}