diff --git a/manager/assets/modext/core/modx.layout.js b/manager/assets/modext/core/modx.layout.js
index 3301254642f..1d9538b176c 100644
--- a/manager/assets/modext/core/modx.layout.js
+++ b/manager/assets/modext/core/modx.layout.js
@@ -10,11 +10,10 @@ Ext.apply(Ext, {
isFirebug: (window.console && window.console.firebug)
});
-MODx.Layout = function(config){
- config = config || {};
+MODx.Layout = function(config = {}) {
Ext.BLANK_IMAGE_URL = MODx.config.manager_url+'assets/ext3/resources/images/default/s.gif';
Ext.Ajax.defaultHeaders = {
- 'modAuth': config.auth
+ modAuth: config.auth
};
Ext.Ajax.extraParams = {
'HTTP_MODAUTH': config.auth
@@ -22,7 +21,7 @@ MODx.Layout = function(config){
MODx.siteId = config.auth;
MODx.expandHelp = !!+MODx.config.inline_help;
- var sp = new MODx.HttpProvider();
+ const sp = new MODx.HttpProvider();
Ext.state.Manager.setProvider(sp);
sp.initState(MODx.defaultState);
@@ -52,6 +51,24 @@ MODx.Layout = function(config){
this.fireEvent('afterLayout');
};
Ext.extend(MODx.Layout, Ext.Viewport, {
+ /**
+ * @property {Number} menuBarWidth - The standard width for main left menu (tablet and larger layout)
+ */
+ menuBarWidth: 70
+
+ /**
+ * @property {Number} splitBarMargin - Standard spacing for the split bar
+ */
+ ,splitBarMargin: 8
+
+ /**
+ * @property {Function} getSplitBarMargin - Utility getter for splitBarMargin
+ * @returns {Number}
+ */
+ ,getSplitBarMargin: function() {
+ return this.splitBarMargin;
+ }
+
/**
* Wrapper method to build the layout regions
*
@@ -59,7 +76,7 @@ Ext.extend(MODx.Layout, Ext.Viewport, {
*
* @returns {Array}
*/
- buildLayout: function(config) {
+ ,buildLayout: function(config) {
var items = []
,north = this.getNorth(config)
,west = this.getWest(config)
@@ -108,7 +125,7 @@ Ext.extend(MODx.Layout, Ext.Viewport, {
return false;
}
/**
- * Build the west region (trees)
+ * Build the west region (main menu bar)
*
* @param {Object} config
*
@@ -125,10 +142,9 @@ Ext.extend(MODx.Layout, Ext.Viewport, {
,id: 'modx-header'
,applyTo: 'modx-header'
,autoScroll: true
- ,width: 70
+ ,width: this.menuBarWidth
,listeners: {
- afterrender: this.initPopper
- ,scope: this
+ afterrender: { fn: this.initPopper, scope: this }
}
};
}
@@ -140,33 +156,49 @@ Ext.extend(MODx.Layout, Ext.Viewport, {
* @returns {Object|void}
*/
,getCenter: function(config) {
- var center = {
+ const center = {
region: 'center',
applyTo: 'modx-content',
padding: '0 1px 0 0',
+ margins: {
+ top: 0,
+ right: 0,
+ bottom: 0,
+ left: 0
+ },
style: 'width:100%',
bodyStyle: 'background-color:transparent;',
id: 'modx-content',
- autoScroll: true,
+ autoScroll: true
};
+
if (window.innerWidth <= 640) {
return center;
}
- var tree = this.getTree(config);
- center.margins = {
- right: -70,
- left: -8,
- };
+ const tree = this.getTree(config);
+
+ center.margins.right = -this.menuBarWidth;
+
tree.margins = {
- left: 70
+ left: this.menuBarWidth
};
return {
region: 'center',
layout: 'border',
id: 'modx-split-wrapper',
- items: [tree, center]
+ items: [tree, center],
+ listeners: {
+ render: {
+ fn: function(cmp) {
+ if (!cmp.collapsed) {
+ cmp.items.map['modx-content'].margins.left = -this.getSplitBarMargin();
+ }
+ },
+ scope: this
+ }
+ }
};
}
/**
@@ -189,7 +221,9 @@ Ext.extend(MODx.Layout, Ext.Viewport, {
}
,getTree: function(config) {
- var tabs = [];
+ const tabs = [],
+ layout = this
+ ;
if (MODx.perm.resource_tree) {
tabs.push({
title: _('resources')
@@ -243,64 +277,61 @@ Ext.extend(MODx.Layout, Ext.Viewport, {
}
,id: 'modx-leftbar-tabpanel'
,border: false
- ,anchor: '100%'
,activeTab: activeTab
,stateful: true
,stateEvents: ['tabchange']
- ,getState:function() {
+ ,getState: function() {
return {
activeTab: this.items.indexOf(this.getActiveTab())
};
}
,items: tabs
,listeners: {
- afterrender: function () {
- var tabs = this;
+ afterrender: function() {
+ const baseTabs = this,
+ header = Ext.get('modx-leftbar-header')
+ ;
MODx.Ajax.request({
- url: MODx.config.connector_url,
- params: {
- action: 'Resource/GetToolbar',
- },
- listeners: {
- success: {fn: function (res) {
- for (var i in res.object) {
- if (res.object.hasOwnProperty(i)) {
- if (res.object[i].id != undefined && res.object[i].id == 'emptifier') {
- var tab = tabs.add({
- id: 'modx-trash-link',
- title: '',
- handler: res.object[i].handler,
- });
- if (!res.object[i].disabled) {
- tab.tabEl.classList.add('active');
- }
- if (res.object[i].tooltip) {
- tab.tooltip = new Ext.ToolTip({
- target: new Ext.Element(tab.tabEl),
- title: res.object[i].tooltip
- });
- }
- break;
- }
+ url: MODx.config.connector_url,
+ params: {
+ action: 'Resource/GetToolbar'
+ },
+ listeners: {
+ success: {
+ fn: function(response) {
+ const trashTrigger = Object.values(response.object).find(item => item.id === 'emptifier');
+ if (trashTrigger) {
+ const trashTab = baseTabs.add({
+ id: 'modx-trash-link',
+ title: '',
+ handler: trashTrigger.handler
+ });
+ if (!trashTrigger.disabled) {
+ trashTab.tabEl.classList.add('active');
+ }
+ if (trashTrigger.tooltip) {
+ trashTab.tooltip = new Ext.ToolTip({
+ target: new Ext.Element(trashTab.tabEl),
+ title: trashTrigger.tooltip
+ });
}
}
- }, scope: this}
+ },
+ scope: this
}
}
- );
+ });
- var header = Ext.get('modx-leftbar-header');
if (header) {
- var html = '';
+ let html = '';
+ const el = document.createElement('a');
if (MODx.config.manager_logo !== '' && MODx.config.manager_logo !== undefined) {
html += '';
}
- var el = document.createElement('a');
el.href = MODx.config.default_site_url || MODx.config.site_url;
el.title = MODx.config.site_name;
el.innerText = Ext.util.Format.ellipsis(MODx.config.site_name, 45, true);
el.target = '_blank';
-
html += el.outerHTML;
header.dom.innerHTML = html;
}
@@ -324,12 +355,17 @@ Ext.extend(MODx.Layout, Ext.Viewport, {
width: this.width
};
}
- ,collapse: function(animate){
- if(this.collapsed || this.el.hasFxBlock() || this.fireEvent('beforecollapse', this, animate) === false){
+ ,collapse: function(animate) {
+ if (this.collapsed || this.el.hasFxBlock() || this.fireEvent('beforecollapse', this, animate) === false) {
return;
}
+ const contentRegion = Ext.getCmp('modx-content');
+ if (contentRegion) {
+ contentRegion.margins.left = 0;
+ Ext.getCmp('modx-layout').doLayout();
+ }
if (animate && window.innerWidth > 960) {
- var tree = Ext.getCmp('modx-leftbar-tabpanel').getEl();
+ const tree = Ext.getCmp('modx-leftbar-tabpanel').getEl();
tree.dom.style.opacity = 0;
this.el.dom.style.left = '-' + this.el.dom.style.width;
} else {
@@ -340,16 +376,20 @@ Ext.extend(MODx.Layout, Ext.Viewport, {
this.fireEvent('collapse', this);
return this;
}
- ,expand : function(animate) {
- if(!this.collapsed || this.el.hasFxBlock() || this.fireEvent('beforeexpand', this, animate) === false){
+ ,expand: function(animate) {
+ if (!this.collapsed || this.el.hasFxBlock() || this.fireEvent('beforeexpand', this, animate) === false) {
return;
}
+ const contentRegion = Ext.getCmp('modx-content');
+ if (contentRegion) {
+ contentRegion.margins.left = -layout.getSplitBarMargin();
+ }
if (animate && window.innerWidth > 960) {
- var tree = Ext.getCmp('modx-leftbar-tabpanel').getEl();
- window.setTimeout(function() {
+ const tree = Ext.getCmp('modx-leftbar-tabpanel').getEl();
+ window.setTimeout(() => {
tree.dom.style.visibility = 'visible';
tree.dom.style.opacity = 1;
- }, 100)
+ }, 100);
} else {
this.el.dom.style.display = '';
}
@@ -358,28 +398,25 @@ Ext.extend(MODx.Layout, Ext.Viewport, {
this.fireEvent('expand', this);
return this;
}
- ,listeners:{
- beforestatesave: {fn: this.onBeforeSaveState, scope: this}
- ,afterrender: function() {
- var trigger = Ext.get('modx-leftbar-trigger');
+ ,listeners: {
+ beforestatesave: {
+ fn: this.onBeforeSaveState,
+ scope: this
+ },
+ afterrender: function() {
+ const trigger = Ext.get('modx-leftbar-trigger');
if (this.collapsed) {
trigger.addClass('collapsed');
}
trigger.on('click', function() {
if (this.collapsed) {
+ trigger.removeClass('collapsed');
this.expand(true);
} else {
+ trigger.addClass('collapsed');
this.collapse(true);
}
}, this);
- },
- collapse: function() {
- var trigger = Ext.get('modx-leftbar-trigger');
- trigger.addClass('collapsed');
- },
- expand: function() {
- var trigger = Ext.get('modx-leftbar-trigger');
- trigger.removeClass('collapsed');
}
}
};