From f65188e4df1ecc080bfca18bd8244f6df9177adc Mon Sep 17 00:00:00 2001 From: "Endi S. Dewata" Date: Sat, 6 Feb 2016 04:08:44 +0100 Subject: Replaced confirmation dialog with HTML dialog. The TPS UI has been modified such that it will use an HTML-based dialog instead of the browser's built-in dialog such that the option to "prevent this page from creating additional dialogs" will no longer appear. https://fedorahosted.org/pki/ticket/1685 --- base/server/share/webapps/pki/js/pki-ui.js | 58 ++++++++++++++-- base/tps/shared/webapps/tps/js/audit.js | 36 +--------- base/tps/shared/webapps/tps/js/tps.js | 108 ++--------------------------- base/tps/shared/webapps/tps/ui/index.html | 19 +++++ 4 files changed, 79 insertions(+), 142 deletions(-) diff --git a/base/server/share/webapps/pki/js/pki-ui.js b/base/server/share/webapps/pki/js/pki-ui.js index 0729895aa..96c92f3f1 100644 --- a/base/server/share/webapps/pki/js/pki-ui.js +++ b/base/server/share/webapps/pki/js/pki-ui.js @@ -197,11 +197,13 @@ var Dialog = Backbone.View.extend({ self.body = self.$(".modal-body"); self.title = options.title; + self.content = options.content; - self.readonly = options.readonly; + // list of readonly fields // by default all fields are editable - if (self.readonly == undefined) self.readonly = []; + self.readonly = options.readonly || []; + // list of active actions self.actions = options.actions; if (self.actions == undefined) { // by default all buttons are active @@ -232,6 +234,10 @@ var Dialog = Backbone.View.extend({ self.$(".modal-title").text(self.title); } + if (self.content) { + self.body.html(self.content); + } + // setup input fields // TODO: handle drop-down lists $("input, textarea", self.body).each(function(index) { @@ -533,7 +539,7 @@ var Table = Backbone.View.extend({ // setup remove button handler self.removeButton.click(function(e) { var items = []; - var message = "Are you sure you want to remove the following entries?\n"; + var message = "

Are you sure you want to remove the following entries?

