mirror of
https://github.com/google/nomulus.git
synced 2025-05-13 07:57:13 +02:00
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:
parent
f980a25b32
commit
a3a60075a0
19 changed files with 118 additions and 74 deletions
|
@ -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);
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ goog.forwardDeclare('registry.registrar.Console');
|
|||
registry.registrar.AdminSettings = function(console, resource) {
|
||||
registry.registrar.AdminSettings.base(
|
||||
this, 'constructor', console, resource,
|
||||
registry.soy.registrar.admin.settings, null);
|
||||
registry.soy.registrar.admin.settings, console.params.isAdmin, null);
|
||||
};
|
||||
goog.inherits(registry.registrar.AdminSettings, registry.ResourceComponent);
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ goog.forwardDeclare('registry.registrar.Console');
|
|||
registry.registrar.ContactSettings = function(console, resource) {
|
||||
registry.registrar.ContactSettings.base(
|
||||
this, 'constructor', console, resource,
|
||||
registry.soy.registrar.contacts.contact, null);
|
||||
registry.soy.registrar.contacts.contact, console.params.isOwner, null);
|
||||
};
|
||||
goog.inherits(registry.registrar.ContactSettings, registry.ResourceComponent);
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ goog.forwardDeclare('registry.registrar.Console');
|
|||
registry.registrar.ContactUs = function(console, resource) {
|
||||
registry.registrar.ContactUs.base(
|
||||
this, 'constructor', console, resource,
|
||||
registry.soy.registrar.console.contactUs, null);
|
||||
registry.soy.registrar.console.contactUs, console.params.isOwner, null);
|
||||
};
|
||||
goog.inherits(registry.registrar.ContactUs, registry.ResourceComponent);
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@ goog.inherits(registry.registrar.Dashboard, registry.Component);
|
|||
/** @override */
|
||||
registry.registrar.Dashboard.prototype.bindToDom = function(id) {
|
||||
registry.registrar.Dashboard.base(this, 'bindToDom', '');
|
||||
goog.dom.removeChildren(goog.dom.getRequiredElement('reg-appbar'));
|
||||
goog.dom.removeChildren(goog.dom.getRequiredElement('reg-app-buttons'));
|
||||
goog.soy.renderElement(goog.dom.getElement('reg-content'),
|
||||
registry.soy.registrar.console.dashboard,
|
||||
this.console.params);
|
||||
|
|
|
@ -29,6 +29,7 @@ goog.require('registry.registrar.Console');
|
|||
* @param {string} xsrfToken populated by server-side soy template.
|
||||
* @param {string} clientId The registrar clientId.
|
||||
* @param {boolean} isAdmin
|
||||
* @param {boolean} isOwner
|
||||
* @param {string} productName the product name displayed by the UI.
|
||||
* @param {string} integrationEmail
|
||||
* @param {string} supportEmail
|
||||
|
@ -37,14 +38,15 @@ goog.require('registry.registrar.Console');
|
|||
* @param {string} technicalDocsUrl
|
||||
* @export
|
||||
*/
|
||||
registry.registrar.main = function(xsrfToken, clientId, isAdmin, productName,
|
||||
integrationEmail, supportEmail,
|
||||
registry.registrar.main = function(xsrfToken, clientId, isAdmin, isOwner,
|
||||
productName, integrationEmail, supportEmail,
|
||||
announcementsEmail, supportPhoneNumber,
|
||||
technicalDocsUrl) {
|
||||
new registry.registrar.Console({
|
||||
xsrfToken: xsrfToken,
|
||||
clientId: clientId,
|
||||
isAdmin: isAdmin,
|
||||
isOwner: isOwner,
|
||||
productName: productName,
|
||||
integrationEmail: integrationEmail,
|
||||
supportEmail: supportEmail,
|
||||
|
|
|
@ -34,7 +34,7 @@ goog.forwardDeclare('registry.registrar.Console');
|
|||
registry.registrar.Resources = function(console, resource) {
|
||||
registry.registrar.Resources.base(
|
||||
this, 'constructor', console, resource,
|
||||
registry.soy.registrar.console.resources, null);
|
||||
registry.soy.registrar.console.resources, console.params.isOwner, null);
|
||||
};
|
||||
goog.inherits(registry.registrar.Resources,
|
||||
registry.ResourceComponent);
|
||||
|
|
|
@ -39,7 +39,7 @@ goog.forwardDeclare('registry.registrar.Console');
|
|||
registry.registrar.SecuritySettings = function(console, resource) {
|
||||
registry.registrar.SecuritySettings.base(
|
||||
this, 'constructor', console, resource,
|
||||
registry.soy.registrar.security.settings, null);
|
||||
registry.soy.registrar.security.settings, console.params.isOwner, null);
|
||||
};
|
||||
goog.inherits(registry.registrar.SecuritySettings, registry.ResourceComponent);
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ goog.forwardDeclare('registry.registrar.Console');
|
|||
registry.registrar.WhoisSettings = function(console, resource) {
|
||||
registry.registrar.WhoisSettings.base(
|
||||
this, 'constructor', console, resource,
|
||||
registry.soy.registrar.whois.settings, null);
|
||||
registry.soy.registrar.whois.settings, console.params.isOwner, null);
|
||||
};
|
||||
goog.inherits(registry.registrar.WhoisSettings, registry.ResourceComponent);
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ goog.forwardDeclare('registry.registrar.Console');
|
|||
registry.registrar.XmlResourceComponent = function(
|
||||
itemTmpl, eppTmpls, console) {
|
||||
registry.registrar.XmlResourceComponent.base(
|
||||
this, 'constructor', console, itemTmpl);
|
||||
this, 'constructor', console, itemTmpl, console.params.isOwner);
|
||||
|
||||
/** @type {!Object} */
|
||||
this.eppTmpls = eppTmpls;
|
||||
|
|
|
@ -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');
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue