widget_engine-8.x-1.2/modules/widget_engine_entity_form/widget_engine_entity_form.module
modules/widget_engine_entity_form/widget_engine_entity_form.module
<?php
/**
* @file
* Module file for widget_engine_entity_form.info.yml.
*/
/**
* @defgroup widget_engine_entity_form.info.yml
* @}
*/
use Drupal\Core\Ajax\InvokeCommand;
use Drupal\Core\Form\FormStateInterface;
use Drupal\entity_browser\Form\WidgetsConfig;
/**
* Load needed for module includes.
*/
require_once 'includes/widget_engine_entity_form.theme.inc';
/**
* Implements hook_ajax_render_alter().
*/
function widget_engine_entity_form_ajax_render_alter(&$commands) {
$selector = '.field--widget-widget-entity-browser-entity-reference';
$command = new InvokeCommand($selector, 'trigger', ['afterSaveWidget']);
$commands[] = $command->render();
}
/**
* Implements hook_form_FORM_ID_alter().
*/
function widget_engine_entity_form_form_entity_browser_widgets_config_form_alter(&$form, FormStateInterface $form_state) {
/** @var \Drupal\entity_browser\Form\WidgetsConfig $form_object */
$form_object = $form_state->getFormObject();
$entity_browser = $form_object->getEntity();
$widget_selector = $entity_browser->getWidgetSelector();
if ($widget_selector->getPluginId() == 'select_add_tabs') {
// Add specific description.
$description = $form['widget']['#description'];
$widget_note = '<strong>' . t('NOTE: For "Select&Add tabs" widget selector plugin you should observe the following rules:') . '</strong><ul>';
$widget_note .= '<li>' . t('At first place you should place "View" widget plugin.') . '</li>';
$widget_note .= '<li>' . t('On other places you should locate "Entity form" widget plugin(s).') . '</li>';
$widget_note .= '</ul>';
$description["#items"][] = [
'#markup' => $widget_note,
];
$form['widget']['#description'] = $description;
// Add validation.
$form['actions']['submit']['#validate'][] = 'widget_engine_entity_form_select_add_tabs_validate';
}
}
/**
* Form validation handler for content_translation_admin_settings_form().
*/
function widget_engine_entity_form_select_add_tabs_validate(array $form, FormStateInterface $form_state) {
/** @var \Drupal\entity_browser\Form\WidgetsConfig $form_object */
$form_object = $form_state->getFormObject();
$entity_browser = $form_object->getEntity();
$cached_widgets = $entity_browser->getWidgets()
->getConfiguration();
// Get current state of widgets.
$widgets = $form_state->getValue('table');
$first_widget = TRUE;
$row = 1;
foreach ($widgets as $uuid => $widget) {
$cached_widget = $cached_widgets[$uuid];
// Check if the first widget in the table has "View" widget plugin.
if ($first_widget) {
if ($cached_widget['id'] != 'view') {
$form_state->setError($form['widgets']['table'][$uuid], t('The selected widget plugin in row @row is incorrect. You should use "View" plugin there.', ['@row' => $row]));
}
$first_widget = FALSE;
}
// Check if the first widget in the table has "View" widget plugin.
elseif ($cached_widget['id'] != 'entity_form') {
$form_state->setError($form['widgets']['table'][$uuid], t('The selected widget plugin in row @row is incorrect. You should use "Entity form" plugin there.', ['@row' => $row]));
}
$row++;
}
}
