You are here

function smart_trim_field_formatter_settings_form in Smart Trim 7

Implements hook_field_formatter_settings_form().

File

./smart_trim.module, line 197
Module functionality.

Code

function smart_trim_field_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state) {
  $settings = $instance['display'][$view_mode]['settings'];
  $element = array();
  $element['trim_link'] = array(
    '#title' => t('Link text to'),
    '#type' => 'select',
    '#default_value' => $settings['trim_link'],
    '#description' => t('Linking text to content will strip tags entirely from the trimmed text.'),
    '#options' => array(
      0 => t('Nothing'),
      1 => t('Content'),
    ),
  );
  $element['trim_length'] = array(
    '#title' => t('Trim length'),
    '#type' => 'textfield',
    '#size' => 10,
    '#default_value' => $settings['trim_length'],
    // Needs form.inc?
    '#element_validate' => array(
      '_element_validate_integer_positive',
    ),
    '#required' => TRUE,
  );
  $element['trim_type'] = array(
    '#title' => t('Trim units'),
    '#type' => 'select',
    '#options' => array(
      'chars' => t("Characters"),
      'words' => t("Words"),
    ),
    '#default_value' => $settings['trim_type'],
  );
  $element['trim_suffix'] = array(
    '#title' => t('Suffix'),
    '#type' => 'textfield',
    '#size' => 10,
    '#default_value' => $settings['trim_suffix'],
  );
  $element['more_link'] = array(
    '#title' => t('Display more link?'),
    '#type' => 'select',
    '#options' => array(
      SMART_TRIM_NEVER => t('Never'),
      SMART_TRIM_ALWAYS => t('Always'),
      SMART_TRIM_IFNEEDED => t('If needed (when using a summary or trimmed text)'),
    ),
    '#default_value' => $settings['more_link'],
    '#description' => t('Displays a link to the entity (if one exists)'),
  );
  $element['more_text'] = array(
    '#title' => t('More link text'),
    '#type' => 'textfield',
    '#size' => 20,
    '#default_value' => $settings['more_text'],
    '#description' => t('If displaying more link, enter the text for the link.'),
    '#states' => array(
      // Hide this field when $element['more_link'] is set to "Never".
      // @see States Api : drupal_process_states()
      'invisible' => array(
        ':input[name="fields[body][settings_edit_form][settings][more_link]"]' => array(
          'value' => SMART_TRIM_NEVER,
        ),
      ),
    ),
  );
  if ($field['type'] == 'text_with_summary') {
    $element['summary_handler'] = array(
      '#title' => t('Summary'),
      '#type' => 'select',
      '#options' => array(
        'full' => t("Use summary if present, and do not trim"),
        'trim' => t("Use summary if present, honor trim settings"),
        'ignore' => t("Do not use summary"),
      ),
      '#default_value' => $settings['summary_handler'],
    );
  }
  $element['trim_options'] = array(
    '#title' => t('Additional options'),
    '#type' => 'checkboxes',
    '#options' => array(
      'text' => t('Strip HTML'),
    ),
    '#default_value' => empty($settings['trim_options']) ? array() : $settings['trim_options'],
  );
  $element['trim_preserve_tags'] = array(
    '#title' => t('Tags to preserve'),
    '#description' => t('Which tags to preserve if "Strip HTML" is chosen above. Format as "<p><a>" to preserve p and a tags.'),
    '#type' => 'textfield',
    '#default_value' => $settings['trim_preserve_tags'],
  );
  return $element;
}