\n\n"; + if (items.length == 0) return; - if (!confirm(message)) return; - self.remove(items); + var dialog = new Dialog({ + el: $("#confirm-dialog"), + content: message + }); + + dialog.handler("ok", function() { + self.remove(items); + dialog.close(); + }); + + dialog.open(); }); // setup select all handler @@ -1149,5 +1166,34 @@ var EntryPage = Page.extend({ var value = input.val(); // save all values including empty ones self.entry[name] = value; + }, + changeStatus: function(action, message) { + var self = this; + + var dialog = new Dialog({ + el: $("#confirm-dialog"), + content: message + }); + + dialog.handler("ok", function() { + + self.model.changeStatus(action, { + success: function(data, textStatus, jqXHR) { + self.entry = _.clone(self.model.attributes); + self.render(); + }, + error: function(jqXHR, textStatus, errorThrown) { + new ErrorDialog({ + el: $("#error-dialog"), + title: "HTTP Error " + jqXHR.responseJSON.Code, + content: jqXHR.responseJSON.Message + }).open(); + } + }); + + dialog.close(); + }); + + dialog.open(); } }); diff --git a/base/tps/shared/webapps/tps/js/audit.js b/base/tps/shared/webapps/tps/js/audit.js index cc0be4628..902daef27 100644 --- a/base/tps/shared/webapps/tps/js/audit.js +++ b/base/tps/shared/webapps/tps/js/audit.js @@ -133,45 +133,13 @@ var AuditPage = EntryPage.extend({ self.disableAction = $("[name='disable']", self.viewMenu); $("a", self.enableAction).click(function(e) { - e.preventDefault(); - - var message = "Are you sure you want to enable this entry?"; - if (!confirm(message)) return; - self.model.changeStatus("enable", { - success: function(data, textStatus, jqXHR) { - self.entry = _.clone(self.model.attributes); - self.render(); - }, - error: function(jqXHR, textStatus, errorThrown) { - new ErrorDialog({ - el: $("#error-dialog"), - title: "HTTP Error " + jqXHR.responseJSON.Code, - content: jqXHR.responseJSON.Message - }).open(); - } - }); + self.changeStatus("enable", "Are you sure you want to enable this entry?"); }); $("a", self.disableAction).click(function(e) { - e.preventDefault(); - - var message = "Are you sure you want to disable this entry?"; - if (!confirm(message)) return; - self.model.changeStatus("disable", { - success: function(data, textStatus, jqXHR) { - self.entry = _.clone(self.model.attributes); - self.render(); - }, - error: function(jqXHR, textStatus, errorThrown) { - new ErrorDialog({ - el: $("#error-dialog"), - title: "HTTP Error " + jqXHR.responseJSON.Code, - content: jqXHR.responseJSON.Message - }).open(); - } - }); + self.changeStatus("disable", "Are you sure you want to disable this entry?"); }); self.eventsTable = new Table({ diff --git a/base/tps/shared/webapps/tps/js/tps.js b/base/tps/shared/webapps/tps/js/tps.js index cf1cc0b83..ac9330d6b 100644 --- a/base/tps/shared/webapps/tps/js/tps.js +++ b/base/tps/shared/webapps/tps/js/tps.js @@ -168,129 +168,33 @@ var ConfigEntryPage = EntryPage.extend({ self.disableAction = $("[name='disable']", self.viewMenu); $("a", self.submitAction).click(function(e) { - e.preventDefault(); - - var message = "Are you sure you want to submit this entry?"; - if (!confirm(message)) return; - self.model.changeStatus("submit", { - success: function(data, textStatus, jqXHR) { - self.entry = _.clone(self.model.attributes); - self.render(); - }, - error: function(jqXHR, textStatus, errorThrown) { - new ErrorDialog({ - el: $("#error-dialog"), - title: "HTTP Error " + jqXHR.responseJSON.Code, - content: jqXHR.responseJSON.Message - }).open(); - } - }); + self.changeStatus("submit", "Are you sure you want to submit this entry?"); }); $("a", self.cancelAction).click(function(e) { - e.preventDefault(); - - var message = "Are you sure you want to cancel this entry?"; - if (!confirm(message)) return; - self.model.changeStatus("cancel", { - success: function(data, textStatus, jqXHR) { - self.entry = _.clone(self.model.attributes); - self.render(); - }, - error: function(jqXHR, textStatus, errorThrown) { - new ErrorDialog({ - el: $("#error-dialog"), - title: "HTTP Error " + jqXHR.responseJSON.Code, - content: jqXHR.responseJSON.Message - }).open(); - } - }); + self.changeStatus("cancel", "Are you sure you want to cancel this entry?"); }); $("a", self.approveAction).click(function(e) { - e.preventDefault(); - - var message = "Are you sure you want to approve this entry?"; - if (!confirm(message)) return; - self.model.changeStatus("approve", { - success: function(data, textStatus, jqXHR) { - self.entry = _.clone(self.model.attributes); - self.render(); - }, - error: function(jqXHR, textStatus, errorThrown) { - new ErrorDialog({ - el: $("#error-dialog"), - title: "HTTP Error " + jqXHR.responseJSON.Code, - content: jqXHR.responseJSON.Message - }).open(); - } - }); + self.changeStatus("approve", "Are you sure you want to approve this entry?"); }); $("a", self.rejectAction).click(function(e) { - e.preventDefault(); - - var message = "Are you sure you want to reject this entry?"; - if (!confirm(message)) return; - self.model.changeStatus("reject", { - success: function(data, textStatus, jqXHR) { - self.entry = _.clone(self.model.attributes); - self.render(); - }, - error: function(jqXHR, textStatus, errorThrown) { - new ErrorDialog({ - el: $("#error-dialog"), - title: "HTTP Error " + jqXHR.responseJSON.Code, - content: jqXHR.responseJSON.Message - }).open(); - } - }); + self.changeStatus("reject", "Are you sure you want to reject this entry?"); }); $("a", self.enableAction).click(function(e) { - e.preventDefault(); - - var message = "Are you sure you want to enable this entry?"; - if (!confirm(message)) return; - self.model.changeStatus("enable", { - success: function(data, textStatus, jqXHR) { - self.entry = _.clone(self.model.attributes); - self.render(); - }, - error: function(jqXHR, textStatus, errorThrown) { - new ErrorDialog({ - el: $("#error-dialog"), - title: "HTTP Error " + jqXHR.responseJSON.Code, - content: jqXHR.responseJSON.Message - }).open(); - } - }); + self.changeStatus("enable", "Are you sure you want to enable this entry?"); }); $("a", self.disableAction).click(function(e) { - e.preventDefault(); - - var message = "Are you sure you want to disable this entry?"; - if (!confirm(message)) return; - self.model.changeStatus("disable", { - success: function(data, textStatus, jqXHR) { - self.entry = _.clone(self.model.attributes); - self.render(); - }, - error: function(jqXHR, textStatus, errorThrown) { - new ErrorDialog({ - el: $("#error-dialog"), - title: "HTTP Error " + jqXHR.responseJSON.Code, - content: jqXHR.responseJSON.Message - }).open(); - } - }); + self.changeStatus("disable", "Are you sure you want to disable this entry?"); }); var dialog = self.$("#property-dialog"); diff --git a/base/tps/shared/webapps/tps/ui/index.html b/base/tps/shared/webapps/tps/ui/index.html index 8080a125c..8c6092098 100644 --- a/base/tps/shared/webapps/tps/ui/index.html +++ b/base/tps/shared/webapps/tps/ui/index.html @@ -444,6 +444,25 @@ $(function() {
+ +