You are here

public function Expert::alterForm in Display Suite 8.2

Same name and namespace in other branches
  1. 8.4 src/Plugin/DsFieldTemplate/Expert.php \Drupal\ds\Plugin\DsFieldTemplate\Expert::alterForm()
  2. 8.3 src/Plugin/DsFieldTemplate/Expert.php \Drupal\ds\Plugin\DsFieldTemplate\Expert::alterForm()

Lets you add you add additional form element for your layout.

Overrides DsFieldTemplateBase::alterForm

File

src/Plugin/DsFieldTemplate/Expert.php, line 19

Class

Expert
Plugin for the expert field template.

Namespace

Drupal\ds\Plugin\DsFieldTemplate

Code

public function alterForm(&$form) {
  $config = $this
    ->getConfiguration();

  // Add label.
  $form['lb'] = array(
    '#type' => 'textfield',
    '#title' => $this
      ->t('Label'),
    '#size' => '10',
    '#default_value' => $config['lb'],
  );

  // Add prefix.
  $form['prefix'] = array(
    '#type' => 'textfield',
    '#title' => $this
      ->t('Prefix'),
    '#size' => '100',
    '#description' => $this
      ->t('You can enter any html in here.'),
    '#default_value' => isset($config['prefix']) ? $config['prefix'] : '',
    '#prefix' => '<div class="field-prefix">',
    '#suffix' => '</div>',
  );
  $wrappers = array(
    'lbw' => array(
      'title' => $this
        ->t('Label wrapper'),
    ),
    'ow' => array(
      'title' => $this
        ->t('Outer wrapper'),
    ),
    'fis' => array(
      'title' => $this
        ->t('Field items'),
    ),
    'fi' => array(
      'title' => $this
        ->t('Field item'),
    ),
  );
  foreach ($wrappers as $wrapper_key => $value) {
    $form[$wrapper_key] = array(
      '#type' => 'checkbox',
      '#title' => $value['title'],
      '#prefix' => '<div class="ft-group ' . $wrapper_key . '">',
      '#default_value' => $config[$wrapper_key],
    );
    $form[$wrapper_key . '-el'] = array(
      '#type' => 'textfield',
      '#title' => $this
        ->t('Element'),
      '#size' => '10',
      '#description' => $this
        ->t('E.g. div, span, h2 etc.'),
      '#default_value' => $config[$wrapper_key . '-el'],
      '#states' => array(
        'visible' => array(
          ':input[name$="[' . $wrapper_key . ']"]' => array(
            'checked' => TRUE,
          ),
        ),
      ),
    );
    $form[$wrapper_key . '-cl'] = array(
      '#type' => 'textfield',
      '#title' => $this
        ->t('Classes'),
      '#size' => '10',
      '#default_value' => $config[$wrapper_key . '-cl'],
      '#description' => $this
        ->t('E.g. field-expert'),
      '#states' => array(
        'visible' => array(
          ':input[name$="[' . $wrapper_key . ']"]' => array(
            'checked' => TRUE,
          ),
        ),
      ),
    );
    $form[$wrapper_key . '-at'] = array(
      '#type' => 'textfield',
      '#title' => $this
        ->t('Attributes'),
      '#size' => '20',
      '#default_value' => $config[$wrapper_key . '-at'],
      '#description' => $this
        ->t('E.g. name="anchor"'),
      '#states' => array(
        'visible' => array(
          ':input[name$="[' . $wrapper_key . ']"]' => array(
            'checked' => TRUE,
          ),
        ),
      ),
    );

    // Hide colon.
    if ($wrapper_key == 'lbw') {
      $form['lb-col'] = array(
        '#type' => 'checkbox',
        '#title' => $this
          ->t('Show label colon'),
        '#default_value' => $config['lb-col'],
        '#attributes' => array(
          'class' => array(
            'colon-checkbox',
          ),
        ),
        '#states' => array(
          'visible' => array(
            ':input[name$="[' . $wrapper_key . ']"]' => array(
              'checked' => TRUE,
            ),
          ),
        ),
      );
    }
    if ($wrapper_key != 'lbw') {
      $form[$wrapper_key . '-def-at'] = array(
        '#type' => 'checkbox',
        '#title' => $this
          ->t('Add default attributes'),
        '#default_value' => $config[$wrapper_key . '-def-at'],
        '#suffix' => $wrapper_key == 'ow' ? '' : '</div><div class="clearfix"></div>',
        '#states' => array(
          'visible' => array(
            ':input[name$="[' . $wrapper_key . ']"]' => array(
              'checked' => TRUE,
            ),
          ),
        ),
      );
    }
    else {
      $form['ft'][$wrapper_key . '-def-at'] = array(
        '#markup' => '</div><div class="clearfix"></div>',
      );
    }

    // Default classes for outer wrapper.
    if ($wrapper_key == 'ow') {
      $form[$wrapper_key . '-def-cl'] = array(
        '#type' => 'checkbox',
        '#title' => $this
          ->t('Add default classes'),
        '#default_value' => $config[$wrapper_key . '-def-cl'],
        '#suffix' => '</div><div class="clearfix"></div>',
        '#states' => array(
          'visible' => array(
            ':input[name$="[' . $wrapper_key . ']"]' => array(
              'checked' => TRUE,
            ),
          ),
        ),
      );
    }
  }

  // Add suffix.
  $form['suffix'] = array(
    '#type' => 'textfield',
    '#title' => $this
      ->t('Suffix'),
    '#size' => '100',
    '#description' => $this
      ->t('You can enter any html in here.'),
    '#default_value' => isset($config['suffix']) ? $config['suffix'] : '',
    '#prefix' => '<div class="field-suffix">',
    '#suffix' => '</div>',
  );

  // Token support.
  if (\Drupal::moduleHandler()
    ->moduleExists('token')) {
    $form['tokens'] = array(
      '#title' => $this
        ->t('Tokens'),
      '#type' => 'container',
      '#states' => array(
        'invisible' => array(
          'input[name="use_token"]' => array(
            'checked' => FALSE,
          ),
        ),
      ),
    );
    $form['tokens']['help'] = array(
      '#theme' => 'token_tree_link',
      '#token_types' => 'all',
      '#global_types' => FALSE,
      '#dialog' => TRUE,
    );
  }
}