Version 1
[yaffs-website] / web / core / modules / user / src / RoleForm.php
diff --git a/web/core/modules/user/src/RoleForm.php b/web/core/modules/user/src/RoleForm.php
new file mode 100644 (file)
index 0000000..7e78853
--- /dev/null
@@ -0,0 +1,68 @@
+<?php
+
+namespace Drupal\user;
+
+use Drupal\Core\Entity\EntityForm;
+use Drupal\Core\Form\FormStateInterface;
+
+/**
+ * Form controller for the role entity edit forms.
+ */
+class RoleForm extends EntityForm {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function form(array $form, FormStateInterface $form_state) {
+    $entity = $this->entity;
+    $form['label'] = [
+      '#type' => 'textfield',
+      '#title' => $this->t('Role name'),
+      '#default_value' => $entity->label(),
+      '#size' => 30,
+      '#required' => TRUE,
+      '#maxlength' => 64,
+      '#description' => $this->t('The name for this role. Example: "Moderator", "Editorial board", "Site architect".'),
+    ];
+    $form['id'] = [
+      '#type' => 'machine_name',
+      '#default_value' => $entity->id(),
+      '#required' => TRUE,
+      '#disabled' => !$entity->isNew(),
+      '#size' => 30,
+      '#maxlength' => 64,
+      '#machine_name' => [
+        'exists' => ['\Drupal\user\Entity\Role', 'load'],
+      ],
+    ];
+    $form['weight'] = [
+      '#type' => 'value',
+      '#value' => $entity->getWeight(),
+    ];
+
+    return parent::form($form, $form_state, $entity);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function save(array $form, FormStateInterface $form_state) {
+    $entity = $this->entity;
+
+    // Prevent leading and trailing spaces in role names.
+    $entity->set('label', trim($entity->label()));
+    $status = $entity->save();
+
+    $edit_link = $this->entity->link($this->t('Edit'));
+    if ($status == SAVED_UPDATED) {
+      drupal_set_message($this->t('Role %label has been updated.', ['%label' => $entity->label()]));
+      $this->logger('user')->notice('Role %label has been updated.', ['%label' => $entity->label(), 'link' => $edit_link]);
+    }
+    else {
+      drupal_set_message($this->t('Role %label has been added.', ['%label' => $entity->label()]));
+      $this->logger('user')->notice('Role %label has been added.', ['%label' => $entity->label(), 'link' => $edit_link]);
+    }
+    $form_state->setRedirect('entity.user_role.collection');
+  }
+
+}