Mercurial > hg > cmmr2012-drupal-site
diff core/modules/block/js/block.js @ 0:c75dbcec494b
Initial commit from drush-created site
author | Chris Cannam |
---|---|
date | Thu, 05 Jul 2018 14:24:15 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/block/js/block.js Thu Jul 05 14:24:15 2018 +0000 @@ -0,0 +1,144 @@ +/** +* DO NOT EDIT THIS FILE. +* See the following change record for more information, +* https://www.drupal.org/node/2815083 +* @preserve +**/ + +(function ($, window, Drupal) { + Drupal.behaviors.blockSettingsSummary = { + attach: function attach() { + if (typeof $.fn.drupalSetSummary === 'undefined') { + return; + } + + function checkboxesSummary(context) { + var vals = []; + var $checkboxes = $(context).find('input[type="checkbox"]:checked + label'); + var il = $checkboxes.length; + for (var i = 0; i < il; i++) { + vals.push($($checkboxes[i]).html()); + } + if (!vals.length) { + vals.push(Drupal.t('Not restricted')); + } + return vals.join(', '); + } + + $('[data-drupal-selector="edit-visibility-node-type"], [data-drupal-selector="edit-visibility-language"], [data-drupal-selector="edit-visibility-user-role"]').drupalSetSummary(checkboxesSummary); + + $('[data-drupal-selector="edit-visibility-request-path"]').drupalSetSummary(function (context) { + var $pages = $(context).find('textarea[name="visibility[request_path][pages]"]'); + if (!$pages.val()) { + return Drupal.t('Not restricted'); + } + + return Drupal.t('Restricted to certain pages'); + }); + } + }; + + Drupal.behaviors.blockDrag = { + attach: function attach(context, settings) { + if (typeof Drupal.tableDrag === 'undefined' || typeof Drupal.tableDrag.blocks === 'undefined') { + return; + } + + function checkEmptyRegions(table, rowObject) { + table.find('tr.region-message').each(function () { + var $this = $(this); + + if ($this.prev('tr').get(0) === rowObject.element) { + if (rowObject.method !== 'keyboard' || rowObject.direction === 'down') { + rowObject.swap('after', this); + } + } + + if ($this.next('tr').is(':not(.draggable)') || $this.next('tr').length === 0) { + $this.removeClass('region-populated').addClass('region-empty'); + } else if ($this.is('.region-empty')) { + $this.removeClass('region-empty').addClass('region-populated'); + } + }); + } + + function updateLastPlaced(table, rowObject) { + table.find('.color-success').removeClass('color-success'); + + var $rowObject = $(rowObject); + if (!$rowObject.is('.drag-previous')) { + table.find('.drag-previous').removeClass('drag-previous'); + $rowObject.addClass('drag-previous'); + } + } + + function updateBlockWeights(table, region) { + var weight = -Math.round(table.find('.draggable').length / 2); + + table.find('.region-' + region + '-message').nextUntil('.region-title').find('select.block-weight').val(function () { + return ++weight; + }); + } + + var table = $('#blocks'); + + var tableDrag = Drupal.tableDrag.blocks; + + tableDrag.row.prototype.onSwap = function (swappedRow) { + checkEmptyRegions(table, this); + updateLastPlaced(table, this); + }; + + tableDrag.onDrop = function () { + var dragObject = this; + var $rowElement = $(dragObject.rowObject.element); + + var regionRow = $rowElement.prevAll('tr.region-message').get(0); + var regionName = regionRow.className.replace(/([^ ]+[ ]+)*region-([^ ]+)-message([ ]+[^ ]+)*/, '$2'); + var regionField = $rowElement.find('select.block-region-select'); + + if (regionField.find('option[value=' + regionName + ']').length === 0) { + window.alert(Drupal.t('The block cannot be placed in this region.')); + + regionField.trigger('change'); + } + + if (!regionField.is('.block-region-' + regionName)) { + var weightField = $rowElement.find('select.block-weight'); + var oldRegionName = weightField[0].className.replace(/([^ ]+[ ]+)*block-weight-([^ ]+)([ ]+[^ ]+)*/, '$2'); + regionField.removeClass('block-region-' + oldRegionName).addClass('block-region-' + regionName); + weightField.removeClass('block-weight-' + oldRegionName).addClass('block-weight-' + regionName); + regionField.val(regionName); + } + + updateBlockWeights(table, regionName); + }; + + $(context).find('select.block-region-select').once('block-region-select').on('change', function (event) { + var row = $(this).closest('tr'); + var select = $(this); + + tableDrag.rowObject = new tableDrag.row(row[0]); + var regionMessage = table.find('.region-' + select[0].value + '-message'); + var regionItems = regionMessage.nextUntil('.region-message, .region-title'); + if (regionItems.length) { + regionItems.last().after(row); + } else { + regionMessage.after(row); + } + updateBlockWeights(table, select[0].value); + + checkEmptyRegions(table, tableDrag.rowObject); + + updateLastPlaced(table, row); + + if (!tableDrag.changed) { + $(Drupal.theme('tableDragChangedWarning')).insertBefore(tableDrag.table).hide().fadeIn('slow'); + tableDrag.changed = true; + } + + select.trigger('blur'); + }); + } + }; +})(jQuery, window, Drupal); \ No newline at end of file