View source
<?php
namespace Drupal\field_group;
use Drupal\Core\Field\PluginSettingsBase;
abstract class FieldGroupFormatterBase extends PluginSettingsBase implements FieldGroupFormatterInterface {
protected $group;
protected $settings;
protected $label;
protected $viewMode;
protected $context;
public function __construct($plugin_id, $plugin_definition, $group, array $settings, $label) {
parent::__construct(array(), $plugin_id, $plugin_definition);
$this->group = $group;
$this->settings = $settings;
$this->label = $label;
$this->context = $group->context;
}
public function getLabel() {
return $this->label;
}
public function settingsForm() {
$form = array();
$form['label'] = array(
'#type' => 'textfield',
'#title' => t('Field group label'),
'#default_value' => $this->label,
'#weight' => -5,
);
$form['id'] = array(
'#title' => t('ID'),
'#type' => 'textfield',
'#default_value' => $this
->getSetting('id'),
'#weight' => 10,
'#element_validate' => array(
'field_group_validate_id',
),
);
$form['classes'] = array(
'#title' => t('Extra CSS classes'),
'#type' => 'textfield',
'#default_value' => $this
->getSetting('classes'),
'#weight' => 11,
'#element_validate' => array(
'field_group_validate_css_class',
),
);
return $form;
}
public function settingsSummary() {
$summary = array();
if ($this
->getSetting('formatter')) {
$summary[] = $this->pluginDefinition['label'] . ': ' . $this
->getSetting('formatter');
}
if ($this
->getSetting('id')) {
$summary[] = $this
->t('Id: @id', array(
'@id' => $this
->getSetting('id'),
));
}
if ($this
->getSetting('classes')) {
$summary[] = \Drupal::translation()
->translate('Extra CSS classes: @classes', array(
'@classes' => $this
->getSetting('classes'),
));
}
return $summary;
}
public static function defaultSettings() {
return self::defaultContextSettings('view');
}
public static function defaultContextSettings($context) {
return array(
'classes' => '',
'id' => '',
);
}
protected function getClasses() {
$classes = array();
if ($this
->getSetting('required_fields')) {
$classes[] = 'required-fields';
$classes[] = 'field-group-' . str_replace('_', '-', $this
->getBaseId());
}
if ($this
->getSetting('classes')) {
$classes = array_merge($classes, explode(' ', trim($this
->getSetting('classes'))));
}
return $classes;
}
public function preRender(&$element, $rendering_object) {
$element['#group_name'] = $this->group->group_name;
$element['#entity_type'] = $this->group->entity_type;
$element['#bundle'] = $this->group->bundle;
}
}