cms/drupal/modules/menu/menu.js
changeset 541 e756a8c72c3d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cms/drupal/modules/menu/menu.js	Fri Sep 08 12:04:06 2017 +0200
@@ -0,0 +1,65 @@
+(function ($) {
+
+Drupal.behaviors.menuFieldsetSummaries = {
+  attach: function (context) {
+    $('fieldset.menu-link-form', context).drupalSetSummary(function (context) {
+      if ($('.form-item-menu-enabled input', context).is(':checked')) {
+        return Drupal.checkPlain($('.form-item-menu-link-title input', context).val());
+      }
+      else {
+        return Drupal.t('Not in menu');
+      }
+    });
+  }
+};
+
+/**
+ * Automatically fill in a menu link title, if possible.
+ */
+Drupal.behaviors.menuLinkAutomaticTitle = {
+  attach: function (context) {
+    $('fieldset.menu-link-form', context).each(function () {
+      // Try to find menu settings widget elements as well as a 'title' field in
+      // the form, but play nicely with user permissions and form alterations.
+      var $checkbox = $('.form-item-menu-enabled input', this);
+      var $link_title = $('.form-item-menu-link-title input', context);
+      var $title = $(this).closest('form').find('.form-item-title input');
+      // Bail out if we do not have all required fields.
+      if (!($checkbox.length && $link_title.length && $title.length)) {
+        return;
+      }
+      // If there is a link title already, mark it as overridden. The user expects
+      // that toggling the checkbox twice will take over the node's title.
+      if ($checkbox.is(':checked') && $link_title.val().length) {
+        $link_title.data('menuLinkAutomaticTitleOveridden', true);
+      }
+      // Whenever the value is changed manually, disable this behavior.
+      $link_title.keyup(function () {
+        $link_title.data('menuLinkAutomaticTitleOveridden', true);
+      });
+      // Global trigger on checkbox (do not fill-in a value when disabled).
+      $checkbox.change(function () {
+        if ($checkbox.is(':checked')) {
+          if (!$link_title.data('menuLinkAutomaticTitleOveridden')) {
+            $link_title.val($title.val());
+          }
+        }
+        else {
+          $link_title.val('');
+          $link_title.removeData('menuLinkAutomaticTitleOveridden');
+        }
+        $checkbox.closest('fieldset.vertical-tabs-pane').trigger('summaryUpdated');
+        $checkbox.trigger('formUpdated');
+      });
+      // Take over any title change.
+      $title.keyup(function () {
+        if (!$link_title.data('menuLinkAutomaticTitleOveridden') && $checkbox.is(':checked')) {
+          $link_title.val($title.val());
+          $link_title.val($title.val()).trigger('formUpdated');
+        }
+      });
+    });
+  }
+};
+
+})(jQuery);