public ModerationStateTransitionListBuilder::buildForm(array $form, FormStateInterface $form_state)
Form constructor.
Parameters
array $form: An associative array containing the structure of the form.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
Return value
array The form structure.
Overrides DraggableListBuilder::buildForm
File
- core/modules/content_moderation/src/ModerationStateTransitionListBuilder.php, line 109
Class
- ModerationStateTransitionListBuilder
- Provides a listing of Moderation state transition entities.
Namespace
Drupal\content_moderation
Code
public function buildForm(array $form, FormStateInterface $form_state) {
$this->entities = $this->load();
// Get all the moderation states and sort them by weight.
$states = $this->stateStorage->loadMultiple();
uasort($states, array($this->entityType->getClass(), 'sort'));
/** @var \Drupal\content_moderation\ModerationStateTransitionInterface $entity */
$groups = array_fill_keys(array_keys($states), []);
foreach ($this->entities as $entity) {
$groups[$entity->getFromState()][] = $entity;
}
foreach ($groups as $group_name => $entities) {
$form[$group_name] = [
'#type' => 'details',
'#title' => $this->t('From @state to...', ['@state' => $states[$group_name]->label()]),
// Make sure that the first group is always open.
'#open' => $group_name === array_keys($groups) [0],
];
$form[$group_name][$this->entitiesKey] = array(
'#type' => 'table',
'#header' => $this->buildHeader(),
'#empty' => t('There is no @label yet.', array('@label' => $this->entityType->getLabel())),
'#tabledrag' => array(
array(
'action' => 'order',
'relationship' => 'sibling',
'group' => 'weight',
),
),
);
$delta = 10;
// Change the delta of the weight field if have more than 20 entities.
if (!empty($this->weightKey)) {
$count = count($this->entities);
if ($count > 20) {
$delta = ceil($count / 2);
}
}
foreach ($entities as $entity) {
$row = $this->buildRow($entity);
if (isset($row['label'])) {
$row['label'] = array('#markup' => $row['label']);
}
if (isset($row['weight'])) {
$row['weight']['#delta'] = $delta;
}
$form[$group_name][$this->entitiesKey][$entity->id()] = $row;
}
}
$form['actions']['#type'] = 'actions';
$form['actions']['submit'] = array(
'#type' => 'submit',
'#value' => t('Save order'),
'#button_type' => 'primary',
);
return $form;
}
Please login to continue.