function entity_browser_enhanced_form_alter in Entity Browser Enhance(d|r) 8
Implements hook_form_alter().
File
- ./
entity_browser_enhanced.module, line 41 - Allows to have an enhanced entity browser.
Code
function entity_browser_enhanced_form_alter(&$form, FormStateInterface $form_state, $form_id) {
if ($form_id === "entity_browser_widgets_config_form") {
$enhancers_list = \Drupal::service('plugin.manager.entity_browser_enhanced_plugin')
->getDefinitions();
$enhancers = [
'_none_' => t('- None -'),
];
foreach ($enhancers_list as $enhancer_item) {
$enhancers[$enhancer_item['id']] = $enhancer_item['label'];
}
$entity_browser = $form_state
->getFormObject()
->getEntity();
foreach ($entity_browser
->getWidgets() as $uuid => $widget) {
if (!$widget instanceof View) {
continue;
}
$form['widgets']['table'][$uuid]['form']['enhancer'] = [
'#type' => 'select',
'#title' => t('Select enhancer'),
'#default_value' => \Drupal::config('entity_browser_enhanced.widgets.' . $entity_browser
->getName())
->get($uuid, '_none_'),
'#options' => $enhancers,
];
}
$form['#submit'][] = 'entity_browser_enhanced_submit';
}
elseif ($form_state
->getFormObject() instanceof EntityBrowserForm) {
$enhancers_list = \Drupal::service('plugin.manager.entity_browser_enhanced_plugin')
->getDefinitions();
$entity_browser = $form_state
->getFormObject()
->getEntityBrowser();
foreach ($entity_browser
->getWidgets() as $uuid => $widget) {
$enhancer_id = \Drupal::config('entity_browser_enhanced.widgets.' . $entity_browser
->getName())
->get($uuid, '_none_');
foreach ($enhancers_list as $enhancer_item) {
if ($enhancer_id === $enhancer_item['id']) {
// Attach Entity Browser Enhanced library.
$form['#attached']['library'][] = $enhancer_item['libraray'];
$field_storage = $form_state
->getStorage();
if (!empty($field_storage['entity_browser']['validators']['cardinality']['cardinality'])) {
$field_cardinality = $field_storage['entity_browser']['validators']['cardinality']['cardinality'];
$form['#attached']['drupalSettings']['entity_browser_enhanced'][$enhancer_item['id']]['cardinality'] = $field_cardinality;
}
// Mark the form with entity-browser-enhanced classes.
$form['#attributes']['class'][] = 'entity-browser-enhanced';
$form['#attributes']['class'][] = $enhancer_item['form_extra_class'];
}
}
}
}
}