mirror of
https://github.com/google/nomulus.git
synced 2025-05-13 07:57:13 +02:00
Note that the Bazel closure rules run the linter at head, while fixjs/cider/critique/etc run the released version, so they will complain about the formatting introduced by this CL until a new release is out. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=237358273
152 lines
5.2 KiB
JavaScript
152 lines
5.2 KiB
JavaScript
// Copyright 2017 The Nomulus Authors. All Rights Reserved.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
goog.provide('registry.registrar.AdminSettings');
|
|
|
|
goog.forwardDeclare('registry.registrar.Console');
|
|
goog.require('goog.array');
|
|
goog.require('goog.dom');
|
|
goog.require('goog.dom.classlist');
|
|
goog.require('goog.events');
|
|
goog.require('goog.events.EventType');
|
|
goog.require('goog.json');
|
|
goog.require('goog.net.XhrIo');
|
|
goog.require('goog.soy');
|
|
goog.require('registry.Resource');
|
|
goog.require('registry.ResourceComponent');
|
|
goog.require('registry.soy.registrar.admin');
|
|
|
|
|
|
|
|
/**
|
|
* Admin Settings page, such as allowed TLDs for this registrar.
|
|
* @param {!registry.registrar.Console} console
|
|
* @param {!registry.Resource} resource the RESTful resource for the registrar.
|
|
* @constructor
|
|
* @extends {registry.ResourceComponent}
|
|
* @final
|
|
*/
|
|
registry.registrar.AdminSettings = function(console, resource) {
|
|
registry.registrar.AdminSettings.base(
|
|
this, 'constructor', console, resource,
|
|
registry.soy.registrar.admin.settings, console.params.isAdmin, null);
|
|
};
|
|
goog.inherits(registry.registrar.AdminSettings, registry.ResourceComponent);
|
|
|
|
|
|
/** @override */
|
|
registry.registrar.AdminSettings.prototype.bindToDom = function(id) {
|
|
registry.registrar.AdminSettings.base(this, 'bindToDom', 'fake');
|
|
goog.dom.removeNode(goog.dom.getRequiredElement('reg-app-btn-back'));
|
|
};
|
|
|
|
/** @override */
|
|
registry.registrar.AdminSettings.prototype.runAfterRender = function(objArgs) {
|
|
const oteButton = goog.dom.getElement('btn-ote-status');
|
|
if (oteButton) {
|
|
goog.events.listen(
|
|
oteButton,
|
|
goog.events.EventType.CLICK,
|
|
goog.bind(
|
|
this.oteStatusCheck_, this, objArgs.xsrfToken, objArgs.clientId),
|
|
false, this);
|
|
}
|
|
};
|
|
|
|
/** @override */
|
|
registry.registrar.AdminSettings.prototype.setupEditor = function(objArgs) {
|
|
goog.dom.classlist.add(
|
|
goog.dom.getRequiredElement('tlds'), goog.getCssName('editing'));
|
|
var tlds = goog.dom.getElementsByClass(
|
|
goog.getCssName('tld'), goog.dom.getRequiredElement('tlds'));
|
|
goog.array.forEach(tlds, function(tld) {
|
|
var remBtn = goog.dom.getChildren(tld)[0];
|
|
goog.events.listen(
|
|
remBtn, goog.events.EventType.CLICK,
|
|
goog.bind(this.onTldRemove_, this, remBtn));
|
|
}, this);
|
|
this.typeCounts['reg-tlds'] =
|
|
objArgs.allowedTlds ? objArgs.allowedTlds.length : 0;
|
|
|
|
goog.events.listen(
|
|
goog.dom.getRequiredElement('btn-add-tld'), goog.events.EventType.CLICK,
|
|
this.onTldAdd_, false, this);
|
|
};
|
|
|
|
/**
|
|
* JSON response prefix which prevents evaluation.
|
|
* @private {string}
|
|
* @const
|
|
*/
|
|
registry.registrar.AdminSettings.PARSER_BREAKER_ = ')]}\'\n';
|
|
|
|
/**
|
|
* Click handler for OT&E status checking button.
|
|
* @param {string} xsrfToken
|
|
* @param {string} clientId
|
|
* @private
|
|
*/
|
|
registry.registrar.AdminSettings.prototype.oteStatusCheck_ = function(
|
|
xsrfToken, clientId) {
|
|
goog.net.XhrIo.send('/registrar-ote-status', function(e) {
|
|
var response =
|
|
/** @type {!registry.json.ote.OteStatusResponse} */
|
|
(e.target.getResponseJson(
|
|
registry.registrar.AdminSettings.PARSER_BREAKER_));
|
|
var oteResultParent = goog.dom.getRequiredElement('ote-status-area-parent');
|
|
if (response.status === 'SUCCESS') {
|
|
var results = response.results[0];
|
|
goog.soy.renderElement(
|
|
oteResultParent, registry.soy.registrar.admin.oteResultsTable,
|
|
{completed: results.completed, detailsList: results.details});
|
|
} else {
|
|
goog.soy.renderElement(
|
|
oteResultParent, registry.soy.registrar.admin.oteErrorArea,
|
|
{message: response.message});
|
|
}
|
|
}, 'POST', goog.json.serialize({'clientId': clientId}), {
|
|
'X-CSRF-Token': xsrfToken,
|
|
'Content-Type': 'application/json; charset=UTF-8'
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Click handler for TLD add button.
|
|
* @private
|
|
*/
|
|
registry.registrar.AdminSettings.prototype.onTldAdd_ = function() {
|
|
const tldInputElt = goog.dom.getRequiredElement('newTld');
|
|
const tldElt = goog.soy.renderAsFragment(registry.soy.registrar.admin.tld, {
|
|
name: 'allowedTlds[' + this.typeCounts['reg-tlds'] + ']',
|
|
tld: tldInputElt.value,
|
|
});
|
|
goog.dom.appendChild(goog.dom.getRequiredElement('tlds'), tldElt);
|
|
var remBtn = goog.dom.getFirstElementChild(tldElt);
|
|
goog.dom.classlist.remove(remBtn, goog.getCssName('hidden'));
|
|
goog.events.listen(
|
|
remBtn, goog.events.EventType.CLICK,
|
|
goog.bind(this.onTldRemove_, this, remBtn));
|
|
this.typeCounts['reg-tlds']++;
|
|
tldInputElt.value = '';
|
|
};
|
|
|
|
|
|
/**
|
|
* Click handler for TLD remove button.
|
|
* @param {!Element} remBtn The remove button.
|
|
* @private
|
|
*/
|
|
registry.registrar.AdminSettings.prototype.onTldRemove_ = function(remBtn) {
|
|
goog.dom.removeNode(goog.dom.getParentElement(remBtn));
|
|
};
|