From 18089451dd17346ce24d3a0329e8016bad3b81ce Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Thu, 22 Aug 2019 20:34:22 +0200 Subject: [PATCH] disable controls when user doesn't have privileges --- CHANGELOG | 1 + .../main/js/gui/admin/EditProjectDialog.js | 43 +++++++++++++------ 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 0cd131c3d9..fb8648f629 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -10,6 +10,7 @@ minerva (14.0.0~beta.0) unstable; urgency=low check logs (#894) * Bug fix: user without admin or curator privileges had issues with accesing and removing data overlays (#897, #898, #899, #903) + * Bug fix: user without privileges had edit map input options enabled * Bug fix: alignment of tabs fixed for dialogs: "Add Project", "Edit Genome", "Edit Project", "Edit User" (#881) diff --git a/frontend-js/src/main/js/gui/admin/EditProjectDialog.js b/frontend-js/src/main/js/gui/admin/EditProjectDialog.js index c5adc8b815..ca8ca84454 100644 --- a/frontend-js/src/main/js/gui/admin/EditProjectDialog.js +++ b/frontend-js/src/main/js/gui/admin/EditProjectDialog.js @@ -819,19 +819,22 @@ EditProjectDialog.prototype.setOverlays = function (overlays) { /** * * @param {MapModel[]} maps + * @return {Promise<T>} */ EditProjectDialog.prototype.setMaps = function (maps) { var self = this; - self._mapsById = []; - var dataTable = $($("[name='mapsTable']", self.getElement())[0]).DataTable(); - var data = []; - for (var i = 0; i < maps.length; i++) { - var map = maps[i]; - self._mapsById[map.getId()] = map; - var rowData = self.mapToTableRow(map); - data.push(rowData); - } - dataTable.clear().rows.add(data).draw(); + return self.getServerConnector().getLoggedUser().then(function (user) { + self._mapsById = []; + var dataTable = $($("[name='mapsTable']", self.getElement())[0]).DataTable(); + var data = []; + for (var i = 0; i < maps.length; i++) { + var map = maps[i]; + self._mapsById[map.getId()] = map; + var rowData = self.mapToTableRow(map, user); + data.push(rowData); + } + dataTable.clear().rows.add(data).draw(); + }); }; /** @@ -985,9 +988,21 @@ function getValueOrEmpty(value) { /** * * @param {MapModel} map + * @param {User} user * @returns {Array} */ -EditProjectDialog.prototype.mapToTableRow = function (map) { +EditProjectDialog.prototype.mapToTableRow = function (map, user) { + var self = this; + + var canWrite = user.hasPrivilege(self.getConfiguration().getPrivilegeType(PrivilegeType.IS_ADMIN)) || + user.hasPrivilege(self.getConfiguration().getPrivilegeType(PrivilegeType.WRITE_PROJECT), self.getProject().getProjectId()); + + var disabled = " disabled "; + + if (canWrite) { + disabled = ''; + } + var row = []; var id = map.getId(); var centerX = getValueOrEmpty(map.getDefaultCenterX()); @@ -995,15 +1010,15 @@ EditProjectDialog.prototype.mapToTableRow = function (map) { var zoomLevel = getValueOrEmpty(map.getDefaultZoomLevel()); row[0] = id; row[1] = map.getName(); - row[2] = "<input name='defaultCenterX' data='" + id + "' value='" + centerX + "'/>"; - row[3] = "<input name='defaultCenterY' data='" + id + "' value='" + centerY + "'/>"; + row[2] = "<input name='defaultCenterX' data='" + id + "' value='" + centerX + "'" + disabled + "/>"; + row[3] = "<input name='defaultCenterY' data='" + id + "' value='" + centerY + "'" + disabled + "/>"; var selected = ""; if ('' === zoomLevel) { selected = " selected "; } - var zoomLevelSelect = "<select name='defaultZoomLevel' data='" + id + "' >" + + var zoomLevelSelect = "<select name='defaultZoomLevel' data='" + id + "' " + disabled + ">" + "<option value=''" + selected + ">---</option>"; for (var i = map.getMinZoom(); i <= map.getMaxZoom(); i++) { selected = ""; -- GitLab