Hide the edit/add buttons for fields the user can't update

Currently the /registrar-settings backend endpoint will fail to update any
OWNER fields that a non-OWNER tries to change.

However, the front-end (soy, js) still allow non-OWNERs to try and change
these fields (there's the "edit" or "add" button, and it only fails when you try to "save")

This CL changes the front-end to remove the ability for non-OWNERs to even try
and change these fields. However, it will still let them *view* these fields as
it has interesting and important information.

-------------------------------

In addition - it changes the webdriver tests to include the "edit buttons". Those were never tested before, and now we will test to see if they are indeed displayed or not.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=223845883
This commit is contained in:
guyben 2018-12-03 12:51:37 -08:00 committed by jianglai
parent f980a25b32
commit a3a60075a0
19 changed files with 118 additions and 74 deletions

View file

@ -31,10 +31,11 @@ goog.forwardDeclare('registry.Console');
* An editable item, with Edit and Save/Cancel buttons in the appbar.
* @param {!registry.Console} cons
* @param {function()} itemTmpl
* @param {boolean} isEditable
* @constructor
* @extends {registry.Component}
*/
registry.EditItem = function(cons, itemTmpl) {
registry.EditItem = function(cons, itemTmpl, isEditable) {
registry.EditItem.base(this, 'constructor', cons);
/**
@ -48,6 +49,12 @@ registry.EditItem = function(cons, itemTmpl) {
*/
this.id = null;
/**
* Should the "edit" button be enabled?
* @type {boolean}
*/
this.isEditable = isEditable;
/**
* Transitional id for next resource during create.
* @type {?string}
@ -68,7 +75,7 @@ registry.EditItem.prototype.bindToDom = function(id) {
/** Setup appbar save/edit buttons. */
registry.EditItem.prototype.setupAppbar = function() {
goog.soy.renderElement(goog.dom.getRequiredElement('reg-appbar'),
goog.soy.renderElement(goog.dom.getRequiredElement('reg-app-buttons'),
registry.soy.console.appbarButtons);
goog.events.listen(goog.dom.getRequiredElement('reg-app-btn-add'),
goog.events.EventType.CLICK,
@ -85,11 +92,11 @@ registry.EditItem.prototype.setupAppbar = function() {
goog.events.listen(goog.dom.getRequiredElement('reg-app-btn-back'),
goog.events.EventType.CLICK,
goog.bind(this.back, this));
if (this.id) {
registry.util.setVisible('reg-app-btns-edit', true);
} else {
registry.util.setVisible('reg-app-btn-add', true);
}
// Show the add/edit buttons only if isEditable.
// "edit" is shown if we have an item's ID
// "add" is shown if we don't have an item's ID
registry.util.setVisible('reg-app-btns-edit', this.isEditable && !!this.id);
registry.util.setVisible('reg-app-btn-add', this.isEditable && !this.id);
};