geysir-8.x-1.2/js/geysir.js

js/geysir.js
/**
 * @file
 * Attaches behaviors for the Geysir module.
 */

(function($, Drupal, drupalSettings) {

  "use strict";

  Drupal.behaviors.geysir = {
    attach: function(context, settings) {
      var cut_links = $('.geysir-field-paragraph-links', context).find('.cut');
      cut_links.on('click', function (e) {
        e.preventDefault();

        var $this = $(e.target);

        // Find parent paragraph.
        var parent = $this.closest('[data-geysir-paragraph-id]');
        var parent_id = parent.data('geysir-paragraph-id');
        parent.addClass('geysir-cut-paste-disabled');

        // Find the geysir field wrapper.
        var field_wrapper_id = $this.data('geysir-field-paragraph-field-wrapper');
        var field_wrapper = $('[data-geysir-field-paragraph-field-wrapper="' + field_wrapper_id + '"]', context);
        // Add class to the geysir field wrapper to toggle cut behavior.
        field_wrapper.addClass('geysir-cut-paste');

        // Rewrite all paste links based on the paragraph which is currently cut.
        var paragraphs = $('[data-geysir-paragraph-id]', field_wrapper);
        paragraphs.each(function(index, paragraph) {
          paragraph = $(paragraph);
          var paragraph_id = paragraph.data('geysir-paragraph-id');
          var paste_link_wrappers = $('.paste-after, .paste-before', paragraph);
          var paste_links = paste_link_wrappers.find('a');
          paste_links.each(function(index, paste_link) {
            paste_link = $(paste_link);
            var href = paste_link.attr('href');

            $.each(Drupal.ajax.instances, function (index, event) {
              var element = $(event.element);
              if (element.hasClass('geysir-paste')) {
                if (href === event.elementSettings.url) {
                  event.options.url = event.options.url.replace('/' + paragraph_id + '/', '/' + parent_id + '/');
                }
              }
            });
          });
        });

        return false;
      });
    }
  };

  Drupal.AjaxCommands.prototype.geysirReattachBehaviors = function() {
      Drupal.ajax.instances = Drupal.ajax.instances.filter(function(el) {
        return el;
    });

    Drupal.attachBehaviors();
  };

})(jQuery, Drupal, drupalSettings);

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

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