You are here

function view_mode_selector_field_instance_settings_form in View Mode Selector 7

Implements hook_field_instance_settings_form().

File

./view_mode_selector.module, line 51
Main file of View Mode Selector module.

Code

function view_mode_selector_field_instance_settings_form($field, $instance) {
  $form = array();
  $settings = $instance['settings'];
  $form['number_placeholders'] = array(
    '#type' => 'checkbox',
    '#title' => t('Number HTML preview placeholders'),
    '#description' => t('Adds the count/delta to the preview placeholders.'),
    '#access' => $instance['widget']['type'] == 'view_mode_selector_radios',
    '#default_value' => isset($settings['number_placeholders']) ? $settings['number_placeholders'] : FALSE,
  );

  // Get all view modes of the entity type.
  $view_modes = view_mode_selector_view_modes($instance['entity_type']);
  foreach ($view_modes as $view_mode_name => $view_mode) {
    if (!isset($form['view_modes'])) {
      $form['view_modes'] = array(
        '#type' => 'fieldset',
        '#title' => t('Available view modes'),
        '#attributes' => array(
          'class' => array(
            'view-mode-selector-view-modes',
          ),
        ),
        '#attached' => array(
          'css' => array(
            drupal_get_path('module', 'view_mode_selector') . '/css/view-mode-selector.css',
          ),
        ),
      );
    }
    $form['view_modes'][$view_mode_name]['enable'] = array(
      '#type' => 'checkbox',
      '#title' => $view_mode['label'] . ' (' . $view_mode_name . ')',
      '#default_value' => isset($settings['view_modes'][$view_mode_name]['enable']) ? $settings['view_modes'][$view_mode_name]['enable'] : FALSE,
    );

    // Allow uploading an icon and hide the title for view modes when radio widget is used.
    if ($instance['widget']['type'] == 'view_mode_selector_radios') {
      $form['view_modes'][$view_mode_name]['prefix']['#markup'] = '<div class="settings">';
      $form['view_modes'][$view_mode_name]['hide_title'] = array(
        '#type' => 'checkbox',
        '#title' => t('Hide title'),
        '#default_value' => isset($settings['view_modes'][$view_mode_name]['hide_title']) ? $settings['view_modes'][$view_mode_name]['hide_title'] : FALSE,
        '#states' => array(
          'visible' => array(
            'input[name="instance[settings][view_modes][' . $view_mode_name . '][enable]"]' => array(
              'checked' => TRUE,
            ),
          ),
        ),
      );
      $form['view_modes'][$view_mode_name]['icon'] = array(
        '#type' => 'managed_file',
        '#title' => t('Icon'),
        '#description' => t('An icon which can be used for a view mode preview.'),
        '#upload_location' => 'public://view-mode-selector/' . $instance['entity_type'],
        '#default_value' => isset($settings['view_modes'][$view_mode_name]['icon']) ? $settings['view_modes'][$view_mode_name]['icon'] : 0,
        '#states' => array(
          'visible' => array(
            'input[name="instance[settings][view_modes][' . $view_mode_name . '][enable]"]' => array(
              'checked' => TRUE,
            ),
          ),
        ),
      );
      $form['view_modes'][$view_mode_name]['suffix']['#markup'] = '</div>';
    }
  }

  // Inform the user about the layout preview feature.
  if ($instance['widget']['type'] == 'view_mode_selector_radios' && module_exists('ds')) {
    $form['view_modes']['#description'] = t('It is possible to upload an icon in this widget but when you do not upload an icon a real preview of the view mode is displayed instead.');
  }
  return $form;
}