/openid-connect-server-webapp/src/main/webapp/resources/js/blacklist.js
JavaScript | 223 lines | 155 code | 52 blank | 16 comment | 7 complexity | 76c474d1202eb7054a04a14e181bec12 MD5 | raw file
- /*******************************************************************************
- * Copyright 2018 The MIT Internet Trust Consortium
- *
- * 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.
- *******************************************************************************/
- var BlackListModel = Backbone.Model.extend({
- idAttribute: 'id',
- urlRoot: 'api/blacklist'
- });
- var BlackListCollection = Backbone.Collection.extend({
- initialize: function() {
- },
- url: "api/blacklist"
- });
- var BlackListListView = Backbone.View.extend({
- tagName: 'span',
- initialize: function(options) {
- this.options = options;
- },
- load: function(callback) {
- if (this.collection.isFetched) {
- callback();
- return;
- }
- $('#loadingbox').sheet('show');
- $('#loading').html('<span class="label" id="loading-blacklist">' + $.t('admin.blacklist') + '</span> ');
- $.when(this.collection.fetchIfNeeded({
- success: function(e) {
- $('#loading-blacklist').addClass('label-success');
- },
- error: app.errorHandlerView.handleError()
- })).done(function() {
- $('#loadingbox').sheet('hide');
- callback();
- });
- },
- events: {
- "click .refresh-table": "refreshTable",
- "click .btn-add": "addItem",
- "submit #add-blacklist form": "addItem"
- },
- refreshTable: function(e) {
- e.preventDefault();
- var _self = this;
- $('#loadingbox').sheet('show');
- $('#loading').html('<span class="label" id="loading-blacklist">' + $.t('admin.blacklist') + '</span> ');
- $.when(this.collection.fetch()).done(function() {
- $('#loadingbox').sheet('hide');
- _self.render();
- });
- },
- togglePlaceholder: function() {
- if (this.collection.length > 0) {
- $('#blacklist-table', this.el).show();
- $('#blacklist-table-empty', this.el).hide();
- } else {
- $('#blacklist-table', this.el).hide();
- $('#blacklist-table-empty', this.el).show();
- }
- },
- render: function(eventName) {
- $(this.el).html($('#tmpl-blacklist-table').html());
- var _self = this;
- _.each(this.collection.models, function(blacklist) {
- var view = new BlackListWidgetView({
- model: blacklist
- });
- view.parentView = _self;
- $("#blacklist-table", _self.el).append(view.render().el);
- }, this);
- this.togglePlaceholder();
- $(this.el).i18n();
- return this;
- },
- addItem: function(e) {
- e.preventDefault();
- var input_value = $("#blacklist-uri", this.el).val().trim();
- if (input_value === "") {
- return;
- }
- // TODO: URI/pattern validation, check against existing clients
- var item = new BlackListModel({
- uri: input_value
- });
- var _self = this; // closures...
- item.save({}, {
- success: function() {
- _self.collection.add(item);
- _self.render();
- },
- error: app.errorHandlerView.handleError()
- });
- }
- });
- var BlackListWidgetView = Backbone.View.extend({
- tagName: 'tr',
- initialize: function(options) {
- this.options = options;
- if (!this.template) {
- this.template = _.template($('#tmpl-blacklist-item').html());
- }
- },
- render: function() {
- this.$el.html(this.template(this.model.toJSON()));
- return this;
- },
- events: {
- 'click .btn-delete': 'deleteBlacklist'
- },
- deleteBlacklist: function(e) {
- e.preventDefault();
- if (confirm($.t("blacklist.confirm"))) {
- var _self = this;
- this.model.destroy({
- dataType: false,
- processData: false,
- success: function() {
- _self.$el.fadeTo("fast", 0.00, function() { // fade
- $(this).slideUp("fast", function() { // slide up
- $(this).remove(); // then remove from the DOM
- _self.parentView.togglePlaceholder();
- });
- });
- },
- error: app.errorHandlerView.handleError()
- });
- _self.parentView.delegateEvents();
- }
- return false;
- }
- });
- ui.routes.push({
- path: "admin/blacklist",
- name: "blackList",
- callback: function() {
- if (!isAdmin()) {
- this.root();
- return;
- }
- this.breadCrumbView.collection.reset();
- this.breadCrumbView.collection.add([{
- text: $.t('admin.home'),
- href: ""
- }, {
- text: $.t('admin.manage-blacklist'),
- href: "manage/#admin/blacklist"
- }]);
- this.updateSidebar('admin/blacklist');
- var view = new BlackListListView({
- collection: this.blackListList
- });
- view.load(function(collection, response, options) {
- $('#content').html(view.render().el);
- setPageTitle($.t('admin.manage-blacklist'));
- });
- }
- });
- ui.templates.push('resources/template/blacklist.html');
- ui.init.push(function(app) {
- app.blackListList = new BlackListCollection();
- });