From d704be1580cef75f5699fa1fd8f696f7d54597f7 Mon Sep 17 00:00:00 2001 From: astanley Date: Tue, 8 Sep 2026 11:16:57 -0300 Subject: [PATCH] added bulk select --- src/Form/CollectionManagerForm.php | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/Form/CollectionManagerForm.php b/src/Form/CollectionManagerForm.php index bf8b20b..1a460fc 100644 --- a/src/Form/CollectionManagerForm.php +++ b/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;