Mini Shell
/*!
* 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',
'dialog-class': 'dialogClass'
};
$.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">×</button>' +
'<h4 class="modal-title">' + settings.title+'</h4>' +
'</div>';
}
var modalHTML =
'<div class="confirmation-modal modal fade" tabindex="-1" role="dialog">' +
'<div class="'+ settings.dialogClass +'">' +
'<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",
dialogClass: "modal-dialog"
}
})(jQuery);
Zerion Mini Shell 1.0