diff --git a/src/Plugin/Field/FieldFormatter/ReadonlyHtmlFieldFormatter.php b/src/Plugin/Field/FieldFormatter/ReadonlyHtmlFieldFormatter.php index a72ecd0..b8c74bf 100644 --- a/src/Plugin/Field/FieldFormatter/ReadonlyHtmlFieldFormatter.php +++ b/src/Plugin/Field/FieldFormatter/ReadonlyHtmlFieldFormatter.php @@ -4,6 +4,8 @@ namespace Drupal\readonly_html_field\Plugin\Field\FieldFormatter; use Drupal\Core\Field\FieldItemListInterface; use Drupal\Core\Field\FormatterBase; +use Drupal\Core\Language\LanguageManagerInterface; +use Symfony\Component\DependencyInjection\ContainerInterface; /** * Provides a field formatter of readonly html field. @@ -16,12 +18,60 @@ use Drupal\Core\Field\FormatterBase; */ class ReadonlyHtmlFieldFormatter extends FormatterBase { + /** + * The language manager. + * + * @var \Drupal\Core\Language\LanguageManagerInterface + */ + protected $languageManager; + + /** + * Constructs a new ReadonlyHtmlFieldFormatter object. + * + * @param string $plugin_id + * The plugin ID for the formatter. + * @param mixed $plugin_definition + * The plugin implementation definition. + * @param \Drupal\Core\Field\FieldDefinitionInterface $field_definition + * The field definition. + * @param array $settings + * The formatter settings. + * @param string $label + * The formatter label. + * @param string $view_mode + * The view mode the field formatter is being displayed in. + * @param array $third_party_settings + * Any third party settings settings. + * @param \Drupal\Core\Language\LanguageManagerInterface $language_manager + * The language manager. + */ + public function __construct($plugin_id, $plugin_definition, FieldDefinitionInterface $field_definition, array $settings, $label, $view_mode, array $third_party_settings, LanguageManagerInterface $language_manager) { + parent::__construct($plugin_id, $plugin_definition, $field_definition, $settings, $label, $view_mode, $third_party_settings); + $this->languageManager = $language_manager; + } + + /** + * {@inheritDoc} + */ + public static function create(ContainerInterface $container, $plugin_id, $plugin_definition, $field_definition, $settings, $label, $view_mode, array $third_party_settings) { + return new static( + $plugin_id, + $plugin_definition, + $field_definition, + $settings, + $label, + $view_mode, + $third_party_settings, + $container->get('language_manager') + ); + } + /** * {@inheritDoc} */ public function viewElements(FieldItemListInterface $items, $langcode) { - $langcode = empty($langcode) ? \Drupal::languageManager()->getCurrentLanguage()->getId() : $langcode; - $default_langcode = \Drupal::languageManager()->getDefaultLanguage()->getId(); + $langcode = empty($langcode) ? $this->languageManager->getCurrentLanguage()->getId() : $langcode; + $default_langcode = $this->languageManager->getDefaultLanguage()->getId(); $default_readonly_html = $this->fieldDefinition->getSetting($default_langcode)['readonly_html']['value']; $readonly_html = $this->fieldDefinition->getSetting($langcode)['readonly_html']['value']; return [ diff --git a/src/Plugin/Field/FieldType/ReadonlyHtmlFieldItem.php b/src/Plugin/Field/FieldType/ReadonlyHtmlFieldItem.php index 6ecd245..92ef2e8 100644 --- a/src/Plugin/Field/FieldType/ReadonlyHtmlFieldItem.php +++ b/src/Plugin/Field/FieldType/ReadonlyHtmlFieldItem.php @@ -40,7 +40,7 @@ class ReadonlyHtmlFieldItem extends FieldItemBase { 'readonly_html' => [ 'value' => '', 'format' => 'basic_html', - ] + ], ]; } return $element + parent::defaultFieldSettings(); diff --git a/src/Plugin/Field/FieldWidget/ReadonlyHtmlFieldWidget.php b/src/Plugin/Field/FieldWidget/ReadonlyHtmlFieldWidget.php index a4903a7..46ad6ea 100644 --- a/src/Plugin/Field/FieldWidget/ReadonlyHtmlFieldWidget.php +++ b/src/Plugin/Field/FieldWidget/ReadonlyHtmlFieldWidget.php @@ -5,6 +5,8 @@ namespace Drupal\readonly_html_field\Plugin\Field\FieldWidget; use Drupal\Core\Field\FieldItemListInterface; use Drupal\Core\Field\WidgetBase; use Drupal\Core\Form\FormStateInterface; +use Drupal\Core\Language\LanguageManagerInterface; +use Symfony\Component\DependencyInjection\ContainerInterface; /** * Provides a widget of readonly html field. @@ -17,12 +19,60 @@ use Drupal\Core\Form\FormStateInterface; */ class ReadonlyHtmlFieldWidget extends WidgetBase { + /** + * The language manager. + * + * @var \Drupal\Core\Language\LanguageManagerInterface + */ + protected $languageManager; + + /** + * Constructs a new ReadonlyHtmlFieldFormatter object. + * + * @param string $plugin_id + * The plugin ID for the formatter. + * @param mixed $plugin_definition + * The plugin implementation definition. + * @param \Drupal\Core\Field\FieldDefinitionInterface $field_definition + * The field definition. + * @param array $settings + * The formatter settings. + * @param string $label + * The formatter label. + * @param string $view_mode + * The view mode the field formatter is being displayed in. + * @param array $third_party_settings + * Any third party settings settings. + * @param \Drupal\Core\Language\LanguageManagerInterface $language_manager + * The language manager. + */ + public function __construct($plugin_id, $plugin_definition, FieldDefinitionInterface $field_definition, array $settings, $label, $view_mode, array $third_party_settings, LanguageManagerInterface $language_manager) { + parent::__construct($plugin_id, $plugin_definition, $field_definition, $settings, $label, $view_mode, $third_party_settings); + $this->languageManager = $language_manager; + } + + /** + * {@inheritDoc} + */ + public static function create(ContainerInterface $container, $plugin_id, $plugin_definition, $field_definition, $settings, $label, $view_mode, array $third_party_settings) { + return new static( + $plugin_id, + $plugin_definition, + $field_definition, + $settings, + $label, + $view_mode, + $third_party_settings, + $container->get('language_manager') + ); + } + /** * {@inheritDoc} */ public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) { - $langcode = \Drupal::languageManager()->getCurrentLanguage()->getId(); - $default_langcode = \Drupal::languageManager()->getDefaultLanguage()->getId(); + $langcode = $this->languageManager->getCurrentLanguage()->getId(); + $default_langcode = $this->languageManager->getDefaultLanguage()->getId(); $default_readonly_html = $this->fieldDefinition->getSetting($default_langcode)['readonly_html']['value']; $readonly_html = $this->fieldDefinition->getSetting($langcode)['readonly_html']['value']; $element = [ @@ -35,8 +85,8 @@ class ReadonlyHtmlFieldWidget extends WidgetBase { * {@inheritDoc} */ public function formMultipleElements(FieldItemListInterface $items, array &$form, FormStateInterface $form_state) { - $langcode = \Drupal::languageManager()->getCurrentLanguage()->getId(); - $default_langcode = \Drupal::languageManager()->getDefaultLanguage()->getId(); + $langcode = $this->languageManager->getCurrentLanguage()->getId(); + $default_langcode = $this->languageManager->getDefaultLanguage()->getId(); $default_readonly_html = $this->fieldDefinition->getSetting($default_langcode)['readonly_html']['value']; $readonly_html = $this->fieldDefinition->getSetting($langcode)['readonly_html']['value']; $element = [