Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / web / core / modules / node / src / Form / NodeRevisionRevertTranslationForm.php
1 <?php
2
3 namespace Drupal\node\Form;
4
5 use Drupal\Component\Datetime\TimeInterface;
6 use Drupal\Core\Datetime\DateFormatterInterface;
7 use Drupal\Core\Entity\EntityStorageInterface;
8 use Drupal\Core\Form\FormStateInterface;
9 use Drupal\Core\Language\LanguageManagerInterface;
10 use Drupal\node\NodeInterface;
11 use Symfony\Component\DependencyInjection\ContainerInterface;
12
13 /**
14  * Provides a form for reverting a node revision for a single translation.
15  *
16  * @internal
17  */
18 class NodeRevisionRevertTranslationForm extends NodeRevisionRevertForm {
19
20   /**
21    * The language to be reverted.
22    *
23    * @var string
24    */
25   protected $langcode;
26
27   /**
28    * The language manager.
29    *
30    * @var \Drupal\Core\Language\LanguageManagerInterface
31    */
32   protected $languageManager;
33
34   /**
35    * Constructs a new NodeRevisionRevertTranslationForm.
36    *
37    * @param \Drupal\Core\Entity\EntityStorageInterface $node_storage
38    *   The node storage.
39    * @param \Drupal\Core\Datetime\DateFormatterInterface $date_formatter
40    *   The date formatter service.
41    * @param \Drupal\Core\Language\LanguageManagerInterface $language_manager
42    *   The language manager.
43    * @param \Drupal\Component\Datetime\TimeInterface $time
44    *   The time service.
45    */
46   public function __construct(EntityStorageInterface $node_storage, DateFormatterInterface $date_formatter, LanguageManagerInterface $language_manager, TimeInterface $time) {
47     parent::__construct($node_storage, $date_formatter, $time);
48     $this->languageManager = $language_manager;
49   }
50
51   /**
52    * {@inheritdoc}
53    */
54   public static function create(ContainerInterface $container) {
55     return new static(
56       $container->get('entity.manager')->getStorage('node'),
57       $container->get('date.formatter'),
58       $container->get('language_manager'),
59       $container->get('datetime.time')
60     );
61   }
62
63   /**
64    * {@inheritdoc}
65    */
66   public function getFormId() {
67     return 'node_revision_revert_translation_confirm';
68   }
69
70   /**
71    * {@inheritdoc}
72    */
73   public function getQuestion() {
74     return t('Are you sure you want to revert @language translation to the revision from %revision-date?', ['@language' => $this->languageManager->getLanguageName($this->langcode), '%revision-date' => $this->dateFormatter->format($this->revision->getRevisionCreationTime())]);
75   }
76
77   /**
78    * {@inheritdoc}
79    */
80   public function getDescription() {
81     return '';
82   }
83
84   /**
85    * {@inheritdoc}
86    */
87   public function buildForm(array $form, FormStateInterface $form_state, $node_revision = NULL, $langcode = NULL) {
88     $this->langcode = $langcode;
89     $form = parent::buildForm($form, $form_state, $node_revision);
90
91     // Unless untranslatable fields are configured to affect only the default
92     // translation, we need to ask the user whether they should be included in
93     // the revert process.
94     $default_translation_affected = $this->revision->isDefaultTranslationAffectedOnly();
95     $form['revert_untranslated_fields'] = [
96       '#type' => 'checkbox',
97       '#title' => $this->t('Revert content shared among translations'),
98       '#default_value' => $default_translation_affected && $this->revision->getTranslation($this->langcode)->isDefaultTranslation(),
99       '#access' => !$default_translation_affected,
100     ];
101
102     return $form;
103   }
104
105   /**
106    * {@inheritdoc}
107    */
108   protected function prepareRevertedRevision(NodeInterface $revision, FormStateInterface $form_state) {
109     $revert_untranslated_fields = (bool) $form_state->getValue('revert_untranslated_fields');
110     $translation = $revision->getTranslation($this->langcode);
111     return $this->nodeStorage->createRevision($translation, TRUE, $revert_untranslated_fields);
112   }
113
114 }