Добавить всплывающее окно в админ Drupal 8 - PullRequest
0 голосов
/ 21 сентября 2018

Я хочу создать всплывающее окно, которое отображает пример возможного используемого тега в текстовой области, мне нужно, чтобы он отображался на каждой странице редактирования контента администратора.

Что мне нужно сделать, чтобы иметь этовид блока на странице редактирования контента администратора?

Спасибо.

1 Ответ

0 голосов
/ 24 сентября 2018

Я бы создал модуль с:

  • A twig файлом, содержащим содержимое диалога.
  • Небольшой JS-файл для отображения диалога с использованием jquery.dialog library включен в Drupal 8.
  • Реализуйте hook_from_alter, чтобы прикрепить изменения, основанные на form_id s.

Подобно следующему, который работает с формами редактирования узла, ноне полностью протестирован:

файл: templates / popuptag.html.twig

<div style="display: none;">
  <div id="popuptag-dialog" title="Tag Usage">
   <p>The tag can be used at vero eos et accusamus et iusto odio
     dignissimos ducimus qui blanditiis praesentium voluptatum
     deleniti atque corrupti quos dolores et quas molestias
     excepturi sint occaecati cupiditate non provident, similique sunt.</p>
  </div>
</div>

файл: js / popuptag.dialog.js

(function ($) {
  'use strict';
  Drupal.behaviors.popuptag_dialog = {
    attach: function (context) {
      $( "#popuptag-dialog" ).dialog();
    }
  };
})(jQuery);

файл: popuptag.module

/**
 * Implements hook_theme().
 */
function popuptag_theme() {
  return [
    'popuptag' => [
      'template'  => 'popuptag',
      'render element' => 'dialog',
    ],
  ];
}

/**
 * Implements hook_form_alter().
 */
function popuptag_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
  // Add here other form_ids if needed
  if (in_array($form_id, ['node_page_edit_form'])) {
    $form['popuptag'] = [
      '#theme' => 'popuptag',
      '#form_id' => $form_id,
    ];
    $form["#attached"]["library"][] = 'popuptag/dialog';
  }

}

файл: popuptag.libraries.yml

dialog:
  js:
    js/popuptag.dialog.js: { minified: true }
  dependencies:
    - core/drupal.dialog

файл: popuptag.info.yml

name: 'popuptag'
type: module
description: 'popuptag'
core: 8.x
package: 'Custom'
...