You are here

public function Expert::massageRenderValues 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::massageRenderValues()
  2. 8.3 src/Plugin/DsFieldTemplate/Expert.php \Drupal\ds\Plugin\DsFieldTemplate\Expert::massageRenderValues()

Massages the values before they get rendered.

Overrides DsFieldTemplateBase::massageRenderValues

File

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

Class

Expert
Plugin for the expert field template.

Namespace

Drupal\ds\Plugin\DsFieldTemplate

Code

public function massageRenderValues(&$field_settings, $values) {
  if (!empty($values['lb'])) {
    $field_settings['lb'] = $values['lb'];
  }
  if (!empty($values['lb-col'])) {
    $field_settings['lb-col'] = TRUE;
  }
  $wrappers = array(
    'lbw' => $this
      ->t('Label wrapper'),
    'ow' => $this
      ->t('Wrapper'),
    'fis' => $this
      ->t('Field items'),
    'fi' => $this
      ->t('Field item'),
  );
  foreach ($wrappers as $wrapper_key => $title) {
    if (!empty($values[$wrapper_key])) {

      // Enable.
      $field_settings[$wrapper_key] = TRUE;

      // Element.
      $field_settings[$wrapper_key . '-el'] = !empty($values[$wrapper_key . '-el']) ? $values[$wrapper_key . '-el'] : 'div';

      // Classes.
      $field_settings[$wrapper_key . '-cl'] = !empty($values[$wrapper_key . '-cl']) ? $values[$wrapper_key . '-cl'] : '';

      // Default Classes.
      if (in_array($wrapper_key, array(
        'ow',
        'lb',
      ))) {
        $field_settings[$wrapper_key . '-def-cl'] = !empty($values[$wrapper_key . '-def-cl']) ? TRUE : FALSE;
      }

      // Attributes.
      $field_settings[$wrapper_key . '-at'] = !empty($values[$wrapper_key . '-at']) ? $values[$wrapper_key . '-at'] : '';

      // Default attributes.
      $field_settings[$wrapper_key . '-def-at'] = !empty($values[$wrapper_key . '-def-at']) ? TRUE : FALSE;

      // Token replacement.

      /* @var \Drupal\Core\Entity\EntityInterface $entity */
      if ($entity = $this
        ->getEntity()) {

        // Tokens.
        $apply_to = array(
          'prefix',
          $wrapper_key . '-el',
          $wrapper_key . '-cl',
          $wrapper_key . '-at',
          'suffix',
        );
        foreach ($apply_to as $identifier) {
          if (!empty($field_settings[$identifier])) {
            $field_settings[$identifier] = \Drupal::token()
              ->replace($field_settings[$identifier], array(
              $entity
                ->getEntityTypeId() => $entity,
            ), array(
              'clear' => TRUE,
            ));
          }
        }
      }
    }
  }
}