Fred Tempez
d38397d89d
renommage de variable "agenda" en "calendar" ajout d'un bouton vers la page d'édition de la feuille de style de la page
172 lines
5.9 KiB
PHP
172 lines
5.9 KiB
PHP
/**
|
|
* This file is part of Zwii.
|
|
*
|
|
* For full copyright and license information, please see the LICENSE
|
|
* file that was distributed with this source code.
|
|
*
|
|
* @author Rémi Jean <remi.jean@outlook.com>
|
|
* @copyright Copyright (C) 2008-2018, Rémi Jean
|
|
* @author Frédéric Tempez <frederic.tempez@outlook.com>
|
|
* @copyright Copyright (C) 2018-2024, Frédéric Tempez
|
|
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
|
|
* @link http://zwiicms.fr/
|
|
*/
|
|
|
|
|
|
|
|
const jsonOptions = '<?php echo json_encode($module::$calendars); ?>';
|
|
const objOptions = JSON.parse(jsonOptions);
|
|
const events = generateEvents(objOptions);
|
|
|
|
// Définir la fonction d'initialisation du calendrier
|
|
function initializeCalendar() {
|
|
$("#calendar").calendarGC({
|
|
dayBegin: 1,
|
|
dayNames: ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'],
|
|
monthNames: ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'],
|
|
prevIcon: '<',
|
|
nextIcon: '>',
|
|
eventIcon: '📅',
|
|
onPrevMonth: function (e) {
|
|
// Code pour le changement de mois précédent
|
|
},
|
|
onNextMonth: function (e) {
|
|
// Code pour le changement de mois suivant
|
|
},
|
|
events: events,
|
|
onclickDate: function (e, data) {
|
|
const targetDate = formatDate(data.datejs);
|
|
const filteredEvents = $.grep(events, function (event) {
|
|
return formatDate(event.date) === targetDate;
|
|
});
|
|
|
|
let eventListHtml = '';
|
|
|
|
if (filteredEvents.length > 0) {
|
|
eventListHtml = '<ul>';
|
|
$.each(filteredEvents, function (index, event) {
|
|
const eventTime = event.eventTime ? event.eventTime : 'toute la journée';
|
|
eventListHtml += '<li><strong>' + event.eventName + '</strong><br>' + eventTime + '</li>';
|
|
});
|
|
eventListHtml += '</ul>';
|
|
$('#popupDate').html('Événements du ' + formatDateToDMY(targetDate));
|
|
} else {
|
|
$('#popupDate').html('Aucun événement le ' + formatDateToDMY(targetDate));
|
|
}
|
|
|
|
$('#eventList').html(eventListHtml);
|
|
$('#eventListPopup').fadeIn();
|
|
|
|
$('.close-btn').on('click', function () {
|
|
$('#eventListPopup').fadeOut();
|
|
});
|
|
|
|
$('#eventListPopup').on('click', function (e) {
|
|
if ($(e.target).is('.popup-overlay')) {
|
|
$(this).fadeOut();
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
$(document).on('click', '.gc-calendar-month-year', function() {
|
|
const currentDate = new Date();
|
|
const formattedDate = currentDate.toISOString().split('T')[0];
|
|
$("#calendar").calendarGC('setDate', formattedDate);
|
|
});
|
|
}
|
|
|
|
// Exécuter l'initialisation au chargement du document
|
|
$(document).ready(function() {
|
|
initializeCalendar();
|
|
});
|
|
|
|
// Définir l'état initial de la largeur de la fenêtre
|
|
let wasSmallScreen = $(window).width() <= 600;
|
|
|
|
$(window).resize(function() {
|
|
// Vérifier la largeur actuelle de la fenêtre
|
|
const isSmallScreen = $(window).width() <= 600;
|
|
|
|
// Vérifier si l'état de la largeur a changé (de petit à grand ou de grand à petit)
|
|
if (wasSmallScreen !== isSmallScreen) {
|
|
location.reload(); // Recharge la page
|
|
}
|
|
|
|
// Mettre à jour l'état de la largeur pour le prochain redimensionnement
|
|
wasSmallScreen = isSmallScreen;
|
|
});
|
|
|
|
|
|
|
|
function showPopup(data) {
|
|
|
|
const eventName = data.eventName;
|
|
|
|
// Extraire la date et l'heure
|
|
const eventDate = data.date.toLocaleDateString(); // Format : 18/08/2024
|
|
|
|
// Vérifier si l'heure est définie et extraire l'heure si disponible
|
|
const eventTime = data.eventTime === '' ?'Toute la journée' : 'à ' + data.eventTime; // Format : 12:00
|
|
console.log (eventTime);
|
|
// Injecter les informations dans la popup
|
|
$('#eventName').text(eventName);
|
|
$('#eventDate').text(eventDate);
|
|
$('#eventTime').text(eventTime);
|
|
|
|
// Afficher la popup
|
|
$('#eventPopup').fadeIn();
|
|
|
|
// Fermer la popup lorsqu'on clique sur le bouton de fermeture
|
|
$('.close-btn').on('click', function () {
|
|
$('#eventPopup').fadeOut();
|
|
});
|
|
|
|
// Fermer la popup lorsqu'on clique en dehors du contenu
|
|
$('#eventPopup').on('click', function (e) {
|
|
if ($(e.target).is('.popup-overlay')) {
|
|
$(this).fadeOut();
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
function generateEvents(objOptions) {
|
|
return objOptions.map(function (item) {
|
|
return {
|
|
date: new Date(item.date), // Convertir la chaîne de date en objet Date
|
|
eventTime: item.time,
|
|
eventName: item.eventName,
|
|
className: item.className || '', // Ajouter une classe CSS si disponible
|
|
dateColor: item.dateColor || '', // Ajouter une couleur de date si disponible
|
|
onclick: function (e, data) { // Ajouter une fonction onclick
|
|
showPopup(data);
|
|
}
|
|
};
|
|
});
|
|
}
|
|
|
|
function formatDate(datejs) {
|
|
const year = datejs.getFullYear();
|
|
const month = ('0' + (datejs.getMonth() + 1)).slice(-2); // Ajouter un zéro devant si nécessaire
|
|
const day = ('0' + datejs.getDate()).slice(-2); // Ajouter un zéro devant si nécessaire
|
|
return year + '-' + month + '-' + day;
|
|
}
|
|
|
|
function formatDateToDMY(dateString) {
|
|
// Convertir la chaîne de caractères en objet Date
|
|
const datejs = new Date(dateString);
|
|
|
|
// Créer un tableau des noms de mois
|
|
const monthNames = ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet',
|
|
'août', 'septembre', 'octobre', 'novembre', 'décembre'
|
|
];
|
|
|
|
// Obtenir le jour, le mois et l'année
|
|
const day = datejs.getDate();
|
|
const month = monthNames[datejs.getMonth()];
|
|
const year = datejs.getFullYear();
|
|
|
|
// Retourner la date au format "jour mois année"
|
|
return day + ' ' + month + ' ' + year;
|
|
} |