From 9d3fb390252a9d4cef09bf71c7ebaa7b1a024917 Mon Sep 17 00:00:00 2001 From: Abyss777 Date: Mon, 27 Feb 2017 15:55:01 +0500 Subject: - Add server "device readonly" flag - Do not hide buttons in Devices toolbar --- web/app/model/Server.js | 3 +++ web/app/view/Devices.js | 1 + web/app/view/DevicesController.js | 22 +++++++++++----------- web/app/view/ServerDialog.js | 7 +++++++ 4 files changed, 22 insertions(+), 11 deletions(-) diff --git a/web/app/model/Server.js b/web/app/model/Server.js index aa14e84..f158999 100644 --- a/web/app/model/Server.js +++ b/web/app/model/Server.js @@ -28,6 +28,9 @@ Ext.define('Traccar.model.Server', { }, { name: 'readonly', type: 'boolean' + }, { + name: 'deviceReadonly', + type: 'boolean' }, { name: 'map', type: 'string' diff --git a/web/app/view/Devices.js b/web/app/view/Devices.js index 664c094..88e8be3 100644 --- a/web/app/view/Devices.js +++ b/web/app/view/Devices.js @@ -47,6 +47,7 @@ Ext.define('Traccar.view.Devices', { xtype: 'tbfill' }, { xtype: 'button', + disabled: true, handler: 'onAddClick', reference: 'toolbarAddButton', glyph: 'xf067@FontAwesome', diff --git a/web/app/view/DevicesController.js b/web/app/view/DevicesController.js index 6285391..ad0dd36 100644 --- a/web/app/view/DevicesController.js +++ b/web/app/view/DevicesController.js @@ -53,13 +53,9 @@ Ext.define('Traccar.view.DevicesController', { init: function () { var readonly, deviceReadonly; - deviceReadonly = Traccar.app.getUser().get('deviceReadonly'); + deviceReadonly = Traccar.app.getPreference('deviceReadonly', false) && !Traccar.app.getUser().get('admin'); readonly = Traccar.app.getPreference('readonly', false) && !Traccar.app.getUser().get('admin'); - this.lookupReference('toolbarAddButton').setVisible(!readonly && !deviceReadonly); - this.lookupReference('toolbarEditButton').setVisible(!readonly && !deviceReadonly); - this.lookupReference('toolbarRemoveButton').setVisible(!readonly && !deviceReadonly); - this.lookupReference('deviceCommandButton').setVisible(!readonly && !deviceReadonly); - this.lookupReference('toolbarGeofencesButton').setVisible(!readonly); + this.lookupReference('toolbarAddButton').setDisabled(readonly || deviceReadonly); }, onGeofencesClick: function () { @@ -91,11 +87,15 @@ Ext.define('Traccar.view.DevicesController', { }, updateButtons: function (selected) { - var empty = selected.getCount() === 0; - this.lookupReference('toolbarEditButton').setDisabled(empty); - this.lookupReference('toolbarRemoveButton').setDisabled(empty); - this.lookupReference('toolbarGeofencesButton').setDisabled(empty); - this.lookupReference('deviceCommandButton').setDisabled(empty || (selected.getLastSelected().get('status') !== 'online')); + var readonly, deviceReadonly, empty, online; + deviceReadonly = Traccar.app.getPreference('deviceReadonly', false) && !Traccar.app.getUser().get('admin'); + readonly = Traccar.app.getPreference('readonly', false) && !Traccar.app.getUser().get('admin'); + empty = selected.getCount() === 0; + online = selected.getLastSelected().get('status') === 'online'; + this.lookupReference('toolbarEditButton').setDisabled(empty || readonly || deviceReadonly); + this.lookupReference('toolbarRemoveButton').setDisabled(empty || readonly || deviceReadonly); + this.lookupReference('toolbarGeofencesButton').setDisabled(empty || readonly); + this.lookupReference('deviceCommandButton').setDisabled(empty || readonly || !online); }, onSelectionChange: function (selected) { diff --git a/web/app/view/ServerDialog.js b/web/app/view/ServerDialog.js index 667bf47..770ead7 100644 --- a/web/app/view/ServerDialog.js +++ b/web/app/view/ServerDialog.js @@ -41,6 +41,13 @@ Ext.define('Traccar.view.ServerDialog', { name: 'readonly', fieldLabel: Strings.serverReadonly, allowBlank: false + }, { + xtype: 'checkboxfield', + inputValue: true, + uncheckedValue: false, + name: 'deviceReadonly', + fieldLabel: Strings.userDeviceReadonly, + allowBlank: false }, { xtype: 'combobox', name: 'map', -- cgit v1.2.3