function ActionContainerForm::form
Overrides ExpressionFormInterface::form
File
-
src/
Form/ Expression/ ActionContainerForm.php, line 30
Class
- ActionContainerForm
- Form handler for action containers.
Namespace
Drupal\rules\Form\ExpressionCode
public function form(array $form, FormStateInterface $form_state) {
$form['actions-table'] = [
'#type' => 'container',
'#attributes' => [
'class' => [
'edit-actions-table',
],
],
];
$form['actions-table']['actions'] = [
'#type' => 'table',
'#header' => [
'element' => $this->t('Actions'),
'operations' => $this->t('Operations'),
'weight' => [
'data' => $this->t('List position'),
'class' => [
'tabledrag-hide',
],
],
],
'#tabledrag' => [
[
'action' => 'order',
'relationship' => 'sibling',
'group' => 'table-sort-weight',
],
],
'#empty' => $this->t('None'),
];
/** @var \Drupal\rules\Engine\ExpressionInterface $action */
foreach ($this->actionSet as $action) {
$uuid = $action->getUuid();
$configuration = $action->getConfiguration();
$description = $this->getParameterDescription($configuration);
$form['actions-table']['actions'][$uuid] = [
'element' => [
'data' => [
'#type' => 'item',
'#plain_text' => $action->getLabel(),
'#suffix' => '<div class="description">' . $description . '</div>',
],
// So that the full parameter description will show on hover.
'#wrapper_attributes' => [
'title' => [
$description,
],
],
],
'operations' => [
'data' => [
'#type' => 'operations',
'#links' => [
'edit' => [
'title' => $this->t('Edit'),
'url' => $this->getRulesUiHandler()
->getUrlFromRoute('expression.edit', [
'uuid' => $uuid,
]),
],
'delete' => [
'title' => $this->t('Delete'),
'url' => $this->getRulesUiHandler()
->getUrlFromRoute('expression.delete', [
'uuid' => $uuid,
]),
],
],
],
],
'weight' => [
'#type' => 'weight',
'#delta' => 50,
'#attributes' => [
'class' => [
'table-sort-weight',
],
],
'#default_value' => $action->getWeight(),
],
'#attributes' => [
'class' => [
'draggable',
],
],
'#weight' => $action->getWeight(),
];
}
// Put action buttons in the table footer.
$links['add-action'] = [
'#theme' => 'menu_local_action',
'#link' => [
'title' => $this->t('Add action'),
'url' => $this->getRulesUiHandler()
->getUrlFromRoute('expression.add', [
'expression_id' => 'rules_action',
]),
],
];
$form['actions-table']['actions']['#footer'][] = [
[
'data' => [
'#prefix' => '<ul class="action-links">',
'local-action-links' => $links,
'#suffix' => '</ul>',
],
'colspan' => 3,
],
];
return $form;
}