You are here

function masonry_formatter_field_formatter_settings_form_alter in Masonry API 7

Implements hook_field_formatter_settings_form_alter().

File

masonry_formatter/masonry_formatter.module, line 28
Allows multi-value fields to be displayed in a jQuery Masonry grid.

Code

function masonry_formatter_field_formatter_settings_form_alter(array &$settings_form, array $context) {
  if (masonry_formatter_is_supported($context)) {
    $settings = $context['instance']['display'][$context['view_mode']]['settings'];

    // Add options for configuring Masonry
    $settings_form['masonry'] = array(
      '#type' => 'checkbox',
      '#title' => t('Enable Masonry'),
      '#description' => t("Displays items in a grid using the jQuery Masonry plugin."),
      '#default_value' => $settings['masonry'],
    );
    if (($library = libraries_detect('masonry')) && !empty($library['installed'])) {
      masonry_options_form($settings_form, $settings);
      $settings_form['masonry_width_unit']['#states'] = array(
        'visible' => array(
          'input.form-checkbox[name$="[masonry]"]' => array(
            'checked' => TRUE,
          ),
        ),
      );
      $settings_form['masonry_width_unit']['#prefix'] = '<div class="masonry-options" style="padding-left: 1.5em;">';
      $settings_form['masonry_width']['#states'] = array(
        'visible' => array(
          'input.form-checkbox[name$="[masonry]"]' => array(
            'checked' => TRUE,
          ),
        ),
      );
      $settings_form['masonry_animated']['#states'] = array(
        'visible' => array(
          'input.form-checkbox[name$="[masonry]"]' => array(
            'checked' => TRUE,
          ),
        ),
      );
      $settings_form['masonry_animated_duration']['#states'] = array(
        'visible' => array(
          'input.form-checkbox[name$="[masonry]"]' => array(
            'checked' => TRUE,
          ),
          'input.form-checkbox[name$="[masonry_animated]"]' => array(
            'checked' => TRUE,
          ),
        ),
      );
      $settings_form['masonry_animated_duration']['#prefix'] = '<div class="masonry-options animation" style="padding-left: 1.5em;">';
      $settings_form['masonry_animated_duration']['#suffix'] = '</div>';
      $settings_form['masonry_resizable']['#states'] = array(
        'visible' => array(
          'input.form-checkbox[name$="[masonry]"]' => array(
            'checked' => TRUE,
          ),
        ),
      );
      $settings_form['masonry_center']['#states'] = array(
        'visible' => array(
          'input.form-checkbox[name$="[masonry]"]' => array(
            'checked' => TRUE,
          ),
        ),
      );
      $settings_form['masonry_gutter']['#states'] = array(
        'visible' => array(
          'input.form-checkbox[name$="[masonry]"]' => array(
            'checked' => TRUE,
          ),
        ),
      );
      $settings_form['masonry_rtl']['#states'] = array(
        'visible' => array(
          'input.form-checkbox[name$="[masonry]"]' => array(
            'checked' => TRUE,
          ),
        ),
      );
      $settings_form['masonry_rtl']['#suffix'] = '</div>';
    }
    else {

      // jQuery Masonry plugin not installed
      $settings_form['masonry']['#disabled'] = TRUE;
      $settings_form['masonry']['#description'] = t('This field has been disabled as the jQuery Masonry plugin is not properly installed.');
    }
  }
}