storage = $storage; } /** * {@inheritdoc} */ public static function create(ContainerInterface $container) { return new static( $container->get('entity.manager')->getStorage('action') ); } /** * {@inheritdoc} */ public function buildForm(array $form, FormStateInterface $form_state) { $this->plugin = $this->entity->getPlugin(); return parent::buildForm($form, $form_state); } /** * {@inheritdoc} */ public function form(array $form, FormStateInterface $form_state) { $form['label'] = [ '#type' => 'textfield', '#title' => $this->t('Label'), '#default_value' => $this->entity->label(), '#maxlength' => '255', '#description' => $this->t('A unique label for this advanced action. This label will be displayed in the interface of modules that integrate with actions.'), ]; $form['id'] = [ '#type' => 'machine_name', '#default_value' => $this->entity->id(), '#disabled' => !$this->entity->isNew(), '#maxlength' => 64, '#description' => $this->t('A unique name for this action. It must only contain lowercase letters, numbers and underscores.'), '#machine_name' => [ 'exists' => [$this, 'exists'], ], ]; $form['plugin'] = [ '#type' => 'value', '#value' => $this->entity->get('plugin'), ]; $form['type'] = [ '#type' => 'value', '#value' => $this->entity->getType(), ]; if ($this->plugin instanceof PluginFormInterface) { $form += $this->plugin->buildConfigurationForm($form, $form_state); } return parent::form($form, $form_state); } /** * Determines if the action already exists. * * @param string $id * The action ID * * @return bool * TRUE if the action exists, FALSE otherwise. */ public function exists($id) { $action = $this->storage->load($id); return !empty($action); } /** * {@inheritdoc} */ protected function actions(array $form, FormStateInterface $form_state) { $actions = parent::actions($form, $form_state); unset($actions['delete']); return $actions; } /** * {@inheritdoc} */ public function validateForm(array &$form, FormStateInterface $form_state) { parent::validateForm($form, $form_state); if ($this->plugin instanceof PluginFormInterface) { $this->plugin->validateConfigurationForm($form, $form_state); } } /** * {@inheritdoc} */ public function submitForm(array &$form, FormStateInterface $form_state) { parent::submitForm($form, $form_state); if ($this->plugin instanceof PluginFormInterface) { $this->plugin->submitConfigurationForm($form, $form_state); } } /** * {@inheritdoc} */ public function save(array $form, FormStateInterface $form_state) { $this->entity->save(); drupal_set_message($this->t('The action has been successfully saved.')); $form_state->setRedirect('entity.action.collection'); } }