diff --git a/multiple_select.module b/multiple_select.module index 7226c4e..c9a1c9b 100644 --- a/multiple_select.module +++ b/multiple_select.module @@ -30,9 +30,9 @@ function multiple_select_form_taxonomy_term_form_alter(&$form, $form_state, $for } /** - * Implements site_setting_entity_form_alter(). + * Implements hook_form_alter(). */ -function multiple_select_form_site_setting_entity_form_alter(&$form, $form_state, $form_id) { +function multiple_select_form_alter(&$form, $form_state, $form_id) { $form = multiple_select($form, $form_state, $form_id); } @@ -40,50 +40,55 @@ function multiple_select_form_site_setting_entity_form_alter(&$form, $form_state * Custom callback(). */ function multiple_select(&$form, $form_state, $form_id) { - $shared_bulk_config = multiple_select_get_bulk_configs(); - if (is_null($shared_bulk_config)) { - return $form; - } + if ($form_state->getFormObject() instanceof \Drupal\Core\Entity\EntityFormInterface) { + $shared_bulk_config = multiple_select_get_bulk_configs(); + if (is_null($shared_bulk_config)) { + return $form; + } - $is_original_language = TRUE; - if (!strContains($form_id, 'taxonomy_term')) { - $is_original_language = $form_state->getFormObject()->getEntity()->get('default_langcode')->value; - } - $entities = array_keys($shared_bulk_config); - foreach ($entities as $type) { - - if (strpos($form_id, $type) !== FALSE) { - foreach (array_keys($form) as $item) { - if (is_array($form[$item]) && isset($form[$item]['widget']['#type']) - && in_array($form[$item]['widget']['#field_name'], $shared_bulk_config[$type]) - && $form[$item]['widget']['#type'] == 'checkboxes' - && !(!$is_original_language && !$form_state->getFormObject()->getEntity() - ->get($form[$item]['widget']['#field_name']) - ->getFieldDefinition()->isTranslatable())) { - - $name = str_replace('_', '-', $item); - $form['#attached']['library'][] = 'multiple_select/selectall'; - - $form['checkall' . $name] = [ - '#type' => 'checkbox', - '#title' => t('Select All / Uncheck All'), - '#weight' => isset($form[$item]['#weight']) ? - $form[$item]['#weight'] - 1 : 0, - '#required' => FALSE, - '#attributes' => ['id' => "multiple_select-$item"], - ]; - - if (\Drupal::moduleHandler()->moduleExists('field_group') - && !empty($form['#group_children'][$item])) { - $group = $form['#group_children'][$item]; - $field_name = 'checkall' . $name; - $form['#group_children'][$field_name] = $group; - $form[$group][$field_name] = $form[$field_name]; - unset($form[$field_name]); + $is_original_language = TRUE; + if (!strContains($form_id, 'taxonomy_term')) { + if($form_state->getFormObject()->getEntity()->get('default_langcode')) { + $is_original_language = $form_state->getFormObject()->getEntity()->get('default_langcode')->value; + } + } + $entities = array_keys($shared_bulk_config); + foreach ($entities as $type) { + + if (strpos($form_id, $type) !== FALSE) { + foreach (array_keys($form) as $item) { + if (is_array($form[$item]) && isset($form[$item]['widget']['#type']) + && in_array($form[$item]['widget']['#field_name'], $shared_bulk_config[$type]) + && $form[$item]['widget']['#type'] == 'checkboxes' + && !(!$is_original_language && !$form_state->getFormObject()->getEntity() + ->get($form[$item]['widget']['#field_name']) + ->getFieldDefinition()->isTranslatable())) { + + $name = str_replace('_', '-', $item); + $form['#attached']['library'][] = 'multiple_select/selectall'; + + $form['checkall' . $name] = [ + '#type' => 'checkbox', + '#title' => t('Select All / Uncheck All'), + '#weight' => isset($form[$item]['#weight']) ? + $form[$item]['#weight'] - 1 : 0, + '#required' => FALSE, + '#attributes' => ['id' => "multiple_select-$item"], + ]; + + if (\Drupal::moduleHandler()->moduleExists('field_group') + && !empty($form['#group_children'][$item])) { + $group = $form['#group_children'][$item]; + $field_name = 'checkall' . $name; + $form['#group_children'][$field_name] = $group; + $form[$field_name]['#weight'] = $form[$field_name]['#weight'] + 1; + $form[$group][$field_name] = $form[$field_name]; + unset($form[$field_name]); + } } } - } + } } } @@ -141,3 +146,18 @@ a configuration page in which this functionality can be applied to one (or more) return $output; } } + + +/** + * Implements hook_module_implements_alter(). + */ +function multiple_select_module_implements_alter(&$implementations, $hook) { + switch ($hook) { + // Move our hook_form_alter() implementation to the end of the list. + case 'form_alter': + $group = $implementations['multiple_select']; + unset($implementations['multiple_select']); + $implementations['multiple_select'] = $group; + break; + } +}