diff --git a/core/modules/datetime/lib/Drupal/datetime/Plugin/field/widget/DatetimeDatelistWidget.php b/core/modules/datetime/lib/Drupal/datetime/Plugin/field/widget/DatetimeDatelistWidget.php index 09aed87..6921f99 100644 --- a/core/modules/datetime/lib/Drupal/datetime/Plugin/field/widget/DatetimeDatelistWidget.php +++ b/core/modules/datetime/lib/Drupal/datetime/Plugin/field/widget/DatetimeDatelistWidget.php @@ -22,7 +22,6 @@ * * @FieldWidget( * id = "datetime_datelist", - * module = "datetime", * label = @Translation("Select list"), * field_types = { * "datetime" diff --git a/core/modules/datetime/lib/Drupal/datetime/Plugin/field/widget/DatetimeDefaultWidget.php b/core/modules/datetime/lib/Drupal/datetime/Plugin/field/widget/DatetimeDefaultWidget.php index 4348699..cec53ff 100644 --- a/core/modules/datetime/lib/Drupal/datetime/Plugin/field/widget/DatetimeDefaultWidget.php +++ b/core/modules/datetime/lib/Drupal/datetime/Plugin/field/widget/DatetimeDefaultWidget.php @@ -21,7 +21,6 @@ * * @FieldWidget( * id = "datetime_default", - * module = "datetime", * label = @Translation("Date and time"), * field_types = { * "datetime" diff --git a/core/modules/email/lib/Drupal/email/Plugin/field/widget/EmailDefaultWidget.php b/core/modules/email/lib/Drupal/email/Plugin/field/widget/EmailDefaultWidget.php index ec60513..7fcdeea 100644 --- a/core/modules/email/lib/Drupal/email/Plugin/field/widget/EmailDefaultWidget.php +++ b/core/modules/email/lib/Drupal/email/Plugin/field/widget/EmailDefaultWidget.php @@ -16,7 +16,6 @@ * * @FieldWidget( * id = "email_default", - * module = "email", * label = @Translation("E-mail"), * field_types = { * "email" diff --git a/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/field/widget/AutocompleteTagsWidget.php b/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/field/widget/AutocompleteTagsWidget.php index 916a1d4..52e082d 100644 --- a/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/field/widget/AutocompleteTagsWidget.php +++ b/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/field/widget/AutocompleteTagsWidget.php @@ -16,7 +16,6 @@ * * @FieldWidget( * id = "entity_reference_autocomplete_tags", - * module = "entity_reference", * label = @Translation("Autocomplete (Tags style)"), * description = @Translation("An autocomplete text field."), * field_types = { diff --git a/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/field/widget/AutocompleteWidget.php b/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/field/widget/AutocompleteWidget.php index 793ad52..92fd075 100644 --- a/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/field/widget/AutocompleteWidget.php +++ b/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/field/widget/AutocompleteWidget.php @@ -21,7 +21,6 @@ * * @FieldWidget( * id = "entity_reference_autocomplete", - * module = "entity_reference", * label = @Translation("Autocomplete"), * description = @Translation("An autocomplete text field."), * field_types = { diff --git a/core/modules/field/lib/Drupal/field/Annotation/FieldWidget.php b/core/modules/field/lib/Drupal/field/Annotation/FieldWidget.php index 5284011..e8030fe 100644 --- a/core/modules/field/lib/Drupal/field/Annotation/FieldWidget.php +++ b/core/modules/field/lib/Drupal/field/Annotation/FieldWidget.php @@ -12,10 +12,10 @@ /** * Defines a FieldWidget annotation object. * - * Widgets handle the form of fields. + * Widgets handle how fields are displayed in edit forms. * * Additional annotation keys for formatters can be defined in - * hook_field_formatter_info_alter(). + * hook_field_widget_info_alter(). * * @Annotation * @@ -50,14 +50,7 @@ class FieldWidget extends Plugin { public $description; /** - * The name of the module providing the widget. - * - * @var string - */ - public $module; - - /** - * The name of the widget formatter class. + * The name of the widget class. * * This is not provided manually, it will be added by the discovery mechanism. * @@ -83,8 +76,16 @@ class FieldWidget extends Plugin { /** * Does the field widget handles multiple values at once. * - * @var array + * @var bool */ public $multiple_values = FALSE; + /** + * An integer to determine the weight of this widget relative to other widgets + * in the Field UI when selecting a widget for a given field instance. + * + * @var int optional + */ + public $weight = NULL; + } diff --git a/core/modules/field/lib/Drupal/field/Plugin/Type/Widget/WidgetPluginManager.php b/core/modules/field/lib/Drupal/field/Plugin/Type/Widget/WidgetPluginManager.php index 69dceb2..6ab6eef 100644 --- a/core/modules/field/lib/Drupal/field/Plugin/Type/Widget/WidgetPluginManager.php +++ b/core/modules/field/lib/Drupal/field/Plugin/Type/Widget/WidgetPluginManager.php @@ -7,6 +7,7 @@ namespace Drupal\field\Plugin\Type\Widget; +use Drupal\Component\Plugin\Factory\DefaultFactory; use Drupal\Component\Plugin\PluginManagerBase; use Drupal\Component\Plugin\Discovery\ProcessDecorator; use Drupal\Core\Cache\CacheBackendInterface; @@ -30,16 +31,6 @@ class WidgetPluginManager extends DefaultPluginManager { protected $widgetOptions; /** - * Overrides Drupal\Component\Plugin\PluginManagerBase:$defaults. - */ - protected $defaults = array( - 'field_types' => array(), - 'settings' => array(), - 'multiple_values' => FALSE, - 'default_value' => TRUE, - ); - - /** * Constructs a WidgetPluginManager object. * * @param \Traversable $namespaces @@ -113,6 +104,22 @@ public function getInstance(array $options) { } /** + * {@inheritdoc} + */ + public function createInstance($plugin_id, array $configuration = array()) { + $plugin_definition = $this->discovery->getDefinition($plugin_id); + $plugin_class = DefaultFactory::getPluginClass($plugin_id, $plugin_definition); + + // If the plugin provides a factory method, pass the container to it. + if (is_subclass_of($plugin_class, 'Drupal\Core\Plugin\ContainerFactoryPluginInterface')) { + return $plugin_class::create(\Drupal::getContainer(), $configuration, $plugin_id, $plugin_definition); + } + + return new $plugin_class($plugin_id, $plugin_definition, $configuration['field_definition'], $configuration['settings']); + } + + + /** * Merges default values for widget configuration. * * @param string $field_type diff --git a/core/modules/field/lib/Drupal/field/Plugin/field/widget/HiddenWidget.php b/core/modules/field/lib/Drupal/field/Plugin/field/widget/HiddenWidget.php index d6e1533..c9d8cc9 100644 --- a/core/modules/field/lib/Drupal/field/Plugin/field/widget/HiddenWidget.php +++ b/core/modules/field/lib/Drupal/field/Plugin/field/widget/HiddenWidget.php @@ -16,7 +16,6 @@ * * @FieldWidget( * id = "hidden", - * module = "field", * label = @Translation("- Hidden -"), * multiple_values = TRUE, * weight = 50 diff --git a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/field/widget/TestFieldWidget.php b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/field/widget/TestFieldWidget.php index f6ac9ac..c6cdcfa 100644 --- a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/field/widget/TestFieldWidget.php +++ b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/field/widget/TestFieldWidget.php @@ -17,7 +17,6 @@ * * @FieldWidget( * id = "test_field_widget", - * module = "field_test", * label = @Translation("Test widget"), * field_types = { * "test_field", diff --git a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/field/widget/TestFieldWidgetMultiple.php b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/field/widget/TestFieldWidgetMultiple.php index b9cd7cc..9dab600 100644 --- a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/field/widget/TestFieldWidgetMultiple.php +++ b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/field/widget/TestFieldWidgetMultiple.php @@ -22,7 +22,6 @@ * * @FieldWidget( * id = "test_field_widget_multiple", - * module = "field_test", * label = @Translation("Test widget - multiple"), * settings = { * "test_widget_setting_multiple" = "dummy test string" diff --git a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/field/widget/TestFieldWidgetNoDefault.php b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/field/widget/TestFieldWidgetNoDefault.php index b8f6f6e..d17d6de 100644 --- a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/field/widget/TestFieldWidgetNoDefault.php +++ b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/field/widget/TestFieldWidgetNoDefault.php @@ -16,7 +16,6 @@ * * @FieldWidget( * id = "test_field_widget_no_default", - * module = "field_test", * label = @Translation("Test widget - no default"), * field_types = { * "test_field" diff --git a/core/modules/file/lib/Drupal/file/Plugin/field/widget/FileWidget.php b/core/modules/file/lib/Drupal/file/Plugin/field/widget/FileWidget.php index 29ec7e6..471bf48 100644 --- a/core/modules/file/lib/Drupal/file/Plugin/field/widget/FileWidget.php +++ b/core/modules/file/lib/Drupal/file/Plugin/field/widget/FileWidget.php @@ -17,7 +17,6 @@ * * @FieldWidget( * id = "file_generic", - * module = "file", * label = @Translation("File"), * field_types = { * "file" diff --git a/core/modules/image/lib/Drupal/image/Plugin/field/widget/ImageWidget.php b/core/modules/image/lib/Drupal/image/Plugin/field/widget/ImageWidget.php index 558d531..b1c75da 100644 --- a/core/modules/image/lib/Drupal/image/Plugin/field/widget/ImageWidget.php +++ b/core/modules/image/lib/Drupal/image/Plugin/field/widget/ImageWidget.php @@ -18,7 +18,6 @@ * * @FieldWidget( * id = "image_image", - * module = "image", * label = @Translation("Image"), * field_types = { * "image" diff --git a/core/modules/link/lib/Drupal/link/Plugin/field/widget/LinkWidget.php b/core/modules/link/lib/Drupal/link/Plugin/field/widget/LinkWidget.php index 069502f..3196e9e 100644 --- a/core/modules/link/lib/Drupal/link/Plugin/field/widget/LinkWidget.php +++ b/core/modules/link/lib/Drupal/link/Plugin/field/widget/LinkWidget.php @@ -16,7 +16,6 @@ * * @FieldWidget( * id = "link_default", - * module = "link", * label = @Translation("Link"), * field_types = { * "link" diff --git a/core/modules/number/lib/Drupal/number/Plugin/field/widget/NumberWidget.php b/core/modules/number/lib/Drupal/number/Plugin/field/widget/NumberWidget.php index fd87d4a..c4a50de 100644 --- a/core/modules/number/lib/Drupal/number/Plugin/field/widget/NumberWidget.php +++ b/core/modules/number/lib/Drupal/number/Plugin/field/widget/NumberWidget.php @@ -17,7 +17,6 @@ * * @FieldWidget( * id = "number", - * module = "number", * label = @Translation("Text field"), * field_types = { * "number_integer", diff --git a/core/modules/options/lib/Drupal/options/Plugin/field/widget/ButtonsWidget.php b/core/modules/options/lib/Drupal/options/Plugin/field/widget/ButtonsWidget.php index 2a5c71b..7f6f073 100644 --- a/core/modules/options/lib/Drupal/options/Plugin/field/widget/ButtonsWidget.php +++ b/core/modules/options/lib/Drupal/options/Plugin/field/widget/ButtonsWidget.php @@ -15,7 +15,6 @@ * * @FieldWidget( * id = "options_buttons", - * module = "options", * label = @Translation("Check boxes/radio buttons"), * field_types = { * "list_integer", diff --git a/core/modules/options/lib/Drupal/options/Plugin/field/widget/OnOffWidget.php b/core/modules/options/lib/Drupal/options/Plugin/field/widget/OnOffWidget.php index 6d84ddc..c5d3f0b 100644 --- a/core/modules/options/lib/Drupal/options/Plugin/field/widget/OnOffWidget.php +++ b/core/modules/options/lib/Drupal/options/Plugin/field/widget/OnOffWidget.php @@ -15,7 +15,6 @@ * * @FieldWidget( * id = "options_onoff", - * module = "options", * label = @Translation("Single on/off checkbox"), * field_types = { * "list_boolean" diff --git a/core/modules/options/lib/Drupal/options/Plugin/field/widget/SelectWidget.php b/core/modules/options/lib/Drupal/options/Plugin/field/widget/SelectWidget.php index a717cf4..457f52e 100644 --- a/core/modules/options/lib/Drupal/options/Plugin/field/widget/SelectWidget.php +++ b/core/modules/options/lib/Drupal/options/Plugin/field/widget/SelectWidget.php @@ -15,7 +15,6 @@ * * @FieldWidget( * id = "options_select", - * module = "options", * label = @Translation("Select list"), * field_types = { * "list_integer", diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/field/widget/TaxonomyAutocompleteWidget.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/field/widget/TaxonomyAutocompleteWidget.php index 0b93d8a..52599b5 100644 --- a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/field/widget/TaxonomyAutocompleteWidget.php +++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/field/widget/TaxonomyAutocompleteWidget.php @@ -16,7 +16,6 @@ * * @FieldWidget( * id = "taxonomy_autocomplete", - * module = "taxonomy", * label = @Translation("Autocomplete term widget (tagging)"), * field_types = { * "taxonomy_term_reference" diff --git a/core/modules/telephone/lib/Drupal/telephone/Plugin/field/widget/TelephoneDefaultWidget.php b/core/modules/telephone/lib/Drupal/telephone/Plugin/field/widget/TelephoneDefaultWidget.php index 7a9d839..b8c814f 100644 --- a/core/modules/telephone/lib/Drupal/telephone/Plugin/field/widget/TelephoneDefaultWidget.php +++ b/core/modules/telephone/lib/Drupal/telephone/Plugin/field/widget/TelephoneDefaultWidget.php @@ -16,7 +16,6 @@ * * @FieldWidget( * id = "telephone_default", - * module = "telephone", * label = @Translation("Telephone number"), * field_types = { * "telephone" diff --git a/core/modules/text/lib/Drupal/text/Plugin/field/widget/TextareaWidget.php b/core/modules/text/lib/Drupal/text/Plugin/field/widget/TextareaWidget.php index 9fa975f..b15ea69 100644 --- a/core/modules/text/lib/Drupal/text/Plugin/field/widget/TextareaWidget.php +++ b/core/modules/text/lib/Drupal/text/Plugin/field/widget/TextareaWidget.php @@ -16,7 +16,6 @@ * * @FieldWidget( * id = "text_textarea", - * module = "text", * label = @Translation("Text area (multiple rows)"), * field_types = { * "text_long" diff --git a/core/modules/text/lib/Drupal/text/Plugin/field/widget/TextareaWithSummaryWidget.php b/core/modules/text/lib/Drupal/text/Plugin/field/widget/TextareaWithSummaryWidget.php index 5122606..90d724b 100644 --- a/core/modules/text/lib/Drupal/text/Plugin/field/widget/TextareaWithSummaryWidget.php +++ b/core/modules/text/lib/Drupal/text/Plugin/field/widget/TextareaWithSummaryWidget.php @@ -16,7 +16,6 @@ * * @FieldWidget( * id = "text_textarea_with_summary", - * module = "text", * label = @Translation("Text area with a summary"), * field_types = { * "text_with_summary" diff --git a/core/modules/text/lib/Drupal/text/Plugin/field/widget/TextfieldWidget.php b/core/modules/text/lib/Drupal/text/Plugin/field/widget/TextfieldWidget.php index 034c9d2..d715d1e 100644 --- a/core/modules/text/lib/Drupal/text/Plugin/field/widget/TextfieldWidget.php +++ b/core/modules/text/lib/Drupal/text/Plugin/field/widget/TextfieldWidget.php @@ -16,7 +16,6 @@ * * @FieldWidget( * id = "text_textfield", - * module = "text", * label = @Translation("Text field"), * field_types = { * "text"