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