79 lines
2.2 KiB
JavaScript
79 lines
2.2 KiB
JavaScript
(function() {
|
|
|
|
var laravel = {
|
|
initialize: function() {
|
|
this.registerEvents();
|
|
},
|
|
|
|
registerEvents: function() {
|
|
$('body').on('click', 'a[data-method]', this.handleMethod);
|
|
},
|
|
|
|
handleMethod: function(e) {
|
|
var link = $(this);
|
|
var httpMethod = link.data('method').toUpperCase();
|
|
var form;
|
|
|
|
// If the data-method attribute is not PUT or DELETE,
|
|
// then we don't know what to do. Just ignore.
|
|
if ( $.inArray(httpMethod, ['PUT', 'DELETE']) === - 1 ) {
|
|
return;
|
|
}
|
|
|
|
// Allow user to optionally provide data-confirm="Are you sure?"
|
|
if ( link.data('confirm-text') ) {
|
|
laravel.verifyConfirm(link, function (t) {
|
|
if (! t) return false;
|
|
|
|
form = laravel.createForm(link);
|
|
form.submit();
|
|
})
|
|
}
|
|
|
|
e.preventDefault();
|
|
},
|
|
|
|
verifyConfirm: function(link, callback) {
|
|
swal({
|
|
title: link.data('confirm-title'),
|
|
text: link.data('confirm-text'),
|
|
type: 'warning',
|
|
button: link.data('confirm-delete') ? link.data('confirm-delete') : "Yes, delete it!",
|
|
}).then(function (t) {
|
|
callback(t)
|
|
});
|
|
},
|
|
|
|
getCsrfToken: function () {
|
|
return $('meta[name="csrf-token"]').attr('content');
|
|
},
|
|
|
|
createForm: function(link) {
|
|
var form =
|
|
$('<form>', {
|
|
'method': 'POST',
|
|
'action': link.attr('href')
|
|
});
|
|
|
|
var token =
|
|
$('<input>', {
|
|
'name': '_token',
|
|
'type': 'hidden',
|
|
'value': laravel.getCsrfToken()
|
|
});
|
|
|
|
var hiddenInput =
|
|
$('<input>', {
|
|
'name': '_method',
|
|
'type': 'hidden',
|
|
'value': link.data('method')
|
|
});
|
|
|
|
return form.append(token, hiddenInput)
|
|
.appendTo('body');
|
|
}
|
|
};
|
|
|
|
laravel.initialize();
|
|
|
|
})(); |