xandeadx.ru Блог музицирующего веб-девелопера

Drupal → Добавляем возможность указывать тип прогрессбара для ajax ссылок

Опубликовано

Небольшой костыль, который позволит указывать тип прогрессбара ajax-ссылки в атрибуте data-progress-type.

// ajax-progress-type.js
 
(function ($, Drupal) {
 
  /**
   * Override AJAX "beforeSend" callback.
   */
  var originalAjaxBeforeSend = Drupal.Ajax.prototype.beforeSend;
  Drupal.Ajax.prototype.beforeSend = function (xmlhttprequest, options) {
    var $element = $(this.element);
 
    // Set progress type from "data-progress-type" attribute
    // @TODO Remove after close issue https://www.drupal.org/project/drupal/issues/2818463
    if ($element.data('progress-type')) {
      this.progress.type = $element.data('progress-type');
    }
 
    // Call original callback
    originalAjaxBeforeSend.apply(this, arguments);
  };
 
})(jQuery, Drupal);
// MODULENAME.module
 
/**
 * Implements hook_library_info_alter().
 */
function MODULENAME_library_info_alter(array &$libraries, string $extension) {
  if ($extension == 'core') {
    $js_path = '/' . drupal_get_path('module', 'MODULENAME') . '/ajax-progress-type.js';
    $libraries['drupal.ajax']['js'][$js_path] = [];
  }
}

Использование:

<a href="/node/123" class="use-ajax" data-dialog-type="modal" data-progress-type="fullscreen">Open node</a>

Как создать свой тип прогрессбара

Написанное актуально для Drupal 8+
Похожие записи

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании