2 * @file entity_browser.multi_step_display.js
5 (function ($, Drupal) {
10 * Registers behaviours related to selected entities.
12 Drupal.behaviors.entityBrowserMultiStepDisplay = {
13 attach: function (context) {
14 var $entities = $(context).find('.entities-list');
16 stop: Drupal.entityBrowserMultiStepDisplay.entitiesReordered
19 // Register add/remove entities event handlers.
20 $entities.once('register-add-entities')
21 .bind('add-entities', Drupal.entityBrowserMultiStepDisplay.addEntities);
23 $entities.once('register-remove-entities')
24 .bind('remove-entities', Drupal.entityBrowserMultiStepDisplay.removeEntities);
26 // Register event for remove button to use AJAX event.
27 var $remove_buttons = $entities.find('.entity-browser-remove-selected-entity');
28 $remove_buttons.once('register-click').on('click', function (event) {
29 event.preventDefault();
31 var button_element = $(event.target);
32 var remove_entity_id = button_element.attr('data-remove-entity') + '_' + button_element.attr('data-row-id');
34 $entities.trigger('remove-entities', [[remove_entity_id]]);
37 // Add a toggle button for the display of selected entities.
38 var $toggle = $('.entity-browser-show-selection');
40 function setToggleText() {
41 if($entities.css('display') == 'none') {
42 $toggle.val(Drupal.t('Show selected'));
44 $toggle.val(Drupal.t('Hide selected'));
48 if ($entities.length > 0) {
49 $toggle.once('register-click').on('click', function (e) {
51 $entities.slideToggle('fast', setToggleText);
59 Drupal.entityBrowserMultiStepDisplay = {};
62 * Reacts on sorting of the entities.
64 * @param {object} event
67 * Object with detailed information about the sort event.
69 Drupal.entityBrowserMultiStepDisplay.entitiesReordered = function (event, ui) {
70 var items = $(this).find('.item-container');
71 for (var i = 0; i < items.length; i++) {
72 $(items[i]).find('.weight').val(i);
77 * Remove entities from selection of multistep display.
79 * @param {object} event
81 * @param {Array} entity_ids
82 * Entity IDs that should be removed from selection.
84 Drupal.entityBrowserMultiStepDisplay.removeEntities = function (event, entity_ids) {
85 var entities_list = $(this);
88 for (i = 0; i < entity_ids.length; i++) {
89 // Remove dom element, and queue entity for removal in backend.
90 var element_selector = '[data-drupal-selector="edit-selected-'.concat(entity_ids[i].replace(/_/g, '-'), '"]');
91 entities_list.find(element_selector).remove();
93 Drupal.entityBrowserCommandQueue.queueCommand(
96 entity_id: entity_ids[i]
100 // Remove action buttons, if there are no more entities selected.
101 if (entities_list.children().length === 0) {
102 entities_list.siblings('.entity-browser-use-selected').remove();
103 entities_list.siblings('.entity-browser-show-selection').remove();
107 entities_list.siblings('[name=ajax_commands_handler]').trigger('execute-commands', [true]);
111 * Add entities into selection of multistep display.
113 * @param {object} event
115 * @param {Array} entity_ids
116 * Entity ID that should be added to selection.
118 Drupal.entityBrowserMultiStepDisplay.addEntities = function (event, entity_ids) {
119 var entities_list = $(this);
122 for (i = 0; i < entity_ids.length; i++) {
123 // Add proxy element that will be replaced with returned Ajax Command.
124 var proxy_element = $('<div></div>').uniqueId();
125 entities_list.append(proxy_element);
127 Drupal.entityBrowserCommandQueue.queueCommand(
130 entity_id: entity_ids[i],
131 proxy_id: proxy_element.attr('id')
136 entities_list.siblings('[name=ajax_commands_handler]').trigger('execute-commands', [true]);