summaryrefslogtreecommitdiff
path: root/modules/menu/menu.js
diff options
context:
space:
mode:
Diffstat (limited to 'modules/menu/menu.js')
-rw-r--r--modules/menu/menu.js63
1 files changed, 47 insertions, 16 deletions
diff --git a/modules/menu/menu.js b/modules/menu/menu.js
index 2d4c714c4..f5415099d 100644
--- a/modules/menu/menu.js
+++ b/modules/menu/menu.js
@@ -4,27 +4,58 @@
Drupal.behaviors.menuFieldsetSummaries = {
attach: function (context) {
- $('fieldset#edit-menu', context).setSummary(function (context) {
- return Drupal.checkPlain($('#edit-menu-link-title', context).val()) || Drupal.t('Not in menu');
+ $('fieldset.menu-link-form', context).setSummary(function (context) {
+ if ($('#edit-menu-enabled', context).attr('checked')) {
+ return Drupal.checkPlain($('#edit-menu-link-title', context).val());
+ }
+ else {
+ return Drupal.t('Not in menu');
+ }
});
}
};
-Drupal.behaviors.menuDisplayForm = {
- attach: function () {
- $('fieldset#edit-menu .form-item:first').before('<div class="form-item form-type-checkbox form-item-menu-create"><label for="edit-menu-create" class="option"><input type="checkbox" class="form-checkbox" id="edit-menu-create" name="menu[create]"/> ' + Drupal.t('Create a menu item.') + '</label></div>');
- $('fieldset#edit-menu .form-item:gt(0)').hide();
- $('#edit-menu-create').change(function () {
- if($(this).is(':checked')){
- $('fieldset#edit-menu .form-item:gt(0)').show();
- $('#edit-menu-link-title').val(Drupal.checkPlain($('#edit-title').val())).change();
- }else{
- $('fieldset#edit-menu .form-item:gt(0)').hide();
- $('#edit-menu-link-title').val('').change();
- }
+/**
+ * Automatically fill in a menu link title, if possible.
+ */
+Drupal.behaviors.menuLinkAutomaticTitle = {
+ attach: function (context) {
+ // 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 = $('fieldset.menu-link-form #edit-menu-enabled', context);
+ var $link_title = $('#menu-wrapper #edit-menu-link-title', context);
+ var $title = $('#menu-wrapper', context).closest('form').find('#title-wrapper input.form-text');
+ // 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.attr('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.attr('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');
});
- $('#edit-menu-link-title').keyup(function () {
- $('#edit-menu-create').attr('checked', $(this).val());
+ // Take over any title change.
+ $title.keyup(function () {
+ if (!$link_title.data('menuLinkAutomaticTitleOveridden') && $checkbox.attr('checked')) {
+ $link_title.val($title.val());
+ }
});
}
};