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

@ -33,6 +33,7 @@ goog.forwardDeclare('registry.Resource');
* @param {!registry.Console} console console singleton.
* @param {!registry.Resource} resource the RESTful resource.
* @param {!Function} itemTmpl
* @param {boolean} isEditable if true, the "edit" button will be enabled
* @param {Function} renderSetCb may be null if this resource is only
* ever an item.
* @constructor
@ -42,8 +43,10 @@ registry.ResourceComponent = function(
console,
resource,
itemTmpl,
isEditable,
renderSetCb) {
registry.ResourceComponent.base(this, 'constructor', console, itemTmpl);
registry.ResourceComponent.base(
this, 'constructor', console, itemTmpl, isEditable);
/** @type {!registry.Resource} */
this.resource = resource;
@ -108,7 +111,7 @@ registry.ResourceComponent.prototype.handleFetchItem = function(id, rsp) {
} else if ('set' in rsp && this.renderSetCb != null) {
// XXX: This conditional logic should be hoisted to edit_item when
// collection support is improved.
goog.dom.removeChildren(goog.dom.getRequiredElement('reg-appbar'));
goog.dom.removeChildren(goog.dom.getRequiredElement('reg-app-buttons'));
this.renderSetCb(goog.dom.getRequiredElement('reg-content'), rsp);
} else {
registry.util.log('unknown message type in handleFetchItem');