diff --git a/core/lib/Drupal/Core/Field/Annotation/FieldFormatter.php b/core/lib/Drupal/Core/Field/Annotation/FieldFormatter.php index fc4a4c4..067f54d 100644 --- a/core/lib/Drupal/Core/Field/Annotation/FieldFormatter.php +++ b/core/lib/Drupal/Core/Field/Annotation/FieldFormatter.php @@ -67,14 +67,6 @@ class FieldFormatter extends Plugin { public $field_types = array(); /** - * An array whose keys are the names of the settings available to the - * formatter type, and whose values are the default values for those settings. - * - * @var array - */ - public $settings = array(); - - /** * An integer to determine the weight of this formatter relative to other * formatter in the Field UI when selecting a formatter for a given field * instance. diff --git a/core/lib/Drupal/Core/Field/Annotation/FieldType.php b/core/lib/Drupal/Core/Field/Annotation/FieldType.php index 90d0cf7..3b306c9 100644 --- a/core/lib/Drupal/Core/Field/Annotation/FieldType.php +++ b/core/lib/Drupal/Core/Field/Annotation/FieldType.php @@ -52,33 +52,6 @@ class FieldType extends DataType { public $description; /** - * An array of field-level settings available for the field type. - * - * Keys are the names of the settings, and values are the default values for - * those settings. - * - * @var array - */ - public $settings; - - /** - * An array of instance-level settings available for the field type. - * - * Keys are the names of the settings, and values are the default values for - * those settings. - * - * Instance-level settings can have different values on each field instance, - * and thus allow greater flexibility than field-level settings. It is - * recommended to put settings at the instance level whenever possible. - * Notable exceptions: settings acting on the storage schema, or settings that - * Views needs to use across field instances (for example, settings defining - * the list of allowed values for the field). - * - * @var array - */ - public $instance_settings; - - /** * The plugin_id of the default widget for this field type. * * This widget must be available whenever the field type is available (i.e. diff --git a/core/lib/Drupal/Core/Field/FieldItemBase.php b/core/lib/Drupal/Core/Field/FieldItemBase.php index fce6089..cff21f1 100644 --- a/core/lib/Drupal/Core/Field/FieldItemBase.php +++ b/core/lib/Drupal/Core/Field/FieldItemBase.php @@ -26,6 +26,20 @@ /** * {@inheritdoc} */ + public static function settings() { + return array(); + } + + /** + * {@inheritdoc} + */ + public static function instanceSettings() { + return array(); + } + + /** + * {@inheritdoc} + */ public static function mainPropertyName() { return 'value'; } diff --git a/core/lib/Drupal/Core/Field/FieldItemInterface.php b/core/lib/Drupal/Core/Field/FieldItemInterface.php index ae7bf6c..94f71b7 100644 --- a/core/lib/Drupal/Core/Field/FieldItemInterface.php +++ b/core/lib/Drupal/Core/Field/FieldItemInterface.php @@ -213,6 +213,22 @@ public function delete(); public function deleteRevision(); /** + * Defines the field-level settings for this plugin. + * + * @return array + * A list of default settings, keyed by the setting name. + */ + public static function settings(); + + /** + * Defines the instance-level settings for this plugin. + * + * @return array + * A list of default settings, keyed by the setting name. + */ + public static function instanceSettings(); + + /** * Returns a form for the field-level settings. * * Invoked from \Drupal\field_ui\Form\FieldEditForm to allow administrators to diff --git a/core/lib/Drupal/Core/Field/FieldTypePluginManager.php b/core/lib/Drupal/Core/Field/FieldTypePluginManager.php index 3928525..e615c99 100644 --- a/core/lib/Drupal/Core/Field/FieldTypePluginManager.php +++ b/core/lib/Drupal/Core/Field/FieldTypePluginManager.php @@ -7,6 +7,7 @@ namespace Drupal\Core\Field; +use Drupal\Component\Plugin\Factory\DefaultFactory; use Drupal\Core\Cache\CacheBackendInterface; use Drupal\Core\Extension\ModuleHandlerInterface; use Drupal\Core\Language\LanguageManager; @@ -18,14 +19,6 @@ class FieldTypePluginManager extends DefaultPluginManager implements FieldTypePluginManagerInterface { /** - * {@inheritdoc} - */ - protected $defaults = array( - 'settings' => array(), - 'instance_settings' => array(), - ); - - /** * Constructs the FieldTypePluginManager object * * @param \Traversable $namespaces @@ -58,16 +51,24 @@ public function processDefinition(&$definition, $plugin_id) { * {@inheritdoc} */ public function getDefaultSettings($type) { - $info = $this->getDefinition($type); - return isset($info['settings']) ? $info['settings'] : array(); + $plugin_definition = $this->getDefinition($type); + if (!empty($plugin_definition['class'])) { + $plugin_class = DefaultFactory::getPluginClass($type, $plugin_definition); + return $plugin_class::settings(); + } + return array(); } /** * {@inheritdoc} */ public function getDefaultInstanceSettings($type) { - $info = $this->getDefinition($type); - return isset($info['instance_settings']) ? $info['instance_settings'] : array(); + $plugin_definition = $this->getDefinition($type); + if (!empty($plugin_definition['class'])) { + $plugin_class = DefaultFactory::getPluginClass($type, $plugin_definition); + return $plugin_class::instanceSettings(); + } + return array(); } /** diff --git a/core/lib/Drupal/Core/Field/FormatterPluginManager.php b/core/lib/Drupal/Core/Field/FormatterPluginManager.php index d81ff57..ba72ae1 100644 --- a/core/lib/Drupal/Core/Field/FormatterPluginManager.php +++ b/core/lib/Drupal/Core/Field/FormatterPluginManager.php @@ -198,8 +198,12 @@ public function getOptions($field_type = NULL) { * definition, or an empty array if type or settings are undefined. */ public function getDefaultSettings($type) { - $info = $this->getDefinition($type); - return isset($info['settings']) ? $info['settings'] : array(); + $plugin_definition = $this->getDefinition($type); + if (!empty($plugin_definition['class'])) { + $plugin_class = DefaultFactory::getPluginClass($type, $plugin_definition); + return $plugin_class::settings(); + } + return array(); } } diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/DecimalFormatter.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/DecimalFormatter.php index ae595d0..8f92dcd 100644 --- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/DecimalFormatter.php +++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/DecimalFormatter.php @@ -20,12 +20,6 @@ * field_types = { * "decimal", * "float" - * }, - * settings = { - * "thousand_separator" = "", - * "decimal_separator" = ".", - * "scale" = "2", - * "prefix_suffix" = "TRUE" * } * ) */ @@ -34,6 +28,18 @@ class DecimalFormatter extends NumericFormatterBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['thousand_separator'] = ''; + $settings['decimal_separator'] = '.'; + $settings['scale'] = 2; + $settings['prefix_suffix'] = TRUE; + return $settings; + } + + /** + * {@inheritdoc} + */ public function settingsForm(array $form, array &$form_state) { $elements = parent::settingsForm($form, $form_state); diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/IntegerFormatter.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/IntegerFormatter.php index 7849031..1f7f8a7 100644 --- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/IntegerFormatter.php +++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/IntegerFormatter.php @@ -19,10 +19,6 @@ * label = @Translation("Default"), * field_types = { * "integer" - * }, - * settings = { - * "thousand_separator" = "", - * "prefix_suffix" = "TRUE" * } * ) */ @@ -31,6 +27,16 @@ class IntegerFormatter extends NumericFormatterBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['thousand_separator'] = ''; + $settings['prefix_suffix'] = TRUE; + return $settings; + } + + /** + * {@inheritdoc} + */ protected function numberFormat($number) { return number_format($number, 0, '', $this->getSetting('thousand_separator')); } diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/DecimalItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/DecimalItem.php index 0d8dee4..95b04a6 100644 --- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/DecimalItem.php +++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/DecimalItem.php @@ -17,16 +17,6 @@ * id = "decimal", * label = @Translation("Number (decimal)"), * description = @Translation("This field stores a number in the database in a fixed decimal format."), - * settings = { - * "precision" = "10", - * "scale" = "2" - * }, - * instance_settings = { - * "min" = "", - * "max" = "", - * "prefix" = "", - * "suffix" = "" - * }, * default_widget = "number", * default_formatter = "number_decimal" * ) @@ -36,6 +26,16 @@ class DecimalItem extends NumericItemBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['precision'] = 10; + $settings['scale'] = 2; + return $settings; + } + + /** + * {@inheritdoc} + */ public static function propertyDefinitions(FieldDefinitionInterface $field_definition) { $properties['value'] = DataDefinition::create('string') ->setLabel(t('Decimal value')); diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php index 524ccd3..51cc1ce 100644 --- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php +++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php @@ -35,6 +35,26 @@ class EntityReferenceItem extends FieldItemBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['target_type'] = \Drupal::moduleHandler()->moduleExists('node') ? 'node' : 'user'; + $settings['target_bundle'] = NULL; + return $settings; + } + + /** + * {@inheritdoc} + */ + public static function instanceSettings() { + $settings = parent::instanceSettings(); + $settings['handler'] = 'default'; + $settings['handler_settings'] = array(); + return $settings; + } + + /** + * {@inheritdoc} + */ public static function propertyDefinitions(FieldDefinitionInterface $field_definition) { $settings = $field_definition->getSettings(); $target_type_info = \Drupal::entityManager()->getDefinition($settings['target_type']); diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/FloatItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/FloatItem.php index 2d9511b..eda49cc 100644 --- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/FloatItem.php +++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/FloatItem.php @@ -17,12 +17,6 @@ * id = "float", * label = @Translation("Number (float)"), * description = @Translation("This field stores a number in the database in a floating point format."), - * instance_settings = { - * "min" = "", - * "max" = "", - * "prefix" = "", - * "suffix" = "" - * }, * default_widget = "number", * default_formatter = "number_decimal" * ) diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/IntegerItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/IntegerItem.php index 31f3bc6..f22e060 100644 --- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/IntegerItem.php +++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/IntegerItem.php @@ -17,12 +17,6 @@ * id = "integer", * label = @Translation("Number (integer)"), * description = @Translation("This field stores a number in the database as an integer."), - * instance_settings = { - * "min" = "", - * "max" = "", - * "prefix" = "", - * "suffix" = "" - * }, * default_widget = "number", * default_formatter = "number_integer" * ) diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/NumericItemBase.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/NumericItemBase.php index c1270c4..6b32396 100644 --- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/NumericItemBase.php +++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/NumericItemBase.php @@ -17,6 +17,18 @@ /** * {@inheritdoc} */ + public static function instanceSettings() { + $settings = parent::instanceSettings(); + $settings['min'] = ''; + $settings['max'] = ''; + $settings['prefix'] = ''; + $settings['suffix'] = ''; + return $settings; + } + + /** + * {@inheritdoc} + */ public function instanceSettingsForm(array $form, array &$form_state) { $element = array(); $settings = $this->getSettings(); diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/StringItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/StringItem.php index 2ef9971..c1e303f 100644 --- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/StringItem.php +++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/StringItem.php @@ -18,9 +18,6 @@ * id = "string", * label = @Translation("String"), * description = @Translation("An entity field containing a string value."), - * settings = { - * "max_length" = "255" - * }, * configurable = FALSE, * default_widget = "string", * default_formatter = "string" @@ -31,6 +28,15 @@ class StringItem extends FieldItemBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['max_length'] = 255; + return $settings; + } + + /** + * {@inheritdoc} + */ public static function propertyDefinitions(FieldDefinitionInterface $field_definition) { $properties['value'] = DataDefinition::create('string') ->setLabel(t('Text value')); diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/UriItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/UriItem.php index 0fa6820..0f8dfbc 100644 --- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/UriItem.php +++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/UriItem.php @@ -21,9 +21,6 @@ * id = "uri", * label = @Translation("URI"), * description = @Translation("An entity field containing a URI."), - * settings = { - * "max_length" = "2048" - * }, * configurable = FALSE * ) */ @@ -32,6 +29,15 @@ class UriItem extends StringItem { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['max_length'] = 2048; + return $settings; + } + + /** + * {@inheritdoc} + */ public static function propertyDefinitions(FieldDefinitionInterface $field_definition) { $properties['value'] = DataDefinition::create('uri') ->setLabel(t('URI value')); diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/UuidItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/UuidItem.php index 27ca9e9..9d38ae6 100644 --- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/UuidItem.php +++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/UuidItem.php @@ -16,9 +16,6 @@ * id = "uuid", * label = @Translation("UUID"), * description = @Translation("An entity field containing a UUID."), - * settings = { - * "max_length" = "128" - * }, * configurable = FALSE * ) */ @@ -27,6 +24,15 @@ class UuidItem extends StringItem { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['max_length'] = 128; + return $settings; + } + + /** + * {@inheritdoc} + */ public function applyDefaultValue($notify = TRUE) { // Default to one field item with a generated UUID. $uuid = \Drupal::service('uuid'); diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/EmailDefaultWidget.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/EmailDefaultWidget.php index c273bd8..269984b 100644 --- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/EmailDefaultWidget.php +++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/EmailDefaultWidget.php @@ -18,9 +18,6 @@ * label = @Translation("E-mail"), * field_types = { * "email" - * }, - * settings = { - * "placeholder" = "" * } * ) */ @@ -29,6 +26,15 @@ class EmailDefaultWidget extends WidgetBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['placeholder'] = ''; + return $settings; + } + + /** + * {@inheritdoc} + */ public function settingsForm(array $form, array &$form_state) { $element['placeholder'] = array( '#type' => 'textfield', diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/NumberWidget.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/NumberWidget.php index 82c8d37..3eb9cef 100644 --- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/NumberWidget.php +++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/NumberWidget.php @@ -21,9 +21,6 @@ * "integer", * "decimal", * "float" - * }, - * settings = { - * "placeholder" = "" * } * ) */ @@ -32,6 +29,15 @@ class NumberWidget extends WidgetBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['placeholder'] = ''; + return $settings; + } + + /** + * {@inheritdoc} + */ public function settingsForm(array $form, array &$form_state) { $element['placeholder'] = array( '#type' => 'textfield', diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/StringWidget.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/StringWidget.php index 524e89d..a433410 100644 --- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/StringWidget.php +++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/StringWidget.php @@ -18,10 +18,6 @@ * label = @Translation("String field"), * field_types = { * "string" - * }, - * settings = { - * "size" = "60", - * "placeholder" = "" * } * ) */ @@ -30,6 +26,16 @@ class StringWidget extends WidgetBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['size'] = 60; + $settings['placeholder'] = ''; + return $settings; + } + + /** + * {@inheritdoc} + */ public function settingsForm(array $form, array &$form_state) { $element['size'] = array( '#type' => 'number', diff --git a/core/lib/Drupal/Core/Field/PluginSettingsBase.php b/core/lib/Drupal/Core/Field/PluginSettingsBase.php index 895563a..05484f8 100644 --- a/core/lib/Drupal/Core/Field/PluginSettingsBase.php +++ b/core/lib/Drupal/Core/Field/PluginSettingsBase.php @@ -31,7 +31,14 @@ protected $defaultSettingsMerged = FALSE; /** - * Implements Drupal\field\Plugin\PluginSettingsInterface::getSettings(). + * {@inheritdoc} + */ + public static function settings() { + return array(); + } + + /** + * {@inheritdoc} */ public function getSettings() { // Merge defaults before returning the array. @@ -42,11 +49,11 @@ public function getSettings() { } /** - * Implements Drupal\field\Plugin\PluginSettingsInterface::getSetting(). + * {@inheritdoc} */ public function getSetting($key) { - // Merge defaults if we have no value for the key. - if (!$this->defaultSettingsMerged && !array_key_exists($key, $this->settings)) { + // Merge defaults if that has not been done before. + if (!$this->defaultSettingsMerged) { $this->mergeDefaults(); } return isset($this->settings[$key]) ? $this->settings[$key] : NULL; @@ -56,20 +63,13 @@ public function getSetting($key) { * Merges default settings values into $settings. */ protected function mergeDefaults() { - $this->settings += $this->getDefaultSettings(); + // Use only settings defined by plugin. + $this->settings = array_intersect_key($this->settings, static::settings()) + static::settings(); $this->defaultSettingsMerged = TRUE; } /** - * Implements Drupal\field\Plugin\PluginSettingsInterface::getDefaultSettings(). - */ - public function getDefaultSettings() { - $definition = $this->getPluginDefinition(); - return $definition['settings']; - } - - /** - * Implements Drupal\field\Plugin\PluginSettingsInterface::setSettings(). + * {@inheritdoc} */ public function setSettings(array $settings) { $this->settings = $settings; @@ -78,7 +78,7 @@ public function setSettings(array $settings) { } /** - * Implements Drupal\field\Plugin\PluginSettingsInterface::setSetting(). + * {@inheritdoc} */ public function setSetting($key, $value) { $this->settings[$key] = $value; diff --git a/core/lib/Drupal/Core/Field/PluginSettingsInterface.php b/core/lib/Drupal/Core/Field/PluginSettingsInterface.php index d7ffc47..f9ffa86 100644 --- a/core/lib/Drupal/Core/Field/PluginSettingsInterface.php +++ b/core/lib/Drupal/Core/Field/PluginSettingsInterface.php @@ -15,6 +15,14 @@ interface PluginSettingsInterface extends PluginInspectionInterface { /** + * Defines the default settings for this plugin. + * + * @return array + * A list of default settings, keyed by the setting name. + */ + public static function settings(); + + /** * Returns the array of settings, including defaults for missing settings. * * @return array @@ -34,21 +42,13 @@ public function getSettings(); public function getSetting($key); /** - * Returns the default settings for the plugin. - * - * @return array - * The array of default setting values, keyed by setting names. - */ - public function getDefaultSettings(); - - /** * Sets the settings for the plugin. * * @param array $settings * The array of settings, keyed by setting names. Missing settings will be * assigned their default values. * - * @return \Drupal\field\Plugin\PluginSettingsInterface + * @return \Drupal\Core\Field\PluginSettingsInterface * The plugin itself. */ public function setSettings(array $settings); @@ -61,7 +61,7 @@ public function setSettings(array $settings); * @param mixed $value * The setting value. * - * @return \Drupal\field\Plugin\PluginSettingsInterface + * @return \Drupal\Core\Field\PluginSettingsInterface * The plugin itself. */ public function setSetting($key, $value); diff --git a/core/lib/Drupal/Core/Field/WidgetPluginManager.php b/core/lib/Drupal/Core/Field/WidgetPluginManager.php index 47fedb1..0fb3815 100644 --- a/core/lib/Drupal/Core/Field/WidgetPluginManager.php +++ b/core/lib/Drupal/Core/Field/WidgetPluginManager.php @@ -200,8 +200,13 @@ public function getOptions($field_type = NULL) { * definition, or an empty array if type or settings are undefined. */ public function getDefaultSettings($type) { - $info = $this->getDefinition($type); - return isset($info['settings']) ? $info['settings'] : array(); + $plugin_definition = $this->getDefinition($type); + if (!empty($plugin_definition['class'])) { + $plugin_class = DefaultFactory::getPluginClass($type, $plugin_definition); + return $plugin_class::settings(); + } + + return array(); } } diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/Field/FieldFormatter/CommentDefaultFormatter.php b/core/modules/comment/lib/Drupal/comment/Plugin/Field/FieldFormatter/CommentDefaultFormatter.php index bf4979b..8bf7ef4 100644 --- a/core/modules/comment/lib/Drupal/comment/Plugin/Field/FieldFormatter/CommentDefaultFormatter.php +++ b/core/modules/comment/lib/Drupal/comment/Plugin/Field/FieldFormatter/CommentDefaultFormatter.php @@ -29,15 +29,21 @@ * }, * edit = { * "editor" = "disabled" - * }, - * settings = { - * "pager_id" = 0 * } * ) */ class CommentDefaultFormatter extends FormatterBase implements ContainerFactoryPluginInterface { /** + * {@inheritdoc} + */ + public static function settings() { + $settings = parent::settings(); + $settings['pager_id'] = 0; + return $settings; + } + + /** * The comment storage controller. * * @var \Drupal\comment\CommentStorageControllerInterface diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/Field/FieldType/CommentItem.php b/core/modules/comment/lib/Drupal/comment/Plugin/Field/FieldType/CommentItem.php index 115bce2..170e0bb 100644 --- a/core/modules/comment/lib/Drupal/comment/Plugin/Field/FieldType/CommentItem.php +++ b/core/modules/comment/lib/Drupal/comment/Plugin/Field/FieldType/CommentItem.php @@ -18,17 +18,6 @@ * id = "comment", * label = @Translation("Comments"), * description = @Translation("This field manages configuration and presentation of comments on an entity."), - * settings = { - * "description" = "", - * }, - * instance_settings = { - * "default_mode" = COMMENT_MODE_THREADED, - * "per_page" = 50, - * "form_location" = COMMENT_FORM_BELOW, - * "anonymous" = COMMENT_ANONYMOUS_MAYNOT_CONTACT, - * "subject" = 1, - * "preview" = DRUPAL_OPTIONAL, - * }, * default_widget = "comment_default", * default_formatter = "comment_default" * ) @@ -38,6 +27,29 @@ class CommentItem extends FieldItemBase implements CommentItemInterface { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['description'] = ''; + return $settings; + } + + /** + * {@inheritdoc} + */ + public static function instanceSettings() { + $settings = parent::instanceSettings(); + $settings['default_mode'] = COMMENT_MODE_THREADED; + $settings['per_page'] = 50; + $settings['form_location'] = COMMENT_FORM_BELOW; + $settings['anonymous'] = COMMENT_ANONYMOUS_MAYNOT_CONTACT; + $settings['subject'] = 1; + $settings['preview'] = DRUPAL_OPTIONAL; + return $settings; + } + + /** + * {@inheritdoc} + */ public static function propertyDefinitions(FieldDefinitionInterface $field_definition) { $properties['status'] = DataDefinition::create('integer') ->setLabel(t('Comment status value')); diff --git a/core/modules/datetime/lib/Drupal/datetime/Plugin/Field/FieldFormatter/DateTimeDefaultFormatter.php b/core/modules/datetime/lib/Drupal/datetime/Plugin/Field/FieldFormatter/DateTimeDefaultFormatter.php index 754ffc0..918e74f 100644 --- a/core/modules/datetime/lib/Drupal/datetime/Plugin/Field/FieldFormatter/DateTimeDefaultFormatter.php +++ b/core/modules/datetime/lib/Drupal/datetime/Plugin/Field/FieldFormatter/DateTimeDefaultFormatter.php @@ -24,15 +24,21 @@ * label = @Translation("Default"), * field_types = { * "datetime" - * }, - * settings = { - * "format_type" = "medium", * } * ) */ class DateTimeDefaultFormatter extends FormatterBase implements ContainerFactoryPluginInterface { /** + * {@inheritdoc} + */ + public static function settings() { + $settings = parent::settings(); + $settings['format_type'] = 'medium'; + return $settings; + } + + /** * The date service. * * @var \Drupal\Core\Datetime\Date diff --git a/core/modules/datetime/lib/Drupal/datetime/Plugin/Field/FieldType/DateTimeItem.php b/core/modules/datetime/lib/Drupal/datetime/Plugin/Field/FieldType/DateTimeItem.php index 6119730..7130ac5 100644 --- a/core/modules/datetime/lib/Drupal/datetime/Plugin/Field/FieldType/DateTimeItem.php +++ b/core/modules/datetime/lib/Drupal/datetime/Plugin/Field/FieldType/DateTimeItem.php @@ -19,9 +19,6 @@ * id = "datetime", * label = @Translation("Date"), * description = @Translation("Create and store date values."), - * settings = { - * "datetime_type" = "datetime" - * }, * default_widget = "datetime_default", * default_formatter = "datetime_default", * list_class = "\Drupal\datetime\Plugin\Field\FieldType\DateTimeFieldItemList" @@ -30,6 +27,15 @@ class DateTimeItem extends FieldItemBase implements PrepareCacheInterface { /** + * {@inheritdoc} + */ + public static function settings() { + $settings = parent::settings(); + $settings['datetime_type'] = 'datetime'; + return $settings; + } + + /** * Value for the 'datetime_type' setting: store only a date. */ const DATETIME_TYPE_DATE = 'date'; diff --git a/core/modules/datetime/lib/Drupal/datetime/Plugin/Field/FieldWidget/DateTimeDatelistWidget.php b/core/modules/datetime/lib/Drupal/datetime/Plugin/Field/FieldWidget/DateTimeDatelistWidget.php index cbae23c..57f108a 100644 --- a/core/modules/datetime/lib/Drupal/datetime/Plugin/Field/FieldWidget/DateTimeDatelistWidget.php +++ b/core/modules/datetime/lib/Drupal/datetime/Plugin/Field/FieldWidget/DateTimeDatelistWidget.php @@ -18,11 +18,6 @@ * label = @Translation("Select list"), * field_types = { * "datetime" - * }, - * settings = { - * "increment" = 15, - * "date_order" = "YMD", - * "time_type" = "24", * } * ) */ @@ -31,6 +26,17 @@ class DateTimeDatelistWidget extends WidgetBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['increment'] = '15'; + $settings['date_order'] = 'YMD'; + $settings['time_type'] = '24'; + return $settings; + } + + /** + * {@inheritdoc} + */ public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, array &$form_state) { $date_order = $this->getSetting('date_order'); $time_type = $this->getSetting('time_type'); diff --git a/core/modules/entity_reference/entity_reference.module b/core/modules/entity_reference/entity_reference.module index 4f15acd..5d29011 100644 --- a/core/modules/entity_reference/entity_reference.module +++ b/core/modules/entity_reference/entity_reference.module @@ -43,9 +43,6 @@ function entity_reference_field_info_alter(&$info) { $info['entity_reference']['configurable'] = TRUE; $info['entity_reference']['class'] = '\Drupal\entity_reference\ConfigurableEntityReferenceItem'; $info['entity_reference']['list_class'] = '\Drupal\entity_reference\Plugin\Field\FieldType\ConfigurableEntityReferenceFieldItemList'; - $info['entity_reference']['settings']['target_type'] = \Drupal::moduleHandler()->moduleExists('node') ? 'node' : 'user'; - $info['entity_reference']['instance_settings']['handler'] = 'default'; - $info['entity_reference']['instance_settings']['handler_settings'] = array(); $info['entity_reference']['default_widget'] = 'entity_reference_autocomplete'; $info['entity_reference']['default_formatter'] = 'entity_reference_label'; $info['entity_reference']['provider'] = 'entity_reference'; diff --git a/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/Field/FieldFormatter/EntityReferenceEntityFormatter.php b/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/Field/FieldFormatter/EntityReferenceEntityFormatter.php index 40e3c39..522dc68 100644 --- a/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/Field/FieldFormatter/EntityReferenceEntityFormatter.php +++ b/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/Field/FieldFormatter/EntityReferenceEntityFormatter.php @@ -19,10 +19,6 @@ * description = @Translation("Display the referenced entities rendered by entity_view()."), * field_types = { * "entity_reference" - * }, - * settings = { - * "view_mode" = "default", - * "link" = FALSE * } * ) */ @@ -31,6 +27,16 @@ class EntityReferenceEntityFormatter extends EntityReferenceFormatterBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['view_mode'] = 'default'; + $settings['link'] = FALSE; + return $settings; + } + + /** + * {@inheritdoc} + */ public function settingsForm(array $form, array &$form_state) { $view_modes = entity_get_view_modes($this->getFieldSetting('target_type')); $options = array('default' => t('Default')); diff --git a/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/Field/FieldFormatter/EntityReferenceLabelFormatter.php b/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/Field/FieldFormatter/EntityReferenceLabelFormatter.php index ea13e17..b57c8ec 100644 --- a/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/Field/FieldFormatter/EntityReferenceLabelFormatter.php +++ b/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/Field/FieldFormatter/EntityReferenceLabelFormatter.php @@ -18,9 +18,6 @@ * description = @Translation("Display the label of the referenced entities."), * field_types = { * "entity_reference" - * }, - * settings = { - * "link" = TRUE * } * ) */ @@ -29,6 +26,15 @@ class EntityReferenceLabelFormatter extends EntityReferenceFormatterBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['link'] = TRUE; + return $settings; + } + + /** + * {@inheritdoc} + */ public function settingsForm(array $form, array &$form_state) { $elements['link'] = array( '#title' => t('Link label to the referenced entity'), diff --git a/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/Field/FieldWidget/AutocompleteTagsWidget.php b/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/Field/FieldWidget/AutocompleteTagsWidget.php index b09f7e2..ab8688c 100644 --- a/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/Field/FieldWidget/AutocompleteTagsWidget.php +++ b/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/Field/FieldWidget/AutocompleteTagsWidget.php @@ -19,12 +19,6 @@ * field_types = { * "entity_reference" * }, - * settings = { - * "match_operator" = "CONTAINS", - * "size" = 60, - * "autocomplete_type" = "tags", - * "placeholder" = "" - * }, * multiple_values = TRUE * ) */ @@ -33,6 +27,18 @@ class AutocompleteTagsWidget extends AutocompleteWidgetBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['match_operator'] = 'CONTAINS'; + $settings['size'] = '60'; + $settings['autocomplete_type'] = 'tags'; + $settings['placeholder'] = ''; + return $settings; + } + + /** + * {@inheritdoc} + */ public function elementValidate($element, &$form_state, $form) { $value = array(); // If a value was entered into the autocomplete. diff --git a/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/Field/FieldWidget/AutocompleteWidget.php b/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/Field/FieldWidget/AutocompleteWidget.php index 0898d68..bc91b1d 100644 --- a/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/Field/FieldWidget/AutocompleteWidget.php +++ b/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/Field/FieldWidget/AutocompleteWidget.php @@ -23,17 +23,25 @@ * description = @Translation("An autocomplete text field."), * field_types = { * "entity_reference" - * }, - * settings = { - * "match_operator" = "CONTAINS", - * "size" = 60, - * "autocomplete_type" = "single", - * "placeholder" = "" * } * ) */ class AutocompleteWidget extends AutocompleteWidgetBase { + protected $usesOptions = TRUE; + + /** + * {@inheritdoc} + */ + public static function settings() { + $settings = parent::settings(); + $settings['match_operator'] = 'CONTAINS'; + $settings['size'] = '60'; + $settings['autocomplete_type'] = 'tags'; + $settings['placeholder'] = ''; + return $settings; + } + /** * {@inheritdoc} */ diff --git a/core/modules/field/field.api.php b/core/modules/field/field.api.php index 92e9eb6..c433cdd 100644 --- a/core/modules/field/field.api.php +++ b/core/modules/field/field.api.php @@ -126,13 +126,6 @@ function hook_field_extra_fields_alter(&$info) { * manager. */ function hook_field_info_alter(&$info) { - // Add a setting to all field types. - foreach ($info as $field_type => $field_type_info) { - $info[$field_type]['settings'] += array( - 'mymodule_additional_setting' => 'default value', - ); - } - // Change the default widget for fields of type 'foo'. if (isset($info['foo'])) { $info['foo']['default widget'] = 'mymodule_widget'; @@ -174,15 +167,10 @@ function hook_field_info_alter(&$info) { * Perform alterations on Field API widget types. * * @param array $info - * An array of informations on existing widget types, as collected by the + * An array of information on existing widget types, as collected by the * annotation discovery mechanism. */ function hook_field_widget_info_alter(array &$info) { - // Add a setting to a widget type. - $info['text_textfield']['settings'] += array( - 'mymodule_additional_setting' => 'default value', - ); - // Let a new field type re-use an existing widget. $info['options_select']['field_types'][] = 'my_field_type'; } @@ -274,15 +262,10 @@ function hook_field_widget_WIDGET_TYPE_form_alter(&$element, &$form_state, $cont * Perform alterations on Field API formatter types. * * @param array $info - * An array of informations on existing formatter types, as collected by the + * An array of information on existing formatter types, as collected by the * annotation discovery mechanism. */ function hook_field_formatter_info_alter(array &$info) { - // Add a setting to a formatter type. - $info['text_default']['settings'] += array( - 'mymodule_additional_setting' => 'default value', - ); - // Let a new field type re-use an existing formatter. $info['text_default']['field types'][] = 'my_field_type'; } diff --git a/core/modules/field/lib/Drupal/field/Entity/FieldConfig.php b/core/modules/field/lib/Drupal/field/Entity/FieldConfig.php index e3aaea4..92d5342 100644 --- a/core/modules/field/lib/Drupal/field/Entity/FieldConfig.php +++ b/core/modules/field/lib/Drupal/field/Entity/FieldConfig.php @@ -321,7 +321,9 @@ protected function preSaveNew(EntityStorageControllerInterface $storage_controll // Make sure all settings are present, so that a complete field // definition is passed to the various hooks and written to config. - $this->settings += $field_type['settings']; + if (isset($field_type['class'])) { + $this->settings += $field_type['class']::settings(); + } // Notify the entity storage controller. $entity_manager->getStorageController($this->entity_type)->onFieldCreate($this); @@ -510,8 +512,13 @@ public function getSettings() { // $this. $field_type_info = \Drupal::service('plugin.manager.field.field_type')->getDefinition($this->type); - $settings = $this->settings + $field_type_info['settings'] + $field_type_info['instance_settings']; - return $settings; + $settings = array(); + $instance_settings = array(); + if (isset($field_type_info['class'])) { + $settings = $field_type_info['class']::settings(); + $instance_settings = $field_type_info['class']::instanceSettings(); + } + return $this->settings + $settings + $instance_settings; } /** @@ -519,18 +526,14 @@ public function getSettings() { */ public function getSetting($setting_name) { // @todo See getSettings() about potentially statically caching this. - $field_type_info = \Drupal::service('plugin.manager.field.field_type')->getDefinition($this->type); - // We assume here that consecutive array_key_exists() is more efficient than // calling getSettings() when all we need is a single setting. if (array_key_exists($setting_name, $this->settings)) { return $this->settings[$setting_name]; } - elseif (array_key_exists($setting_name, $field_type_info['settings'])) { - return $field_type_info['settings'][$setting_name]; - } - elseif (array_key_exists($setting_name, $field_type_info['instance_settings'])) { - return $field_type_info['instance_settings'][$setting_name]; + $settings = $this->getSettings(); + if (array_key_exists($setting_name, $settings)) { + return $settings[$setting_name]; } else { return NULL; diff --git a/core/modules/field/lib/Drupal/field/Tests/CrudTest.php b/core/modules/field/lib/Drupal/field/Tests/CrudTest.php index 93d5241..3cfea2a 100644 --- a/core/modules/field/lib/Drupal/field/Tests/CrudTest.php +++ b/core/modules/field/lib/Drupal/field/Tests/CrudTest.php @@ -64,7 +64,7 @@ function testCreateField() { // Ensure that default settings are present. $field_type = \Drupal::service('plugin.manager.field.field_type')->getDefinition($field_definition['type']); - $this->assertEqual($field_config['settings'], $field_type['settings'], 'Default field settings have been written.'); + $this->assertEqual($field_config['settings'], $field_type['class']::settings(), 'Default field settings have been written.'); // Guarantee that the name is unique. try { diff --git a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldFormatter/TestFieldDefaultFormatter.php b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldFormatter/TestFieldDefaultFormatter.php index 97beb5c..193b101 100644 --- a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldFormatter/TestFieldDefaultFormatter.php +++ b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldFormatter/TestFieldDefaultFormatter.php @@ -20,9 +20,6 @@ * field_types = { * "test_field" * }, - * settings = { - * "test_formatter_setting" = "dummy test string" - * }, * weight = 1 * ) */ @@ -31,6 +28,15 @@ class TestFieldDefaultFormatter extends FormatterBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['test_formatter_setting'] = 'dummy test string'; + return $settings; + } + + /** + * {@inheritdoc} + */ public function settingsForm(array $form, array &$form_state) { $element['test_formatter_setting'] = array( '#title' => t('Setting'), diff --git a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldFormatter/TestFieldEmptyFormatter.php b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldFormatter/TestFieldEmptyFormatter.php index e624bf9..f5bd036 100644 --- a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldFormatter/TestFieldEmptyFormatter.php +++ b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldFormatter/TestFieldEmptyFormatter.php @@ -19,9 +19,6 @@ * field_types = { * "test_field", * }, - * settings = { - * "test_empty_string" = "**EMPTY FIELD**" - * }, * weight = -5 * ) */ @@ -30,6 +27,15 @@ class TestFieldEmptyFormatter extends FormatterBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['test_empty_string'] = '**EMPTY FIELD**'; + return $settings; + } + + /** + * {@inheritdoc} + */ public function viewElements(FieldItemListInterface $items) { $elements = array(); diff --git a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldFormatter/TestFieldEmptySettingFormatter.php b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldFormatter/TestFieldEmptySettingFormatter.php index fa4d9a9..3a7ff53 100644 --- a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldFormatter/TestFieldEmptySettingFormatter.php +++ b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldFormatter/TestFieldEmptySettingFormatter.php @@ -19,9 +19,6 @@ * field_types = { * "test_field", * }, - * settings = { - * "field_empty_setting" = "" - * }, * weight = -1 * ) */ @@ -30,6 +27,15 @@ class TestFieldEmptySettingFormatter extends FormatterBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['field_empty_setting'] = ''; + return $settings; + } + + /** + * {@inheritdoc} + */ public function settingsForm(array $form, array &$form_state) { $element['field_empty_setting'] = array( '#title' => t('Setting'), diff --git a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldFormatter/TestFieldMultipleFormatter.php b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldFormatter/TestFieldMultipleFormatter.php index 87d9553..f4fe8b8 100644 --- a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldFormatter/TestFieldMultipleFormatter.php +++ b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldFormatter/TestFieldMultipleFormatter.php @@ -20,9 +20,6 @@ * field_types = { * "test_field" * }, - * settings = { - * "test_formatter_setting_multiple" = "dummy test string" - * }, * weight = 5 * ) */ @@ -31,6 +28,15 @@ class TestFieldMultipleFormatter extends FormatterBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['test_formatter_setting_multiple'] = 'dummy test string'; + return $settings; + } + + /** + * {@inheritdoc} + */ public function settingsForm(array $form, array &$form_state) { $element['test_formatter_setting_multiple'] = array( '#title' => t('Setting'), diff --git a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldFormatter/TestFieldPrepareViewFormatter.php b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldFormatter/TestFieldPrepareViewFormatter.php index 85b97f1..8dd2b85 100644 --- a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldFormatter/TestFieldPrepareViewFormatter.php +++ b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldFormatter/TestFieldPrepareViewFormatter.php @@ -20,9 +20,6 @@ * field_types = { * "test_field" * }, - * settings = { - * "test_formatter_setting_additional" = "dummy test string" - * }, * weight = 10 * ) */ @@ -31,6 +28,15 @@ class TestFieldPrepareViewFormatter extends FormatterBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['test_formatter_setting_additional'] = 'dummy test string'; + return $settings; + } + + /** + * {@inheritdoc} + */ public function settingsForm(array $form, array &$form_state) { $element['test_formatter_setting_additional'] = array( '#title' => t('Setting'), diff --git a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldType/ShapeItem.php b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldType/ShapeItem.php index 348886a..50cb184 100644 --- a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldType/ShapeItem.php +++ b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldType/ShapeItem.php @@ -18,9 +18,6 @@ * id = "shape", * label = @Translation("Shape"), * description = @Translation("Another dummy field type."), - * settings = { - * "foreign_key_name" = "shape" - * }, * default_widget = "test_field_widget", * default_formatter = "field_test_default" * ) @@ -30,6 +27,15 @@ class ShapeItem extends FieldItemBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['foreign_key_name'] = 'shape'; + return $settings; + } + + /** + * {@inheritdoc} + */ public static function propertyDefinitions(FieldDefinitionInterface $field_definition) { $properties['shape'] = DataDefinition::create('string') ->setLabel(t('Shape')); diff --git a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldType/TestItem.php b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldType/TestItem.php index 6c85daa..aad9bbc 100644 --- a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldType/TestItem.php +++ b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldType/TestItem.php @@ -19,15 +19,6 @@ * id = "test_field", * label = @Translation("Test field"), * description = @Translation("Dummy field type used for tests."), - * settings = { - * "test_field_setting" = "dummy test string", - * "changeable" = "a changeable field setting", - * "unchangeable" = "an unchangeable field setting" - * }, - * instance_settings = { - * "test_instance_setting" = "dummy test string", - * "test_cached_data" = FALSE - * }, * default_widget = "test_field_widget", * default_formatter = "field_test_default" * ) @@ -37,6 +28,27 @@ class TestItem extends FieldItemBase implements PrepareCacheInterface { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['test_field_setting'] = 'dummy test string'; + $settings['changeable'] = 'a changeable field setting'; + $settings['unchangeable'] = 'an unchangeable field setting'; + return $settings; + } + + /** + * {@inheritdoc} + */ + public static function instanceSettings() { + $settings = parent::instanceSettings(); + $settings['test_instance_setting'] = 'dummy test string'; + $settings['test_cached_data'] = FALSE; + return $settings; + } + + /** + * {@inheritdoc} + */ public static function propertyDefinitions(FieldDefinitionInterface $field_definition) { $properties['value'] = DataDefinition::create('integer') ->setLabel(t('Test integer value')); diff --git a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldWidget/TestFieldWidget.php b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldWidget/TestFieldWidget.php index ae80042..6034592 100644 --- a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldWidget/TestFieldWidget.php +++ b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldWidget/TestFieldWidget.php @@ -21,9 +21,6 @@ * "test_field", * "hidden_test_field" * }, - * settings = { - * "test_widget_setting" = "dummy test string" - * }, * weight = -10 * ) */ @@ -32,6 +29,15 @@ class TestFieldWidget extends WidgetBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['test_widget_setting'] = 'dummy test string'; + return $settings; + } + + /** + * {@inheritdoc} + */ public function settingsForm(array $form, array &$form_state) { $element['test_widget_setting'] = array( '#type' => 'textfield', diff --git a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldWidget/TestFieldWidgetMultiple.php b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldWidget/TestFieldWidgetMultiple.php index a16eb3f..0ea709b 100644 --- a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldWidget/TestFieldWidgetMultiple.php +++ b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Field/FieldWidget/TestFieldWidgetMultiple.php @@ -22,9 +22,6 @@ * @FieldWidget( * id = "test_field_widget_multiple", * label = @Translation("Test widget - multiple"), - * settings = { - * "test_widget_setting_multiple" = "dummy test string" - * }, * multiple_values = TRUE, * weight = 10 * ) @@ -34,6 +31,15 @@ class TestFieldWidgetMultiple extends WidgetBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['test_widget_setting_multiple'] = 'dummy test string'; + return $settings; + } + + /** + * {@inheritdoc} + */ public function settingsForm(array $form, array &$form_state) { $element['test_widget_setting_multiple'] = array( '#type' => 'textfield', diff --git a/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverviewBase.php b/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverviewBase.php index 495a6e2..d1a88ed 100644 --- a/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverviewBase.php +++ b/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverviewBase.php @@ -399,8 +399,7 @@ protected function buildFieldRow(FieldDefinitionInterface $field_definition, Ent } // Check selected plugin settings to display edit link or not. - $plugin_definition = $plugin->getPluginDefinition(); - if ($plugin_definition['settings']) { + if ($plugin->settings()) { $field_row['settings_edit'] = $base_button + array( '#type' => 'image_button', '#name' => $field_name . '_settings_edit', diff --git a/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageDisplayTest.php b/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageDisplayTest.php index 133b578..5699ed9 100644 --- a/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageDisplayTest.php +++ b/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageDisplayTest.php @@ -106,9 +106,9 @@ function testFormatterUI() { $edit = array($fieldname => 'foo'); $this->drupalPostAjaxForm(NULL, $edit, "field_test_plugin_settings_update"); - // Confirm that the settings are updated on the settings form. + // Confirm that the extra settings are not updated on the settings form. $this->drupalPostAjaxForm(NULL, array(), "field_test_settings_edit"); - $this->assertFieldByName($fieldname, 'foo'); + $this->assertFieldByName($fieldname, ''); // Test the empty setting formatter. $edit = array('fields[field_test][type]' => 'field_empty_setting'); @@ -199,9 +199,9 @@ public function testWidgetUI() { $edit = array($fieldname => 'foo'); $this->drupalPostAjaxForm(NULL, $edit, "field_test_plugin_settings_update"); - // Confirm that the settings are updated on the settings form. + // Confirm that the extra settings are not updated on the settings form. $this->drupalPostAjaxForm(NULL, array(), "field_test_settings_edit"); - $this->assertFieldByName($fieldname, 'foo'); + $this->assertFieldByName($fieldname, ''); } /** @@ -225,10 +225,11 @@ function testViewModeCustom() { $node = $this->drupalCreateNode($settings); // Gather expected output values with the various formatters. - $formatters = \Drupal::service('plugin.manager.field.formatter')->getDefinitions(); + $field_test_default_settings = \Drupal::service('plugin.manager.field.formatter')->getDefaultSettings('field_test_default'); + $field_test_with_prepare_view_settings = \Drupal::service('plugin.manager.field.formatter')->getDefaultSettings('field_test_with_prepare_view'); $output = array( - 'field_test_default' => $formatters['field_test_default']['settings']['test_formatter_setting'] . '|' . $value, - 'field_test_with_prepare_view' => $formatters['field_test_with_prepare_view']['settings']['test_formatter_setting_additional'] . '|' . $value. '|' . ($value + 1), + 'field_test_default' => $field_test_default_settings['test_formatter_setting'] . '|' . $value, + 'field_test_with_prepare_view' => $field_test_with_prepare_view_settings['test_formatter_setting_additional'] . '|' . $value. '|' . ($value + 1), ); // Check that the field is displayed with the default formatter in 'rss' diff --git a/core/modules/file/file.field.inc b/core/modules/file/file.field.inc index a3c7140..7d106ae 100644 --- a/core/modules/file/file.field.inc +++ b/core/modules/file/file.field.inc @@ -9,16 +9,6 @@ use Drupal\field\FieldConfigInterface; /** - * Implements hook_field_info_alter(). - * - * Cannot annotate in FieldItem plugin the settings.uri_scheme meta data key - * with a dynamic value. We need to alter the value here. - */ -function file_field_info_alter(&$info) { - $info['file']['settings']['uri_scheme'] = file_default_scheme(); -} - -/** * Returns HTML for an individual file upload widget. * * @param $variables diff --git a/core/modules/file/lib/Drupal/file/Plugin/Field/FieldType/FileItem.php b/core/modules/file/lib/Drupal/file/Plugin/Field/FieldType/FileItem.php index d72ccad..4f15c74 100644 --- a/core/modules/file/lib/Drupal/file/Plugin/Field/FieldType/FileItem.php +++ b/core/modules/file/lib/Drupal/file/Plugin/Field/FieldType/FileItem.php @@ -18,18 +18,6 @@ * id = "file", * label = @Translation("File"), * description = @Translation("This field stores the ID of a file as an integer value."), - * settings = { - * "target_type" = "file", - * "display_field" = "0", - * "display_default" = "0", - * "uri_scheme" = "" - * }, - * instance_settings = { - * "file_extensions" = "txt", - * "file_directory" = "", - * "max_filesize" = "", - * "description_field" = "0" - * }, * default_widget = "file_generic", * default_formatter = "file_default", * list_class = "\Drupal\file\Plugin\Field\FieldType\FileFieldItemList" @@ -40,6 +28,30 @@ class FileItem extends EntityReferenceItem { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['target_type'] = 'file'; + $settings['display_field'] = 0; + $settings['display_default'] = 0; + $settings['uri_scheme'] = file_default_scheme(); + return $settings; + } + + /** + * {@inheritdoc} + */ + public static function instanceSettings() { + $settings = parent::instanceSettings(); + $settings['file_extensions'] = 'txt'; + $settings['file_directory'] = ''; + $settings['max_filesize'] = ''; + $settings['description_field'] = 0; + return $settings; + } + + /** + * {@inheritdoc} + */ public static function schema(FieldDefinitionInterface $field_definition) { return array( 'columns' => array( diff --git a/core/modules/file/lib/Drupal/file/Plugin/Field/FieldWidget/FileWidget.php b/core/modules/file/lib/Drupal/file/Plugin/Field/FieldWidget/FileWidget.php index 9267eae..5b5a964 100644 --- a/core/modules/file/lib/Drupal/file/Plugin/Field/FieldWidget/FileWidget.php +++ b/core/modules/file/lib/Drupal/file/Plugin/Field/FieldWidget/FileWidget.php @@ -21,9 +21,6 @@ * label = @Translation("File"), * field_types = { * "file" - * }, - * settings = { - * "progress_indicator" = "throbber" * } * ) */ @@ -32,6 +29,15 @@ class FileWidget extends WidgetBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['progress_indicator'] = 'throbber'; + return $settings; + } + + /** + * {@inheritdoc} + */ public function settingsForm(array $form, array &$form_state) { $element['progress_indicator'] = array( '#type' => 'radios', diff --git a/core/modules/image/image.field.inc b/core/modules/image/image.field.inc index 4407563..5462520 100644 --- a/core/modules/image/image.field.inc +++ b/core/modules/image/image.field.inc @@ -8,13 +8,6 @@ use Drupal\Component\Utility\NestedArray; /** - * Implements hook_field_info_alter(). - */ -function image_field_info_alter(&$info) { - $info['image']['settings']['uri_scheme'] = file_default_scheme(); -} - -/** * Returns HTML for an image field widget. * * @param array $variables diff --git a/core/modules/image/lib/Drupal/image/Plugin/Field/FieldFormatter/ImageFormatter.php b/core/modules/image/lib/Drupal/image/Plugin/Field/FieldFormatter/ImageFormatter.php index 6a9a44e..f7665c2 100644 --- a/core/modules/image/lib/Drupal/image/Plugin/Field/FieldFormatter/ImageFormatter.php +++ b/core/modules/image/lib/Drupal/image/Plugin/Field/FieldFormatter/ImageFormatter.php @@ -17,10 +17,6 @@ * label = @Translation("Image"), * field_types = { * "image" - * }, - * settings = { - * "image_style" = "", - * "image_link" = "" * } * ) */ @@ -29,6 +25,16 @@ class ImageFormatter extends ImageFormatterBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['image_style'] = ''; + $settings['image_link'] = ''; + return $settings; + } + + /** + * {@inheritdoc} + */ public function settingsForm(array $form, array &$form_state) { $image_styles = image_style_options(FALSE); $element['image_style'] = array( diff --git a/core/modules/image/lib/Drupal/image/Plugin/Field/FieldType/ImageItem.php b/core/modules/image/lib/Drupal/image/Plugin/Field/FieldType/ImageItem.php index 5442d17..62ce6ad 100644 --- a/core/modules/image/lib/Drupal/image/Plugin/Field/FieldType/ImageItem.php +++ b/core/modules/image/lib/Drupal/image/Plugin/Field/FieldType/ImageItem.php @@ -18,49 +18,6 @@ * id = "image", * label = @Translation("Image"), * description = @Translation("This field stores the ID of an image file as an integer value."), - * settings = { - * "target_type" = "file", - * "uri_scheme" = "", - * "default_image" = { - * "fid" = NULL, - * "alt" = "", - * "title" = "", - * "width" = NULL, - * "height" = NULL - * }, - * "column_groups" = { - * "file" = { - * "label" = @Translation("File"), - * "columns" = { "target_id", "width", "height" } - * }, - * "alt" = { - * "label" = @Translation("Alt"), - * "translatable" = TRUE - * }, - * "title" = { - * "label" = @Translation("Title"), - * "translatable" = TRUE - * } - * } - * }, - * instance_settings = { - * "file_extensions" = "png gif jpg jpeg", - * "file_directory" = "", - * "max_filesize" = "", - * "alt_field" = "0", - * "alt_field_required" = "0", - * "title_field" = "0", - * "title_field_required" = "0", - * "max_resolution" = "", - * "min_resolution" = "", - * "default_image" = { - * "fid" = NULL, - * "alt" = "", - * "title" = "", - * "width" = NULL, - * "height" = NULL - * } - * }, * default_widget = "image_image", * default_formatter = "image", * list_class = "\Drupal\file\Plugin\Field\FieldType\FileFieldItemList" @@ -71,6 +28,57 @@ class ImageItem extends FileItem { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['default_image'] = array( + 'fid' => NULL, + 'alt' => '', + 'title' => '', + 'width' => NULL, + 'height' => NULL, + ); + $settings['column_groups'] = array( + 'file' => array( + 'label' => t('File'), + 'columns' => array('target_id', 'width', 'height'), + ), + 'alt' => array( + 'label' => t('Alt'), + 'translatable' => TRUE, + ), + 'title' => array( + 'label' => t('Title'), + 'translatable' => TRUE, + ), + ); + return $settings; + } + + /** + * {@inheritdoc} + */ + public static function instanceSettings() { + $settings = parent::instanceSettings(); + unset($settings['description_field']); + $settings['file_extensions'] = 'png gif jpg jpeg'; + $settings['alt_field'] = 0; + $settings['alt_field_required'] = 0; + $settings['title_field'] = 0; + $settings['title_field_required'] = 0; + $settings['max_resolution'] = ''; + $settings['min_resolution'] = ''; + $settings['default_image'] = array( + 'fid' => NULL, + 'alt' => '', + 'width' => NULL, + 'height' => NULL, + ); + return $settings; + } + + /** + * {@inheritdoc} + */ public static function schema(FieldDefinitionInterface $field_definition) { return array( 'columns' => array( diff --git a/core/modules/image/lib/Drupal/image/Plugin/Field/FieldWidget/ImageWidget.php b/core/modules/image/lib/Drupal/image/Plugin/Field/FieldWidget/ImageWidget.php index 94528ae..858f1d8 100644 --- a/core/modules/image/lib/Drupal/image/Plugin/Field/FieldWidget/ImageWidget.php +++ b/core/modules/image/lib/Drupal/image/Plugin/Field/FieldWidget/ImageWidget.php @@ -19,10 +19,6 @@ * label = @Translation("Image"), * field_types = { * "image" - * }, - * settings = { - * "progress_indicator" = "throbber", - * "preview_image_style" = "thumbnail", * } * ) */ @@ -31,6 +27,16 @@ class ImageWidget extends FileWidget { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['progress_indicator'] = 'throbber'; + $settings['preview_image_style'] = 'thumbnail'; + return $settings; + } + + /** + * {@inheritdoc} + */ public function settingsForm(array $form, array &$form_state) { $element = parent::settingsForm($form, $form_state); diff --git a/core/modules/link/lib/Drupal/link/Plugin/Field/FieldFormatter/LinkFormatter.php b/core/modules/link/lib/Drupal/link/Plugin/Field/FieldFormatter/LinkFormatter.php index 921970d..03080a8 100644 --- a/core/modules/link/lib/Drupal/link/Plugin/Field/FieldFormatter/LinkFormatter.php +++ b/core/modules/link/lib/Drupal/link/Plugin/Field/FieldFormatter/LinkFormatter.php @@ -21,13 +21,6 @@ * label = @Translation("Link"), * field_types = { * "link" - * }, - * settings = { - * "trim_length" = "80", - * "url_only" = "", - * "url_plain" = "", - * "rel" = "", - * "target" = "" * } * ) */ @@ -36,6 +29,19 @@ class LinkFormatter extends FormatterBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['trim_length'] = '80'; + $settings['url_only'] = ''; + $settings['url_plain'] = ''; + $settings['rel'] = ''; + $settings['target'] = ''; + return $settings; + } + + /** + * {@inheritdoc} + */ public function settingsForm(array $form, array &$form_state) { $elements = parent::settingsForm($form, $form_state); diff --git a/core/modules/link/lib/Drupal/link/Plugin/Field/FieldFormatter/LinkSeparateFormatter.php b/core/modules/link/lib/Drupal/link/Plugin/Field/FieldFormatter/LinkSeparateFormatter.php index 4392123..76698a8 100644 --- a/core/modules/link/lib/Drupal/link/Plugin/Field/FieldFormatter/LinkSeparateFormatter.php +++ b/core/modules/link/lib/Drupal/link/Plugin/Field/FieldFormatter/LinkSeparateFormatter.php @@ -22,11 +22,6 @@ * label = @Translation("Separate link text and URL"), * field_types = { * "link" - * }, - * settings = { - * "trim_length" = "80", - * "rel" = "", - * "target" = "" * } * ) */ @@ -35,6 +30,17 @@ class LinkSeparateFormatter extends LinkFormatter { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['trim_length'] = '80'; + $settings['rel'] = ''; + $settings['target'] = ''; + return $settings; + } + + /** + * {@inheritdoc} + */ public function viewElements(FieldItemListInterface $items) { $element = array(); $entity = $items->getEntity(); diff --git a/core/modules/link/lib/Drupal/link/Plugin/Field/FieldType/LinkItem.php b/core/modules/link/lib/Drupal/link/Plugin/Field/FieldType/LinkItem.php index e9aff29..726446e 100644 --- a/core/modules/link/lib/Drupal/link/Plugin/Field/FieldType/LinkItem.php +++ b/core/modules/link/lib/Drupal/link/Plugin/Field/FieldType/LinkItem.php @@ -19,9 +19,6 @@ * id = "link", * label = @Translation("Link"), * description = @Translation("Stores a URL string, optional varchar link text, and optional blob of attributes to assemble a link."), - * instance_settings = { - * "title" = "1" - * }, * default_widget = "link_default", * default_formatter = "link" * ) @@ -31,6 +28,15 @@ class LinkItem extends FieldItemBase { /** * {@inheritdoc} */ + public static function instanceSettings() { + $settings = parent::instanceSettings(); + $settings['title'] = 1; + return $settings; + } + + /** + * {@inheritdoc} + */ public static function propertyDefinitions(FieldDefinitionInterface $field_definition) { $properties['url'] = DataDefinition::create('uri') ->setLabel(t('URL')); diff --git a/core/modules/link/lib/Drupal/link/Plugin/Field/FieldWidget/LinkWidget.php b/core/modules/link/lib/Drupal/link/Plugin/Field/FieldWidget/LinkWidget.php index dc10574..26b5f9c 100644 --- a/core/modules/link/lib/Drupal/link/Plugin/Field/FieldWidget/LinkWidget.php +++ b/core/modules/link/lib/Drupal/link/Plugin/Field/FieldWidget/LinkWidget.php @@ -18,10 +18,6 @@ * label = @Translation("Link"), * field_types = { * "link" - * }, - * settings = { - * "placeholder_url" = "", - * "placeholder_title" = "" * } * ) */ @@ -30,6 +26,16 @@ class LinkWidget extends WidgetBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['placeholder_url'] = ''; + $settings['placeholder_title'] = ''; + return $settings; + } + + /** + * {@inheritdoc} + */ public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, array &$form_state) { $element['url'] = array( '#type' => 'url', diff --git a/core/modules/options/lib/Drupal/options/Plugin/Field/FieldType/ListBooleanItem.php b/core/modules/options/lib/Drupal/options/Plugin/Field/FieldType/ListBooleanItem.php index b283d7f..a884a53 100644 --- a/core/modules/options/lib/Drupal/options/Plugin/Field/FieldType/ListBooleanItem.php +++ b/core/modules/options/lib/Drupal/options/Plugin/Field/FieldType/ListBooleanItem.php @@ -19,11 +19,7 @@ * label = @Translation("Boolean"), * description = @Translation("This field stores simple on/off or yes/no options."), * default_widget = "options_buttons", - * default_formatter = "list_default", - * settings = { - * "allowed_values" = { }, - * "allowed_values_function" = "" - * } + * default_formatter = "list_default" * ) */ class ListBooleanItem extends ListItemBase { diff --git a/core/modules/options/lib/Drupal/options/Plugin/Field/FieldType/ListFloatItem.php b/core/modules/options/lib/Drupal/options/Plugin/Field/FieldType/ListFloatItem.php index cfd9251..66d59a6 100644 --- a/core/modules/options/lib/Drupal/options/Plugin/Field/FieldType/ListFloatItem.php +++ b/core/modules/options/lib/Drupal/options/Plugin/Field/FieldType/ListFloatItem.php @@ -19,11 +19,7 @@ * label = @Translation("List (float)"), * description = @Translation("This field stores float values from a list of allowed 'value => label' pairs, i.e. 'Fraction': 0 => 0, .25 => 1/4, .75 => 3/4, 1 => 1."), * default_widget = "options_select", - * default_formatter = "list_default", - * settings = { - * "allowed_values" = { }, - * "allowed_values_function" = "" - * } + * default_formatter = "list_default" * ) */ class ListFloatItem extends ListItemBase { diff --git a/core/modules/options/lib/Drupal/options/Plugin/Field/FieldType/ListIntegerItem.php b/core/modules/options/lib/Drupal/options/Plugin/Field/FieldType/ListIntegerItem.php index ea28a94..5b963c6 100644 --- a/core/modules/options/lib/Drupal/options/Plugin/Field/FieldType/ListIntegerItem.php +++ b/core/modules/options/lib/Drupal/options/Plugin/Field/FieldType/ListIntegerItem.php @@ -19,11 +19,7 @@ * label = @Translation("List (integer)"), * description = @Translation("This field stores integer values from a list of allowed 'value => label' pairs, i.e. 'Lifetime in days': 1 => 1 day, 7 => 1 week, 31 => 1 month."), * default_widget = "options_select", - * default_formatter = "list_default", - * settings = { - * "allowed_values" = { }, - * "allowed_values_function" = "" - * } + * default_formatter = "list_default" * ) */ class ListIntegerItem extends ListItemBase { diff --git a/core/modules/options/lib/Drupal/options/Plugin/Field/FieldType/ListItemBase.php b/core/modules/options/lib/Drupal/options/Plugin/Field/FieldType/ListItemBase.php index de95075..f6e544b 100644 --- a/core/modules/options/lib/Drupal/options/Plugin/Field/FieldType/ListItemBase.php +++ b/core/modules/options/lib/Drupal/options/Plugin/Field/FieldType/ListItemBase.php @@ -20,6 +20,16 @@ /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['allowed_values'] = array(); + $settings['allowed_values_function'] = ''; + return $settings; + } + + /** + * {@inheritdoc} + */ public function getPossibleValues(AccountInterface $account = NULL) { // Flatten options firstly, because Possible Options may contain group // arrays. diff --git a/core/modules/options/lib/Drupal/options/Plugin/Field/FieldWidget/OnOffWidget.php b/core/modules/options/lib/Drupal/options/Plugin/Field/FieldWidget/OnOffWidget.php index 34b741e..0f850b1 100644 --- a/core/modules/options/lib/Drupal/options/Plugin/Field/FieldWidget/OnOffWidget.php +++ b/core/modules/options/lib/Drupal/options/Plugin/Field/FieldWidget/OnOffWidget.php @@ -19,9 +19,6 @@ * field_types = { * "list_boolean" * }, - * settings = { - * "display_label" = FALSE, - * }, * multiple_values = TRUE * ) */ @@ -30,6 +27,15 @@ class OnOffWidget extends OptionsWidgetBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['display_label'] = FALSE; + return $settings; + } + + /** + * {@inheritdoc} + */ public function settingsForm(array $form, array &$form_state) { $element['display_label'] = array( '#type' => 'checkbox', diff --git a/core/modules/responsive_image/lib/Drupal/responsive_image/Plugin/Field/FieldFormatter/ResponsiveImageFormatter.php b/core/modules/responsive_image/lib/Drupal/responsive_image/Plugin/Field/FieldFormatter/ResponsiveImageFormatter.php index 8f935c0..31ba83a 100644 --- a/core/modules/responsive_image/lib/Drupal/responsive_image/Plugin/Field/FieldFormatter/ResponsiveImageFormatter.php +++ b/core/modules/responsive_image/lib/Drupal/responsive_image/Plugin/Field/FieldFormatter/ResponsiveImageFormatter.php @@ -18,11 +18,6 @@ * label = @Translation("Responsive image"), * field_types = { * "image", - * }, - * settings = { - * "responsive_image_mapping" = "", - * "fallback_image_style" = "", - * "image_link" = "", * } * ) */ @@ -31,6 +26,17 @@ class ResponsiveImageFormatter extends ImageFormatterBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['responsive_image_mapping'] = ''; + $settings['fallback_image_style'] = ''; + $settings['image_link'] = ''; + return $settings; + } + + /** + * {@inheritdoc} + */ public function settingsForm(array $form, array &$form_state) { $responsive_image_options = array(); $responsive_image_mappings = entity_load_multiple('responsive_image_mapping'); diff --git a/core/modules/system/tests/modules/entity_test/entity_test.install b/core/modules/system/tests/modules/entity_test/entity_test.install index 3df5396..9e48029 100644 --- a/core/modules/system/tests/modules/entity_test/entity_test.install +++ b/core/modules/system/tests/modules/entity_test/entity_test.install @@ -32,7 +32,7 @@ function entity_test_install() { ))->save(); entity_get_form_display($entity_type, $entity_type, 'default') - ->setComponent('field_test_text', array('type' => 'text_text')) + ->setComponent('field_test_text', array('type' => 'text_textfield')) ->save(); } } diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Field/FieldType/TaxonomyTermReferenceItem.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Field/FieldType/TaxonomyTermReferenceItem.php index d044f96..aa8a1f9 100644 --- a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Field/FieldType/TaxonomyTermReferenceItem.php +++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Field/FieldType/TaxonomyTermReferenceItem.php @@ -19,17 +19,6 @@ * id = "taxonomy_term_reference", * label = @Translation("Term Reference"), * description = @Translation("This field stores a reference to a taxonomy term."), - * settings = { - * "target_type" = "taxonomy_term", - * "options_list_callback" = NULL, - * "allowed_values" = { - * { - * "vocabulary" = "", - * "parent" = "0" - * } - * } - * }, - * instance_settings = { }, * default_widget = "options_select", * default_formatter = "taxonomy_term_reference_link", * list_class = "\Drupal\taxonomy\Plugin\Field\FieldType\TaxonomyTermReferenceFieldItemList" @@ -40,6 +29,22 @@ class TaxonomyTermReferenceItem extends EntityReferenceItem implements AllowedVa /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['target_type'] = 'taxonomy_term'; + $settings['options_list_callback'] = NULL; + $settings['allowed_values'] = array( + array( + 'vocabulary' => '', + 'parent' => 0, + ), + ); + return $settings; + } + + /** + * {@inheritdoc} + */ public function getPossibleValues(AccountInterface $account = NULL) { // Flatten options firstly, because Possible Options may contain group // arrays. diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Field/FieldWidget/TaxonomyAutocompleteWidget.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Field/FieldWidget/TaxonomyAutocompleteWidget.php index 7c20732..addfb69 100644 --- a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Field/FieldWidget/TaxonomyAutocompleteWidget.php +++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Field/FieldWidget/TaxonomyAutocompleteWidget.php @@ -19,11 +19,6 @@ * field_types = { * "taxonomy_term_reference" * }, - * settings = { - * "size" = "60", - * "autocomplete_route_name" = "taxonomy.autocomplete", - * "placeholder" = "" - * }, * multiple_values = TRUE * ) */ @@ -32,6 +27,17 @@ class TaxonomyAutocompleteWidget extends WidgetBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['size'] = '60'; + $settings['autocomplete_route_name'] = 'taxonomy.autocomplete'; + $settings['placeholder'] = ''; + return $settings; + } + + /** + * {@inheritdoc} + */ public function settingsForm(array $form, array &$form_state) { $element['placeholder'] = array( '#type' => 'textfield', diff --git a/core/modules/telephone/lib/Drupal/telephone/Plugin/Field/FieldFormatter/TelephoneLinkFormatter.php b/core/modules/telephone/lib/Drupal/telephone/Plugin/Field/FieldFormatter/TelephoneLinkFormatter.php index 436a4fc..bbcabd3 100644 --- a/core/modules/telephone/lib/Drupal/telephone/Plugin/Field/FieldFormatter/TelephoneLinkFormatter.php +++ b/core/modules/telephone/lib/Drupal/telephone/Plugin/Field/FieldFormatter/TelephoneLinkFormatter.php @@ -18,9 +18,6 @@ * label = @Translation("Telephone link"), * field_types = { * "telephone" - * }, - * settings = { - * "title" = "" * } * ) */ @@ -29,6 +26,15 @@ class TelephoneLinkFormatter extends FormatterBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['title'] = ''; + return $settings; + } + + /** + * {@inheritdoc} + */ public function settingsForm(array $form, array &$form_state) { $elements['title'] = array( '#type' => 'textfield', diff --git a/core/modules/telephone/lib/Drupal/telephone/Plugin/Field/FieldWidget/TelephoneDefaultWidget.php b/core/modules/telephone/lib/Drupal/telephone/Plugin/Field/FieldWidget/TelephoneDefaultWidget.php index 78c768e..f6570b5 100644 --- a/core/modules/telephone/lib/Drupal/telephone/Plugin/Field/FieldWidget/TelephoneDefaultWidget.php +++ b/core/modules/telephone/lib/Drupal/telephone/Plugin/Field/FieldWidget/TelephoneDefaultWidget.php @@ -18,14 +18,19 @@ * label = @Translation("Telephone number"), * field_types = { * "telephone" - * }, - * settings = { - * "placeholder" = "" * } * ) */ class TelephoneDefaultWidget extends WidgetBase { + /** + * {@inheritdoc} + */ + public static function settings() { + $settings = parent::settings(); + $settings['placeholder'] = ''; + return $settings; + } /** * {@inheritdoc} diff --git a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldFormatter/TextSummaryOrTrimmedFormatter.php b/core/modules/text/lib/Drupal/text/Plugin/Field/FieldFormatter/TextSummaryOrTrimmedFormatter.php index baebdc1..71b2088 100644 --- a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldFormatter/TextSummaryOrTrimmedFormatter.php +++ b/core/modules/text/lib/Drupal/text/Plugin/Field/FieldFormatter/TextSummaryOrTrimmedFormatter.php @@ -16,9 +16,6 @@ * field_types = { * "text_with_summary" * }, - * settings = { - * "trim_length" = "600" - * }, * edit = { * "editor" = "form" * } diff --git a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldFormatter/TextTrimmedFormatter.php b/core/modules/text/lib/Drupal/text/Plugin/Field/FieldFormatter/TextTrimmedFormatter.php index 8100e7b..5609ceb 100644 --- a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldFormatter/TextTrimmedFormatter.php +++ b/core/modules/text/lib/Drupal/text/Plugin/Field/FieldFormatter/TextTrimmedFormatter.php @@ -25,9 +25,6 @@ * "text_long", * "text_with_summary" * }, - * settings = { - * "trim_length" = "600" - * }, * edit = { * "editor" = "form" * } @@ -38,6 +35,15 @@ class TextTrimmedFormatter extends FormatterBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['trim_length'] = '600'; + return $settings; + } + + /** + * {@inheritdoc} + */ public function settingsForm(array $form, array &$form_state) { $element['trim_length'] = array( '#title' => t('Trim length'), diff --git a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldType/TextItem.php b/core/modules/text/lib/Drupal/text/Plugin/Field/FieldType/TextItem.php index 93bd949..67d0f3a 100644 --- a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldType/TextItem.php +++ b/core/modules/text/lib/Drupal/text/Plugin/Field/FieldType/TextItem.php @@ -16,12 +16,6 @@ * id = "text", * label = @Translation("Text"), * description = @Translation("This field stores varchar text in the database."), - * settings = { - * "max_length" = "255" - * }, - * instance_settings = { - * "text_processing" = "0" - * }, * default_widget = "text_textfield", * default_formatter = "text_default" * ) @@ -31,6 +25,15 @@ class TextItem extends TextItemBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['max_length'] = 255; + return $settings; + } + + /** + * {@inheritdoc} + */ public static function schema(FieldDefinitionInterface $field_definition) { return array( 'columns' => array( diff --git a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldType/TextItemBase.php b/core/modules/text/lib/Drupal/text/Plugin/Field/FieldType/TextItemBase.php index 0c85997..b7a1d7a 100644 --- a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldType/TextItemBase.php +++ b/core/modules/text/lib/Drupal/text/Plugin/Field/FieldType/TextItemBase.php @@ -20,6 +20,15 @@ /** * {@inheritdoc} */ + public static function instanceSettings() { + $settings = parent::instanceSettings(); + $settings['text_processing'] = 0; + return $settings; + } + + /** + * {@inheritdoc} + */ public static function propertyDefinitions(FieldDefinitionInterface $field_definition) { $properties['value'] = DataDefinition::create('string') ->setLabel(t('Text value')); diff --git a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldType/TextLongItem.php b/core/modules/text/lib/Drupal/text/Plugin/Field/FieldType/TextLongItem.php index 934d11f..1cf0385 100644 --- a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldType/TextLongItem.php +++ b/core/modules/text/lib/Drupal/text/Plugin/Field/FieldType/TextLongItem.php @@ -16,9 +16,6 @@ * id = "text_long", * label = @Translation("Long text"), * description = @Translation("This field stores long text in the database."), - * instance_settings = { - * "text_processing" = "0" - * }, * default_widget = "text_textarea", * default_formatter = "text_default" * ) diff --git a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldType/TextWithSummaryItem.php b/core/modules/text/lib/Drupal/text/Plugin/Field/FieldType/TextWithSummaryItem.php index 5fe30fc..a645b53 100644 --- a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldType/TextWithSummaryItem.php +++ b/core/modules/text/lib/Drupal/text/Plugin/Field/FieldType/TextWithSummaryItem.php @@ -17,10 +17,6 @@ * id = "text_with_summary", * label = @Translation("Long text and summary"), * description = @Translation("This field stores long text in the database along with optional summary text."), - * instance_settings = { - * "text_processing" = "1", - * "display_summary" = "0" - * }, * default_widget = "text_textarea_with_summary", * default_formatter = "text_default" * ) @@ -30,6 +26,16 @@ class TextWithSummaryItem extends TextItemBase { /** * {@inheritdoc} */ + public static function instanceSettings() { + $settings = parent::instanceSettings(); + $settings['text_processing'] = 1; + $settings['display_summary'] = 0; + return $settings; + } + + /** + * {@inheritdoc} + */ public static function propertyDefinitions(FieldDefinitionInterface $field_definition) { $properties = parent::propertyDefinitions($field_definition); diff --git a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldWidget/TextareaWidget.php b/core/modules/text/lib/Drupal/text/Plugin/Field/FieldWidget/TextareaWidget.php index 9752a1f..d03d8a4 100644 --- a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldWidget/TextareaWidget.php +++ b/core/modules/text/lib/Drupal/text/Plugin/Field/FieldWidget/TextareaWidget.php @@ -19,10 +19,6 @@ * label = @Translation("Text area (multiple rows)"), * field_types = { * "text_long" - * }, - * settings = { - * "rows" = "5", - * "placeholder" = "" * } * ) */ @@ -31,6 +27,16 @@ class TextareaWidget extends WidgetBase { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['rows'] = '5'; + $settings['placeholder'] = ''; + return $settings; + } + + /** + * {@inheritdoc} + */ public function settingsForm(array $form, array &$form_state) { $element['rows'] = array( '#type' => 'number', diff --git a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldWidget/TextareaWithSummaryWidget.php b/core/modules/text/lib/Drupal/text/Plugin/Field/FieldWidget/TextareaWithSummaryWidget.php index 4775b86..1b07029 100644 --- a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldWidget/TextareaWithSummaryWidget.php +++ b/core/modules/text/lib/Drupal/text/Plugin/Field/FieldWidget/TextareaWithSummaryWidget.php @@ -19,11 +19,6 @@ * label = @Translation("Text area with a summary"), * field_types = { * "text_with_summary" - * }, - * settings = { - * "rows" = "9", - * "summary_rows" = "3", - * "placeholder" = "" * } * ) */ @@ -32,6 +27,17 @@ class TextareaWithSummaryWidget extends TextareaWidget { /** * {@inheritdoc} */ + public static function settings() { + $settings = parent::settings(); + $settings['rows'] = '9'; + $settings['summary_rows'] = '3'; + $settings['placeholder'] = ''; + return $settings; + } + + /** + * {@inheritdoc} + */ public function settingsForm(array $form, array &$form_state) { $element = parent::settingsForm($form, $form_state); $element['summary_rows'] = array( diff --git a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldWidget/TextfieldWidget.php b/core/modules/text/lib/Drupal/text/Plugin/Field/FieldWidget/TextfieldWidget.php index 35f6957..989bcb8 100644 --- a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldWidget/TextfieldWidget.php +++ b/core/modules/text/lib/Drupal/text/Plugin/Field/FieldWidget/TextfieldWidget.php @@ -21,10 +21,6 @@ * "text", * "string" * }, - * settings = { - * "size" = "60", - * "placeholder" = "" - * } * ) */ class TextfieldWidget extends StringWidget {