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

26.10.2020

Небольшой костыль, который позволит указывать тип прогрессбара 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+
Похожие записи

Добавить комментарий