luci-base: luci.js: disable page action buttons on readonly views

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
Jo-Philipp Wich 2020-04-15 22:15:28 +02:00
parent b739fc17ea
commit adeb0f3aa6

View file

@ -2148,7 +2148,23 @@
* methods are overwritten with `null`. * methods are overwritten with `null`.
*/ */
addFooter: function() { addFooter: function() {
var footer = E([]); var footer = E([]),
vp = document.getElementById('view'),
hasmap = false,
readonly = true;
vp.querySelectorAll('.cbi-map').forEach(function(map) {
var m = DOM.findClassInstance(map);
if (m) {
hasmap = true;
if (!m.readonly)
readonly = false;
}
});
if (!hasmap)
readonly = !L.hasViewPermission();
var saveApplyBtn = this.handleSaveApply ? new L.ui.ComboButton('0', { var saveApplyBtn = this.handleSaveApply ? new L.ui.ComboButton('0', {
0: [ _('Save & Apply') ], 0: [ _('Save & Apply') ],
@ -2158,7 +2174,8 @@
0: 'btn cbi-button cbi-button-apply important', 0: 'btn cbi-button cbi-button-apply important',
1: 'btn cbi-button cbi-button-negative important' 1: 'btn cbi-button cbi-button-negative important'
}, },
click: L.ui.createHandlerFn(this, 'handleSaveApply') click: L.ui.createHandlerFn(this, 'handleSaveApply'),
disabled: readonly || null
}).render() : E([]); }).render() : E([]);
if (this.handleSaveApply || this.handleSave || this.handleReset) { if (this.handleSaveApply || this.handleSave || this.handleReset) {
@ -2166,11 +2183,13 @@
saveApplyBtn, ' ', saveApplyBtn, ' ',
this.handleSave ? E('button', { this.handleSave ? E('button', {
'class': 'cbi-button cbi-button-save', 'class': 'cbi-button cbi-button-save',
'click': L.ui.createHandlerFn(this, 'handleSave') 'click': L.ui.createHandlerFn(this, 'handleSave'),
'disabled': readonly || null
}, [ _('Save') ]) : '', ' ', }, [ _('Save') ]) : '', ' ',
this.handleReset ? E('button', { this.handleReset ? E('button', {
'class': 'cbi-button cbi-button-reset', 'class': 'cbi-button cbi-button-reset',
'click': L.ui.createHandlerFn(this, 'handleReset') 'click': L.ui.createHandlerFn(this, 'handleReset'),
'disabled': readonly || null
}, [ _('Reset') ]) : '' }, [ _('Reset') ]) : ''
])); ]));
} }