diff --git a/openid-connect-server-webapp/src/main/webapp/WEB-INF/tags/footer.tag b/openid-connect-server-webapp/src/main/webapp/WEB-INF/tags/footer.tag
index a089cc2bb..e1f35831f 100644
--- a/openid-connect-server-webapp/src/main/webapp/WEB-INF/tags/footer.tag
+++ b/openid-connect-server-webapp/src/main/webapp/WEB-INF/tags/footer.tag
@@ -30,6 +30,7 @@
+
diff --git a/openid-connect-server-webapp/src/main/webapp/resources/js/admin.js b/openid-connect-server-webapp/src/main/webapp/resources/js/admin.js
index 6951dde10..73ba1ce57 100644
--- a/openid-connect-server-webapp/src/main/webapp/resources/js/admin.js
+++ b/openid-connect-server-webapp/src/main/webapp/resources/js/admin.js
@@ -92,7 +92,8 @@ var ListWidgetChildView = Backbone.View.extend({
e.stopImmediatePropagation();
//this.$el.tooltip('delete');
- this.model.destroy({
+ this.model.destroy({
+ dataType: false, processData: false,
error:function (error, response) {
console.log("An error occurred when deleting from a list widget");
@@ -164,8 +165,6 @@ var ListWidgetView = Backbone.View.extend({
tagName: "div",
- childView:ListWidgetChildView,
-
events:{
"click .btn-add-list-item":"addItem",
"keypress":function (e) {
@@ -225,7 +224,7 @@ var ListWidgetView = Backbone.View.extend({
this.$el.html(this.template({placeholder:this.options.placeholder,
helpBlockText:this.options.helpBlockText}));
- _self = this;
+ var _self = this;
if (_.size(this.collection.models) == 0 && _.size(this.options.autocomplete) == 0) {
$("tbody", _self.el).html($('#tmpl-list-widget-child-empty').html());
@@ -255,7 +254,7 @@ var ListWidgetView = Backbone.View.extend({
checked = false;
}
- var el = new this.childView({model:model, toggle: true, checked: checked, collection: _self.collection}).render().el;
+ var el = new ListWidgetChildView({model:model, toggle: true, checked: checked, collection: _self.collection}).render().el;
$("tbody", _self.el).append(el);
}, this);
@@ -264,8 +263,7 @@ var ListWidgetView = Backbone.View.extend({
// now render everything not in the autocomplete list
_.each(values.models, function (model) {
-
- var el = new this.childView({model:model, collection: _self.collection}).render().el;
+ var el = new ListWidgetChildView({model:model, collection: _self.collection}).render().el;
$("tbody", _self.el).append(el);
}, this);
}
@@ -276,18 +274,6 @@ var ListWidgetView = Backbone.View.extend({
});
-var BlackListModel = Backbone.Model.extend({
- idAttribute: 'id',
-
- urlRoot: 'api/blacklist'
-});
-
-var BlackListCollection = Backbone.Collection.extend({
- initialize: function() { },
-
- url: "api/blacklist"
-});
-
var BreadCrumbView = Backbone.View.extend({
tagName: 'ul',
@@ -328,125 +314,6 @@ var BreadCrumbView = Backbone.View.extend({
});
-var BlackListListView = Backbone.View.extend({
- tagName: 'span',
-
- initialize:function(options) {
- this.options = options;
- if (!this.template) {
- this.template = _.template($('#tmpl-blacklist-form').html());
- }
- },
-
- load:function(callback) {
- if (this.model.isFetched) {
- callback();
- return;
- }
-
- $('#loadingbox').sheet('show');
- $('#loading').html(
- '' + $.t('admin.blacklist') + ' '
- );
-
- $.when(this.model.fetchIfNeeded()).done(function() {
- $('#loading-blacklist').addClass('label-success');
- $('#loadingbox').sheet('hide');
- callback();
- });
- },
-
- events: {
- "click .refresh-table":"refreshTable"
- },
-
- refreshTable:function(e) {
- e.preventDefault();
- var _self = this;
- $('#loadingbox').sheet('show');
- $('#loading').html(
- '' + $.t('admin.blacklist') + ' '
- );
-
- $.when(this.model.fetch()).done(function() {
- $('#loadingbox').sheet('hide');
- _self.render();
- });
- },
-
- render:function (eventName) {
-
- $(this.el).html(this.template(this.model.toJSON()));
-
- $('#blacklist .controls', this.el).html(new BlackListWidgetView({
- type: 'uri',
- placeholder: 'http://',
- collection: this.model
- }).render().el);
-
- $(this.el).i18n();
- return this;
- }
-});
-
-var BlackListWidgetView = ListWidgetView.extend({
-
- childView: ListWidgetChildView.extend({
- render:function(options) {
- this.options = options;
- var uri = this.model.get('uri');
-
- this.$el.html(this.template({item: uri}));
-
- if (uri.length > 30) {
- this.$el.tooltip({title:uri});
- }
- return this;
-
- }
- }),
-
- addItem:function(e) {
- e.preventDefault();
-
- var input_value = $("input", 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);
- },
- error:function(error, response) {
- //Pull out the response text.
- var responseJson = JSON.parse(response.responseText);
-
- //Display an alert with an error message
- $('#modalAlert div.modal-header').html(responseJson.error);
- $('#modalAlert div.modal-body').html(responseJson.error_description);
-
- $("#modalAlert").modal({ // wire up the actual modal functionality and show the dialog
- "backdrop" : "static",
- "keyboard" : true,
- "show" : true // ensure the modal is shown immediately
- });
- }
- });
-
- }
-
-});
-
// Stats table
var StatsModel = Backbone.Model.extend({
@@ -856,7 +723,7 @@ var AppRouter = Backbone.Router.extend({
this.updateSidebar('admin/blacklist');
- var view = new BlackListListView({model:this.blackListList});
+ var view = new BlackListListView({collection: this.blackListList});
view.load(
function(collection, response, options) {
@@ -1129,7 +996,8 @@ $(function () {
$.get('resources/template/whitelist.html', _load),
$.get('resources/template/dynreg.html', _load),
$.get('resources/template/rsreg.html', _load),
- $.get('resources/template/token.html', _load)
+ $.get('resources/template/token.html', _load),
+ $.get('resources/template/blacklist.html', _load)
).done(function() {
$.ajaxSetup({cache:false});
app = new AppRouter();
diff --git a/openid-connect-server-webapp/src/main/webapp/resources/js/blacklist.js b/openid-connect-server-webapp/src/main/webapp/resources/js/blacklist.js
new file mode 100644
index 000000000..0e0b5e7ef
--- /dev/null
+++ b/openid-connect-server-webapp/src/main/webapp/resources/js/blacklist.js
@@ -0,0 +1,195 @@
+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(
+ '' + $.t('admin.blacklist') + ' '
+ );
+
+ $.when(this.collection.fetchIfNeeded({success:function(e) {$('#loading-blacklist').addClass('label-success');}}))
+ .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(
+ '' + $.t('admin.blacklist') + ' '
+ );
+
+ $.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:function(error, response) {
+ //Pull out the response text.
+ var responseJson = JSON.parse(response.responseText);
+
+ //Display an alert with an error message
+ $('#modalAlert div.modal-header').html(responseJson.error);
+ $('#modalAlert div.modal-body').html(responseJson.error_description);
+
+ $("#modalAlert").modal({ // wire up the actual modal functionality and show the dialog
+ "backdrop" : "static",
+ "keyboard" : true,
+ "show" : true // ensure the modal is shown immediately
+ });
+ }
+ });
+
+ }
+
+});
+
+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:function (model, response) {
+ //Pull out the response text.
+ var responseJson = {error: 'Error', error_description: 'Error.'};
+ if (response) {
+ responseJson = JSON.parse(response.responseText);
+ }
+
+ //Display an alert with an error message
+ $('#modalAlert div.modal-header').html(responseJson.error);
+ $('#modalAlert div.modal-body').html(responseJson.error_description);
+
+ $("#modalAlert").modal({ // wire up the actual modal functionality and show the dialog
+ "backdrop" : "static",
+ "keyboard" : true,
+ "show" : true // ensure the modal is shown immediately
+ });
+ }
+ });
+
+ _self.parentView.delegateEvents();
+ }
+
+ return false;
+ }
+
+});
+
diff --git a/openid-connect-server-webapp/src/main/webapp/resources/js/client.js b/openid-connect-server-webapp/src/main/webapp/resources/js/client.js
index a892d5207..8d5633e56 100644
--- a/openid-connect-server-webapp/src/main/webapp/resources/js/client.js
+++ b/openid-connect-server-webapp/src/main/webapp/resources/js/client.js
@@ -363,6 +363,7 @@ var ClientView = Backbone.View.extend({
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
diff --git a/openid-connect-server-webapp/src/main/webapp/resources/js/dynreg.js b/openid-connect-server-webapp/src/main/webapp/resources/js/dynreg.js
index c17e3e465..10aa99dd7 100644
--- a/openid-connect-server-webapp/src/main/webapp/resources/js/dynreg.js
+++ b/openid-connect-server-webapp/src/main/webapp/resources/js/dynreg.js
@@ -232,6 +232,7 @@ var DynRegEditView = Backbone.View.extend({
var self = this;
this.model.destroy({
+ dataType: false, processData: false,
success:function () {
self.remove();
app.navigate('dev/dynreg', {trigger: true});
diff --git a/openid-connect-server-webapp/src/main/webapp/resources/js/grant.js b/openid-connect-server-webapp/src/main/webapp/resources/js/grant.js
index 9fa1cdf11..e42a053ce 100644
--- a/openid-connect-server-webapp/src/main/webapp/resources/js/grant.js
+++ b/openid-connect-server-webapp/src/main/webapp/resources/js/grant.js
@@ -218,6 +218,7 @@ var ApprovedSiteView = Backbone.View.extend({
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
diff --git a/openid-connect-server-webapp/src/main/webapp/resources/js/rsreg.js b/openid-connect-server-webapp/src/main/webapp/resources/js/rsreg.js
index 4382c3347..b8f95cb8d 100644
--- a/openid-connect-server-webapp/src/main/webapp/resources/js/rsreg.js
+++ b/openid-connect-server-webapp/src/main/webapp/resources/js/rsreg.js
@@ -197,6 +197,7 @@ var ResRegEditView = Backbone.View.extend({
var self = this;
this.model.destroy({
+ dataType: false, processData: false,
success:function () {
self.remove();
app.navigate('dev/resource', {trigger: true});
diff --git a/openid-connect-server-webapp/src/main/webapp/resources/js/scope.js b/openid-connect-server-webapp/src/main/webapp/resources/js/scope.js
index a8ebfef51..c4dcb83df 100644
--- a/openid-connect-server-webapp/src/main/webapp/resources/js/scope.js
+++ b/openid-connect-server-webapp/src/main/webapp/resources/js/scope.js
@@ -113,6 +113,7 @@ var SystemScopeView = Backbone.View.extend({
var _self = this;
this.model.destroy({
+ dataType: false, processData: false,
success:function () {
_self.$el.fadeTo("fast", 0.00, function () { //fade
diff --git a/openid-connect-server-webapp/src/main/webapp/resources/js/token.js b/openid-connect-server-webapp/src/main/webapp/resources/js/token.js
index 74d9beacc..c04a16e09 100644
--- a/openid-connect-server-webapp/src/main/webapp/resources/js/token.js
+++ b/openid-connect-server-webapp/src/main/webapp/resources/js/token.js
@@ -106,6 +106,7 @@ var AccessTokenView = Backbone.View.extend({
var _self = this;
this.model.destroy({
+ dataType: false, processData: false,
success:function () {
_self.$el.fadeTo("fast", 0.00, function () { //fade
@@ -257,6 +258,7 @@ var RefreshTokenView = Backbone.View.extend({
var _self = this;
this.model.destroy({
+ dataType: false, processData: false,
success:function () {
_self.$el.fadeTo("fast", 0.00, function () { //fade
diff --git a/openid-connect-server-webapp/src/main/webapp/resources/js/whitelist.js b/openid-connect-server-webapp/src/main/webapp/resources/js/whitelist.js
index 965da262e..39c0bdd20 100644
--- a/openid-connect-server-webapp/src/main/webapp/resources/js/whitelist.js
+++ b/openid-connect-server-webapp/src/main/webapp/resources/js/whitelist.js
@@ -186,6 +186,7 @@ var WhiteListView = Backbone.View.extend({
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
diff --git a/openid-connect-server-webapp/src/main/webapp/resources/template/blacklist.html b/openid-connect-server-webapp/src/main/webapp/resources/template/blacklist.html
new file mode 100644
index 000000000..0ed9585f0
--- /dev/null
+++ b/openid-connect-server-webapp/src/main/webapp/resources/template/blacklist.html
@@ -0,0 +1,69 @@
+
+
+
+
+
diff --git a/uma-server-webapp/src/main/webapp/resources/js/admin.js b/uma-server-webapp/src/main/webapp/resources/js/admin.js
index f6cc186f6..165e0c080 100644
--- a/uma-server-webapp/src/main/webapp/resources/js/admin.js
+++ b/uma-server-webapp/src/main/webapp/resources/js/admin.js
@@ -92,7 +92,8 @@ var ListWidgetChildView = Backbone.View.extend({
e.stopImmediatePropagation();
//this.$el.tooltip('delete');
- this.model.destroy({
+ this.model.destroy({
+ dataType: false, processData: false,
error:function (error, response) {
console.log("An error occurred when deleting from a list widget");
diff --git a/uma-server-webapp/src/main/webapp/resources/js/policy.js b/uma-server-webapp/src/main/webapp/resources/js/policy.js
index 83ed99b9c..966da884c 100644
--- a/uma-server-webapp/src/main/webapp/resources/js/policy.js
+++ b/uma-server-webapp/src/main/webapp/resources/js/policy.js
@@ -187,6 +187,7 @@ var ResourceSetView = Backbone.View.extend({
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
@@ -349,6 +350,7 @@ var PolicyView = Backbone.View.extend({
if (confirm($.t('policy.policy-table.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