Browse Source

added bulk select

main
astanley 7 days ago
parent
commit
d704be1580
  1. 23
      src/Form/CollectionManagerForm.php

23
src/Form/CollectionManagerForm.php

@ -97,8 +97,8 @@ class CollectionManagerForm extends FormBase {
if ($all_descendants) {
$nodes = $node_storage->loadMultiple($all_descendants);
foreach ($nodes as $node) {
if ($node->hasField('field_model')) {
foreach ($node->get('field_model')->getValue() as $item) {
if ($node->hasField('field_models')) {
foreach ($node->get('field_models')->getValue() as $item) {
if (!empty($item['target_id'])) {
$available_model_tids[(int) $item['target_id']] = TRUE;
}
@ -172,22 +172,20 @@ class CollectionManagerForm extends FormBase {
];
$header = [
'select' => $this->t('Select'),
'title' => $this->t('Title'),
'nid' => $this->t('Node ID'),
'model' => $this->t('Model'),
'status' => $this->t('Status'),
];
$rows = [];
$options = [];
foreach ($page_nodes as $nid => $node) {
$models = [];
if ($node->hasField('field_model')) {
foreach ($node->get('field_model')->referencedEntities() as $term) {
if ($node->hasField('field_models')) {
foreach ($node->get('field_models')->referencedEntities() as $term) {
$models[] = $term->label();
}
}
$rows[$nid] = [
'select' => ['data' => ['#type' => 'checkbox', '#name' => 'selected[' . $nid . ']', '#return_value' => $nid]],
$options[$nid] = [
'title' => ['data' => $node->toLink($node->label())->toRenderable()],
'nid' => $nid,
'model' => implode(', ', $models),
@ -195,10 +193,13 @@ class CollectionManagerForm extends FormBase {
];
}
// Use Drupal's tableselect element so the header includes the standard
// select-all checkbox. It selects/deselects all rows on the current page.
$form['results'] = [
'#type' => 'table',
'#type' => 'tableselect',
'#header' => $header,
'#rows' => $rows,
'#options' => $options,
'#multiple' => TRUE,
'#empty' => $this->t('No descendants match the selected model filter.'),
];
$form['pager'] = ['#type' => 'pager'];
@ -268,7 +269,7 @@ class CollectionManagerForm extends FormBase {
}
$action_id = (string) $form_state->getValue(['bulk', 'action']);
$selected = array_keys(array_filter((array) $form_state->getValue('selected', [])));
$selected = array_values(array_filter((array) $form_state->getValue('results', [])));
if (!$action_id || !$selected) {
$this->messenger()->addWarning($this->t('Select at least one result and an action.'));
return;

Loading…
Cancel
Save