From bb040cfb78d53696edd63bf256d0fd8ba3ccdbfa Mon Sep 17 00:00:00 2001 From: Frederic Guillot Date: Sat, 30 Jan 2016 22:25:16 -0500 Subject: Simplify code to handle ajax popover and redirects --- assets/js/src/Popover.js | 38 ++++++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 10 deletions(-) (limited to 'assets/js/src') diff --git a/assets/js/src/Popover.js b/assets/js/src/Popover.js index 2686d70d..6420f9ad 100644 --- a/assets/js/src/Popover.js +++ b/assets/js/src/Popover.js @@ -57,6 +57,7 @@ Popover.prototype.afterOpen = function() { var self = this; var popoverForm = $(".popover-form"); + // Submit forms with Ajax request if (popoverForm) { popoverForm.on("submit", function(e) { e.preventDefault(); @@ -66,18 +67,35 @@ Popover.prototype.afterOpen = function() { url: popoverForm.attr("action"), data: popoverForm.serialize(), success: function(data, textStatus, request) { - var redirect = request.getResponseHeader("X-Ajax-Redirect"); - - if (redirect) { - window.location = redirect === 'self' ? window.location.href : redirect; - } - else { - $("#popover-content").html(data); - $("input[autofocus]").focus(); - self.afterOpen(); - } + self.afterSubmit(data, request, self); } }); }); } + + // Submit link with Ajax request + $(document).on("click", ".popover-link", function(e) { + e.preventDefault(); + + $.ajax({ + type: "GET", + url: $(this).attr("href"), + success: function(data, textStatus, request) { + self.afterSubmit(data, request, self); + } + }); + }); +}; + +Popover.prototype.afterSubmit = function(data, request, self) { + var redirect = request.getResponseHeader("X-Ajax-Redirect"); + + if (redirect) { + window.location = redirect === 'self' ? window.location.href : redirect; + } + else { + $("#popover-content").html(data); + $("input[autofocus]").focus(); + self.afterOpen(); + } }; -- cgit v1.2.3