diff --git a/core/module/page/view/edit/edit.js.php b/core/module/page/view/edit/edit.js.php index 6545afbc..6ec1a695 100644 --- a/core/module/page/view/edit/edit.js.php +++ b/core/module/page/view/edit/edit.js.php @@ -1,311 +1,737 @@ -/** - * 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 - * @copyright Copyright (C) 2008-2018, Rémi Jean - * @author Frédéric Tempez - * @copyright Copyright (C) 2018-2025, Frédéric Tempez - * @license CC Attribution-NonCommercial-NoDerivatives 4.0 International - * @link http://zwiicms.fr/ - */ - -// 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")); - }); -}); - -// Gestion du changement de module -$pageEditModuleId.on("change", protectModule); - -function protectModule() { - 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(); - }); - - // 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"); - - // Enleve le menu fixe en édition de page - $("nav").removeAttr('id'); - - // 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()); - - // 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()); - - // 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 -$('#pageEditForm').on('submit', function() { - $('#containerSelected').val(pageLayout); -}); - -$("#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"); -}); - -$pageEditDisable.on("change", function() { - toggleMenuOptions($pageEditPosition.val(), $pageEditParentPageId.val(), $(this).is(':checked')); -}); - -$pageEditPosition.on("change", function() { - toggleMenuOptions($(this).val(), $pageEditParentPageId.val(), $pageEditDisable.is(':checked')); -}); - -$pageEditModuleId.on("change", function() { - toggleModuleElements($(this).val()); -}); - -$pageEditBlock.on("change", function() { - toggleBlockElements($(this).val()); -}); - -$pageEditHideTitle.on("change", function() { - toggleBreadCrumb($(this).is(':checked'), $pageEditParentPageId.val()); -}); - -$pageTypeMenu.on("change", function() { - toggleIconUrl($(this).val()); -}); - -$pageEditTitle.on("input", function() { - $pageEditShortTitle.val($(this).val()); -}); - -$pageEditExtraPosition.on("change", function() { - buildPagesList($(this).val() == 1); -}); - -$pageEditModuleConfig.on("click", function() { - $("#pageEditModuleRedirect").val(1); - $("#pageEditForm").trigger("submit"); -}); - -$pageEditParentPageId.on("change", function() { - buildPagesList(false); -}).trigger("change"); - -function buildPagesList(extraPosition) { - // 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"); - - positionDOM.empty().append( - $("