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