Пример #1
0
 /**
  * {@inheritdoc}
  */
 public function buildForm(array $form, FormStateInterface $form_state, UserInterface $user = NULL)
 {
     $account = $this->currentUser();
     $this->user = $user;
     // Prepare the list of shortcut sets.
     $options = array_map(function (ShortcutSet $set) {
         return $set->label();
     }, $this->shortcutSetStorage->loadMultiple());
     $current_set = shortcut_current_displayed_set($this->user);
     // Only administrators can add shortcut sets.
     $add_access = $account->hasPermission('administer shortcuts');
     if ($add_access) {
         $options['new'] = $this->t('New set');
     }
     $account_is_user = $this->user->id() == $account->id();
     if (count($options) > 1) {
         $form['set'] = array('#type' => 'radios', '#title' => $account_is_user ? $this->t('Choose a set of shortcuts to use') : $this->t('Choose a set of shortcuts for this user'), '#options' => $options, '#default_value' => $current_set->id());
         $form['label'] = array('#type' => 'textfield', '#title' => $this->t('Label'), '#description' => $this->t('The new set is created by copying items from your default shortcut set.'), '#access' => $add_access, '#states' => array('visible' => array(':input[name="set"]' => array('value' => 'new')), 'required' => array(':input[name="set"]' => array('value' => 'new'))));
         $form['id'] = array('#type' => 'machine_name', '#machine_name' => array('exists' => array($this, 'exists'), 'replace_pattern' => '[^a-z0-9-]+', 'replace' => '-'), '#maxlength' => 23, '#states' => array('required' => array(':input[name="set"]' => array('value' => 'new'))), '#required' => FALSE);
         if (!$account_is_user) {
             $default_set = $this->shortcutSetStorage->getDefaultSet($this->user);
             $form['new']['#description'] = $this->t('The new set is created by copying items from the %default set.', array('%default' => $default_set->label()));
         }
         $form['actions'] = array('#type' => 'actions');
         $form['actions']['submit'] = array('#type' => 'submit', '#value' => $this->t('Change set'));
     } else {
         // There is only 1 option, so output a message in the $form array.
         $form['info'] = array('#markup' => '<p>' . $this->t('You are currently using the %set-name shortcut set.', array('%set-name' => $current_set->label())) . '</p>');
     }
     return $form;
 }