summaryrefslogtreecommitdiff
path: root/static/js/jquery.confirm.js
diff options
context:
space:
mode:
Diffstat (limited to 'static/js/jquery.confirm.js')
-rw-r--r--static/js/jquery.confirm.js145
1 files changed, 145 insertions, 0 deletions
diff --git a/static/js/jquery.confirm.js b/static/js/jquery.confirm.js
new file mode 100644
index 0000000..ec1ac92
--- /dev/null
+++ b/static/js/jquery.confirm.js
@@ -0,0 +1,145 @@
+/*!
+ * jquery.confirm
+ *
+ * @version 2.3.1
+ *
+ * @author My C-Labs
+ * @author Matthieu Napoli <matthieu@mnapoli.fr>
+ * @author Russel Vela
+ * @author Marcus Schwarz <msspamfang@gmx.de>
+ *
+ * @license MIT
+ * @url http://myclabs.github.io/jquery.confirm/
+ */
+(function ($) {
+
+ /**
+ * Confirm a link or a button
+ * @param [options] {{title, text, confirm, cancel, confirmButton, cancelButton, post, confirmButtonClass}}
+ */
+ $.fn.confirm = function (options) {
+ if (typeof options === 'undefined') {
+ options = {};
+ }
+
+ this.click(function (e) {
+ e.preventDefault();
+
+ var newOptions = $.extend({
+ button: $(this)
+ }, options);
+
+ $.confirm(newOptions, e);
+ });
+
+ return this;
+ };
+
+ /**
+ * Show a confirmation dialog
+ * @param [options] {{title, text, confirm, cancel, confirmButton, cancelButton, post, confirmButtonClass}}
+ * @param [e] {Event}
+ */
+ $.confirm = function (options, e) {
+ // Do nothing when active confirm modal.
+ if ($('.confirmation-modal').length > 0)
+ return;
+
+ // Parse options defined with "data-" attributes
+ var dataOptions = {};
+ if (options.button) {
+ var dataOptionsMapping = {
+ 'title': 'title',
+ 'text': 'text',
+ 'confirm-button': 'confirmButton',
+ 'cancel-button': 'cancelButton',
+ 'confirm-button-class': 'confirmButtonClass',
+ 'cancel-button-class': 'cancelButtonClass'
+ };
+ $.each(dataOptionsMapping, function(attributeName, optionName) {
+ var value = options.button.data(attributeName);
+ if (value) {
+ dataOptions[optionName] = value;
+ }
+ });
+ }
+
+ // Default options
+ var settings = $.extend({}, $.confirm.options, {
+ confirm: function () {
+ var url = e && (('string' === typeof e && e) || (e.currentTarget && e.currentTarget.attributes['href'].value));
+ if (url) {
+ if (options.post) {
+ var form = $('<form method="post" class="hide" action="' + url + '"></form>');
+ $("body").append(form);
+ form.submit();
+ } else {
+ window.location = url;
+ }
+ }
+ },
+ cancel: function (o) {
+ },
+ button: null
+ }, dataOptions, options);
+
+ // Modal
+ var modalHeader = '';
+ if (settings.title !== '') {
+ modalHeader =
+ '<div class=modal-header>' +
+ '<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>' +
+ '<h4 class="modal-title">' + settings.title+'</h4>' +
+ '</div>';
+ }
+ var modalHTML =
+ '<div class="confirmation-modal modal fade" tabindex="-1" role="dialog">' +
+ '<div class="modal-dialog">' +
+ '<div class="modal-content">' +
+ modalHeader +
+ '<div class="modal-body">' + settings.text + '</div>' +
+ '<div class="modal-footer">' +
+ '<button class="confirm btn ' + settings.confirmButtonClass + '" type="button" data-dismiss="modal">' +
+ settings.confirmButton +
+ '</button>' +
+ '<button class="cancel btn ' + settings.cancelButtonClass + '" type="button" data-dismiss="modal">' +
+ settings.cancelButton +
+ '</button>' +
+ '</div>' +
+ '</div>' +
+ '</div>' +
+ '</div>';
+
+ var modal = $(modalHTML);
+
+ modal.on('shown.bs.modal', function () {
+ modal.find(".btn-primary:first").focus();
+ });
+ modal.on('hidden.bs.modal', function () {
+ modal.remove();
+ });
+ modal.find(".confirm").click(function () {
+ settings.confirm(settings.button);
+ });
+ modal.find(".cancel").click(function () {
+ settings.cancel(settings.button);
+ });
+
+ // Show the modal
+ $("body").append(modal);
+ modal.modal('show');
+ };
+
+ /**
+ * Globally definable rules
+ */
+ $.confirm.options = {
+ text: "Are you sure?",
+ title: "",
+ confirmButton: "Yes",
+ cancelButton: "Cancel",
+ post: false,
+ confirmButtonClass: "btn-primary",
+ cancelButtonClass: "btn-default"
+ }
+})(jQuery);