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++;
  }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc