Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 4 |
CRAP | |
0.00% |
0 / 26 |
StringListField | |
0.00% |
0 / 1 |
|
0.00% |
0 / 4 |
42 | |
0.00% |
0 / 26 |
init | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
defineOptions | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
buildOptionsForm | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 12 |
|||
summaryName | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 6 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\options\Plugin\views\argument\StringListField. | |
*/ | |
namespace Drupal\options\Plugin\views\argument; | |
use Drupal\Core\Field\AllowedTagsXssTrait; | |
use Drupal\Core\Field\FieldFilteredMarkup; | |
use Drupal\Core\Form\FormStateInterface; | |
use Drupal\views\FieldAPIHandlerTrait; | |
use Drupal\views\ViewExecutable; | |
use Drupal\views\Plugin\views\display\DisplayPluginBase; | |
use Drupal\views\Plugin\views\argument\StringArgument; | |
/** | |
* Argument handler for list field to show the human readable name in summary. | |
* | |
* @ingroup views_argument_handlers | |
* | |
* @ViewsArgument("string_list_field") | |
*/ | |
class StringListField extends StringArgument { | |
use AllowedTagsXssTrait; | |
use FieldAPIHandlerTrait; | |
/** | |
* Stores the allowed values of this field. | |
* | |
* @var array | |
*/ | |
protected $allowedValues = NULL; | |
/** | |
* {@inheritdoc} | |
*/ | |
public function init(ViewExecutable $view, DisplayPluginBase $display, array &$options = NULL) { | |
parent::init($view, $display, $options); | |
$field_storage = $this->getFieldStorageDefinition(); | |
$this->allowedValues = options_allowed_values($field_storage); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
protected function defineOptions() { | |
$options = parent::defineOptions(); | |
$options['summary']['contains']['human'] = ['default' => FALSE]; | |
return $options; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function buildOptionsForm(&$form, FormStateInterface $form_state) { | |
parent::buildOptionsForm($form, $form_state); | |
$form['summary']['human'] = [ | |
'#title' => $this->t('Display list value as human readable'), | |
'#type' => 'checkbox', | |
'#default_value' => $this->options['summary']['human'], | |
'#states' => [ | |
'visible' => [ | |
':input[name="options[default_action]"]' => ['value' => 'summary'], | |
], | |
], | |
]; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function summaryName($data) { | |
$value = $data->{$this->name_alias}; | |
// If the list element has a human readable name show it. | |
if (isset($this->allowedValues[$value]) && !empty($this->options['summary']['human'])) { | |
$value = $this->allowedValues[$value]; | |
} | |
return FieldFilteredMarkup::create($this->caseTransform($value, $this->options['case'])); | |
} | |
} |