Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /share/CACHEDEV1_DATA/Web/dev.rencontresmarches2027.fr/www/app/_config.php on line 50
Deprecated: substr(): Passing null to parameter #1 ($string) of type string is deprecated in /share/CACHEDEV1_DATA/Web/dev.rencontresmarches2027.fr/www/app/_config.php on line 50
Warning: Cannot modify header information - headers already sent by (output started at /share/CACHEDEV1_DATA/Web/dev.rencontresmarches2027.fr/www/app/_config.php:50) in /share/CACHEDEV1_DATA/Web/dev.rencontresmarches2027.fr/www/app/js/admin/myevent_core.php on line 7
const C_Q_SAVE = 'Save changes before exiting ?';
const C_DONTSAVE = 'Don\'t save';
const C_SAVE = 'Save';
const my_event_app = {
init() {
$(document).on('click', '.page_prev, .page_next', function () {
let increment = $(this).hasClass('page_prev') ? -1 : 1;
$('body').data('app_pagen', parseInt($('body').data('app_pagen')) + increment);
my_event_app.refresh();
});
$(document).on('keydown', function (e) {
if ($('input:focus').length && [37, 39].includes(e.keyCode)) return;
switch (e.keyCode) {
case 37: // Flèche gauche
case 39: // Flèche droite
$(`.page_${e.keyCode === 37 ? 'prev' : 'next'}:not(.disabled)`).trigger('click');
break;
case 27: // Échap
e.preventDefault();
if ($('#myevent_modal').is(':visible')) {
let $datetimepicker = $('.bootstrap-datetimepicker-widget:visible');
$datetimepicker.length ? $datetimepicker.hide() : false;
if ($('#myevent_modal').find('.pm_close.btn-close').length) {
$('#myevent_modal').find('.pm_close.btn-close').trigger('click');
}
} else {
$('.close.cancel_form, .cancel_config:visible:not(:disabled)').first().trigger('click');
}
break;
}
});
$(document).on('click', '.cancel_form, #navbar_event .pf_menu', function (e) {
e.preventDefault();
if ($(this).hasClass('pf_menu')) {
$('body').data('app_redirect', $(this).attr('href'));
}
$('body').data('app_update') != 0
? alertModal('Attention', C_Q_SAVE, {
btn1: { aspect: "outline-cancel", action: "dontsave", text: C_DONTSAVE },
btn2: { aspect: "event", action: "save", text: C_SAVE }
})
: my_event_app.LoadPage($('body').data('app_redirect') ?? document.URL, $('body').data('app_redirect') ? true : false);
});
$(document).on('input', '#search_query', function () {
my_event_app.refresh();
});
$(document).on('click', '#dd_search_filter li a', function () {
let $this = $(this);
$this.addClass('active').parent().siblings().find('a').removeClass('active');
$this.closest('.dropdown-menu').prev('button').text($this.text());
$('#search_filter').val($this.data('ddselect'));
$('#search_query').trigger('input');
});
$(document).on('click', 'a[data-action]:not(#myevent_modal *), button[data-action]:not(#myevent_modal *)', function () {
let action = $(this).data('action');
let page = $('body').data('page');
$('#cardloading').is(':visible') || $('#cardloading').show().css('display', 'flex');
switch (action) {
case 'add':
case 'edit':
let params = action === 'edit' ? { id: $(this).closest('tr').data('id'), token: $(this).closest('tr').data('token'), action } : { action };
$(`#${page}_content`).load(`${document.URL}form/`, params, function () {
$(this).toggleClass('card_form card_list');
$('.tohide').hide();
});
break;
case 'delete':
let dparams = { id: $(this).closest('tr').data('id'), token: $(this).closest('tr').data('token'), action };
$('#myevent_modal').data({
id: $(this).closest('tr').data('id'),
token: $(this).closest('tr').data('token'),
});
$.ajax({
type: "POST",
url: `${document.URL}action/`,
data: dparams,
dataType: 'json',
success: function (r) {
console.log(r);
$('#cardloading').hide();
alertModal(r.modal.title, r.modal.message, r.modal.buttons, r.modal.close || false);
}
});
break;
}
});
/* $(document).on('click', '.dd_config_modules .dropdown-item', function () {
let tr = $(this).closest('tr');
let url = `${document.URL}${tr.data('id')}/${tr.data('token')}/config/${$(this).data('module')}/`;
my_event_app.LoadPage(url, true);
}) */
$(document).on('click', '#myevent_modal button[data-action]', function () {
let action = $(this).data('action');
let redirect = $('body').data('app_redirect') || false;
switch (action) {
case 'reloadapp':
case 'dontsave':
my_event_app.LoadPage(redirect || `${document.URL}`, redirect);
break;
case 'save':
$('.app_form').trigger('submit');
break;
case 'delete_confirm':
let dparams = { id: $('#myevent_modal').data('id'), token: $('#myevent_modal').data('token'), action };
$.ajax({
type: "POST",
url: `${document.URL}action/`,
data: dparams,
dataType: 'json',
success: function (r) {
if (r.status === 'success') {
my_event_app.LoadPage(`${document.URL}`);
} else {
alertModal(r.modal.title, r.modal.message, r.modal.buttons, r.modal.close || false);
}
}
});
break;
}
})
$(document).on('click', '.dropdown_form li a', function () {
let $dropdown = $(this).closest('.dropdown_form'),
$input = $dropdown.next('input');
$dropdown.next('.is-invalid').removeClass('is-invalid').next('.invalid-feedback').remove();
$dropdown.find('a').removeClass('active');
$(this).addClass('active');
$dropdown.find('button').addClass('ddselected').text($(this).text());
$input.val($(this).data('ddselect')).trigger('change');
});
$(document).on('input change', ".app_form input", function () {
$(this).removeClass('is-invalid').next('.invalid-feedback').remove();
$('body').data('app_update', 1);
});
$(document).on('submit', ".app_form", function () {
let $form = $(this);
let p = new FormData(this);
let page = $('body').data('page');
let form_params = $(this).data();
$('#cardloading').is(':visible') || $('#cardloading').show().css('display', 'flex');
$form.find('.is-invalid').removeClass('is-invalid').next('.invalid-feedback').remove();
Object.entries(form_params).forEach(([k, v]) => p.append(k, v));
$form.find('input, select, textarea').each(function () {
let $input = $(this);
let name = $input.attr('name');
if (!$input.attr('name')) return; // ignore si pas de name
if ($input.is(':checkbox')) {
// Regrouper toutes les checkbox du même name
let values = $form.find(`input[name="${name}"]:checked`).map(function () {
return this.value;
}).get().join(',');
// Supprime l'ancienne entrée si elle existait
p.delete(name);
p.append(name, values);
} else if ($input.is(':radio')) {
if ($input.is(':checked')) {
p.set(name, $input.val());
}
} else {
p.set(name, $input.val());
}
});
$.ajax({
type: "POST",
url: `/admin/${page}/action/`,
data: p,
processData: false,
contentType: false,
dataType: 'json',
success: function (r) {
if (r.status === 'error') {
$('body').removeData('app_redirect');
console.log(r);
if (r.errors || r.modal) {
$('#cardloading').hide();
if (r.errors) {
console.log('ici');
if (!r.errors) myEventModal.hide();
$.each(r.errors, (k, v) => {
$form.find(`[name="me\\[${k}\\]"]`).addClass('is-invalid')
.after(`${v}
`);
});
}
if (r.modal) {
alertModal(r.modal.title, r.modal.message, r.modal.buttons, r.modal.close || false)
}
}
} else {
my_event_app.LoadPage($('body').data('app_redirect') ?? document.URL);
}
}
});
});
$(document).on("shown.bs.dropdown", function (event) {
if (typeof ($(event.target).data('bsConfig')) === 'undefined') return;
let menu = event.target.nextElementSibling;
let buttonWidth = event.target.offsetWidth;
menu.style.width = buttonWidth + "px";
});
my_event_app.refresh()
},
LoadPage(page, newnav = false) {
$('#mainloading').is(':visible') || $('#mainloading').show();
newnav ? location = page : location.replace(page);
},
refresh() {
$('#cardloading').is(':visible') || $('#cardloading').show().css('display', 'flex');
if ($('.filter_tool').is(':visible')) {
$('body').data({
'app_filter': $('#search_filter').val(),
'app_search': $('#search_query').val()
});
}
let params = Object.assign({}, $('body').data());
$.post(`${document.URL}app/`, params, function (r) {
let res;
try {
res = JSON.parse(r);
if (res.status === 'error') return location.replace('/admin/');
} catch (e) {
$('#' + $('body').data('page') + '_content').html(r);
$('body').data({ 'app_update': 0 });
}
my_event_app.pagination?.();
$('#mainloading').is(':visible') && $('#mainloading').hide();
});
},
pagination() {
let pagContainer = $('#pagination_container'),
pages = +$('body').data('app_pages'),
currentPage = +$('body').data('app_pagen');
pagContainer.toggle(pages > 1).css('display', pages > 1 ? 'flex' : 'none');
$('a.page_prev').toggleClass('disabled', currentPage === 0);
$('a.page_next').toggleClass('disabled', currentPage + 1 === pages);
},
formDataToJson(formData) {
let object = {};
formData.forEach((value, key) => {
// Traitement des tableaux et objets imbriqués
let keys = key.split('[').map(k => k.replace(']', '')); // Décomposer les clés comme 'array[subkey]' en tableau
let currentObject = object;
keys.forEach((part, index) => {
if (index === keys.length - 1) {
// Dernière clé, on assigne la valeur
if (currentObject[part] === undefined) {
currentObject[part] = value;
} else if (Array.isArray(currentObject[part])) {
currentObject[part].push(value);
} else {
currentObject[part] = [currentObject[part], value];
}
} else {
// Crée des objets si nécessaire
if (!currentObject[part]) {
currentObject[part] = isNaN(keys[index + 1]) ? {} : [];
}
currentObject = currentObject[part];
}
});
});
return JSON.stringify(object);
}
}
my_event_app.init();