Revert "Revert Optimisation Page Edit"

This reverts commit 5ebbcfcb9d025e53029ed9f252ac5bac686506c4.
This commit is contained in:
Fred Tempez 2025-01-28 18:10:29 +01:00
parent 5ebbcfcb9d
commit 7773bc916f
2 changed files with 275 additions and 681 deletions

View File

@ -6,732 +6,306 @@
*
* @author Rémi Jean <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean
* @authorFrédéric Tempez <frederic.tempez@outlook.com>
* @author Frédéric Tempez <frederic.tempez@outlook.com>
* @copyright Copyright (C) 2018-2025, Frédéric Tempez
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
* @link http://zwiicms.fr/
*/
/**
* Confirmation de suppression
*/
$("#pageEditDelete").on("click", function() {
var _this = $(this);
var message_delete = "<?php echo helper::translate('Confirmer la suppression de la page'); ?>";
return core.confirm(message_delete, function() {
$(location).attr("href", _this.attr("href"));
});
// Cache jQuery objects for better performance
const $pageEditDelete = $("#pageEditDelete");
const $pageEditModuleId = $("#pageEditModuleId");
const $pageEditModuleIdOld = $("#pageEditModuleIdOld");
const $pageEditModuleIdOldText = $("#pageEditModuleIdOldText");
const $pageEditGroup = $("#pageEditGroup");
const $pageEditGroupProfil = $(".pageEditGroupProfil");
const $pageEditContentContainer = $("#pageEditContentContainer");
const $pageEditExtensionContainer = $("#pageEditExtensionContainer");
const $pageEditPositionContainer = $("#pageEditPositionContainer");
const $pageEditLayoutContainer = $("#pageEditLayoutContainer");
const $pageEditPermissionContainer = $("#pageEditPermissionContainer");
const $pageEditModuleConfig = $("#pageEditModuleConfig");
const $pageModulePositionWrapper = $("#pageModulePositionWrapper");
const $pageEditContentWrapper = $("#pageEditContentWrapper");
const $pageEditHideTitleWrapper = $("#pageEditHideTitleWrapper");
const $pageEditBlockLayout = $("#pageEditBlockLayout");
const $pageEditBlock = $("#pageEditBlock");
const $pageEditBarLeftWrapper = $("#pageEditBarLeftWrapper");
const $pageEditBarRightWrapper = $("#pageEditBarRightWrapper");
const $pageEditMenu = $("#pageEditMenu");
const $pageEditbreadCrumbWrapper = $("#pageEditbreadCrumbWrapper");
const $pageEditModuleIdWrapper = $("#pageEditModuleIdWrapper");
const $pageEditDisplayMenuWrapper = $("#pageEditDisplayMenuWrapper");
const $pageTypeMenuWrapper = $("#pageTypeMenuWrapper");
const $pageEditSeoWrapper = $("#pageEditSeoWrapper");
const $pageEditAdvancedWrapper = $("#pageEditAdvancedWrapper");
const $pageEditHideMenuSideWrapper = $("#pageEditHideMenuSideWrapper");
const $pageEditHideMenuChildrenWrapper = $("#pageEditHideMenuChildrenWrapper");
const $pageEditParentPageId = $("#pageEditParentPageId");
const $pageEditDisable = $("#pageEditDisable");
const $pageEditExtraPosition = $("#pageEditExtraPosition");
const $pageEditPosition = $("#pageEditPosition");
const $pageEditHideTitle = $("#pageEditHideTitle");
const $pageTypeMenu = $("#pageTypeMenu");
const $pageIconUrlWrapper = $("#pageIconUrlWrapper");
const $pageEditTitle = $("#pageEditTitle");
const $pageEditShortTitle = $("#pageEditShortTitle");
// Confirmation de suppression
$pageEditDelete.on("click", function() {
return core.confirm($("#pageEditDataContainer").data("translate-delete"), () => {
$(location).attr("href", $(this).attr("href"));
});
});
$("#pageEditModuleId").on("change", function() {
protectModule();
});
// Gestion du changement de module
$pageEditModuleId.on("change", protectModule);
function protectModule() {
var oldModule = $("#pageEditModuleIdOld").val();
var oldModuleText = $("#pageEditModuleIdOldText").val();
var newModule = $("#pageEditModuleId").val();
if ( oldModule !== "" &&
oldModule !== newModule) {
var _this = $(this);
var message_delete = "<?php echo helper::translate('Confirmer la suppression des données du module'); ?>";
core.confirm(message_delete + " " + oldModuleText,
function() {
$(location).attr("href", _this.attr("href"));
return true;
},
function() {
$("#pageEditModuleId").val(oldModule);
return false;
}
);
}
const oldModule = $pageEditModuleIdOld.val();
const newModule = $pageEditModuleId.val();
if (oldModule && oldModule !== newModule) {
core.confirm($("#pageEditDataContainer").data("translate-module-delete") + " " + $pageEditModuleIdOldText.val(), () => {
$(location).attr("href", $(this).attr("href"));
}, () => {
$pageEditModuleId.val(oldModule);
});
}
}
// Paramètres par défaut au chargement
$(document).ready(function() {
// Changement de profil
$pageEditGroupProfil.hide();
$(`#pageEditGroupProfil${$pageEditGroup.val()}`).show();
$pageEditGroup.on("change", function() {
$pageEditGroupProfil.hide();
$(`#pageEditGroupProfil${$(this).val()}`).show();
});
/**
* Paramètres par défaut au chargement
*/
$( document ).ready(function() {
// Sélection des onglets
const pageLayout = $("#pageEditDataContainer").data("page-layout") || "content";
$pageEditContentContainer.hide();
$pageEditExtensionContainer.hide();
$pageEditPositionContainer.hide();
$pageEditLayoutContainer.hide();
$pageEditPermissionContainer.hide();
$(`#pageEdit${capitalizeFirstLetter(pageLayout)}Container`).show();
$(`#pageEdit${capitalizeFirstLetter(pageLayout)}Button`).addClass("activeButton");
// Changement de profil
$(".pageEditGroupProfil").hide();
$("#pageEditGroupProfil" + $("#pageEditGroup").val()).show();
// Enleve le menu fixe en édition de page
$("nav").removeAttr('id');
$("#pageEditGroup").on("change", function () {
$(".pageEditGroupProfil").hide();
$("#pageEditGroupProfil" + $(this).val()).show();
});
// Gestion des modules
if ($pageEditModuleId.val() === "") {
$pageEditModuleConfig.addClass("disabled");
} else {
$pageEditModuleConfig.removeClass("disabled");
$pageEditBlock.find("option[value='bar']").remove();
}
// Masquer et afficher les éléments en fonction du module sélectionné
toggleModuleElements($pageEditModuleId.val());
/**
* Sélection des onglets
*/
var pageLayout = "<?php echo $this->getData(['user', $this->getUser('id'), 'view', 'page']);?>";
// Non défini, valeur par défaut
if (pageLayout == "") {
pageLayout = "content";
}
// Tout cacher
$("#pageEditContentContainer").hide();
$("#pageEditExtensionContainer").hide();
$("#pageEditPositionContainer").hide();
$("#pageEditLayoutContainer").hide();
$("#pageEditPermissionContainer").hide();
// Afficher la bonne tab
$("#pageEdit" + capitalizeFirstLetter(pageLayout) + "Container").show();
$("#pageEdit" + capitalizeFirstLetter(pageLayout) + "Button").addClass("activeButton");
// Masquer et afficher les éléments en fonction du bloc sélectionné
toggleBlockElements($pageEditBlock.val());
// Masquer ou afficher le chemin de fer
toggleBreadCrumb($pageEditHideTitle.is(':checked'), $pageEditParentPageId.val());
/*
* Enleve le menu fixe en édition de page
*/
$("nav").removeAttr('id');
/**
* Bloque/Débloque le bouton de configuration au changement de module
* Affiche ou masque la position du module selon le call_user_func
*/
if($("#pageEditModuleId").val() === "") {
$("#pageEditModuleConfig").addClass("disabled");
/*$("#pageEditContentContainer").hide();*/
}
else {
$("#pageEditModuleConfig").removeClass("disabled");
/*$("#pageEditContentContainer").hide();*/
$("#pageEditBlock option[value='bar']").remove();
}
/**
* Masquer et affiche la sélection de position du module
*/
if( $("#pageEditModuleId").val() === "redirection" ||
$("#pageEditModuleId").val() === "" ) {
$("#pageModulePositionWrapper").removeClass("disabled");
$("#pageModulePositionWrapper").slideUp();
}
else {
$("#pageModulePositionWrapper").addClass("disabled");
$("#pageModulePositionWrapper").slideDown();
}
/**
* Masquer et démasquer le contenu pour les modules code et redirection
*/
if( $("#pageEditModuleId").val() === "redirection") {
$("#pageEditContentWrapper").removeClass("disabled");
$("#pageEditContentWrapper").slideUp();
} else {
$("#pageEditContentWrapper").addClass("disabled");
$("#pageEditContentWrapper").slideDown();
}
/**
* Masquer et démasquer le masquage du titre pour le module redirection
*/
if( $("#pageEditModuleId").val() === "redirection" ) {
$("#pageEditHideTitleWrapper").removeClass("disabled");
$("#pageEditHideTitleWrapper").hide();
$("#pageEditBlockLayout").removeClass("disabled");
$("#pageEditBlockLayout").hide();
} else {
$("#pageEditHideTitleWrapper").addClass("disabled");
$("#pageEditHideTitleWrapper").show();
$("#pageEditBlockLayout").addClass("disabled");
$("#pageEditBlockLayout").show();
}
/**
* Masquer et démasquer la sélection des barres
*/
switch ($("#pageEditBlock").val()) {
case "bar":
case "12":
$("#pageEditBarLeftWrapper").removeClass("disabled");
$("#pageEditBarLeftWrapper").slideUp();
$("#pageEditBarRightWrapper").removeClass("disabled");
$("#pageEditBarRightWrapper").slideUp();
break;
case "3-9":
case "4-8":
$("#pageEditBarLeftWrapper").addClass("disabled");
$("#pageEditBarLeftWrapper").slideDown();
$("#pageEditBarRightWrapper").removeClass("disabled");
$("#pageEditBarRightWrapper").slideUp();
break;
case "9-3":
case "8-4":
$("#pageEditBarLeftWrapper").removeClass("disabled");
$("#pageEditBarLeftWrapper").slideUp();
$("#pageEditBarRightWrapper").addClass("disabled");
$("#pageEditBarRightWrapper").slideDown();
break;
case "3-6-3":
case "2-7-3":
case "3-7-2":
$("#pageEditBarLeftWrapper").addClass("disabled");
$("#pageEditBarLeftWrapper").slideDown();
$("#pageEditBarRightWrapper").addClass("disabled");
$("#pageEditBarRightWrapper").slideDown();
break;
};
if ($("#pageEditBlock").val() === "bar") {
$("#pageEditMenu").removeClass("disabled");
$("#pageEditMenu").hide();
$("#pageEditHideTitleWrapper").removeClass("disabled");
$("#pageEditHideTitleWrapper").slideUp();
$("#pageEditbreadCrumbWrapper").removeClass("disabled");
$("#pageEditbreadCrumbWrapper").slideUp();
$("#pageEditModuleIdWrapper").removeClass("disabled");
$("#pageEditModuleIdWrapper").slideUp();
$("#pageEditModuleConfig").removeClass("disabled");
$("#pageEditModuleConfig").slideUp();
$("#pageEditDisplayMenuWrapper").addClass("disabled");
$("#pageEditDisplayMenuWrapper").slideDown();
$("#pageTypeMenuWrapper").removeClass("disabled");
$("#pageTypeMenuWrapper").slideUp();
$("#pageEditSeoWrapper").removeClass("disabled");
$("#pageEditSeoWrapper").slideUp();
$("#pageEditAdvancedWrapper").removeClass("disabled");
$("#pageEditAdvancedWrapper").slideUp();
$(".navSelect").slideUp();
/*
$("#pageEditBlockLayout").removeClass("col6");
$("#pageEditBlockLayout").addClass("col12");
*/
} else {
$("#pageEditDisplayMenuWrapper").removeClass("disabled");
$("#pageEditDisplayMenuWrapper").slideUp();
}
/**
* Masquer ou afficher le chemin de fer
* Quand le titre est masqué
*/
if ($("input[name=pageEditHideTitle]").is(':checked') ||
$("#pageEditParentPageId").val() === "" ) {
$("#pageEditbreadCrumbWrapper").removeClass("disabled");
$("#pageEditbreadCrumbWrapper").slideUp();
} else {
if ($("#pageEditParentPageId").val() !== "") {
$("#pageEditbreadCrumbWrapper").addClass("disabled");
$("#pageEditbreadCrumbWrapper").slideDown();
}
}
/**
* Masquer ou afficher la sélection de l'icône
*/
if ($("#pageTypeMenu").val() !== "text") {
$("#pageIconUrlWrapper").addClass("disabled");
$("#pageIconUrlWrapper").slideDown();
} else {
$("#pageIconUrlWrapper").removeClass("disabled");
$("#pageIconUrlWrapper").slideUp();
}
/**
* Cache les options de masquage dans les menus quand la page n'est pas affichée.
*/
if ($("#pageEditPosition").val() === "0" ) {
$("#pageEditHideMenuSideWrapper").removeClass("disabled");
$("#pageEditHideMenuSideWrapper").slideUp();
} else {
$("#pageEditHideMenuSideWrapper").addClass("disabled");
$("#pageEditHideMenuSideWrapper").slideDown();
}
/**
* Cache l'option de masquage des pages enfants
*/
if ($("#pageEditParentPageId").val() !== "") {
$("#pageEditHideMenuChildrenWrapper").removeClass("disabled");
$("#pageEditHideMenuChildrenWrapper").slideUp();
} else {
$("#pageEditHideMenuChildrenWrapper").addClass("disabled");
$("#pageEditHideMenuChildrenWrapper").slideDown();
}
/**
* Cache le l'option "ne pas afficher les pages enfants dans le menu horizontal" lorsque la page est désactivée
*/
if ($("#pageEditDisable").is(':checked') ) {
$("#pageEditHideMenuChildrenWrapper").removeClass("disabled");
$("#pageEditHideMenuChildrenWrapper").slideUp();
} else {
$("#pageEditHideMenuChildrenWrapper").addClass("disabled");
$("#pageEditHideMenuChildrenWrapper").slideDown();
}
/**
* Liste des pages pour le menu accessoire
*/
if ($("#pageEditExtraPosition").val() == 1 ) {
var positionDOM = $("#pageEditPosition");
var positionInitial = <?php echo $this->getData(['page',$this->getUrl(2),"position"]); ?>;
buildPagesList(true);
$("#pageEditPosition").val(positionInitial);
}
// Masquer ou afficher la sélection de l'icône
toggleIconUrl($pageTypeMenu.val());
// Masquer ou afficher les options de masquage dans les menus
toggleMenuOptions($pageEditPosition.val(), $pageEditParentPageId.val(), $pageEditDisable.is(':checked'));
// Liste des pages pour le menu accessoire
if ($pageEditExtraPosition.val() == 1) {
buildPagesList(true);
$pageEditPosition.val($("#pageEditDataContainer").data("position-initial"));
}
});
// Gestion des évènements
//--------------------------------------------------------------------------------------
/**
* Transmet le bouton de l'onglet sélectionné avant la soumission
*/
$('#pageEditForm').on('submit', function () {
$('#containerSelected').val(pageLayout);
});
/**
* Sélection de la page de configuration à afficher
*/
$("#pageEditContentButton").on("click", function () {
pageLayout = "locale";
$("#pageEditContentContainer").show();
$("#pageEditExtensionContainer").hide();
$("#pageEditPositionContainer").hide();
$("#pageEditLayoutContainer").hide();
$("#pageEditPermissionContainer").hide();
$("#pageEditContentButton").addClass("activeButton");
$("#pageEditExtensionButton").removeClass("activeButton");
$("#pageEditPositionButton").removeClass("activeButton");
$("#pageEditLayoutButton").removeClass("activeButton");
$("#pageEditPermissionButton").removeClass("activeButton");
});
$("#pageEditPositionButton").on("click", function () {
pageLayout = "position";
$("#pageEditContentContainer").hide();
$("#pageEditExtensionContainer").hide();
$("#pageEditPositionContainer").show();
$("#pageEditLayoutContainer").hide();
$("#pageEditPermissionContainer").hide();
$("#pageEditContentButton").removeClass("activeButton");
$("#pageEditExtensionButton").removeClass("activeButton");
$("#pageEditPositionButton").addClass("activeButton");
$("#pageEditLayoutButton").removeClass("activeButton");
$("#pageEditPermissionButton").removeClass("activeButton");
});
$("#pageEditExtensionButton").on("click", function () {
pageLayout = "extension";
$("#pageEditContentContainer").hide();
$("#pageEditExtensionContainer").show();
$("#pageEditPositionContainer").hide();
$("#pageEditLayoutContainer").hide();
$("#pageEditPermissionContainer").hide();
$("#pageEditContentButton").removeClass("activeButton");
$("#pageEditExtensionButton").addClass("activeButton");
$("#pageEditPositionButton").removeClass("activeButton");
$("#pageEditLayoutButton").removeClass("activeButton");
$("#pageEditPermissionButton").removeClass("activeButton");
});
$("#pageEditLayoutButton").on("click", function () {
pageLayout = "layout";
$("#pageEditContentContainer").hide();
$("#pageEditExtensionContainer").hide();
$("#pageEditPositionContainer").hide();
$("#pageEditLayoutContainer").show();
$("#pageEditPermissionContainer").hide();
$("#pageEditContentButton").removeClass("activeButton");
$("#pageEditExtensionButton").removeClass("activeButton");
$("#pageEditPositionButton").removeClass("activeButton");
$("#pageEditLayoutButton").addClass("activeButton");
$("#pageEditPermissionButton").removeClass("activeButton");
});
$("#pageEditPermissionButton").on("click", function () {
pageLayout = "permission";
$("#pageEditContentContainer").hide();
$("#pageEditExtensionContainer").hide();
$("#pageEditPositionContainer").hide();
$("#pageEditLayoutContainer").hide();
$("#pageEditPermissionContainer").show();
$("#pageEditContentButton").removeClass("activeButton");
$("#pageEditExtensionButton").removeClass("activeButton");
$("#pageEditPositionButton").removeClass("activeButton");
$("#pageEditLayoutButton").removeClass("activeButton");
$("#pageEditPermissionButton").addClass("activeButton");
});
/**
* Cache le l'option "ne pas afficher les pages enfants dans le menu horizontal" lorsque la page est désactivée
*/
var pageEditDisableDOM = $("#pageEditDisable");
pageEditDisableDOM.on("change", function() {
if ($(this).is(':checked') ) {
$("#pageEditHideMenuChildrenWrapper").removeClass("disabled");
$("#pageEditHideMenuChildrenWrapper").slideUp();
$("#pageEditHideMenuChildren").prop("checked", false);
} else {
$("#pageEditHideMenuChildrenWrapper").addClass("disabled");
$("#pageEditHideMenuChildrenWrapper").slideDown();
}
// Gestion des événements
$('#pageEditForm').on('submit', function() {
$('#containerSelected').val(pageLayout);
});
/**
* Cache les options de masquage dans les menus quand la page n'est pas affichée.
*/
var pageEditPositionDOM = $("#pageEditPosition");
pageEditPositionDOM.on("change", function() {
if ($(this).val() === "0" ) {
$("#pageEditHideMenuSideWrapper").removeClass("disabled");
$("#pageEditHideMenuSideWrapper").slideUp();
} else {
$("#pageEditHideMenuSideWrapper").addClass("disabled");
$("#pageEditHideMenuSideWrapper").slideDown();
}
$("#pageEditContentButton, #pageEditPositionButton, #pageEditExtensionButton, #pageEditLayoutButton, #pageEditPermissionButton").on("click", function() {
const tab = $(this).attr("id").replace("pageEdit", "").replace("Button", "").toLowerCase();
$pageEditContentContainer.hide();
$pageEditExtensionContainer.hide();
$pageEditPositionContainer.hide();
$pageEditLayoutContainer.hide();
$pageEditPermissionContainer.hide();
$(`#pageEdit${capitalizeFirstLetter(tab)}Container`).show();
$(this).addClass("activeButton").siblings().removeClass("activeButton");
});
/**
* Bloque/Débloque le bouton de configuration au changement de module
* Affiche ou masque la position du module selon le call_user_func
*/
var pageEditModuleIdDOM = $("#pageEditModuleId");
pageEditModuleIdDOM.on("change", function() {
if($(this).val() === "") {
$("#pageEditModuleConfig").addClass("disabled");
$("#pageEditBlock").append('<option value="bar">Barre latérale</option>');
}
else {
$("#pageEditModuleConfig").removeClass("disabled");
$("#pageEditBlock option[value='bar']").remove();
}
$pageEditDisable.on("change", function() {
toggleMenuOptions($pageEditPosition.val(), $pageEditParentPageId.val(), $(this).is(':checked'));
});
/**
* Masquer et affiche la sélection de position du module
*
* */
var pageEditModuleIdDOM = $("#pageEditModuleId");
pageEditModuleIdDOM.on("change", function() {
if( $(this).val() === "redirection" ||
$(this).val() === "") {
$("#pageModulePositionWrapper").removeClass("disabled");
$("#pageModulePositionWrapper").slideUp();
}
else {
$("#pageModulePositionWrapper").addClass("disabled");
$("#pageModulePositionWrapper").slideDown();
}
$pageEditPosition.on("change", function() {
toggleMenuOptions($(this).val(), $pageEditParentPageId.val(), $pageEditDisable.is(':checked'));
});
/**
* Masquer et démasquer le contenu pour les modules code et redirection
*/
var pageEditModuleIdDOM = $("#pageEditModuleId");
pageEditModuleIdDOM.on("change", function() {
if( $(this).val() === "redirection") {
$("#pageEditContentWrapper").removeClass("disabled");
$("#pageEditContentWrapper").slideUp();
}
else {
$("#pageEditContentWrapper").addClass("disabled");
$("#pageEditContentWrapper").slideDown();
}
$pageEditModuleId.on("change", function() {
toggleModuleElements($(this).val());
});
/**
* Masquer et démasquer le masquage du titre pour le module redirection
*/
var pageEditModuleIdDOM = $("#pageEditModuleId");
pageEditModuleIdDOM.on("change", function() {
if( $(this).val() === "redirection") {
$("#pageEditHideTitleWrapper").removeClass("disabled");
$("#pageEditHideTitleWrapper").slideUp();
$("#pageEditBlockLayout").removeClass("disabled");
$("#pageEditBlockLayout").slideUp();
}
else {
$("#pageEditHideTitleWrapper").addClass("disabled");
$("#pageEditHideTitleWrapper").slideDown();
$("#pageEditBlockLayout").addClass("disabled");
$("#pageEditBlockLayout").slideDown();
}
$pageEditBlock.on("change", function() {
toggleBlockElements($(this).val());
});
/**
* Masquer et démasquer la sélection des barres
*/
var pageEditBlockDOM = $("#pageEditBlock");
pageEditBlockDOM.on("change", function() {
switch ($(this).val()) {
case "bar":
case "12":
$("#pageEditBarLeftWrapper").removeClass("disabled");
$("#pageEditBarLeftWrapper").slideUp();
$("#pageEditBarRightWrapper").removeClass("disabled");
$("#pageEditBarRightWrapper").slideUp();
break;
case "3-9":
case "4-8":
$("#pageEditBarLeftWrapper").addClass("disabled");
$("#pageEditBarLeftWrapper").slideDown();
$("#pageEditBarRightWrapper").removeClass("disabled");
$("#pageEditBarRightWrapper").slideUp();
break;
case "9-3":
case "8-4":
$("#pageEditBarLeftWrapper").removeClass("disabled");
$("#pageEditBarLeftWrapper").slideUp();
$("#pageEditBarRightWrapper").addClass("disabled");
$("#pageEditBarRightWrapper").slideDown();
break;
case "3-6-3":
case "2-7-3":
case "3-7-2":
$("#pageEditBarLeftWrapper").addClass("disabled");
$("#pageEditBarLeftWrapper").slideDown();
$("#pageEditBarRightWrapper").addClass("disabled");
$("#pageEditBarRightWrapper").slideDown();
break;
}
if ($(this).val() === "bar") {
$("#pageEditMenu").removeClass("disabled");
$("#pageEditMenu").hide();
$("#pageEditHideTitleWrapper").removeClass("disabled");
$("#pageEditHideTitleWrapper").slideUp();
$("#pageTypeMenuWrapper").removeClass("disabled");
$("#pageTypeMenuWrapper").slideUp();
$("#pageEditSeoWrapper").removeClass("disabled");
$("#pageEditSeoWrapper").slideUp();
$("#pageEditAdvancedWrapper").removeClass("disabled");
$("#pageEditAdvancedWrapper").slideUp();
$("#pageEditbreadCrumbWrapper").removeClass("disabled");
$("#pageEditbreadCrumbWrapper").slideUp();
$("#pageEditModuleIdWrapper").removeClass("disabled");
$("#pageEditModuleIdWrapper").slideUp();
$("#pageEditModuleConfig").removeClass("disabled");
$("#pageEditModuleConfig").slideUp();
$("#pageEditDisplayMenuWrapper").addClass("disabled");
$("#pageEditDisplayMenuWrapper").slideDown();
$(".navSelect").slideUp();
/*
$("#pageEditBlockLayout").removeClass("col6");
$("#pageEditBlockLayout").addClass("col12");
*/
} else {
$("#pageEditMenu").addClass("disabled");
$("#pageEditMenu").show();
$("#pageEditHideTitleWrapper").addClass("disabled");
$("#pageEditHideTitleWrapper").slideDown();
$("#pageTypeMenuWrapper").addClass("disabled");
$("#pageTypeMenuWrapper").slideDown();
$("#pageEditSeoWrapper").addClass("disabled");
$("#pageEditSeoWrapper").slideDown();
$("#pageEditAdvancedWrapper").addClass("disabled");
$("#pageEditAdvancedWrapper").slideDown();
$("#pageEditModuleIdWrapper").addClass("disabled");
$("#pageEditModuleIdWrapper").slideDown();
$("#pageEditModuleConfig").slideDown();
$("#pageEditDisplayMenuWrapper").removeClass("disabled");
$("#pageEditDisplayMenuWrapper").slideUp();
$(".navSelect").slideDown();
if ($("#pageEditParentPageId").val() !== "") {
$("#pageEditbreadCrumbWrapper").addClass("disabled");
$("#pageEditbreadCrumbWrapper").slideDown();
$("#pageEditExtraPositionWrapper").slideDown();
} else {
}
if ($("#pageEditModuleId").val() === "") {
$("#pageEditModuleConfig").addClass("disabled");
} else {
$("#pageEditModuleConfig").removeClass("disabled");
}
/*
$("#pageEditBlockLayout").removeClass("col12");
$("#pageEditBlockLayout").addClass("col6");
*/
}
$pageEditHideTitle.on("change", function() {
toggleBreadCrumb($(this).is(':checked'), $pageEditParentPageId.val());
});
/**
* Masquer ou afficher le chemin de fer
* Quand le titre est masqué
*/
var pageEditHideTitleDOM = $("#pageEditHideTitle");
pageEditHideTitleDOM.on("change", function() {
if ($("input[name=pageEditHideTitle]").is(':checked')) {
$("#pageEditbreadCrumbWrapper").removeClass("disabled");
$("#pageEditbreadCrumbWrapper").slideUp();
} else {
if ($("#pageEditParentPageId").val() !== "") {
$("#pageEditbreadCrumbWrapper").addClass("disabled");
$("#pageEditbreadCrumbWrapper").slideDown();
}
}
$pageTypeMenu.on("change", function() {
toggleIconUrl($(this).val());
});
/**
* Masquer ou afficher le chemin de fer
* Quand la page n'est pas mère et que le menu n'est pas masqué
*/
var pageEditParentPageIdDOM = $("#pageEditParentPageId");
pageEditParentPageIdDOM.on("change", function() {
if ($(this).val() === "" &&
!$('input[name=pageEditHideTitle]').is(':checked') ) {
$("#pageEditbreadCrumbWrapper").removeClass("disabled");
$("#pageEditbreadCrumbWrapper").slideUp();
$("#pageEditExtraPositionWrapper").slideUp();
} else {
$("#pageEditbreadCrumbWrapper").addClass("disabled");
$("#pageEditbreadCrumbWrapper").slideDown();
$("#pageEditExtraPositionWrapper").slideDown();
}
if ($(this).val() !== "") {
$("#pageEditHideMenuChildrenWrapper").removeClass("disabled");
$("#pageEditHideMenuChildrenWrapper").slideUp();
$("#pageEditExtraPositionWrapper").slideUp();
} else {
$("#pageEditHideMenuChildrenWrapper").addClass("disabled");
$("#pageEditHideMenuChildrenWrapper").slideDown();
$("#pageEditExtraPositionWrapper").slideDown();
}
$pageEditTitle.on("input", function() {
$pageEditShortTitle.val($(this).val());
});
/**
* Masquer ou afficher la sélection de l'icône
*/
var pageTypeMenuDOM = $("#pageTypeMenu");
pageTypeMenuDOM.on("change", function() {
if ($(this).val() !== "text") {
$("#pageIconUrlWrapper").addClass("disabled");
$("#pageIconUrlWrapper").slideDown();
} else {
$("#pageIconUrlWrapper").removeClass("disabled");
$("#pageIconUrlWrapper").slideUp();
}
$pageEditExtraPosition.on("change", function() {
buildPagesList($(this).val() == 1);
});
/**
* Duplication du champ Title dans Short title
*/
$("#pageEditTitle").on("input", function() {
$("#pageEditShortTitle").val($(this).val());
$pageEditModuleConfig.on("click", function() {
$("#pageEditModuleRedirect").val(1);
$("#pageEditForm").trigger("submit");
});
/**
* Actualise la liste de pages lorsque le menu accessoire est sélectionné
*/
// Initialise à Début si le menu accessoire est sélectionné
$("#pageEditExtraPosition").on("change", function() {
if ($("#pageEditExtraPosition").val() == 1 ) {
buildPagesList(true);
} else {
buildPagesList(false);
//$("#pageEditParentPageId").trigger("change");
}
});
/**
* Soumission du formulaire pour éditer le module
*/
$("#pageEditModuleConfig").on("click", function() {
$("#pageEditModuleRedirect").val(1);
$("#pageEditForm").trigger("submit");
});
/**
* Affiche les pages en fonction de la page parent dans le choix de la position
*/
$("#pageEditParentPageId").on("change", function() {
buildPagesList(false);
$pageEditParentPageId.on("change", function() {
buildPagesList(false);
}).trigger("change");
/**
* Construit un select contenant la liste des pages du site.
*/
function buildPagesList(extraPosition) {
var hierarchy = <?php echo json_encode($this->getHierarchy()); ?>;
var pages = <?php echo $module->getPageInfo(); ?>;
var positionInitial = <?php echo $this->getData(['page',$this->getUrl(2),"position"]); ?>;
var extraPosition = $("#pageEditExtraPosition").val();
var positionDOM = $("#pageEditPosition");
var message_none = "<?php echo helper::translate('Ne pas afficher'); ?>";
var message_begin = "<?php echo helper::translate('Au début'); ?>";
var message_after = "<?php echo helper::translate('Après'); ?>";
positionDOM.empty().append(
$("<option>").val(0).text(message_none),
$("<option>").val(1).text(message_begin)
);
var parentSelected = $("#pageEditParentPageId").val();
var positionSelected = 0;
var positionPrevious = 1;
// Récupération des données depuis les attributs data-*
const hierarchy = $("#pageEditDataContainer").data("hierarchy");
const pages = $("#pageEditDataContainer").data("pages");
const positionInitial = $("#pageEditDataContainer").data("position-initial");
const currentPage = $("#pageEditDataContainer").data("current-page");
const positionDOM = $pageEditPosition;
const message_none = $("#pageEditDataContainer").data("translate-none");
const message_begin = $("#pageEditDataContainer").data("translate-begin");
const message_after = $("#pageEditDataContainer").data("translate-after");
// Aucune page parent sélectionnée
if(parentSelected === "") {
// Liste des pages sans parents
for(var key in hierarchy) {
if(hierarchy.hasOwnProperty(key) ) {
// Sélectionne la page avant s'il s'agit de la page courante
if(key === "<?php echo $this->getUrl(2); ?>") {
positionSelected = positionPrevious;
}
// Sinon ajoute la page à la liste
else {
// Enregistre la position de cette page afin de la sélectionner si la prochaine page de la liste est la page courante
if (extraPosition == pages[key].extraPosition ) {
positionPrevious++;
// Ajout à la liste
positionDOM.append(
$("<option>").val(positionPrevious).html(message_after + " \"" + (pages[key].title) + "\"")
);
}
positionDOM.empty().append(
$("<option>").val(0).text(message_none),
$("<option>").val(1).text(message_begin)
);
}
}
}
if (positionInitial === 0) {
positionSelected = 0;
}
}
// Une page parent est sélectionnée
else {
// Liste des pages enfants de la page parent
for(var i = 0; i < hierarchy[parentSelected].length; i++) {
// Pour page courante sélectionne la page précédente (pas de - 1 à positionSelected à cause des options par défaut)
if(hierarchy[parentSelected][i] === "<?php echo $this->getUrl(2); ?>") {
positionSelected = positionPrevious;
}
// Sinon ajoute la page à la liste
else {
// Enregistre la position de cette page afin de la sélectionner si la prochaine page de la liste est la page courante
positionPrevious++;
// Ajout à la liste
positionDOM.append(
$("<option>").val(positionPrevious).html(message_after + " \"" + (pages[hierarchy[parentSelected][i]].title) + "\"")
);
}
}
}
// Sélectionne la bonne position
positionDOM.val(positionSelected);
};
const parentSelected = $pageEditParentPageId.val();
let positionSelected = 0;
let positionPrevious = 1;
// --- Début de la logique originale ---
if (parentSelected === "") {
for (const key in hierarchy) {
if (hierarchy.hasOwnProperty(key)) {
if (key === currentPage) {
positionSelected = positionPrevious;
} else {
if (extraPosition == pages[key].extraPosition) {
positionPrevious++;
positionDOM.append(
$("<option>").val(positionPrevious).html(`${message_after} "${pages[key].title}"`)
);
}
}
}
}
if (positionInitial === 0) {
positionSelected = 0;
}
} else {
for (let i = 0; i < hierarchy[parentSelected].length; i++) {
if (hierarchy[parentSelected][i] === currentPage) {
positionSelected = positionPrevious;
} else {
positionPrevious++;
positionDOM.append(
$("<option>").val(positionPrevious).html(`${message_after} "${pages[hierarchy[parentSelected][i]].title}"`)
);
}
}
}
// --- Fin de la logique originale ---
positionDOM.val(positionSelected);
}
// Define function to capitalize the first letter of a string
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
function toggleModuleElements(moduleId) {
const isRedirection = moduleId === "redirection";
const isEmpty = moduleId === "";
$pageModulePositionWrapper.toggleClass("disabled", !isEmpty && !isRedirection).slideToggle(isEmpty || isRedirection);
$pageEditContentWrapper.toggleClass("disabled", !isRedirection).slideToggle(isRedirection);
$pageEditHideTitleWrapper.toggleClass("disabled", !isRedirection).slideToggle(isRedirection);
$pageEditBlockLayout.toggleClass("disabled", !isRedirection).slideToggle(isRedirection);
}
function toggleBlockElements(blockValue) {
const isBar = blockValue === "bar";
const isFullWidth = blockValue === "12";
const isLeftBar = blockValue === "3-9" || blockValue === "4-8";
const isRightBar = blockValue === "9-3" || blockValue === "8-4";
const isDoubleBar = blockValue === "3-6-3" || blockValue === "2-7-3" || blockValue === "3-7-2";
$pageEditBarLeftWrapper.toggleClass("disabled", !isBar && !isFullWidth && !isRightBar).slideToggle(isBar || isFullWidth || isRightBar);
$pageEditBarRightWrapper.toggleClass("disabled", !isBar && !isFullWidth && !isLeftBar).slideToggle(isBar || isFullWidth || isLeftBar);
if (isBar) {
$pageEditMenu.removeClass("disabled").hide();
$pageEditHideTitleWrapper.removeClass("disabled").slideUp();
$pageTypeMenuWrapper.removeClass("disabled").slideUp();
$pageEditSeoWrapper.removeClass("disabled").slideUp();
$pageEditAdvancedWrapper.removeClass("disabled").slideUp();
$pageEditbreadCrumbWrapper.removeClass("disabled").slideUp();
$pageEditModuleIdWrapper.removeClass("disabled").slideUp();
$pageEditModuleConfig.removeClass("disabled").slideUp();
$pageEditDisplayMenuWrapper.addClass("disabled").slideDown();
$(".navSelect").slideUp();
} else {
$pageEditMenu.addClass("disabled").show();
$pageEditHideTitleWrapper.addClass("disabled").slideDown();
$pageTypeMenuWrapper.addClass("disabled").slideDown();
$pageEditSeoWrapper.addClass("disabled").slideDown();
$pageEditAdvancedWrapper.addClass("disabled").slideDown();
$pageEditModuleIdWrapper.addClass("disabled").slideDown();
$pageEditModuleConfig.slideDown();
$pageEditDisplayMenuWrapper.removeClass("disabled").slideUp();
$(".navSelect").slideDown();
if ($pageEditParentPageId.val() !== "") {
$pageEditbreadCrumbWrapper.addClass("disabled").slideDown();
$pageEditExtraPositionWrapper.slideDown();
}
if ($pageEditModuleId.val() === "") {
$pageEditModuleConfig.addClass("disabled");
} else {
$pageEditModuleConfig.removeClass("disabled");
}
}
}
function toggleBreadCrumb(isHideTitleChecked, parentPageId) {
$pageEditbreadCrumbWrapper.toggleClass("disabled", !isHideTitleChecked && parentPageId !== "").slideToggle(isHideTitleChecked || parentPageId === "");
}
function toggleIconUrl(menuType) {
$pageIconUrlWrapper.toggleClass("disabled", menuType !== "text").slideToggle(menuType !== "text");
}
function toggleMenuOptions(position, parentPageId, isDisableChecked) {
$pageEditHideMenuSideWrapper.toggleClass("disabled", position !== "0").slideToggle(position === "0");
$pageEditHideMenuChildrenWrapper.toggleClass("disabled", parentPageId === "" && !isDisableChecked).slideToggle(parentPageId !== "" || isDisableChecked);
}

View File

@ -35,30 +35,50 @@
<?php echo template::button('pageEditContentButton', [
'value' => 'Contenu',
'class' => 'buttonTab',
//'href' => helper::baseUrl() . 'page/register/content/' . $this->geturl(2)
]); ?>
<?php echo template::button('pageEditPositionButton', [
'value' => 'Menu',
'class' => 'buttonTab',
//'href' => helper::baseUrl() . 'page/register/position/' . $this->geturl(2)
]); ?>
<?php echo template::button('pageEditExtensionButton', [
'value' => 'Extension',
'class' => 'buttonTab',
//'href' => helper::baseUrl() . 'page/register/extension/' . $this->geturl(2)
]); ?>
<?php echo template::button('pageEditLayoutButton', [
'value' => 'Mise en page',
'class' => 'buttonTab',
//'href' => helper::baseUrl() . 'page/register/layout/' . $this->geturl(2)
]); ?>
<?php echo template::button('pageEditPermissionButton', [
'value' => 'Permission',
'class' => 'buttonTab',
//'href' => helper::baseUrl() . 'page/register/permission/' . $this->geturl(2)
]); ?>
</div>
<?php
// Données dynamiques à insérer dans le JavaScript
$data = [
'translate-delete' => helper::translate('Confirmer la suppression de la page'),
'translate-module-delete' => helper::translate('Confirmer la suppression des données du module'),
'translate-none' => helper::translate('Ne pas afficher'),
'translate-begin' => helper::translate('Au début'),
'translate-after' => helper::translate('Après'),
'hierarchy' => json_encode($this->getHierarchy()),
'pages' => $module->getPageInfo(),
'position-initial' => $this->getData(['page', $this->getUrl(2), 'position']),
'current-page' => $this->getUrl(2),
'page-layout' => $this->getData(['user', $this->getUser('id'), 'view', 'page'])
];
// Génération du contenu JavaScript
echo '<div id="pageEditDataContainer"';
foreach ($data as $key => $value) {
// Convertit explicitement les valeurs null en chaîne vide
$sanitizedValue = $value ?? '';
echo ' data-' . htmlspecialchars($key) . '="' . htmlspecialchars((string)$sanitizedValue) . '"';
}
echo '></div>';
?>
<!-- Champ caché pour transmettre l'onglet-->
<?php echo template::hidden('containerSelected'); ?>