SPR-980: close meta box after click on TOC anchor

This commit is contained in:
Jana Deutschländer 2017-05-03 16:53:42 +02:00
commit c6a2583846
2 changed files with 100 additions and 29 deletions

View file

@ -195,3 +195,65 @@
}
}
};
// + + + + + + + + + + + + + + + + + + + + + + + + + + + +
// shuffle func for random values
// + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Array.prototype.shuffle = function(){
var tmp, rand;
for(var i =0; i < this.length; i++){
rand = Math.floor(Math.random() * this.length);
tmp = this[i];
this[i] = this[rand];
this[rand] =tmp;
}
};
// + + + + + + + + + + + + + + + + + + + + + + + + + + + +
// js trim func for ie
// + + + + + + + + + + + + + + + + + + + + + + + + + + + +
if(typeof String.prototype.trim !== 'function') {
String.prototype.trim = function() {
return this.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
};
}
/**
* simplify setting and getting state out of a node
* $("#my_id").data("my_data_attr") equals $$("#my_id").my_data_attr and
* $("#my_id").data("my_data_attr", "my_data_val") equals $$("#my_id").my_data_attr = my_data_val
* you can also do
* $$("#my_id").my_data_val = $$("#my_id").my_data_val + 1.
*/
var $$ = function(param) {
var node = $(param)[0];
var id = $.data(node);
$.cache[id] = $.cache[id] || {};
$.cache[id].node = node;
return $.cache[id];
};
var alertFB = false;
if (typeof console === "undefined" || typeof console.log === "undefined") {
console = {};
if (alertFB) {
console.log = function(msg) {
alert(msg);
};
} else {
console.log = function() {};
}
}
/**
* custom event handler show/hide events for using .on()
*/
(function ($) {
$.each(['show', 'hide'], function (i, e) {
var el = $.fn[e];
$.fn[e] = function () {
this.trigger(e);
return el.apply(this, arguments);
};
});
})(jQuery);

View file

@ -16,12 +16,44 @@
*/
var registerClickForTabsInMetaBox = function($metaBox) {
$metaBox.on('click', '.meta-tabs a', function (e) {
e.preventDefault();
var $tab = $(this),
isopen = $tab.attr('aria-expanded') === 'true';
$metaBox.on('click', '.meta-tabs a', function (e) {
e.preventDefault();
var $tab = $(this),
isopen = $tab.attr('aria-expanded') === 'true';
// disable all existing tabs
// disable all existing tabs
disableExistingTabs($metaBox);
if (isopen) return; // tab was open, we closed it. we're done
// enable current tab
$tab
.attr('aria-expanded', 'true')
.closest('li')
.addClass('active');
$metaBox.find($tab.attr('href'))
.addClass('active')
.attr('aria-hidden', 'false');
}).find('.meta-content').on('click', 'a[href*="#"]', function (e) {
disableExistingTabs($metaBox);
/* uses custome event handler hide see spc.js */
}).find('#tagging__edit').on('hide', function(e){
disableExistingTabs($metaBox);
});
/**
* in admin templates show toc tab, if available
*/
if($('body').hasClass('do-admin')) {
var $tocLink = $metaBox.find('a[href="#spr__tab-toc"]');
if($tocLink.length === 1) {
$tocLink.trigger('click');
}
}
},
disableExistingTabs = function($metaBox) {
$metaBox.find('.meta-tabs li')
.removeClass('active')
.find('a')
@ -29,30 +61,7 @@
$metaBox.find('.meta-content .tab-pane')
.removeClass('active')
.attr('aria-hidden', 'false');
if (isopen) return; // tab was open, we closed it. we're done
// enable current tab
$tab
.attr('aria-expanded', 'true')
.closest('li')
.addClass('active');
$metaBox.find($tab.attr('href'))
.addClass('active')
.attr('aria-hidden', 'false');
});
/**
* in admin templates show toc tab, if available
*/
if($('body').hasClass('do-admin')) {
var $tocLink = $metaBox.find('a[href="#spr__tab-toc"]');
if($tocLink.length === 1) {
$tocLink.trigger('click');
}
}
};
};
$(function(){