Issue #1912504 by damiankloip, dawehner, amateescu: Remove _field_view_formatter_options() from Views as it duplicates FormatterPluginManager::getOptions().

8.0.x
Alex Pott 2013-06-14 00:56:22 +02:00
parent 27bd89be14
commit 8cc0c63808
1 changed files with 43 additions and 34 deletions

View File

@ -9,11 +9,13 @@ namespace Drupal\field\Plugin\views\field;
use Drupal\Core\Language\Language;
use Drupal\Core\Entity\EntityInterface;
use Drupal\field\Plugin\Type\Formatter\FormatterPluginManager;
use Drupal\views\ViewExecutable;
use Drupal\views\Plugin\views\display\DisplayPluginBase;
use Drupal\views\Plugin\views\field\FieldPluginBase;
use Drupal\Component\Annotation\PluginID;
use Drupal\views\Views;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* A field that displays fieldapi fields.
@ -74,6 +76,43 @@ class Field extends FieldPluginBase {
*/
protected $formatterOptions;
/**
* The field formatter plugin manager.
*
* @var \Drupal\field\Plugin\Type\Formatter\FormatterPluginManager
*/
protected $formatterPluginManager;
/**
* Constructs a \Drupal\field\Plugin\views\field\Field object.
*
* @param array $configuration
* A configuration array containing information about the plugin instance.
* @param string $plugin_id
* The plugin_id for the plugin instance.
* @param array $plugin_definition
* The plugin implementation definition.
* @param \Drupal\field\Plugin\Type\Formatter\FormatterPluginManager $formatter_plugin_manager
* The field formatter plugin manager.
*/
public function __construct(array $configuration, $plugin_id, array $plugin_definition, FormatterPluginManager $formatter_plugin_manager) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->formatterPluginManager = $formatter_plugin_manager;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, array $plugin_definition) {
return new static(
$configuration,
$plugin_id,
$plugin_definition,
$container->get('plugin.manager.field.formatter')
);
}
/**
* Overrides \Drupal\views\Plugin\views\field\FieldPluginBase::init().
*/
@ -333,11 +372,14 @@ class Field extends FieldPluginBase {
return $options;
}
/**
* {@inheritdoc}
*/
public function buildOptionsForm(&$form, &$form_state) {
parent::buildOptionsForm($form, $form_state);
$field = $this->field_info;
$formatters = $this->formatterOptions($field['type']);
$formatters = $this->formatterPluginManager->getOptions($field['type']);
$column_names = array_keys($field['columns']);
// If this is a multiple value field, add its options.
@ -854,37 +896,4 @@ class Field extends FieldPluginBase {
}
}
/**
* Returns an array of formatter options for a field type.
*
* Borrowed from field_ui.
*
* @param string $field_type
* (optional) The field type to get options for.
*
* @return array
* An array of formatter options.
*
* @see field_ui_formatter_options().
*/
protected function formatterOptions($field_type = NULL) {
if (!isset($this->formatterOptions)) {
$field_types = field_info_field_types();
$this->formatterOptions = array();
foreach (field_info_formatter_types() as $name => $formatter) {
foreach ($formatter['field_types'] as $formatter_field_type) {
// Check that the field type exists.
if (isset($field_types[$formatter_field_type])) {
$this->formatterOptions[$formatter_field_type][$name] = $formatter['label'];
}
}
}
}
if ($field_type) {
return !empty($this->formatterOptions[$field_type]) ? $this->formatterOptions[$field_type] : array();
}
return $options;
}
}