Files
opensem/resources/views/load/layout/modal.blade.php
Ludovic CANDELLIER abed17b3f0 fix modal
2023-02-27 22:02:19 +01:00

105 lines
2.6 KiB
PHP

@if(!defined('LOAD_MODAL'))
@push('js')
<script>
function openModal(title, form_id, url_open, url_save, callback, size, no_confirm, buttons, callback_after_loaded) {
var status = 0;
var dialog = bootbox.dialog({
title: title,
message: '<p><i class="fa fa-spin fa-spinner"></i> {{ __('loading') }} ...</p>',
size: size ? size : 'large',
scrollable: true,
buttons: buildModalButtons(form_id, no_confirm, buttons)
});
dialog.init(function() {
$.get(url_open, function(data) {
dialog.find('.bootbox-body').html(data);
if (callback_after_loaded) {
eval(callback_after_loaded);
}
if (typeof(url_save) !== 'undefined') {
handlePostModal(form_id,url_save, callback);
}
});
});
}
function changeModalContent(dialog, url, callback) {
dialog.init(function() {
$.get(url, function(data) {
dialog.find('.bootbox-body').html(data);
if (callback) {
eval(callback);
}
});
});
}
function viewModal(url, size, title) {
var dialog = bootbox.dialog({
title: title ? title : 'Web viewer',
message: '<iframe style="border:0;" src="' + url + '" height="400" width="100%"></iframe>',
size: size ? size : 'xl',
scrollable: true,
});
}
function viewWindow(url, size, title) {
var width = (size == 'sm') ? 400 : 600;
var title = title ? title : 'Web viewer';
window.open(url,title,"menubar=no, status=no, scrollbars=no, menubar=no, width=" + width + ", height=400");
}
function buildModalButtons(form_id, no_confirm, buttons) {
if (!no_confirm) {
var buttons = {
cancel: {
label: '{{ __('Annuler') }}',
className: 'btn-secondary'
},
confirm: {
label: '{{ __('Sauver') }}',
className: 'btn-success',
callback: function() {
submitModal(form_id);
}
},
};
}
return buttons;
}
function submitModal(form_id) {
if (typeof(tinyMCE) != 'undefined') {
tinyMCE.triggerSave();
}
$('form ' + form_id).submit();
status = 1;
}
function handlePostModal(form_id, url_save, callback) {
$('form ' + form_id).submit(function(e) {
e.preventDefault();
var formData = new FormData(this);
$.ajax({
url: url_save,
type: 'POST',
data: formData,
success: function (data) {
if (callback) {
eval(callback);
}
},
cache: false,
contentType: false,
processData: false
});
});
}
</script>
@endpush
@php(define('LOAD_MODAL', true))
@endif