Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
CRAP | |
0.00% |
0 / 19 |
ActionAddForm | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
30 | |
0.00% |
0 / 19 |
__construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
create | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 5 |
|||
buildForm | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 11 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\action\ActionAddForm. | |
*/ | |
namespace Drupal\action; | |
use Drupal\Component\Utility\Crypt; | |
use Drupal\Core\Action\ActionManager; | |
use Drupal\Core\Entity\EntityStorageInterface; | |
use Drupal\Core\Form\FormStateInterface; | |
use Symfony\Component\DependencyInjection\ContainerInterface; | |
/** | |
* Provides a form for action add forms. | |
*/ | |
class ActionAddForm extends ActionFormBase { | |
/** | |
* The action manager. | |
* | |
* @var \Drupal\Core\Action\ActionManager | |
*/ | |
protected $actionManager; | |
/** | |
* Constructs a new ActionAddForm. | |
* | |
* @param \Drupal\Core\Entity\EntityStorageInterface $storage | |
* The action storage. | |
* @param \Drupal\Core\Action\ActionManager $action_manager | |
* The action plugin manager. | |
*/ | |
public function __construct(EntityStorageInterface $storage, ActionManager $action_manager) { | |
parent::__construct($storage); | |
$this->actionManager = $action_manager; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public static function create(ContainerInterface $container) { | |
return new static( | |
$container->get('entity.manager')->getStorage('action'), | |
$container->get('plugin.manager.action') | |
); | |
} | |
/** | |
* {@inheritdoc} | |
* | |
* @param string $action_id | |
* The hashed version of the action ID. | |
*/ | |
public function buildForm(array $form, FormStateInterface $form_state, $action_id = NULL) { | |
// In \Drupal\action\Form\ActionAdminManageForm::buildForm() the action | |
// are hashed. Here we have to decrypt it to find the desired action ID. | |
foreach ($this->actionManager->getDefinitions() as $id => $definition) { | |
$key = Crypt::hashBase64($id); | |
if ($key === $action_id) { | |
$this->entity->setPlugin($id); | |
// Derive the label and type from the action definition. | |
$this->entity->set('label', $definition['label']); | |
$this->entity->set('type', $definition['type']); | |
break; | |
} | |
} | |
return parent::buildForm($form, $form_state); | |
} | |
} |