Backup of db before drupal security update
[yaffs-website] / web / core / modules / views_ui / src / ViewDuplicateForm.php
1 <?php
2
3 namespace Drupal\views_ui;
4
5 use Drupal\Core\Form\FormStateInterface;
6
7 /**
8  * Form controller for the Views duplicate form.
9  */
10 class ViewDuplicateForm extends ViewFormBase {
11
12   /**
13    * {@inheritdoc}
14    */
15   protected function prepareEntity() {
16     // Do not prepare the entity while it is being added.
17   }
18
19   /**
20    * {@inheritdoc}
21    */
22   public function form(array $form, FormStateInterface $form_state) {
23     parent::form($form, $form_state);
24
25     $form['#title'] = $this->t('Duplicate of @label', ['@label' => $this->entity->label()]);
26
27     $form['label'] = [
28       '#type' => 'textfield',
29       '#title' => $this->t('View name'),
30       '#required' => TRUE,
31       '#size' => 32,
32       '#maxlength' => 255,
33       '#default_value' => $this->t('Duplicate of @label', ['@label' => $this->entity->label()]),
34     ];
35     $form['id'] = [
36       '#type' => 'machine_name',
37       '#maxlength' => 128,
38       '#machine_name' => [
39         'exists' => '\Drupal\views\Views::getView',
40         'source' => ['label'],
41       ],
42       '#default_value' => '',
43       '#description' => $this->t('A unique machine-readable name for this View. It must only contain lowercase letters, numbers, and underscores.'),
44     ];
45
46     return $form;
47   }
48
49   /**
50    * {@inheritdoc}
51    */
52   protected function actions(array $form, FormStateInterface $form_state) {
53     $actions['submit'] = [
54       '#type' => 'submit',
55       '#value' => $this->t('Duplicate'),
56     ];
57     return $actions;
58   }
59
60   /**
61    * Form submission handler for the 'clone' action.
62    *
63    * @param array $form
64    *   An associative array containing the structure of the form.
65    * @param \Drupal\Core\Form\FormStateInterface $form_state
66    *   A reference to a keyed array containing the current state of the form.
67    */
68   public function submitForm(array &$form, FormStateInterface $form_state) {
69     $this->entity = $this->entity->createDuplicate();
70     $this->entity->set('label', $form_state->getValue('label'));
71     $this->entity->set('id', $form_state->getValue('id'));
72     $this->entity->save();
73
74     // Redirect the user to the view admin form.
75     $form_state->setRedirectUrl($this->entity->urlInfo('edit-form'));
76   }
77
78 }