Groom the CMSMain.Tree.js formatting

This commit is contained in:
Serge Latyntcev 2018-11-01 14:15:57 +13:00
parent 6e104df9ac
commit 14bcb5c7f7

View File

@ -1,10 +1,10 @@
import $ from 'jquery';
import i18n from 'i18n';
$.entwine('ss.tree', function($){
$.entwine('ss.tree', function($) {
$('.cms-tree').entwine({
fromDocument: {
'oncontext_show.vakata': function(e){
'oncontext_show.vakata': function(e) {
this.adjustContextClass();
}
},
@ -12,24 +12,24 @@ $.entwine('ss.tree', function($){
* Add and remove classes from context menus to allow for
* adjusting the display
*/
adjustContextClass: function(){
adjustContextClass: function() {
var menus = $('#vakata-contextmenu').find("ul ul");
menus.each(function(i){
menus.each(function(i) {
var col = "1",
count = $(menus[i]).find('li').length;
//Assign columns to menus over 10 items long
if(count > 20){
if (count > 20) {
col = "3";
}else if(count > 10){
} else if (count > 10) {
col = "2";
}
$(menus[i]).addClass('col-' + col).removeClass('right');
//Remove "right" class that jstree adds on mouseenter
$(menus[i]).find('li').on("mouseenter", function (e) {
$(menus[i]).find('li').on("mouseenter", function(e) {
$(this).parent('ul').removeClass("right");
});
});
@ -48,7 +48,9 @@ $.entwine('ss.tree', function($){
},
getTreeConfig: function() {
var self = this, config = this._super(), hints = this.getHints();
var self = this,
config = this._super(),
hints = this.getHints();
config.plugins.push('contextmenu');
config.contextmenu = {
'items': function(node) {
@ -56,8 +58,8 @@ $.entwine('ss.tree', function($){
var menuitems = {
edit: {
'label': (node.hasClass('edit-disabled')) ?
i18n._t('CMS.EditPage', 'Edit page', 100, 'Used in the context menu when right-clicking on a page node in the CMS tree')
: i18n._t('CMS.ViewPage', 'View page', 100, 'Used in the context menu when right-clicking on a page node in the CMS tree'),
i18n._t('CMS.EditPage', 'Edit page', 100, 'Used in the context menu when right-clicking on a page node in the CMS tree') :
i18n._t('CMS.ViewPage', 'View page', 100, 'Used in the context menu when right-clicking on a page node in the CMS tree'),
'action': function(obj) {
$('.cms-container').entwine('.ss').loadPanel(i18n.sprintf(
self.data('urlEditpage'), obj.data('id')
@ -67,7 +69,7 @@ $.entwine('ss.tree', function($){
};
// Add "show as list"
if(!node.hasClass('nochildren')) {
if (!node.hasClass('nochildren')) {
menuitems['showaslist'] = {
'label': i18n._t('CMS.ShowAsList'),
'action': function(obj) {
@ -84,9 +86,9 @@ $.entwine('ss.tree', function($){
hasAllowedChildren = false;
// Convert to menu entries
$.each(allowedChildren, function(klass, title){
$.each(allowedChildren, function(klass, title) {
hasAllowedChildren = true;
menuAllowedChildren["allowedchildren-" + klass ] = {
menuAllowedChildren["allowedchildren-" + klass] = {
'label': '<span class="jstree-pageicon"></span>' + title,
'_class': 'class-' + klass.replace(/[^a-zA-Z0-9\-_:.]+/g, '_'),
'action': function(obj) {
@ -100,7 +102,7 @@ $.entwine('ss.tree', function($){
};
});
if(hasAllowedChildren) {
if (hasAllowedChildren) {
menuitems['addsubpage'] = {
'label': i18n._t('CMS.AddSubPage', 'Add page under this page', 100, 'Used in the context menu when right-clicking on a page node in the CMS tree'),
'submenu': menuAllowedChildren
@ -110,10 +112,9 @@ $.entwine('ss.tree', function($){
if (!node.hasClass('edit-disabled')) {
menuitems['duplicate'] = {
'label': i18n._t('CMS.Duplicate'),
'submenu': [
{
'submenu': [{
'label': i18n._t('CMS.ThisPageOnly'),
'action': function (obj) {
'action': function(obj) {
$('.cms-container').entwine('.ss').loadPanel(
$.path.addSearchParams(
i18n.sprintf(self.data('urlDuplicate'), obj.data('id')),
@ -123,7 +124,7 @@ $.entwine('ss.tree', function($){
}
}, {
'label': i18n._t('CMS.ThisPageAndSubpages'),
'action': function (obj) {
'action': function(obj) {
$('.cms-container').entwine('.ss').loadPanel(
$.path.addSearchParams(
i18n.sprintf(self.data('urlDuplicatewithchildren'), obj.data('id')),
@ -131,8 +132,7 @@ $.entwine('ss.tree', function($){
)
);
}
}
]
}]
};
}
@ -146,17 +146,17 @@ $.entwine('ss.tree', function($){
// Scroll tree down to context of the current page, if it isn't
// already visible
$('.cms-tree a.jstree-clicked').entwine({
onmatch: function(){
onmatch: function() {
var self = this,
panel = self.parents('.cms-panel-content'),
scrollTo;
if(self.offset().top < 0 ||
if (self.offset().top < 0 ||
self.offset().top > panel.height() - self.height()) {
// Current scroll top + our current offset top is our
// position in the panel
scrollTo = panel.scrollTop() + self.offset().top
+ (panel.height() / 2);
scrollTo = panel.scrollTop() + self.offset().top +
(panel.height() / 2);
panel.animate({
scrollTop: scrollTo
@ -167,7 +167,7 @@ $.entwine('ss.tree', function($){
// Clear filters button
$('.cms-tree-filtered .clear-filter').entwine({
onclick: function () {
onclick: function() {
window.location = location.protocol + '//' + location.host + location.pathname;
}
});