Compare commits

...

5514 Commits

Author SHA1 Message Date
823e1cfd0e news 6 bug date 2024-10-16 11:53:31 +02:00
c0e6781dda news 6 option show pseudo 2024-10-15 15:19:38 +02:00
341e002ef2 Option signature de l'auteur 2024-10-15 14:40:13 +02:00
a87d04ef5f Blog 6 fix option bouton 2024-10-14 22:18:59 +02:00
11656c72ca Optimisation setData 2024-10-12 11:16:46 +02:00
72ee7c9ab6 News 6 supprime les tirets 2024-10-12 09:15:27 +02:00
483ebd64fe News 6.0 ajout des options date et heure 2024-10-12 08:46:05 +02:00
1a6fadf976 supprime console.log 2024-10-12 08:15:38 +02:00
9b3c7707f0 supprime un console log 2024-10-12 08:07:58 +02:00
261ef2f312 Blog 8 options d'affichage smarts 2024-10-12 08:06:49 +02:00
0abb336850 Blog 8.00 ajoute les options d'affichage de la date et de l'heure 2024-10-11 11:34:13 +02:00
82b55210d8 13.5.00 fix subword 2024-10-10 20:02:26 +02:00
41f36ef5e6 13.5.00 fix subword 2024-10-10 19:57:27 +02:00
71dfbff8d7 Blog 7.12 2024-10-09 20:49:27 +02:00
1c57e8dd1d 13.5.00 Blog 7.12 2024-10-08 15:23:58 +02:00
625308b74b fix update store 2024-10-03 12:04:53 +02:00
466e557c1d bug changement de mot de passe changes 2024-10-02 19:03:37 +02:00
121013a48a 13500 Bug changement de mot de passe 2024-10-02 19:02:37 +02:00
1fcc5f92a8 version 13.5.00 2024-10-02 12:54:19 +02:00
1c8e2038f6 Merge branch 'master' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS 2024-10-02 12:17:35 +02:00
29b0a28173 13500 2024-10-02 12:17:31 +02:00
bd6d5f0128 13500 2024-10-02 12:15:53 +02:00
6bbd622a98 Importe les dernières modifs
Merge branch 'master' into common_global
2024-09-30 19:18:52 +02:00
d39bf7bc86 Refactor 2024-09-30 19:15:38 +02:00
ffd80cde21 Version 13.4.01 2024-09-30 19:05:37 +02:00
65e2dc8dff branche de base 134 2024-09-30 18:59:55 +02:00
e52c25ad0b Commente les tests de perf 2024-09-30 18:53:24 +02:00
55c7791efa init 2024-09-30 18:47:20 +02:00
ec2fc0ab4f branche 134 !! 2024-09-30 15:40:23 +02:00
16d4d16950 Bug de connexion lorsque le site à situé à la racine 2024-09-30 15:32:55 +02:00
b7be76a7e4 Auto update traite les status 401 et 403 2024-09-30 14:59:32 +02:00
d6072c8591 Erreur page de reconnexion 2024-09-30 14:55:31 +02:00
23d2631fd7 Common cache optimization 2024-09-29 23:20:47 +02:00
06b3690d48 Fix common construct to improve perf 2024-09-29 21:22:52 +02:00
3c32b3650e Optimisation postinstall creation unique des pages 2024-09-29 19:34:10 +02:00
101bae34e8 FIX bug avec secure_put_contents
Install optimisation config
2024-09-29 18:53:42 +02:00
f7d53906e2 Changes 2024-09-29 16:17:30 +02:00
bdc9e40627 Supprime le log 2024-09-29 16:12:40 +02:00
d5dfdca9d2 Numéro de la version 2024-09-29 16:04:41 +02:00
ce6c4929a0 changes 2024-09-29 16:00:49 +02:00
c3ac31de69 rebase 2024-09-29 15:58:56 +02:00
24e1238e50 Position des boutons dans la config et précise la cible de trace secure. 2024-09-29 15:56:54 +02:00
281e578f4d Config, double rafraissement, rien à voir avec les process 2024-09-29 15:56:54 +02:00
1a88ae05e6 ajoute les traceurs 2024-09-29 15:56:54 +02:00
df0c579af0 Supprime les save excessifs 2024-09-29 15:56:54 +02:00
a25dbc6bd2 Corrections Rémi 2024-09-29 15:56:54 +02:00
8e1c8a5ba5 13.4.00.test7 évite la création d'un user vide au logout 2024-09-29 15:56:54 +02:00
cce2983347 changes 13307 2024-09-29 15:56:53 +02:00
6c2bed771c 13.4.00.test6 prend en compte la déconnexion à la mise à jour 2024-09-29 15:56:53 +02:00
ae265ba5e7 gestion erreur simplifiée 2024-09-29 15:56:53 +02:00
909c79559b Revert "vide le tampon"
This reverts commit 568b79e854.
2024-09-29 15:56:33 +02:00
97c8573de8 vide le tampon 2024-09-29 15:56:33 +02:00
6274d2c1ff ajoute un die 2024-09-29 15:56:33 +02:00
409b7edb94 Traitement de l'erreur étape 4 2024-09-29 15:56:33 +02:00
6b82b3af83 13.4.00.test5 modification install en test 2024-09-29 15:55:38 +02:00
3013f33b35 13.4.00.test4 inverse la position des icones users et config 2024-09-29 15:55:38 +02:00
77fbb45c71 Fix layouts non initialisés 2024-09-29 15:55:38 +02:00
2a0849e49a Suppression du cookie configLayout 2024-09-29 15:55:38 +02:00
ac8e713935 Suppression du cookie pageLayouts 2024-09-29 15:55:38 +02:00
118dfc79b3 Corrige un bug de déco après édition du compte 2024-09-29 15:55:03 +02:00
6727752a2d Corrige l'affichage des boutons de navigation dans les vues des modules 2024-09-29 15:55:03 +02:00
75a6a093ed 13.4.00.test3 la clé auth n'a pas été déclarée 2024-09-29 15:55:02 +02:00
922cba9f5a Chemin du cookie de session 2024-09-29 15:55:02 +02:00
35d0b2aa3c modification du cookie de consentement 2024-09-29 15:55:02 +02:00
776afaff03 13.4.00.test1 icone plugin rouge si module mis à jour 2024-09-29 15:55:02 +02:00
1c46900156 Actualiser README.md 2024-09-29 15:55:02 +02:00
08a2264709 Remplace le cookie lastposition et affecte l'id de site pour prendren en compte le domaine et le chemin 2024-09-29 15:54:37 +02:00
f7db1bf20f Bouton de génération du sitemap 2024-09-29 15:54:37 +02:00
ffd14a8734 Autorise les moteurs sauf les bots 2024-09-29 15:54:37 +02:00
161c1bcb80 version 2024-09-29 15:54:36 +02:00
02514ff446 changes 2024-09-29 15:54:07 +02:00
fdce67d101 changes 2024-09-29 15:54:07 +02:00
8d1cbc6b88 config RFM thumb 2024-09-29 15:54:06 +02:00
b73f8a1c28 RFM default thumb size 640 2024-09-29 15:54:06 +02:00
00a0c3d795 changes 2024-09-29 15:54:06 +02:00
6b8d769e43 méthode authentification 2024-09-29 15:54:06 +02:00
10b79c586b slider 7.2 voir changelog 2024-09-29 15:54:06 +02:00
3c3579a29d changes 2024-09-29 15:54:06 +02:00
017f02afc4 changes 2024-09-29 15:54:06 +02:00
df235541d1 13400 changes 2024-09-29 15:54:06 +02:00
a456047969 13.4.00 sélecteur de fichier amélioré 2024-09-29 15:53:25 +02:00
ac48e61264 Revert plugin 2024-09-29 15:53:01 +02:00
604bf2db77 correction url catalogue 2024-09-29 15:53:01 +02:00
4055d3e68a csrf key sur 64 octets 2024-09-29 15:50:08 +02:00
393722038b slider 7.2 voir changelog 2024-09-29 15:50:08 +02:00
54c90bec11 changes 2024-09-29 15:49:03 +02:00
039ee80db4 changes 2024-09-29 15:49:03 +02:00
9f30f356cb datables.net filtrage des éléments, nombre d'éléments et position sur l'écran 2024-09-29 15:49:02 +02:00
fd10883652 13400 changes 2024-09-29 15:49:02 +02:00
6805111c47 13.4.00 sélecteur de fichier amélioré 2024-09-29 15:49:02 +02:00
86ce4a75b4 Position des boutons dans la config et précise la cible de trace secure. 2024-09-28 19:04:40 +02:00
03932db20d Config, double rafraissement, rien à voir avec les process 2024-09-28 18:49:29 +02:00
d3f247f6fb ajoute les traceurs 2024-09-28 18:45:48 +02:00
c5af0fb37c Supprime les save excessifs 2024-09-28 18:42:41 +02:00
9532be0cdc Corrections Rémi 2024-09-28 18:02:47 +02:00
e0748c2eb6 13.4.00.test7 évite la création d'un user vide au logout 2024-09-26 19:59:39 +02:00
5811836238 changes 13307 2024-09-25 22:08:25 +02:00
92b3854516 version 13307 2024-09-25 22:07:52 +02:00
e85801db50 13307 2024-09-25 22:02:34 +02:00
53dd6a82e6 tient compte de la déconnexion pdt update 2024-09-25 22:00:58 +02:00
75b230b2ed 13.4.00.test6 prend en compte la déconnexion à la mise à jour 2024-09-25 21:57:08 +02:00
47a5ddb442 gestion erreur simplifiée 2024-09-25 21:41:08 +02:00
d0f779bb9b Revert "vide le tampon"
This reverts commit 568b79e854.
2024-09-25 21:38:01 +02:00
568b79e854 vide le tampon 2024-09-25 21:34:26 +02:00
06bbeb0d2e ajoute un die 2024-09-25 21:25:40 +02:00
75bb94b9a7 Traitement de l'erreur étape 4 2024-09-25 21:13:04 +02:00
dfd0f1ad2a 13.4.00.test5 modification install en test 2024-09-25 17:01:25 +02:00
7a4b1589af 13.4.00.test4 inverse la position des icones users et config 2024-09-19 10:52:11 +02:00
da9d8d9d62 Fix layouts non initialisés 2024-09-19 09:53:52 +02:00
e3bc6ce1d3 Suppression du cookie configLayout 2024-09-18 19:34:04 +02:00
ecd0f5827a Suppression du cookie pageLayouts 2024-09-18 19:01:47 +02:00
c8be7f84a4 Corrige un bug de déco après édition du compte 2024-09-17 19:18:26 +02:00
826e6264eb Corrige l'affichage des boutons de navigation dans les vues des modules 2024-09-17 18:27:02 +02:00
cc0b6edb34 13.4.00.test3 la clé auth n'a pas été déclarée 2024-09-16 22:57:04 +02:00
0e564a24c9 Chemin du cookie de session 2024-09-16 21:20:52 +02:00
7da12be242 modification du cookie de consentement 2024-09-15 19:00:53 +02:00
095e317f3b 13.4.00.test1 icone plugin rouge si module mis à jour 2024-09-15 17:53:23 +02:00
67eeef26a0 Actualiser README.md 2024-09-11 15:25:47 +02:00
2273812b2d Remplace le cookie lastposition et affecte l'id de site pour prendren en compte le domaine et le chemin 2024-09-08 14:59:09 +02:00
4842e3f62b Bouton de génération du sitemap 2024-09-07 14:27:05 +02:00
01c69f0712 Autorise les moteurs sauf les bots 2024-09-07 14:11:01 +02:00
baa5b762e2 version 2024-09-07 09:59:57 +02:00
76cd034fd3 changes 2024-09-07 09:57:42 +02:00
a929fb3482 readme ! 2024-09-07 08:53:07 +02:00
5ea3e12e26 changes 2024-09-07 08:29:53 +02:00
141a22b6ff config RFM thumb 2024-09-07 08:17:35 +02:00
3f1d19f53e RFM default thumb size 640 2024-09-07 08:10:03 +02:00
fcfb3ea677 changes 2024-09-06 19:01:10 +02:00
dfceb941db changes 2024-09-06 19:00:49 +02:00
9db6e5ac13 changes 2024-09-06 18:52:45 +02:00
aceb94da3e changes 2024-09-06 18:52:17 +02:00
12c7682a26 Merge branch 'authKey' 2024-09-06 18:49:18 +02:00
5d282a4cc4 Merge branch 'master' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS 2024-09-06 18:42:16 +02:00
a8bf3ec857 csrf key sur 64 octets 2024-09-06 18:42:03 +02:00
bb9573a82f slider 7.2 voir changelog 2024-09-06 18:42:03 +02:00
15534ba9fa changes 2024-09-06 18:42:03 +02:00
6aecf5e796 changes 2024-09-06 18:42:03 +02:00
25f81af87b datables.net filtrage des éléments, nombre d'éléments et position sur l'écran 2024-09-06 18:42:03 +02:00
c78b43f7b0 Warning à la création d'une nouvelle page 2024-09-06 18:42:02 +02:00
6daeb9e474 13400 changes 2024-09-06 18:42:02 +02:00
5986e8a378 Revert plugin 2024-09-06 18:42:02 +02:00
14068d24a8 13.4.00 sélecteur de fichier amélioré 2024-09-06 18:42:02 +02:00
dd7ee7f2ef correction url catalogue 2024-09-06 18:42:02 +02:00
0f1bd2377e 13.3.06 Login, connexion persistante 2024-09-06 18:42:02 +02:00
5326b94c04 disable save to json pretty print 2024-09-06 18:42:02 +02:00
17f8fb3b58 13.3.06 fix bug mot clé [MODULE] absent 2024-09-06 18:42:02 +02:00
ceca7b10b5 13.3.10 Bug bouton effacement 2024-09-06 18:42:02 +02:00
89c0ae5ead slider 7.1 2024-09-06 18:42:01 +02:00
89be290465 13.3.06 couleurs des balises h1, h3 et A dans le slider 2024-09-06 18:42:01 +02:00
3c3b122fe4 typo changes 2024-09-06 18:42:01 +02:00
61369e7ad1 Merge branch '13306' into authKey 2024-09-06 18:36:47 +02:00
2c31e1aefc 13.3.06 bug de sécurité profil rfm 2024-09-06 18:34:46 +02:00
eb28a76636 méthode authentification 2024-09-06 17:32:29 +02:00
86afa350fa csrf key sur 64 octets 2024-09-06 17:17:34 +02:00
6864132afc slider 7.2 voir changelog 2024-09-06 16:17:10 +02:00
49ab83efd3 changes 2024-09-06 09:34:15 +02:00
27d7b07239 changes 2024-09-06 08:37:17 +02:00
48ee5c5e1b datables.net filtrage des éléments, nombre d'éléments et position sur l'écran 2024-09-06 08:35:35 +02:00
be87e4c740 13400 changes 2024-09-05 11:24:23 +02:00
7f6d010b9c 13.4.00 sélecteur de fichier amélioré 2024-09-05 11:02:01 +02:00
62437c8fac Warning à la création d'une nouvelle page 2024-08-29 06:45:40 +02:00
2d3b999d27 Revert plugin 2024-08-28 21:17:12 +02:00
72655e6673 correction url catalogue 2024-08-28 20:56:16 +02:00
de0749b51b 13.3.06 Login, connexion persistante 2024-08-24 17:29:17 +02:00
3598ab2954 disable save to json pretty print 2024-08-24 15:04:29 +02:00
67d94bce61 13.3.06 fix bug mot clé [MODULE] absent 2024-08-24 07:18:32 +02:00
fa158effc3 13.3.10 Bug bouton effacement 2024-08-23 21:18:37 +02:00
3e3781bc28 slider 7.1 2024-08-22 05:33:10 +02:00
bc70f39ba5 13.3.06 couleurs des balises h1, h3 et A dans le slider 2024-08-22 05:31:27 +02:00
998eb3b8a1 typo changes 2024-08-21 10:20:33 +02:00
8fd4d2f9bc slide 7.0 2024-08-19 16:44:08 +02:00
f04bc17e28 Texte alternatif 2024-08-19 16:01:23 +02:00
ca0561d97c Fix slider button padding 2024-08-19 15:55:47 +02:00
2251d34122 Étiquette 2024-08-19 15:46:45 +02:00
eb832f42e5 Slides corrections 2024-08-19 10:33:38 +02:00
83b4103788 13.3.05 Bugs module Sliders 2024-08-19 10:11:29 +02:00
1b9c65189d Changes 2024-08-15 18:12:13 +02:00
c2281b93ef changes 2024-08-15 18:01:52 +02:00
1b3601ce87 Corrige le filtre FILTER_FLOAT: pour la géolocalisation 2024-08-15 17:55:11 +02:00
78905834bd pas de mois ni de numéro de semaine 2024-08-14 09:21:32 +02:00
c270546a9b Bug de filtre 2024-08-14 09:11:06 +02:00
ad15e8b827 A tester 2024-08-14 09:09:26 +02:00
f84bcbb878 Merge branch 'master' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS 2024-08-13 21:38:25 +02:00
62d4d8243a typo 2024-08-13 21:37:19 +02:00
3e238af50a 13.3.05 correction des filtres pour agenda 2024-08-13 21:34:34 +02:00
54a0add941 13.3.06 correction des filtres pour agenda 2024-08-13 21:33:01 +02:00
d84f94817b 13.3.06 Mise à jour module blog 2024-08-01 19:17:29 +02:00
2939545c8c 13.3.06 mise à jour module News 2024-07-30 21:16:26 +02:00
c4dc05a4c1 13.3.06 mise à jour du module News 2024-07-30 21:14:59 +02:00
87b763ddae Corrige la génération des miniatures au format avif et webp 2024-07-28 18:05:09 +02:00
c745711a2e 13.3.04 2024-07-27 09:36:05 +02:00
49c8f567e6 changes 2024-06-10 18:22:36 +02:00
2a1b5e2900 Vérification de la réécriture 2024-06-09 02:51:52 +02:00
f2ab357654 changes 2024-06-08 08:23:53 +02:00
8ad199ee3d Page de configuration des modules inactives 2024-06-07 20:47:18 +02:00
6ddadfd8e5 Chargement lassif des images 2024-06-07 09:57:26 +02:00
cee8b784a4 changes 2024-06-07 09:48:48 +02:00
f8e2dd5fab Corrige le bug de FF 2024-06-07 09:47:22 +02:00
20a4cc45d7 Revert "Test problème TinyMCE avec Firefox"
This reverts commit 090a4318b3.
2024-06-07 09:44:00 +02:00
8db6367cba Corrige la détection de serveur 2024-06-07 09:42:59 +02:00
090a4318b3 Test problème TinyMCE avec Firefox 2024-06-07 09:34:39 +02:00
d17fa93bb7 Layout d'édition : supprime tous les boutons de gestion de page comme pour les pages avec module 2024-06-07 09:31:22 +02:00
f030c2f064 Merge branch '13303' of https://forge.chapril.org/ZwiiCMS-TEAM/ZwiiCMS into 13303 2024-06-04 22:29:23 +02:00
323cea2e0b Fusion de deux commits 2024-06-04 22:28:30 +02:00
f81fad1c49 message 2024-06-04 22:23:21 +02:00
ad3e9aba65 Lorsque des éléments inutiles sont ajoutés à l'adresse d'une page, une erreur 403 est levée. 2024-06-04 22:21:05 +02:00
b035efb710 Bug d'URL WIP 2024-06-02 15:30:12 +02:00
ffc373e68f - Dans la configuration, l'option Apache URL intelligentes ne s'active que si le serveur est Apache et que le module Rewriter est actif. Ce qui exclue les autres serveurs non compatibles comme Nginx, Caddy etc. 2024-06-02 15:08:19 +02:00
e42f0bd538 Lignes vides en trop dans htaccess 2024-06-02 14:40:34 +02:00
b86f7fbd4a Htaccess avec anti slash dans tous les cas 2024-06-02 14:34:56 +02:00
96b12bf0d4 htaccess avec la suppression du slash final hors rewriting 2024-06-02 14:31:08 +02:00
97e50f245c 13.3.03 deux corrections 2024-06-01 21:19:56 +02:00
9d32fa2b86 13.3.02 2024-05-14 13:13:56 +02:00
5937915d21 changes 2024-05-08 18:49:36 +02:00
ca15d8f362 13.3.01 2024-05-08 18:42:10 +02:00
f097111d70 Merge branch 'master' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS 2024-05-06 18:18:16 +02:00
177541bef3 Version 2024-05-06 18:18:07 +02:00
3f2a33a7fe Nom de la variable de session 2024-05-06 16:18:35 +02:00
cd9c62b3a3 Version 2024-05-06 15:46:32 +02:00
4a2d59e4b8 changes 2024-04-23 17:50:46 +02:00
c702c41fed Init 2024-04-23 17:42:00 +02:00
b3e3ead5ac self devient common 2024-04-23 17:15:20 +02:00
9bfa8280fd 13.2.02 warning blog vide 2024-04-22 15:35:33 +02:00
55b4e7335d old layout 2024-04-22 14:20:05 +02:00
f7c2aab390 Revert "13.2.01 section par main"
This reverts commit fc69015448.
2024-04-22 14:17:21 +02:00
cdab4659a6 Revert "13.2.01 supprime la balise section"
This reverts commit 9e656294a6.
2024-04-22 14:17:11 +02:00
fc69015448 13.2.01 section par main 2024-04-22 10:56:51 +02:00
9e656294a6 13.2.01 supprime la balise section 2024-04-21 15:55:11 +02:00
8e91faf2d2 13.2.01 2024-04-18 07:56:11 +02:00
36c8619b63 alignement de boutons 2024-04-17 16:42:01 +02:00
d77afce37b Bug génération des pages TinyMCE 2024-04-17 16:27:22 +02:00
bca34949a9 secure_file_contents 2024-04-10 11:58:17 +02:00
07baed8713 13200 secure_file_put_contents and new jsondb json db save 2024-04-09 17:23:26 +02:00
6687c324e5 13.2.00 flock sur le fichier principal (PB sous win) 2024-04-06 09:10:49 +02:00
03d1dacb88 détruit le fichier de verouillage créé par secureFilePutContent 2024-04-05 18:21:51 +02:00
77d8296642 add secureFilePutContents 2024-04-05 17:16:08 +02:00
999370646b 13.2.00 fonction secureFilePutContents 2024-04-05 16:49:08 +02:00
d8f4af660f supprime le verrou inutile 2024-04-05 16:34:01 +02:00
5f146bfbdc 13.2.00 json save 2024-04-05 09:20:34 +02:00
950ba8cc9d 13.1.09 supprime un test dans jsondb 2024-04-03 12:56:06 +02:00
2448e50793 changes 2024-03-30 09:27:49 +01:00
5e29699563 jsondb stoppe après une erreur de chargement 2024-03-30 09:16:31 +01:00
b78fc84a89 13.1.08 search 3.1 2024-03-30 09:11:18 +01:00
665c8dea6d Merge branch 'master' of https://forge.chapril.org/ZwiiCMS-TEAM/ZwiiCMS 2024-03-29 21:47:18 +01:00
159297e421 13.1.08 Bug de page parente avec permission 2024-03-29 21:47:04 +01:00
fc502a1c64 bug de page parente avec permission 2024-03-29 21:47:04 +01:00
457c8e0f66 13.1.08 Bug de page parente avec permission 2024-03-29 21:41:49 +01:00
660398bad7 bug de page parente avec permission 2024-03-29 21:40:55 +01:00
fad19249db Revert "test filter_id slash"
This reverts commit f18d4eee1d.
2024-03-29 19:18:17 +01:00
060aa9e4d5 Squashed commit of the following:
commit 9052247e53
Merge: df06b1f7 f18d4eee
Author: Fred Tempez <frederic.tempez@outlook.com>
Date:   Sat Mar 23 15:36:43 2024 +0100

    Merge commit 'f18d4eee1d1cd9500a30d47d05bea1f773d787af' into HEAD

commit df06b1f7ba
Merge: 8d324f9c fd511229
Author: Fred Tempez <frederic.tempez@outlook.com>
Date:   Sat Mar 23 15:36:02 2024 +0100

    Merge commit 'fd511229181cca42029257d29b0407e5ca598dc9' into HEAD

commit 8d324f9c79
Author: Fred Tempez <frederic.tempez@outlook.com>
Date:   Sat Mar 23 15:33:52 2024 +0100

    Revert "Merge commit 'f924a2b2b3a8a6c53ce050da64e57ac76d388872'"

    This reverts commit b8c0b47faf, reversing
    changes made to f5f04c90d9.
2024-03-23 15:39:22 +01:00
9052247e53 Merge commit 'f18d4eee1d1cd9500a30d47d05bea1f773d787af' into HEAD 2024-03-23 15:36:43 +01:00
df06b1f7ba Merge commit 'fd511229181cca42029257d29b0407e5ca598dc9' into HEAD 2024-03-23 15:36:02 +01:00
8d324f9c79 Revert "Merge commit 'f924a2b2b3a8a6c53ce050da64e57ac76d388872'"
This reverts commit b8c0b47faf, reversing
changes made to f5f04c90d9.
2024-03-23 15:33:52 +01:00
f18d4eee1d test filter_id slash 2024-03-21 15:42:17 +01:00
fd51122918 Mise à jour RSS Feed 2024-03-21 13:26:42 +01:00
15bd0400ea Merge commit '1147b5c5e1fff513cea77da6c0db5a7d2fa3b8a5' 2024-03-18 18:24:26 +01:00
1147b5c5e1 update roling backup 2024-03-18 17:50:54 +01:00
2cbd3d5923 Update rolling backup 2024-03-18 17:40:56 +01:00
11753b4476 add data.key to git ignore 2024-03-18 17:30:35 +01:00
f2a6d35351 change key 2024-03-18 08:51:51 +01:00
c4a23de744 Contrôle de clé 2024-03-18 08:42:36 +01:00
a47cbe49fe Débordements 2024-03-17 21:09:37 +01:00
5f5815cbd9 clean auto backup 2024-03-17 20:49:15 +01:00
e811660d7c 13.1.08 miseà jour automatisée 2024-03-17 12:53:04 +01:00
10083e7ee8 Folder Alignements 2024-03-17 09:13:32 +01:00
d89455d86a Alignement des dates 2024-03-17 09:08:08 +01:00
5e7c9597cd Format de date 2024-03-17 08:07:54 +01:00
49180ab4ed Dossiers dépliés 2024-03-16 08:36:52 +01:00
c4fc466876 config deux options 2024-03-15 21:14:49 +01:00
75203d6e8e config options 2024-03-15 20:13:58 +01:00
f61c2a977a config options 2024-03-15 20:10:06 +01:00
a02ce894c8 13.1.08 changes 2024-03-14 20:36:30 +01:00
2d92bd3963 Merge commit '2a8563ce9ae300b0ffcbab8dd11f8c4bc1cd5d46' 2024-03-14 19:21:31 +01:00
b8c0b47faf Merge commit 'f924a2b2b3a8a6c53ce050da64e57ac76d388872' 2024-03-14 19:20:20 +01:00
2a8563ce9a json vérif 2024-03-14 19:14:13 +01:00
f924a2b2b3 stop on json data error 2024-03-14 19:09:00 +01:00
5846c111fe CSS okay 2024-03-14 15:46:31 +01:00
f86f38d8b0 Fix folder and icons 2024-03-14 14:30:49 +01:00
68d0aaff84 Okay mais probleme de surimpressions 2024-03-14 13:33:37 +01:00
f5f04c90d9 fix user path select 2024-03-14 10:28:42 +01:00
d8525bf123 fix user path select 2024-03-14 10:28:27 +01:00
25d6192e0e folder css okay 2024-03-14 08:50:23 +01:00
90a5a8a96a folder config wip 2024-03-13 18:45:06 +01:00
69852c82bc folder 2024-03-13 16:56:33 +01:00
f3ae03a133 shareFolder 2024-03-13 16:28:19 +01:00
9b5cc38c94 sharefolder WIP 2024-03-12 18:35:44 +01:00
890cf97127 13.1.08 Sauvegarde de l'état des sélecteurs 2024-03-12 13:59:57 +01:00
87a1f2cd18 13107 change 2024-03-06 16:59:52 +01:00
50fc319afd 13.1.07 Corrige une erreur de tri dans RFM dépréciation return usort 2024-02-22 14:34:54 +01:00
a2f53e1e58 Slider 6.4 2024-02-15 14:34:50 +01:00
e6b9cb16b5 13.1.06 slider 6.3 + changes 2024-02-14 15:43:08 +01:00
6f2447533c 13.1.06 fix user add tag 2024-02-11 18:53:57 +01:00
6f946b32ac changes 2024-02-10 20:16:57 +01:00
33e2dca864 13.1.05 version et changes 2024-02-10 20:16:01 +01:00
a890a70beb branche v13 2024-02-10 20:09:16 +01:00
e92c709796 13.1.05 Corrige la fonction deleteValue de la classe dot 2024-02-10 19:48:35 +01:00
bcf75ebfbd changes 2024-02-10 17:24:31 +01:00
c8a6a21f9c 13.1.04 Changes 2024-02-10 17:20:05 +01:00
a176556081 13.1.04 Fix bug dot class 2024-02-10 17:13:35 +01:00
949373b39e Changes 2024-02-06 20:21:13 +01:00
e26beac06c 13104 Protection supplémentaire dans jsonDB 2024-02-06 20:08:40 +01:00
4bfc75288f 13.1.04 Evite la redirection vers une page d'erreur après un login 2024-02-05 20:40:12 +01:00
d1e4c9761f 13.1.04 Journalise l'erreur de mise à jour 2024-02-03 18:59:39 +01:00
dbafb6f4bb Merge tag '13.1.04' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 13104 2024-02-03 18:44:55 +01:00
7ad8e3ea05 13.1.04 feuille de style absente de l'index de l'installation 2024-02-03 18:44:15 +01:00
e142f961d9 "Mettre à jour" devient "Mise à jour" 2024-02-03 09:49:30 +01:00
5c97b5cea6 "Mettre à jour" devient "Mise à jour" 2024-02-03 09:35:52 +01:00
d21cfcba78 13.1.04
Changes
Nettoyage des commentaires
2024-02-03 08:27:07 +01:00
c9300e5979 13.01.04 Version et change 2024-02-03 08:08:44 +01:00
8cefdd027d 13.1.04 Bascule en banche de test
Update : checkwrite by file
2024-02-03 08:02:32 +01:00
c3ade0fe0f 13.1.04 new gitignore 2024-02-02 18:03:24 +01:00
d3284c67d8 new gitignore 2024-02-02 17:57:10 +01:00
6b3085ef27 13.1.04 Evite une notice quand la capture Open Graph est indéfinie 2024-02-02 17:47:01 +01:00
748e6d0873 13.1.04 Supprime un point terminal 2024-02-02 17:39:33 +01:00
a9abe8aaa1 update, erreur à l'étape 3 sans message : Erreur de parsing javascript 2024-02-01 18:57:38 +01:00
1fbf91a9cb changes 2024-01-31 18:03:43 +01:00
9485ebe4cb Merge branch 'master' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS 2024-01-31 18:02:02 +01:00
88e7cb8761 warning user forgot 2024-01-31 18:01:43 +01:00
857a6ff808 Opérateur booléen nouvelle version sans le type 2024-01-31 14:36:23 +01:00
2d6bbcec9e User Edit Désactive l'édition des tags pour les membres 2024-01-27 16:32:16 +01:00
748bb3befb Url relatives 2024-01-27 16:24:47 +01:00
29d6b1c758 changes 2024-01-26 16:35:19 +01:00
696ca111b7 13103 Bug Date siteContent 2024-01-26 16:34:01 +01:00
a8381b4c18 13103 changes 2024-01-19 15:14:36 +01:00
0895abc30b Double variable Blog date 2024-01-18 19:19:50 +01:00
3539c3b04e warning user forgot 2024-01-18 18:33:12 +01:00
77aa46f753 Markdown in TinyMCE 2024-01-18 15:31:37 +01:00
42ef876963 Changes 2024-01-17 18:35:53 +01:00
3bfcaa4187 Thème fonte Améliore le code discrimant les fontes utilisées et prend en compte le thème admin 2024-01-17 18:27:21 +01:00
5a5e9dc72c Version et changes 2024-01-15 20:22:00 +01:00
4606d987b2 2024 2024-01-14 19:31:28 +01:00
b403816c88 Bug sitemap date format 2024-01-13 13:33:57 +01:00
470c017184 layout pour les memebres simples uniquement 2024-01-08 14:56:32 +01:00
0720db7b17 User edit profil select current value 2024-01-08 14:42:19 +01:00
1a61f34c19 changes 2024-01-07 19:53:30 +01:00
94eda284ed 13.1.02 fix add user language + changes 2024-01-07 16:18:44 +01:00
9ae67cd2f3 Sauvegarde des fontes installées 2024-01-06 23:17:45 +01:00
b6b5461241 fonte nettoyage des majuscules et des espaces dans l'id de la fonte 2024-01-06 16:19:31 +01:00
9fac118004 fonte installée ou importée 2024-01-06 16:04:15 +01:00
92c7384816 Fix mauvais message fonte en ligne 2024-01-06 15:48:43 +01:00
9be5dab828 changes 2024-01-06 09:29:48 +01:00
c6ae372429 Bug fonte delete 2024-01-06 09:26:40 +01:00
22e0b71012 Bug ajout de fonte 2024-01-05 20:49:23 +01:00
f0bec949bb charge les fontes avant tout + fontedit readonly 2024-01-05 20:30:43 +01:00
0d42ca0740 Fonte edit id disabled 2024-01-05 00:17:39 +01:00
18228b1b8e Fix pb de chemin pour les rédacteurs avec droit RFM 2024-01-04 23:54:40 +01:00
824ab8401a Bug chemin profil 2-2 2024-01-04 22:03:26 +01:00
7249abc649 File cloud download icon 2024-01-04 16:46:19 +01:00
5336720809 Supprime un point final 2024-01-03 16:33:19 +01:00
3a7e4e8db6 Fonte : datatables
supprime image map
2024-01-03 00:12:33 +01:00
51cc6b41a7 13.1.02 fontes 2024-01-03 00:03:36 +01:00
38b3a72c92 Changes 2023-12-30 21:41:23 +01:00
fb79bce39c move autoload 2023-12-24 14:30:12 +01:00
2c6b29747a Numéro de version 2023-12-20 19:14:23 +01:00
fd28afdd80 nettoyage getPermission 2023-12-20 17:37:07 +01:00
032a150b11 Blog et news uniformisation 2023-12-20 13:43:32 +01:00
c34e249cd0 blog changes 2023-12-20 13:02:48 +01:00
953ba662e8 7.4 bouton de retour 2023-12-20 13:00:50 +01:00
e79ef549d6 News col hors du test 2023-12-20 12:54:31 +01:00
5459aae163 News tiret et espaces 2023-12-20 12:47:39 +01:00
a3145fbd00 news 5.3 2023-12-19 19:20:20 +01:00
bd04f94c76 news : Un espace manquant 2023-12-19 19:19:46 +01:00
74da56e58d News 5.3 option du bouton de retour et contrôle des options de mise à jour 2023-12-19 19:09:13 +01:00
b26e7dcb7d Dans config lien vers identité du site 2023-12-19 18:32:28 +01:00
3cee46072b Espace avant le ? 2023-12-19 17:30:28 +01:00
b590f91534 Corrige les droits rfm pour les membres et plus 2023-12-14 14:43:51 +01:00
10e6822ad5 changes 2023-12-14 13:55:56 +01:00
9944a192e2 Fix doublon 2023-12-14 10:33:17 +01:00
8ad50b10dd Fix doublon 2023-12-14 10:31:33 +01:00
ee90649833 Corrige savelog 2023-12-14 09:29:04 +01:00
a4601da9e0 datatables user buttons 2023-12-09 18:01:49 +01:00
b1fcd4ecc8 paragraphe sous le bloc 2023-12-07 14:22:00 +01:00
e110eba5d8 RFM Support markdown 2023-12-07 14:02:52 +01:00
30e602adc2 13101 supprime le choix du thème à l'installation 2023-12-05 12:36:10 +01:00
1989d642fc changes 2023-12-05 11:07:08 +01:00
1a3413f702 user pagination 2023-12-03 19:54:21 +01:00
b61d78dbaa Protection des profils utlisés 2023-12-01 16:25:45 +01:00
a0dca415b5 fix profil edit permanent 2023-12-01 15:45:59 +01:00
88fd7e5d49 fix edit profil 2023-12-01 15:20:24 +01:00
0253e55de2 changes 2023-12-01 10:15:48 +01:00
bff6911bb4 Encore changes 2023-12-01 10:11:09 +01:00
4542f9f9b2 changes 2023-12-01 10:10:28 +01:00
323ff59b41 Version 13.1.00 2023-12-01 10:06:46 +01:00
590d36ede2 Étiquettes 2023-11-30 14:29:48 +01:00
a7cc6ee6d0 count valide rôles 2023-11-30 14:26:19 +01:00
ad1edcf9a2 incorpore datatables.net 2023-11-30 13:52:22 +01:00
eeb96186c1 users : Filtre et import 2023-11-30 13:30:10 +01:00
2e839715b5 small size screen header cover 2023-11-29 18:07:21 +01:00
548fd25756 Merge branch 'master' into 13009 2023-11-29 14:12:01 +01:00
ff2fbcddef changes 2023-11-29 14:10:36 +01:00
022bc9ce7b met à jour le site map à l'ouverture de l'édition 2023-11-29 13:52:39 +01:00
cbe5dc9376 back error pages 2023-11-25 22:36:31 +01:00
de564c31a0 permissions 13009 2023-11-25 21:52:23 +01:00
8927026ee4 back to home icon 2023-11-21 12:00:42 +01:00
3cda662220 template select 2023-11-21 11:56:37 +01:00
f9f55be851 Profil de l'admin manquant à l'installation 2023-11-15 14:10:02 +01:00
05da19288e Uniformisation variable de contenu avec LMS 2023-11-15 10:28:26 +01:00
d2efd48aea Petites corrections 2023-11-15 09:35:40 +01:00
3028fc13cd Changes 13.0.09 2023-11-15 09:29:16 +01:00
14bc21f3d5 slider 6.2 sécurité de profil 2023-11-15 09:23:41 +01:00
b23b1f2e06 RFM Dialog Deprecated 2023-11-14 15:49:52 +01:00
7a75eb3472 tinymce gen page title 2023-11-14 15:39:38 +01:00
2cff4db256 changes 2023-11-12 18:28:01 +01:00
666b564215 fix bug sitemap 13008 2023-11-12 18:23:52 +01:00
f46b7ea0e4 Tinymce toolbar 2023-11-11 17:55:18 +01:00
b2134f1841 site map empty site 2023-11-09 14:42:34 +01:00
7b76ab131f bug sitemap empty site 2023-11-09 14:41:33 +01:00
0b7c7678bd tinymce toolbar 2023-11-09 13:52:00 +01:00
b967a09aa5 tinymce tool bar 2023-11-09 13:49:22 +01:00
ca1ee90f52 reset error message 2023-11-09 10:56:51 +01:00
65b62c7b5a user reset error notification 2023-11-09 10:43:13 +01:00
4176043958 Forçage de mot de passe si vide + redirection après reset 2023-11-09 09:51:52 +01:00
28927ad747 Tiny Tool bar 2023-11-08 18:45:03 +01:00
92d0618907 tinymce add fullscreen 2023-11-08 18:17:50 +01:00
a9f3e1ba26 user forgot not displaying unknown user 2023-11-08 17:48:02 +01:00
e0ba8a81fe forçage de mot de passe 2023-11-08 09:50:39 +01:00
ad9a1120f4 Merge branch 'master' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS 2023-11-08 09:05:07 +01:00
8619b49d19 submit 2023-11-08 09:05:01 +01:00
409e10fad1 changes 2023-11-07 21:49:39 +01:00
a7b4ea2d15 user forçage mot de passe par admin 2023-11-07 21:48:37 +01:00
cd0d35279e login reset submit size 2023-11-07 19:19:26 +01:00
f25b1a1154 Traduction des sélecteurs de tables 2023-11-07 12:02:28 +01:00
bf2ddaef9f Profil Charge les dialgues des modules 2023-11-07 11:25:41 +01:00
ca732f3ca6 Terme profil carrousel 2023-11-07 11:11:06 +01:00
9ffdfd25d0 Termes profils 2023-11-07 11:04:58 +01:00
aadcb23282 Terms and layout form profil 2023-11-07 10:59:08 +01:00
bc817b750e Layout profil gallery 2023-11-07 10:13:52 +01:00
2e76d9d305 Termes de profils gallery 2023-11-07 10:10:20 +01:00
9300ab9640 News et Blog termes de la gestion des profils avec traductions 2023-11-07 08:47:55 +01:00
3753808b98 13.0.07 changes 2023-11-06 21:26:16 +01:00
446ad40f96 TinyMCE deux barres d'outils 2023-11-06 21:24:08 +01:00
fb18127346 Pb de profil News 2023-11-03 17:59:55 +01:00
26623db2b7 Adapte le message lors de la mise à jour 2023-11-03 11:41:59 +01:00
1a27befb75 Enlève les mentions ZwiiCMS de l'installation et de la mise à jour 2023-11-03 11:26:43 +01:00
e2e261e01b changes 2023-11-03 10:46:17 +01:00
713b5ebb96 fix store unavailable 2023-11-03 10:42:00 +01:00
7ab84f63c9 fix plugin backup to filemanager
Changes
2023-11-02 20:41:27 +01:00
79efa1f1a9 fix blog enum 2023-11-02 15:09:19 +01:00
1570d71470 slider 6.1 2023-11-02 15:07:29 +01:00
da03bcfa5b Repo update name 2023-10-28 23:36:06 +02:00
eca93bc3af Date de version des fichiers de langue 2023-10-26 11:36:05 +02:00
fbfb97bf14 version core 2023-10-26 11:00:43 +02:00
67452ceb8d Merge commit 'abf920ea364f9061513ae1a73ddab32f61b4659b' 2023-10-26 10:59:44 +02:00
abf920ea36 cconfiguration 2023-10-26 10:52:09 +02:00
9390809f6b Erreur de notification configuration du site 2023-10-26 09:40:22 +02:00
a5737b7553 13007 ordre des boutons de login 2023-10-22 12:03:13 +02:00
8fca6e2485 change typo 2023-10-20 17:15:55 +02:00
1702bcef88 change 13006 2023-10-20 17:13:21 +02:00
ef4c0cdd45 Merge branch 'master' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS 2023-10-20 17:11:58 +02:00
4dbd5292bc 13005 fix warning var nextPage previous Page 2023-10-20 17:10:46 +02:00
2784ad2209 Merge branch 'master' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS 2023-10-20 17:10:00 +02:00
19a60d9e76 corrige le fonction signature blog 7.2 2023-10-20 17:09:51 +02:00
73223780a1 fix admin color button 2023-10-20 17:09:51 +02:00
fc8b05efca 13005 fix warning var nextPage previous Page 2023-10-20 17:07:47 +02:00
13f236ea03 Supprime les largeurs d'écran en pourcentages 2023-10-17 21:49:43 +02:00
8372ee2ad2 corrige le fonction signature blog 7.2 2023-10-14 15:04:52 +02:00
d1efca6560 fix admin color button 2023-10-14 14:35:26 +02:00
78b05a211d version 2023-10-13 14:11:02 +02:00
fff6c3b086 filter admin 2023-10-12 19:25:20 +02:00
7878f972e5 filtre des profils admin 2023-10-12 19:03:40 +02:00
74f33031a8 changes captcha 2023-10-12 18:38:13 +02:00
eeb2f78770 move signature() into core 2023-10-12 17:49:12 +02:00
f24bd9a4b9 update admin theme width as site 2023-10-11 21:42:20 +02:00
251d98ea03 changes.md 2023-10-11 21:13:49 +02:00
c0963f90bd Fix virgule en trop 2023-10-11 21:11:58 +02:00
de41c5ac01 default send adress 2023-10-11 21:10:26 +02:00
6794db3719 default form localhost 2023-10-11 21:07:34 +02:00
5bba67c169 default theme width 960px 2023-10-11 21:02:27 +02:00
95ac9e7d28 Fix TinyMCE header h4 2023-10-10 22:05:29 +02:00
4d0a09cad0 admin width size 2023-10-09 20:32:12 +02:00
bad28659df filtre des membres 2023-10-09 19:38:35 +02:00
c21986a97e Install tel qu'avant 2023-10-06 17:33:54 +02:00
5ed49819ca changes 2023-10-06 13:36:27 +02:00
5660620685 Fix version readme 2023-10-06 13:30:58 +02:00
6c39349989 fix user edit comment 2023-10-06 09:52:38 +02:00
eea5e43149 fix profil empty path 2023-10-06 09:15:50 +02:00
a96bee2873 fix parofil add empty path 2023-10-06 09:15:21 +02:00
961fcb2ecd Fix sécurité profil filmaanager path empty 2023-10-06 09:09:43 +02:00
34aa4f4c25 fix user edit 2023-10-05 18:58:09 +02:00
17d1e7e4b4 fix user import template 2023-10-05 11:29:20 +02:00
a74f92a0a9 Position du bouton Submit dans la fenêtre de restauration 2023-10-05 10:53:35 +02:00
d160b5df52 Fix DateUTF8 Locale 2023-10-03 17:39:02 +02:00
26d55460fb changes 2023-09-30 13:41:42 +02:00
05106a0d18 branche adresse 2023-09-30 13:40:14 +02:00
0724114e96 fix checknewversion 2023-09-22 18:07:25 +02:00
4b7826b078 Fix checkNewVersion 2023-09-22 18:06:58 +02:00
497a51ea18 13004 supp gestion erreur étape 4 2023-09-22 15:50:06 +02:00
d682636992 Merge branch 'master' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS 2023-09-22 15:00:44 +02:00
2e556c175a changes 2023-09-22 15:00:17 +02:00
90d8f0b129 - Module blog Version 7.1 : permission lors de la validation d'un formulaire 2023-09-22 14:53:42 +02:00
b9e0e0db39 Module form 4.1 : corrige un email non envoyé après validation d'un formulaire. 2023-09-22 14:45:26 +02:00
f9a1982b16 couleur des liens 2023-09-20 18:36:29 +02:00
d5b52e78fc Supprimer les dossiers inutiles des modules 2023-09-20 18:25:37 +02:00
0cb4a00ca2 changes 2023-09-20 18:10:14 +02:00
036469232a Bug forgot password + changes 2023-09-20 18:08:38 +02:00
d7cdad6b6e déplacement de bloc 2023-09-14 21:18:23 +02:00
003fedcef5 Bouton édition des langues pour les admin 2023-09-14 21:14:43 +02:00
1d083f5f19 Déplacement du bouton langues à droite du sélecteur toujours affiché 2023-09-13 18:25:05 +02:00
2758ec5f1b Supprimer la gestion des données des modules 2023-09-13 17:48:59 +02:00
edc7a0b323 Enumération des modules 2023-09-13 17:45:27 +02:00
952bb60404 Libellé de l'erreur de module PHP 2023-09-13 17:30:25 +02:00
baffca39e6 Init 13003 2023-09-12 22:24:12 +02:00
a7a45b3c1c Nettoyage des appels direct à csrf()
Bug avec l'import de données de modules à corriger
2023-09-12 22:22:36 +02:00
d914c6f613 13002 bug bdd fonte 2023-09-08 20:51:35 +02:00
31910f6e94 13002 2023-09-08 20:49:11 +02:00
e2bd95780b typo 2023-09-05 09:08:24 +02:00
150ea0c02f Module 2.1 bug d'édition 2023-09-04 18:07:31 +02:00
1a07031e2a core version 2023-09-04 17:58:04 +02:00
da3e98e474 Icone devant les pages enfants 2023-09-03 19:01:42 +02:00
8363fdead5 chnages 2023-09-03 14:25:56 +02:00
af3345bdd2 change pour nav 2023-09-02 21:19:07 +02:00
7654446466 Supprimer l'aperçu du thème du site 2023-09-02 21:17:52 +02:00
21113f8ffd traductions nav button 2023-08-30 22:34:39 +02:00
036e18ba53 traductions nav 2023-08-30 22:29:17 +02:00
1d8836f230 Intégration module nav dans core 2023-08-30 20:02:23 +02:00
4d0af131cb Tinymce liens 2023-08-30 11:07:19 +02:00
16c0c466f6 tinymce relative url convert to true 2023-08-30 10:31:43 +02:00
047f107f66 Après édition de page retour à la page et non à l'accueil 2023-08-30 10:28:20 +02:00
5768638a2e tinymce colors 2023-08-30 10:09:44 +02:00
55c3badb40 enum navigation 2023-08-29 20:11:22 +02:00
63ef8f8f34 Déplace navButton 2023-08-29 19:52:11 +02:00
bf83bd85d2 Nav classe pour le positionnement 2023-08-29 19:03:45 +02:00
3da45bdacd Merge branch 'master' of https://forge.chapril.org/ZwiiCMS-TEAM/ZwiiCMS 2023-08-29 10:33:13 +02:00
fa3cc1bfa3 Simplification TinyMCE 2023-08-29 10:32:47 +02:00
1c9b42fc42 module navigation + icones 2023-08-28 11:04:53 +02:00
c4a4aeb1f3 slide secured 2023-08-28 11:02:38 +02:00
a2e1f16a86 supprimer le module download de la distribution 2023-08-28 08:56:45 +02:00
8651581fb5 remove from core 2023-08-27 23:14:25 +02:00
ba171115cd update language okay 2023-08-27 23:13:48 +02:00
0f1b4b3a85 test core update lang 2023-08-27 23:02:31 +02:00
7e2672bd46 update language in core 2023-08-27 23:00:00 +02:00
75ee6d3691 test update language in config 2023-08-27 22:56:07 +02:00
49e0379cfd test update language on update 2023-08-27 22:51:44 +02:00
7684f8eb89 supprimer le test de mise à jour de langues 2023-08-27 22:43:20 +02:00
f87e0677aa Merge branch 'master' of https://forge.chapril.org/ZwiiCMS-TEAM/ZwiiCMS 2023-08-27 18:16:32 +02:00
aee11cb237 Renomme le fichier et le dossier fonts dans data 2023-08-27 18:14:42 +02:00
9029a94be1 Supprime le message d'erreur sur la réécriture à l'étape 4 2023-08-27 18:14:15 +02:00
87c5ba2024 Bug affectation checkwrite 2023-08-27 17:46:20 +02:00
a5018c438b 13.0.00 2023-08-27 17:11:58 +02:00
8560e967c2 build 19 2023-08-20 16:03:49 +02:00
0f67af5f11 Mise à jour de traductions 2023-08-20 15:57:01 +02:00
d226331f19 Avertissement sur suppression de profil 2023-08-20 15:23:35 +02:00
fc5630f3aa Meta image 2023-08-18 08:53:17 +02:00
ea7c39bf14 Merge branch '13000' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 13000 2023-08-14 17:51:57 +02:00
b85c5e392b build 18 2023-08-14 17:48:57 +02:00
5ff93c45d6 Encore container light + update étape 4 2023-08-14 17:48:21 +02:00
0d09fee84c Update étape 4 2023-08-14 17:28:40 +02:00
2e3769971b Merge branch '13000' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 13000 2023-08-14 14:09:15 +02:00
e4d1ab4440 Input light container 2023-08-14 14:09:02 +02:00
b5c92a6a1d Build 17 2023-08-14 12:12:36 +02:00
9cbe14fd8f Traduction Poids 2023-08-14 09:32:09 +02:00
955935f0ce Indications coloreés sur la conformité de l'image open graph 2023-08-14 00:49:23 +02:00
eb92745950 Revert "Share folder"
This reverts commit 7f92710ec2.
2023-08-13 08:02:43 +02:00
f9369cee0e Revert "Mise à jour site/file"
This reverts commit 02e66468f2.
2023-08-13 08:02:38 +02:00
ccafb3e8e4 Merge branch '13000' of https://forge.chapril.org/ZwiiCMS-TEAM/ZwiiCMS into 13000 2023-08-12 21:49:19 +02:00
7f92710ec2 Share folder 2023-08-12 21:49:08 +02:00
02e66468f2 Mise à jour site/file 2023-08-12 21:43:02 +02:00
a667b0370d Remplace l'api opengraph par un sélecteur 2023-08-12 21:34:38 +02:00
ce1c3a852a build 16 2023-08-11 22:31:49 +02:00
19de4af4e7 Merge branch '13000' of https://forge.chapril.org/ZwiiCMS-TEAM/ZwiiCMS into 13000 2023-08-11 22:29:49 +02:00
a21517ed2e Libellé permissions 2023-08-11 22:29:47 +02:00
02ceb0e0bd Animations des options de commentaires et de catégories 2023-08-11 22:28:31 +02:00
ca341f6f6c Profil position des champs edit et add 2023-08-09 20:19:06 +02:00
b2a73203ed Introduit le tableau de bord sans le publier 2023-08-08 20:55:42 +02:00
0fd9ff177e Suppression de la variable accessExclude 2023-08-08 19:44:17 +02:00
cc90fc2273 Traduction des données des profils, nom et commentaire 2023-08-08 18:15:16 +02:00
07aa29e4bc Libellés des profils par défaut et traductions 2023-08-08 18:04:39 +02:00
64ae2817a0 aide sélecteur de profil 2023-08-08 17:46:05 +02:00
724ade6971 Edition impossible du profil de rang 1 2023-08-08 17:44:44 +02:00
e4717f0e6d deshboard 2023-08-07 20:28:38 +02:00
da1d28da2a tri du tableau des modules 2023-08-07 20:28:27 +02:00
f2948915b8 rien de spécial 2023-08-07 20:28:09 +02:00
7b6922cfe0 Supprimer multilingue 2023-08-07 20:08:48 +02:00
c76b4c3f30 build 14 2023-08-06 22:37:17 +02:00
9fda66c29a bug copie de langues 2023-08-06 22:31:44 +02:00
781d9a5e24 bug de branche 2023-08-06 22:14:25 +02:00
6fdc6020a0 correct timestamp 2023-08-06 22:05:22 +02:00
ad23734411 Restaure les fichiers de langues 2023-08-06 21:58:07 +02:00
e48f3e2334 Modules nettoyés 2023-08-06 21:55:13 +02:00
c6019faa0e build 13 2023-08-06 11:22:41 +02:00
20cab1770b supprimer un écho 2023-08-06 11:21:08 +02:00
58db7a75fa Language : branche v13 2023-08-06 11:17:36 +02:00
b40ab119c4 NOuvelles traductions 2023-08-05 18:02:18 +02:00
9b474de209 download 2023-08-05 17:18:32 +02:00
0ce3c1f131 Traduction de profil 2023-08-05 17:16:18 +02:00
97ec7d756b couleur de bannière light forcée 2023-08-05 16:25:27 +02:00
0a13e35413 Balise sémantique main 2023-08-05 16:20:19 +02:00
112579c9d2 .12 ordre des profils 2023-08-05 14:50:20 +02:00
d2e3dfe700 Ordre des profils 2023-08-05 14:50:05 +02:00
b13a5a5043 Constante MAX_PROFILS 2023-08-02 22:25:07 +02:00
be53996c7f build 13 2023-08-01 20:56:20 +02:00
3bea31ea12 Vérifie si les dossiers existent avant d'appeler deleteDir() 2023-08-01 20:51:28 +02:00
3e1aed8641 Support images avif si la fonction est disponible 2023-08-01 20:37:23 +02:00
27bb3de75c Console.log 2023-07-31 20:24:04 +02:00
040785408c v13 2023-07-31 20:21:36 +02:00
ef25c9c153 branche de test 2023-07-31 20:12:10 +02:00
6823ce3dc8 Réorganise étape 4 2023-07-31 20:06:15 +02:00
78f7a1c063 update mauvais etape d'erreur (retour erreur ajax) 2023-07-31 14:59:00 +02:00
fe3f767697 Attribut alt pour les RS du pied de page build 10 2023-07-31 14:45:22 +02:00
7398ceb5ef 0.9 Login, couleur de la bannière d'erreur 2023-07-31 14:13:26 +02:00
ebbf7d2e41 Exclure i18n htaccess du pre check 2023-07-31 11:17:00 +02:00
35cfb1a78f bug de mise à jour depuis 11 2023-07-29 17:18:33 +02:00
e5aa333b13 libellé 2023-07-29 14:52:14 +02:00
1dfbb9361f autre test avec le curseur en wait mais dans jquery 2023-07-28 16:14:49 +02:00
06fd8a15d8 gestion curseur en test 2023-07-28 16:07:33 +02:00
efe74087f7 build .8 2023-07-28 15:01:48 +02:00
9dd7efeeb6 build .08 2023-07-28 15:01:36 +02:00
22687433fa supprimer l'echo 2023-07-28 15:00:38 +02:00
c1396000d0 Décommente l'appel de la mise à jour 2023-07-28 14:44:06 +02:00
f67da9bd13 Installe le profil dans toutes les langues installées 2023-07-28 14:43:48 +02:00
6c55881789 Mise à jour des profils dans les pages 2023-07-28 11:14:13 +02:00
da03e95be9 Routage tient compte du profil 2023-07-28 11:13:51 +02:00
fa4fb40872 Les pages gèrent les profils 2023-07-28 11:13:31 +02:00
03504a6402 N'utilise pas de constante 2023-07-28 11:12:58 +02:00
0ca6c2913a déplacer le chargement de la mise à jour et ajoute le routage avec le profil 2023-07-28 10:58:42 +02:00
840b962d55 nettoyage de libellés 2023-07-28 10:55:33 +02:00
3bc31b9d73 user edit permanent sauf si position 1 2023-07-27 09:34:55 +02:00
7168174c39 ajout et édition de profil, propriété permanent 2023-07-27 08:01:10 +02:00
2944363e29 version 2023-07-26 17:19:03 +02:00
0e2295a8aa Les profils permanents ne sont pas effacables 2023-07-26 17:17:39 +02:00
ead8d63525 default avec propriété de profil delete 2023-07-26 16:58:32 +02:00
50bce3d8c5 div manquant 2023-07-26 14:52:15 +02:00
5eb277f501 build 6 2023-07-25 19:37:00 +02:00
cde775bded defaultData 2023-07-25 19:34:55 +02:00
2d9e6d211c remove extract 2023-07-25 19:32:46 +02:00
d133346e84 i18n slider 2023-07-25 19:32:11 +02:00
f1d5871957 slider 2023-07-25 19:21:29 +02:00
c70d1e083a Suppression de libellés 2023-07-25 19:14:59 +02:00
ff42c6a433 nouvelles chaines 2023-07-25 19:05:14 +02:00
4b7d80aced échec 2023-07-25 16:13:10 +02:00
e8b76b774b Merge branch '13000' of https://forge.chapril.org/ZwiiCMS-TEAM/ZwiiCMS into 13000 2023-07-25 16:07:15 +02:00
5632f91d34 erreur de texte 2023-07-25 16:05:36 +02:00
a09ae7bfce erreur de texte 2023-07-25 16:05:03 +02:00
6c75eba8f2 doublons 2023-07-25 11:20:38 +02:00
c8d83033a7 éditeur 2023-07-25 11:12:35 +02:00
88333ef673 Form 4 pb de date 2023-07-25 11:07:55 +02:00
53c62a2301 13.0.00.5 2023-07-25 10:15:30 +02:00
047013d031 Libellé de module 2023-07-25 10:08:14 +02:00
733ef26509 Aide dans tinymce 2023-07-25 10:05:02 +02:00
813d78d9b4 rectificatifs de libellés blog et download 2023-07-25 09:45:02 +02:00
1c20abd750 une ligne vide ajoutée 2023-07-24 21:26:24 +02:00
016a809022 module Carrousel 2023-07-24 21:18:56 +02:00
3e53329646 build 4 2023-07-24 18:36:48 +02:00
c0e3a0c96e Supprime un test 2023-07-24 18:32:41 +02:00
7d26d202e2 Accent 2023-07-24 18:31:43 +02:00
9b59393ad2 download bug + la validation de l'édition d'un profil revient à la page de saisie 2023-07-24 18:30:10 +02:00
6ac06f669b Permission : liste de modules non fixes 2023-07-24 18:22:24 +02:00
2e81467326 download, des bugs 2023-07-24 18:21:44 +02:00
ccec25d46b typo 2023-07-24 18:01:11 +02:00
1387bfae25 Download mise en forme 2023-07-24 18:00:25 +02:00
f1ab4f3c80 download changes 2023-07-24 17:35:02 +02:00
8cac9eae8b download
- ajout du module pour les tests mise aux - normes php 8.2 et
- ajout des contrôles de profil. Setup devient option
2023-07-24 17:34:46 +02:00
ecf0df8d5d gallery caractère en trop 2023-07-24 17:31:59 +02:00
f64fdce167 changes 2023-07-24 13:23:45 +02:00
68baee6d33 version 2023-07-24 13:14:13 +02:00
ee03f49920 La langue est initialisée à la création 2023-07-24 13:13:28 +02:00
46a3d36986 message d'erreur avec l'étape 2023-07-24 11:32:58 +02:00
ca3d331719 update : ordre des messages 2023-07-24 11:25:26 +02:00
a485913372 config position des boutons 2023-07-23 22:21:33 +02:00
de58ddcd07 bug des langues non installées 2023-07-23 22:17:04 +02:00
a6b9e55a34 installation bug avec une langue qui n'existe pas dans la distribution 2023-07-23 21:57:19 +02:00
09a8d2c626 language to translate 2023-07-23 21:41:24 +02:00
accc950511 13.0.00.2 2023-07-23 18:55:17 +02:00
2d9d8faa3d Génére des erreurs 500 en cas d'erreur 2023-07-23 18:51:35 +02:00
c0a02874f8 génére une erreur 500 à l'étape 2 2023-07-23 18:41:15 +02:00
82786c6937 Détailler l'étape 2 + effacer fichier tar et tar.gz 2023-07-23 18:33:10 +02:00
a5af8068ef amélioration js 2023-07-23 18:23:33 +02:00
c03ccd2cf7 étape 2 2023-07-22 22:46:38 +02:00
ceae2be327 bug 2023-07-22 22:44:49 +02:00
b86bf1d7c0 amélioration étape 2 2023-07-22 22:43:53 +02:00
170c8a6be3 test install 2023-07-22 22:38:55 +02:00
2c6ab43006 succes false dans install 2023-07-22 22:25:36 +02:00
1a6d98d8a1 update corrigé et affichant des messages corrects 2023-07-22 22:22:40 +02:00
359193f1a6 controle la longueur du message dans le traotement de l'erreur pendant une mis eà jour 2023-07-22 21:15:47 +02:00
aadd51f4d6 changes 2023-07-22 21:13:55 +02:00
d4a3d67693 désactive l'appel de l'erreur dans success 2023-07-22 19:21:07 +02:00
b84b3b4dde console.log errors et filtrage de la taille de la longueur du message 2023-07-22 19:18:03 +02:00
6c2534df81 exclure les icones 2023-07-22 19:02:10 +02:00
b4f9ac45a7 test attributezwiico lors de l'installation 2023-07-22 18:45:23 +02:00
29d696bdb4 mis en console des erreurs 2023-07-22 18:29:44 +02:00
2127d5ca16 Désactive les couleurs définies dans le thème pour la fenêtre light 2023-07-22 18:11:45 +02:00
f34acde600 couleur d'arrière plan pour la fenêtre admin 2023-07-22 17:38:13 +02:00
eb54510036 unset light container backgrounbd color 2023-07-22 17:29:00 +02:00
65003dcc98 messages d'erreur traduits dans l'installateur 2023-07-22 17:21:17 +02:00
479c13a994 $message vide 2023-07-22 16:57:34 +02:00
48a88e212c meage erroné 2023-07-22 10:04:07 +02:00
a58a65b5cf consoloe.log dans le js de l'installation et changes.md 2023-07-22 10:02:40 +02:00
e18e149b9b simplification retour de message et de succes étape 4 update 2023-07-22 09:56:56 +02:00
c28b0590c2 Update étape 3 n'envoie plus de message texte 2023-07-22 09:54:26 +02:00
88ead8b16b argument null 2023-07-22 09:45:23 +02:00
8b6ef5f03f Permissions intégrées aux codes des modules 2023-07-21 21:53:46 +02:00
efa82f4a9c Les permissions des modules sont intégrées au code du module. 2023-07-21 21:48:41 +02:00
81448227f9 changes 2023-07-19 19:39:23 +02:00
c6f3a2e83d Groupe MODERATOR, compatibilité avec les anciens modules 2023-07-19 18:57:58 +02:00
d7e4e424a2 langues 2023-07-19 18:09:40 +02:00
fec70444ee deleteDir 2023-07-19 18:07:12 +02:00
529f86c873 renommer module/translate en module/language 2023-07-19 18:03:00 +02:00
724c9fe521 bug d'e téléchargement d'une langue 2023-07-19 17:56:19 +02:00
6cf511e6b7 désactive l'auto récupération des dialogues 2023-07-19 17:56:03 +02:00
79cc6137ad authorizations 2023-07-19 17:17:16 +02:00
b7655ec501 Libellés et traductions du profil 2023-07-19 10:30:41 +02:00
587bb0fab2 variable de session inexistante 2023-07-19 09:32:36 +02:00
86550e62ff libellé 2023-07-19 09:28:26 +02:00
1d165e8b71 ZwiiCMS Installation *+ fichiers de langue 2023-07-18 22:35:41 +02:00
e242d7ecab Correction paramètres null dans getHierarchy et effacement des données de session et de cookies relatif aux langues lors de la réinstallation 2023-07-18 22:26:07 +02:00
d13b01791b Encore initData et une amélioration du contenu des pages par défault en anglais et en espagnol 2023-07-18 22:09:28 +02:00
7e7d1f1f43 Amélioration de defaultdata 2023-07-18 18:50:19 +02:00
ef7cd70c5f nouveau initData 2023-07-18 16:04:45 +02:00
106387fab8 Initialisation WIP 2023-07-18 11:19:53 +02:00
8bf2d89906 warning à l'installation 2023-07-18 11:14:22 +02:00
54de5c4258 Améliore l'installation en évitant les erreurs de chargement 2023-07-18 00:16:39 +02:00
f4c386daf2 virgule dans sendmail 2023-07-16 18:47:50 +02:00
89f21660c3 bug install 2023-07-16 18:14:19 +02:00
5e2687bd44 Affichage correct des commentaires liés aux profils 2023-07-07 19:03:41 +02:00
690f8f1739 Rédacteur 2023-07-06 17:31:16 +02:00
13af9832f7 Merge branch '13000' of https://forge.chapril.org/ZwiiCMS-TEAM/ZwiiCMS into 13000 2023-07-06 17:05:08 +02:00
5eb78c0ed9 accent manquant 2023-07-06 17:04:54 +02:00
92c8c0a653 Groupe MODERATOR devient EDITOR 2023-07-05 18:04:42 +02:00
a1096af3de Mise à jour des membres le profil vaut 0 pour les types membres et moderateurs 2023-07-05 18:00:20 +02:00
0fe4c582a1 Le profil des memebrs sans profil (bannis, visiteurs et admin, vaut 0) 2023-07-05 17:58:01 +02:00
f915c591fa mise à jour des membres depuis versions précédentes 2023-07-05 17:57:18 +02:00
9f6202e639 Check Modules 2023-07-05 17:34:55 +02:00
433342c2a8 numéros de version 2023-07-04 19:31:34 +02:00
b72f16cb52 Bug sauvegarde plugins 2023-07-04 19:27:49 +02:00
befbd1438d update enums 2023-07-04 19:27:22 +02:00
18f00cbe3c Durcissselment des contrôles 2023-07-04 19:03:27 +02:00
38ed0dc1aa Fix bugs pages 2023-07-03 19:49:39 +02:00
2cabb31734 Ajoute le nom du profil dans la liste des utilisateurs 2023-07-01 19:18:40 +02:00
3af3db940c Fix show filemanager icon 2023-07-01 19:04:39 +02:00
dabc0a4c2e Permissions sur le bouton mon compte 2023-06-30 09:26:41 +02:00
ac0a51a8b5 Erreur de booléen 2023-06-30 09:15:15 +02:00
ebf143002c Erreur de booléen 2023-06-30 09:09:39 +02:00
08e8c3fa2c Force obtention des permissions à chaque isPost 2023-06-29 17:01:27 +02:00
101da263fd Implémentation des sécurités à tester 2023-06-29 10:30:12 +02:00
b7d1f9e1f1 Check permission on delete 2023-06-29 09:43:31 +02:00
a22dc8b5ce Libellé du compte user 2023-06-29 09:34:33 +02:00
9fad0cdcc8 restaure le fichier router 2023-06-28 22:41:57 +02:00
1271185c5d Profil droit sur l'édition du compte 2023-06-28 22:34:37 +02:00
5fdcfdd7bd NOuveau modèle de profil qui commence à 1 et non 0 2023-06-28 18:12:37 +02:00
22dea7f64f Ajoute l'effacement de profil 2023-06-28 17:52:13 +02:00
23c015f696 Module delete supprimer le checkcsrf et change l'appel de la fonction profil 2023-06-28 17:51:48 +02:00
0ac0e9398b blog 6.9 2023-06-28 10:25:48 +02:00
5c87a74d7b Message Action interdite 2023-06-20 20:35:26 +02:00
8c8fd91c7e Formatage 2023-06-20 20:25:19 +02:00
54b858056f csrf translate 2023-06-20 20:21:45 +02:00
f262b661e9 Csrf Theme reset 2023-06-20 20:15:55 +02:00
adf0ac8f80 Page duplicate 2023-06-20 20:04:30 +02:00
3b8a2d5b03 Nettoyage session dans GET 2023-06-20 19:58:29 +02:00
f19afc81ed Nettoyage des sessions dans GET 2023-06-20 19:57:27 +02:00
982cf3bb9f supprimer echo 2023-06-20 19:44:46 +02:00
7cec74d5e3 Version 13000 2023-06-20 19:33:13 +02:00
30227c9362 checkcsrf 2023-06-20 17:58:58 +02:00
886ed303be La validation des options du blog ferme l'écran 2023-06-20 17:42:20 +02:00
3f43830154 Encore changes 2023-06-19 20:05:45 +02:00
229d521502 Exposition du code de session 2023-06-19 19:46:00 +02:00
0cd487f211 Libellés d'options 2023-06-18 17:35:54 +02:00
6214f6a363 Interdiction des suppressions depuis le module en sus du routage 2023-06-18 17:33:26 +02:00
95b7d1f74e Libellés et corrections d'erreurs dont accès implicite à la configuration sauf news et redirection 2023-06-18 16:57:11 +02:00
0b06e12ef9 Check profil edit save and add 2023-06-18 14:52:14 +02:00
fb2624bf7a déplace update en fin de constructeur de core 2023-06-13 20:59:10 +02:00
a38097391d remaniement de script d'installation 2023-06-13 20:58:39 +02:00
7b3e4cc67d textes personnalisés pour l'accueil 2023-06-13 20:58:17 +02:00
d0854b9302 Bug installation module non corrigé 2023-06-12 21:46:47 +02:00
240a3afd9e nettoyage 2023-06-12 21:44:24 +02:00
8aeddf77c1 Formulaire d'installation 2023-06-12 21:13:33 +02:00
1306097cab Bug initialisation des pages 2023-06-12 21:08:33 +02:00
a5b8a44c52 Encore les classes 2023-06-12 18:38:41 +02:00
6e4b2bab77 Simplification appel des classes 2023-06-12 18:15:46 +02:00
3b77620511 Blog 6.8 2023-06-12 11:45:03 +02:00
5b82100c30 profils des deux derniers modules 2023-06-12 11:13:57 +02:00
7d950f7f2c Profil module form 2023-06-10 17:21:16 +02:00
21fee2dbb1 Supprime des fonctions inutiles 2023-06-10 17:14:26 +02:00
b7fbf1f96f Animation pour l'ajout de profil 2023-06-10 17:06:08 +02:00
c2d531872d Profil gallery 2023-06-10 16:58:05 +02:00
48de07f997 Etat des checkbox liés à l'édition d'une page et aux modules dans l'édition et l'ajout 2023-06-05 18:31:16 +02:00
cca7530631 news profil 2023-06-01 20:08:11 +02:00
7aa6625e08 blog edit et add var 2023-05-31 20:44:47 +02:00
02a1870642 blog profil 2023-05-31 19:30:39 +02:00
ac2b29628d Blog 6.7 2023-05-30 21:06:26 +02:00
1dba8f3eb8 $suffix 2023-05-29 18:49:50 +02:00
de84e3471b Edit and Add to test profil 2023-05-29 18:43:30 +02:00
7c7c36a5e6 user comment okay 2023-05-29 09:18:32 +02:00
44581b4682 add afficher le commentaire de profil dans l'ajout d'un user 2023-05-23 20:47:27 +02:00
2fe0a8e7b1 commentaire des profils en cours 2023-05-21 18:04:32 +02:00
81d8eb54d0 pas de gestion des page spour les membres 2023-05-21 17:56:18 +02:00
663dfd12ec Filtrage page depuis moderateur
Groupe fixe en édition
2023-05-21 17:38:38 +02:00
9c44759f96 Editer et ajouter page permission 2023-05-14 22:59:24 +02:00
327bf0ddb6 Filtrage par profil 2023-05-14 22:38:18 +02:00
55f8e592c8 permission routage en test 2023-05-13 23:36:02 +02:00
56d7dbedfc Permissions des pages dans la barre 2023-05-13 23:19:55 +02:00
9b07bcf38e default de profil 2023-05-13 23:19:30 +02:00
94af270ca6 traitement de l'action en test 2023-05-13 23:16:09 +02:00
91b93bd220 actions inutiles 2023-05-13 23:15:51 +02:00
4af57f42b7 12400 getPermission 2023-05-11 19:31:20 +02:00
b4f5546a5f Structure des champs 2023-05-11 19:13:36 +02:00
cb909e41de libellés et liste de dossiers 2023-05-11 19:07:34 +02:00
faac5a6c43 erreru de clé chmod 2023-05-11 19:07:16 +02:00
06d5b30544 Liste des chemins d'accès 2023-05-11 18:46:46 +02:00
c57b0e26e5 jquery pour désactiver les sélecteurs de filemanager 2023-05-11 18:33:25 +02:00
ab46dd9ab2 Add profil 2023-05-10 16:58:56 +02:00
f2636c87d8 Profil RFM 2023-05-10 16:50:02 +02:00
4901cb9052 12311 2023-05-10 09:43:20 +02:00
a46848922f Merge branch 'master' into 12400 2023-05-09 23:44:51 +02:00
50a8b3a712 Merge branch 'master' of https://forge.chapril.org/ZwiiCMS-TEAM/ZwiiCMS 2023-05-09 20:52:16 +02:00
650fd20e0c webshell 2023-05-09 20:23:04 +02:00
23709679f2 webshell 2023-05-09 20:19:03 +02:00
d7069c8da8 webshell 2023-05-09 20:18:26 +02:00
19f1685d8a Config RFM à tester 2023-05-09 16:38:26 +02:00
71fd25f02c configuration RFM à tester 2023-05-09 16:34:45 +02:00
fde15d6946 Merge branch '12311' into 12400 2023-05-09 15:19:10 +02:00
857fa447a1 12311 Création d'un langue par un visiteur 2023-05-09 15:03:56 +02:00
4b34c1664d Merge branch 'master' into 12400 2023-05-09 14:56:01 +02:00
35a74f02b6 changes 2023-05-09 14:29:42 +02:00
c71d68aae6 changes 2023-05-09 14:17:56 +02:00
02fb491f9b Désactive TUI Image éditeur 2023-05-09 09:13:00 +02:00
9baf47f86c Restore ajax_call 2023-05-09 09:04:17 +02:00
2048562006 Edition user sélection langue par défaut 2023-05-09 09:01:26 +02:00
b408c9d192 config RFM WIP 2023-05-09 08:58:57 +02:00
2ce3efb4fb add and edit profil WIP 2023-05-06 19:52:33 +02:00
da2c0b6440 add Okay 2023-05-03 22:59:15 +02:00
2a87b98d9a Forçage sauvegarde JSON object 2023-05-03 19:47:37 +02:00
aa2d5f0f06 Merge branch '12310' into 12400 2023-05-03 00:34:01 +02:00
8d5e8ccbd3 Mise à jour RFM
Dialog.php
Vulnérabilité dans ajax_call.php
2023-05-03 00:32:41 +02:00
21a903b1e5 Ajout du profil d'un membre 2023-05-02 23:37:51 +02:00
ef8c10fae7 Merge branch 'master' into 12400 2023-04-28 22:09:10 +02:00
2842005297 12309 changes bug recherche 2023-04-28 22:07:41 +02:00
3bcff4b86f bug avec le module de recherche 2023-04-28 22:05:21 +02:00
6c877ed334 defaultdata update version 2023-04-28 19:05:14 +02:00
b7f7c3d1db changes 2023-04-28 18:55:27 +02:00
d98d986d4f 12.3.09 2023-04-27 09:31:19 +02:00
85789361f2 Merge branch '12309' into 12400 2023-04-26 22:57:30 +02:00
05c9e7aa9a changes 2023-04-26 22:55:58 +02:00
b54e5815ee 12309 Motorisé par est traduit 2023-04-26 22:54:33 +02:00
367e43d773 Merge branch '12309' into 12400 2023-04-26 22:11:18 +02:00
329c7a3ad4 Langues fichier 2023-04-26 21:51:35 +02:00
dde705805a 12309 test 01 2023-04-26 21:40:09 +02:00
9977fb8c3e destruction de session 2023-04-25 11:07:38 +02:00
465a9c5e03 un seul locale 2023-04-24 22:34:24 +02:00
4decb9b5d7 Merge branch '12309' into 12400 2023-04-24 22:30:41 +02:00
f235a65fe7 Nettoyage des anciennes installations 2023-04-24 22:28:53 +02:00
c4b2ebeea7 Merge branch '12309' into 12400 2023-04-24 21:57:23 +02:00
760907a67a Détruit la session au logout 2023-04-24 21:56:45 +02:00
c775d71642 Merge branch '12309' into 12400 2023-04-24 21:43:08 +02:00
bab9b3d9bc Défaut installation site fr 2023-04-24 21:40:48 +02:00
1a0f6b1721 Merge branch '12309' into 12400 2023-04-24 21:26:47 +02:00
4d0a1fd80b changes 2023-04-24 21:24:58 +02:00
c332460074 12.3.09 2023-04-24 21:24:41 +02:00
d47290df01 Changes 2023-04-24 20:47:32 +02:00
24550749b7 12309 Changement de la langue de site par défaut 2023-04-24 20:46:14 +02:00
63bb78a0fd Traduction 2023-04-24 19:56:15 +02:00
7111fdb532 Corrige le bug des modules orphelins non filtrés 2023-04-24 19:45:57 +02:00
cfac4034a3 12400 logs 2023-04-23 18:51:37 +02:00
fb43aed601 Merge branch 'master' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS 2023-04-23 18:00:13 +02:00
ce0faaf556 typo 2023-04-23 18:00:02 +02:00
7dfae68bb9 Merge branch '12308' into 12400 2023-04-23 07:50:14 +02:00
5fdb0c8ff5 Régénere la session à l'installation et au login 2023-04-23 07:39:40 +02:00
87024d284a Merge branch '12308' into 12400 2023-04-22 18:51:32 +02:00
28e8af3f1f Mise à jour : création du fichier .default dans la langue de site 2023-04-22 18:49:02 +02:00
e6ae059bfb 12308 2023-04-22 18:25:35 +02:00
35bba82fb0 update default languages versions 2023-04-22 15:53:30 +02:00
6a4fc3154b Merge branch '12308' into 12400 2023-04-22 15:51:56 +02:00
d39d8e7979 12308 langues du 22/4 2023-04-22 15:49:35 +02:00
b05ced6f0a Suppirme des tests inutiles 2023-04-22 15:38:39 +02:00
18058ed8ce Merge branch '12308' into 12400 2023-04-22 09:55:46 +02:00
eacb278566 12308 langue de site par défaut dans le menu translate 2023-04-22 09:53:04 +02:00
735057f4dd changes, ajout de default dans le lisez-moi et la structure des fichiers 2023-04-21 17:54:24 +02:00
5685fde159 Merge branch '12308' into 12400 2023-04-21 17:26:01 +02:00
08fd9894c6 12308 bug de la langue non sélectionnée 2023-04-21 17:25:24 +02:00
d97fe3316b 12308 bug de la langue non sélectionnée 2023-04-21 17:25:08 +02:00
b9998df747 Merge branch '12308' into 12400 2023-04-19 19:52:56 +02:00
1544b07132 12308 fix aucun module et langue non installée 2023-04-19 19:47:01 +02:00
388395f5e4 merge 12308 2023-04-18 20:42:51 +02:00
0895e51a0a Merge branch '12308' into 12400 2023-04-18 20:42:37 +02:00
fde15d4ae2 12308 pb de restauration de la langue fr par défaut 2023-04-18 20:37:15 +02:00
41070f809c Motorisé par 2023-04-17 20:44:36 +02:00
73556a40bb merge 12308 completed 2023-04-15 19:26:18 +02:00
820cc6c0b0 merge 2023-04-15 19:20:27 +02:00
d2be706829 Merge branch '12308' into 12400 2023-04-15 19:20:13 +02:00
d417ee0ce5 Initilaisation sessions de langue 2023-04-15 19:09:36 +02:00
a90f616423 12308 optimisation récupération données user 2023-04-15 19:03:28 +02:00
fc6729acfa changes 2023-04-15 13:41:21 +02:00
cac0c14ecd Merge branch '12308' into 12400 2023-04-15 13:34:01 +02:00
2b804a01dc Footer 2023-04-15 13:33:23 +02:00
48b5e2e63f Fenêtre de connexion de la langue du contenu 2023-04-15 13:06:20 +02:00
8a2faec55a body 2023-04-15 08:06:26 +02:00
02e8b77498 Theme et menu reverif ok 2023-04-15 07:51:45 +02:00
8ecaeaf4e7 Them footer WIP 2023-04-14 17:05:46 +02:00
e18aa2c49c theme site 2023-04-14 16:08:58 +02:00
575f0ec2b3 Theme body 2023-04-14 15:55:53 +02:00
5b7fcb7b3d Theme menu okay 2023-04-14 15:53:33 +02:00
6e94dd9cd9 12308 Thme bannière et menu 2023-04-14 15:40:26 +02:00
e985817582 theme menu WIP 2023-04-14 13:56:43 +02:00
8f61c40e13 Theme header 2023-04-14 12:57:24 +02:00
aaf35147b9 initData ok 2023-04-14 11:33:07 +02:00
ee295cf7dc initData presque ok 2023-04-14 10:11:13 +02:00
0d6d43381c nouveau initData 2023-04-14 09:00:15 +02:00
a66bc7d948 initData à terminer 2023-04-14 07:32:23 +02:00
c405994451 Installation d'un site à tester en espagnol 2023-04-13 15:45:02 +02:00
9ede4c38f2 Translate WIP 2023-04-13 11:09:53 +02:00
d98963fe9c maj des langues après une mise à jour. 2023-04-13 11:01:38 +02:00
6a85cae5ad Nettoyage translate 2023-04-13 10:50:00 +02:00
090f367da0 Merge branch '12308' into 12400 2023-04-13 10:28:52 +02:00
96f027d310 12308 check langue de contenu 2023-04-13 10:27:38 +02:00
aded5d5192 12308 confirmation suppression langue 2023-04-13 10:07:18 +02:00
eea007a037 Nettoyage okay 2023-04-13 07:25:07 +02:00
314db3505c 12308 install par session 2023-04-12 21:54:07 +02:00
095cab701a 12308 ZWII_UI and Install 2023-04-12 21:38:12 +02:00
b30a0037fc 12308 changes 2023-04-12 18:48:04 +02:00
5ee34dded5 12308 Session de langue sans console 2023-04-12 18:36:08 +02:00
be6649038e 12308 Session de langue 2023-04-12 18:35:46 +02:00
0e5f77daa5 $_SESSION WIP 2023-04-12 18:13:57 +02:00
17d4e7f3be Session WIP 2023-04-12 15:29:21 +02:00
52f25fe231 12308 Déplacement test 404 langue non sélectionnée 2023-04-12 15:02:35 +02:00
714396cbad Merge branch 'master' into 12400 2023-04-12 14:57:31 +02:00
cd2755dd5d typo 2023-04-11 19:15:29 +02:00
fb97570b96 redirection pour éviter une 404 d'une autre langue 2023-04-11 19:02:44 +02:00
25b9844197 Merge branch '12307' into 12400 2023-04-11 16:23:48 +02:00
a5ab6b772a 12307 lien vers une page d'une autre langue 2023-04-11 15:07:38 +02:00
b0f064dac4 changes password 2023-04-11 14:55:07 +02:00
c5fad6075c Caractères spéciaux dans le mot de passe 2023-04-11 14:53:39 +02:00
12e885796c core change 2023-04-11 13:17:55 +02:00
45eb9de2fc Form change 2023-04-11 13:15:37 +02:00
6eb9c37cad Forme change 2023-04-11 13:14:01 +02:00
b5911f609a form 3.9 pages orphelines dans la redirection 2023-04-11 13:08:40 +02:00
4e6f05fd29 changes + 404 sur langue étrangère 2023-04-11 11:54:21 +02:00
0b7ae77cfe Bug install okay 2023-04-11 09:42:11 +02:00
e718ff69f4 core test 2023-04-11 09:38:20 +02:00
0c5f14b8d8 Version 2023-04-11 09:36:31 +02:00
ca8ad39143 12306 erreur de retour lors de la mise à jour 2023-04-11 09:33:32 +02:00
7531973551 Fix install 2023-04-11 07:13:33 +02:00
6c008363cd 12306 2023-04-10 17:29:22 +02:00
0a566df789 Signe equalité 2023-04-10 17:25:21 +02:00
525250f39a 12306 complément de traduction 2023-04-10 17:03:24 +02:00
8d8d35a540 Fonts pluriel 2023-04-04 18:56:41 +02:00
63d02f358c Bugs d'installation avec les BDD au singulier WIP 2023-04-04 16:59:05 +02:00
d364b11012 Edit group Profil TEST 2023-03-31 17:02:56 +02:00
a5743ca323 Edition d'un profil 2023-03-31 14:36:19 +02:00
a87431fc9c Merge branch '12305' into 12400 2023-03-31 09:13:41 +02:00
5cd61d8d1a 12305 2023-03-31 09:12:19 +02:00
3aa5cd285b Merge branch '12305' into 12400 2023-03-31 07:18:49 +02:00
9d1fcbfd20 Bug paramètres de la localisation 2023-03-31 07:17:56 +02:00
f32d318cf6 Typo 2023-03-30 11:26:11 +02:00
70b500443f Gestion des permissions 2023-03-29 19:28:03 +02:00
a65e8dcd63 slash dans les donénes par défaut 2023-03-29 14:49:54 +02:00
8ac66696cb La gestion des groupes devient permissions.
Les groupes étant immuables.
2023-03-29 14:48:09 +02:00
3d579cb689 Stocker numéro de version 2023-03-29 10:21:07 +02:00
bb779bdb97 Stocker numéro de version 2023-03-29 10:20:40 +02:00
dbd9d2bf34 Déplace le nettoyage des langues 2023-03-29 10:19:56 +02:00
937c36ca6d admin code 3 2023-03-29 10:17:32 +02:00
b57a83e9cf Barre de membre au-delà avant admin 2023-03-28 15:18:43 +02:00
2e7931970d Nom du groupe dans l'édition 2023-03-28 15:03:17 +02:00
e0fe61ccc7 RFM pour les membres
'fontes' au lieu de 'fonte'
2023-03-28 14:51:46 +02:00
6ee961f618 Groupe Edit share folder 2023-03-28 13:43:42 +02:00
c13f01899b merge error 2023-03-28 13:21:16 +02:00
8194ef7c67 Merge branch '12400' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 12400 2023-03-28 13:20:32 +02:00
c4fd214e04 Merge branch '12304' into 12400 2023-03-28 13:18:55 +02:00
4845ef0074 no debug 2023-03-28 13:13:04 +02:00
862ae313f4 Mail secure to test 2023-03-28 13:12:47 +02:00
cdc2594bba Merge branch '12304' into 12400 2023-03-27 19:02:41 +02:00
b255d0fddf 12304 nouveaux RS 2023-03-27 15:11:07 +02:00
83ecbdb75b 12304 changes 2023-03-27 13:14:20 +02:00
aef19a9e9c Envoi email : encodage titre du site 2023-03-27 11:47:46 +02:00
0cd7a54904 Cryptage SMTP 2023-03-27 11:34:22 +02:00
53b78bf61d Mail auth WIP 2023-03-26 16:22:02 +02:00
ca87ee2d3b Inversion de la minification des script inline 2023-03-26 14:14:21 +02:00
91112037e9 Bug d'actualisation du sitemap 2023-03-26 09:31:42 +02:00
74684864f0 form 3.8 entité HTMl non décodée 2023-03-25 18:24:16 +01:00
471d28e4fe Mail UTF-8 en majuscules 2023-03-25 09:57:45 +01:00
85de808044 Blog 6.6 layout 2023-03-24 16:56:04 +01:00
ae494b8d66 Blog 6.6 traduction + changes 2023-03-24 09:08:15 +01:00
d4d88cfdeb Blog Read More 2023-03-24 08:48:30 +01:00
c85f208837 Lire la suite WIP 2023-03-23 07:56:45 +01:00
65a12d0e25 Blog 6.6 position RSS CSS 2023-03-23 07:49:52 +01:00
169a30f449 Blog position RSS 2023-03-23 07:43:23 +01:00
f6ec7dccd5 Init 12304 2023-03-22 17:50:45 +01:00
39e27d5082 path select WIP 2023-03-22 17:46:08 +01:00
95c8b7a975 Merge branch '12303' into 12400 2023-03-21 15:51:07 +01:00
162bf27617 Changement de branche, changes.md 2023-03-21 15:50:28 +01:00
832e0b535f Encode des messages d'erreur lors de l'installation 2023-03-21 15:48:42 +01:00
84aa2b719c Merge branch '12303' into 12400 2023-03-21 15:32:03 +01:00
47c98e25e4 Merge branch '12303-temp' into 12303-valid 2023-03-20 19:10:32 +01:00
f9c866dadb Deux lignes pour les JS 2023-03-20 14:46:46 +01:00
3a74afcb18 New 12303 2023-03-20 13:38:50 +01:00
cffbdc2928 Merge branch '12303' into 12400 2023-03-20 12:04:55 +01:00
a5bd94fe6e Jquery entités 2023-03-20 11:56:17 +01:00
afcccc2354 entité html 2023-03-20 11:44:29 +01:00
19c6c403d7 JS entités 2023-03-20 11:41:20 +01:00
df88e5a195 Script inline 2023-03-20 11:31:53 +01:00
0bf76c3778 Merge branch '12303' into 12400 2023-03-20 10:10:46 +01:00
c8ea16040e Bug double quotes 2023-03-20 09:56:05 +01:00
653f9a6842 Merge branch '12303' into 12400 2023-03-19 10:11:55 +01:00
6973442e4a changes 2023-03-19 10:11:14 +01:00
a451421ecd Merge branch '12303' into 12400 2023-03-19 10:00:57 +01:00
61379d2db1 Règle le problème des champs CSS et JS commentés 2023-03-19 09:59:11 +01:00
3da3bf63fc Permissions du groupe sur RFM 2023-03-17 15:55:15 +01:00
4b7611f830 SMTP test in progress 2023-03-17 13:58:38 +01:00
41e654c142 Error message 2023-03-17 08:48:54 +01:00
dc5484aa0a message 2023-03-17 08:44:19 +01:00
cc990de539 error message 2023-03-17 08:39:38 +01:00
5d81b3d244 update avec messages 2023-03-16 15:56:19 +01:00
e8075dbbc8 mode test 2023-03-16 15:17:58 +01:00
7e426cfb5d init 2023-03-16 15:13:52 +01:00
abcf4c3a70 user WIP 2023-03-16 11:38:46 +01:00
903c4e703c pretty print 2023-03-16 11:38:39 +01:00
9f8f9fd786 Supprime des echos 2023-03-15 18:08:15 +01:00
ac13356737 init 2023-03-15 17:53:49 +01:00
abd64c2a9b Merge branch 'master' into 12400 2023-03-14 15:08:40 +01:00
e49b5c16c1 Limitation dimension champs CSS et Script 2023-03-14 15:04:43 +01:00
78b9374d2b Merge branch 'master' into 12400 2023-03-14 14:50:23 +01:00
df24c95a5d Merge branch '12302' 2023-03-14 14:46:40 +01:00
9b21690c27 Revert "Revert "Bug variable""
This reverts commit 6bbb602f6f.
2023-03-14 14:29:56 +01:00
18a49b9005 changes 2023-03-14 14:25:25 +01:00
2c8767478c baseUrlQs 2023-03-14 14:22:34 +01:00
2628a6a782 Comment baserUrlQs 2023-03-14 14:17:37 +01:00
6bbb602f6f Revert "Bug variable"
This reverts commit bfde3e6be9.
2023-03-14 13:56:53 +01:00
bfde3e6be9 Bug variable 2023-03-14 13:50:28 +01:00
839d965d82 Revert "12302 avec tarte au citron"
This reverts commit 55815b60d1.
2023-03-14 13:38:03 +01:00
55815b60d1 12302 avec tarte au citron 2023-03-14 13:37:19 +01:00
a9cda0a75b Amélioration reponse installation auto 2023-03-14 13:11:02 +01:00
9f2c9ac149 Obfuscation 12.3.02 2023-03-14 11:33:45 +01:00
c2ea537b2c empty paragraph 2023-03-13 15:19:28 +01:00
8cd9e993d9 comment obfuscation 2023-03-13 15:16:54 +01:00
36d5723e4d Merge branch '12300' 2023-03-12 10:45:16 +01:00
3dbbcee4dc Minification is back 2023-03-12 10:30:23 +01:00
762b89af38 Version 12.3.01 2023-03-12 10:17:31 +01:00
b39c74c3de Livraison des langues 2023-03-12 10:14:16 +01:00
3b073186d4 Update enum.json 2023-03-12 10:08:49 +01:00
048575f4eb fr_FR vide 2023-03-12 09:59:42 +01:00
9e33266c95 Simplification aide bar 2023-03-11 18:55:28 +01:00
26ad49dd85 Merge branch '12300' into 12400 2023-03-11 18:49:40 +01:00
1c954b0e9e Amélioration des dialogues 2023-03-11 18:41:25 +01:00
b038c8adf6 account edit 2023-03-11 17:50:26 +01:00
a3ceda9653 Merge branch '12300' into 12400 2023-03-11 17:14:55 +01:00
98db071fea Fix check installed language version 2023-03-11 17:10:34 +01:00
cb63315eea Code drapeau gr 2023-03-11 17:07:29 +01:00
52e025746a groupEdit WIP 2023-03-10 17:23:05 +01:00
7dce2beb3b groupEdit WIP 2023-03-10 16:49:49 +01:00
6641556084 preupdate database 2023-03-10 15:52:09 +01:00
2455ec0f28 fix database pre check 2023-03-10 15:49:14 +01:00
6e9f30719b rename database 2023-03-10 15:21:53 +01:00
ead284fff7 Edit group WIP 2023-03-10 15:02:49 +01:00
bb932110dc Merge branch '12300' into 12400 2023-03-10 14:13:49 +01:00
003ffebf10 fontAdd simplification 2023-03-10 14:13:21 +01:00
1746ff7919 Merge branch '12300' into 12400 2023-03-10 14:11:36 +01:00
7669918abb bug font edit 2023-03-10 14:10:31 +01:00
508ec87c96 better json save 2023-03-10 13:59:46 +01:00
0a8a8ecd72 save function 2023-03-10 13:48:27 +01:00
5edb042dd3 Merge branch '12300' into 12400 2023-03-10 11:35:16 +01:00
2b329979c2 json_encode 2023-03-10 11:34:24 +01:00
6b12d9746f Merge branch '12300' into 12400 2023-03-10 11:29:55 +01:00
c4e150af97 json_encode 2023-03-10 11:29:43 +01:00
487d21b696 Merge branch '12300' into 12400 2023-03-10 10:20:58 +01:00
566a083dec Langues site 2023-03-10 10:20:21 +01:00
58671aeea9 Création du groupe 2023-03-10 10:19:22 +01:00
e0ac420cd4 Merge branch '12300' into 12400 2023-03-10 08:51:49 +01:00
7c15d8efd0 Vendors languages 2023-03-10 08:51:29 +01:00
e74b515366 Merge branch '12300' into 12400 2023-03-09 08:07:51 +01:00
1569912204 Class structure 2023-03-09 08:07:34 +01:00
a22d013776 Move class files 2023-03-08 16:10:23 +01:00
21c6250214 merge 12300 2023-03-08 16:06:53 +01:00
a0f4929a57 Merge branch '12300' into 12400 2023-03-08 16:06:36 +01:00
8384602674 RFM data-lity 2023-03-08 15:59:02 +01:00
c069f384c1 Update module languages 2023-03-08 15:54:04 +01:00
b22f4cdc3e Traduction Gérer les fichiers 2023-03-08 15:00:41 +01:00
142b93e946 Libellés hauteur et largeur 2023-03-08 09:48:19 +01:00
3b193134d2 Largeur et non Hardeur 2023-03-08 09:36:56 +01:00
52461041e1 alt icones 2023-03-07 16:45:55 +01:00
84f8544210 icone alt 2023-03-07 16:44:11 +01:00
e21933cd93 Merge branch '12300' into 12400 2023-03-07 14:55:18 +01:00
edac937b35 Fix positionnement des boutons de retour 2023-03-07 14:55:00 +01:00
d7bf8fb9b0 Fix style not shown 2023-03-07 11:38:48 +01:00
e17559a87c Fix default param 2023-03-07 11:05:41 +01:00
9b73143b2c Merge branch '12300' into 12400 2023-03-07 11:01:29 +01:00
bb28ded0e7 Fix UTF-8 minification 2023-03-07 09:41:03 +01:00
690b862cce Répartition des classes 2023-03-07 09:32:04 +01:00
3ba76bde35 Check htaccess 2023-03-07 07:13:22 +01:00
a5593535a0 Merge branch '12300' into 12400 2023-03-06 17:39:09 +01:00
1a40d5f4c5 HTML output 2023-03-06 15:41:48 +01:00
b2c25db925 Merge branch '12300' into 12400 2023-03-06 15:24:11 +01:00
c7b414770c Bug style css dans news 2023-03-06 15:23:25 +01:00
822a71b264 Merge branch '12300' into 12400 2023-03-05 17:03:07 +01:00
100d3dd3e3 alt nom de l'icone isolée 2023-03-05 16:52:17 +01:00
e601461101 Merge branch '12300' into 12400 2023-03-05 16:28:44 +01:00
ceddacdd31 pre_update delete old languages 2023-03-04 10:07:57 +01:00
de1d4a6eac preupdate cleaning 2023-03-04 09:52:00 +01:00
29d4d2d7ac Merge branch '12300' into 12400 2023-03-03 21:16:21 +01:00
13a99b1193 Traduction admin 2023-03-03 16:38:42 +01:00
c824bf2e5a Nouvelles chaines de traduction 2023-03-03 16:35:49 +01:00
67fc3740f5 Simplification des libellés 2023-03-03 11:14:03 +01:00
e4d3b100a8 Libellés dans le thème 2023-03-03 09:03:27 +01:00
a1e1b9dace Sécurise la réinitialisation des BDD 2023-03-02 21:12:45 +01:00
00a1f57665 linter 2023-03-02 21:07:25 +01:00
63b17453dd Nettoyage du sossier cotnenant trop de langues dans TinyCME, la mise à jour installe les langues nécessaires. 2023-03-02 15:22:55 +01:00
0449dd7936 Merge branch '12300' into 12400 2023-03-02 14:47:48 +01:00
adee18094b cookie UI 2023-03-02 14:47:41 +01:00
137d901078 Merge branch '12300' into 12400 2023-03-02 14:27:40 +01:00
117d67f9c4 Install depreciation 2023-03-02 14:26:45 +01:00
482de27ef8 gr_GR 2023-03-02 14:17:12 +01:00
5c29625d31 typo 2023-03-02 10:15:55 +01:00
3fd4aecd90 12.2.04 2023-03-02 10:07:01 +01:00
cb77280d73 12.2.04 bug avec la langue grecque 2023-03-02 09:47:06 +01:00
185f501e77 12300 delete disabled language from database 2023-03-02 09:27:45 +01:00
15d98f43a7 12400 group WIP 2023-03-01 16:11:36 +01:00
1d158a3fde Databases language et font 2023-03-01 15:50:41 +01:00
b9ce213df5 minify languages 2023-02-27 15:28:42 +01:00
59e5f6edf3 Modules tr_TR 2023-02-27 15:16:30 +01:00
69fc0b6973 Typos 2023-02-27 15:03:01 +01:00
ec477de8d8 Fix install sitemap 2023-02-27 14:33:03 +01:00
c77d677874 Delete Ukrainien 2023-02-26 10:03:14 +01:00
58398f9918 Changes 2023-02-25 22:49:35 +01:00
b7c6113759 Mise à jour et langue des messages d'erreur phpmailer 2023-02-25 22:45:40 +01:00
fbe047c877 core sendmail fix 2023-02-25 22:17:17 +01:00
7eebe5e6ef smtp password safety 2023-02-25 22:06:12 +01:00
0dd310970f Add from to phpmailer 2023-02-25 22:00:24 +01:00
4fb4d17210 Bug install foreign language 2023-02-25 19:43:44 +01:00
137e839a91 BUG config smtp mailer 2023-02-25 19:11:05 +01:00
df6a0fd25c Copier 2023-02-23 22:54:53 +01:00
71fa697db8 Fix translate error
Remove optional lang
2023-02-23 22:44:24 +01:00
f24f77f32f Bug initialisation 2023-02-23 22:14:26 +01:00
78f0d66299 Install smtp from
Bug install theme cause news database
2023-02-23 22:00:51 +01:00
21c87bb42d tous les commentaires 2023-02-23 20:19:54 +01:00
3be8f32909 from option 2023-02-23 16:02:06 +01:00
73a799b722 Normalisation themes;json 2023-02-22 08:54:33 +01:00
d1e69faf6d Theme moderne 2023-02-21 18:23:50 +01:00
7e7277653a Bug cookie langue 2023-02-21 15:16:41 +01:00
3ec47fb236 Bug fonte admin 2023-02-21 14:58:36 +01:00
ca945ed16c Clean cookie prev install 2023-02-21 14:20:30 +01:00
019c548b57 bug langauge select in theme 2023-02-20 18:42:16 +01:00
f204b3020f Bug langue installation 2023-02-20 15:22:58 +01:00
cc09d23c36 langues 2023-02-20 15:22:21 +01:00
1b909a1783 Traduction messages footer 2023-02-20 11:56:27 +01:00
2dbe718e9e Langues triées 2023-02-20 11:29:21 +01:00
fda3249d50 timestamp 2023-02-20 11:27:08 +01:00
da37da7b7d tarduction des messages internes au core 2023-02-20 11:25:15 +01:00
971ebf1133 Traduction Obligatoire 2023-02-19 18:01:28 +01:00
d13e8888d9 Langue version du 19/2 2023-02-19 18:01:05 +01:00
82d7783316 Default page content 2023-02-19 17:44:52 +01:00
b343de6058 Bug login in french 2023-02-19 17:42:02 +01:00
0c65c0d11e Delete help buttons from theme
positions buttons
2023-02-18 22:47:01 +01:00
2f88ac9a7e Bug lang select with theme open 2023-02-18 22:30:00 +01:00
32f70918b7 Bog edit date 2023-02-18 09:11:23 +01:00
9c2cea92b7 Bugs de slash 2023-02-18 08:57:08 +01:00
573e67e790 Bug gen theme 2023-02-18 08:51:02 +01:00
4d96900c8c update error 2023-02-18 08:44:01 +01:00
9d7e10604b bug pre update fresh install
bug slash
2023-02-18 08:41:01 +01:00
9395321f4a add meta 2023-02-17 17:15:19 +01:00
044cc48bfd Merge branch '12300' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 12300 2023-02-17 16:28:23 +01:00
78488cdc95 News date format 2023-02-17 16:28:10 +01:00
b715329633 Blog and news add zero seconds 2023-02-17 16:28:10 +01:00
fb9448cf8e $installedUI empty 2023-02-17 16:28:10 +01:00
fb0ce1d36b Version des modules 2023-02-17 16:28:09 +01:00
9aee55b2c7 changes 2023-02-17 16:28:09 +01:00
8d2389e033 Remplacement de flatPickr 2023-02-17 16:28:09 +01:00
465fde6611 Codemirror greck support 2023-02-17 16:24:11 +01:00
4babff486e News date format 2023-02-17 14:35:42 +01:00
38a9ff25e3 Blog and news add zero seconds 2023-02-17 14:30:36 +01:00
b04d0b6ce3 $installedUI empty 2023-02-17 13:55:29 +01:00
56ea9917ec Version des modules 2023-02-17 11:11:53 +01:00
16e75fee79 changes 2023-02-17 11:01:05 +01:00
f92653b202 Remplacement de flatPickr 2023-02-17 10:59:25 +01:00
29b825bfbb Edition avec accent et suppression 2023-02-16 22:15:35 +01:00
8ba07abe32 blog settings 2023-02-16 21:42:38 +01:00
3370c9c9d6 DateVersion 12300 2023-02-16 21:37:23 +01:00
b68c4c6d0e Merge branch '12204' into 12300 2023-02-16 21:28:18 +01:00
c088bb523b $inlineScript non défini 2023-02-16 21:27:50 +01:00
0a937cdcae TinyMCE sticky toolbar fix icons 2023-02-16 16:03:14 +01:00
2646805a77 codeMirror languages + language select in TinyMCE 2023-02-16 14:50:01 +01:00
2f8c5a099b changes 2023-02-16 14:07:18 +01:00
42ec86a189 Merge branch '12204' into 12300 2023-02-16 14:01:20 +01:00
aa50495555 Js include in page okay 2023-02-16 11:52:40 +01:00
a3fdb3bc1e Edition de page ok 2023-02-15 19:52:33 +01:00
5844a57d8c changes 2023-02-15 19:33:02 +01:00
ab186d190e showInLine style Function 2023-02-15 19:29:12 +01:00
c58a222887 CSS ok barre and page avec plugin 2023-02-15 19:12:13 +01:00
8eff28c8e3 CSS page and bar ok 2023-02-15 19:01:16 +01:00
a734c972cd include CSS WIP 2023-02-15 18:36:30 +01:00
c670443132 showFontes 2023-02-15 18:17:24 +01:00
9544c3305d Fix css if page with module WIP 2023-02-14 16:53:28 +01:00
6c815eeec1 add meta 2023-02-14 11:20:46 +01:00
f6530fd011 Add deutsch 2023-02-14 10:50:58 +01:00
eb82c960aa Delete sync file 2023-02-14 09:44:31 +01:00
be9bb5c671 Module form et francisation de eMail
Module redirection
2023-02-14 09:34:18 +01:00
618ba0da6b Blog et news amélioration des traductions 2023-02-14 08:47:02 +01:00
63c22bacfa Gallerie amélioration des traductions 2023-02-14 08:26:45 +01:00
e1c587ebf5 clean sync files 2023-02-13 21:16:36 +01:00
0dae6dc5c7 changes 2023-02-13 20:37:59 +01:00
abf25824e9 12300 remove GA from tui 2023-02-13 20:30:20 +01:00
ff03aaa957 FlatPick i10n 2023-02-13 15:57:15 +01:00
c182530fb0 check news 2023-02-13 15:35:16 +01:00
188e86a489 Blog translations check 2023-02-13 15:33:47 +01:00
fcdc757441 Traductions gallery 2023-02-13 15:29:39 +01:00
da42e3bf9e Gallery translations 2023-02-13 15:24:28 +01:00
8a70730dda "Options de configurations" 2023-02-13 15:06:43 +01:00
dcc9b4b9d8 Draft 2023-02-13 14:47:26 +01:00
a1c19bbf04 al_GR !! 2023-02-13 14:43:39 +01:00
5bc5e52936 12300 module news traductions 2023-02-13 14:39:09 +01:00
3670b432e3 translations /12300 2023-02-13 14:17:43 +01:00
07695c957f Merge branch '12204' into 12300 2023-02-13 13:23:49 +01:00
36692b8f35 12204 Bug déclaration langue dans la balise html 2023-02-13 13:23:36 +01:00
cf3fd7b832 Rename module gr_GR to el_GR 2023-02-12 18:12:13 +01:00
03bfbdd9a7 elèGR missing 2023-02-12 17:55:58 +01:00
cc01d8728e Renmae gr_GR to el_GR to be tested 2023-02-12 17:52:18 +01:00
f0515d6369 Nettoyage de langues 2023-02-12 17:41:49 +01:00
993c283778 news okay 2023-02-12 17:24:35 +01:00
f159f0b304 News WIP 2023-02-12 11:14:07 +01:00
c3d95644f0 Blog setup frame 2023-02-11 10:07:08 +01:00
98b05f8b8b Blog tables date 2023-02-11 10:02:44 +01:00
0a49bd1738 coquille 2023-02-10 22:47:51 +01:00
862f8f3496 Blog 6.5
Article okay
option select sizes
2023-02-10 22:45:26 +01:00
ed46aeb65a Blog 6.5
Index date and time format okay
Update to 6.5 okay
2023-02-10 22:37:51 +01:00
aa0b152b67 12300 user import template 2023-02-10 22:27:08 +01:00
46482b7d2b Blog date and time format WIP 2023-02-10 17:19:38 +01:00
2b68bb2659 12300
Les id des modules sont affichées dans le sélecteur de module
Avertissement d'effacemet de module
2023-02-10 15:52:49 +01:00
e8cb55ab08 Delete showDate form core 2023-02-10 15:26:06 +01:00
0c0cd2a2a4 12300 2023-02-10 15:05:10 +01:00
1c550d3f31 delete registration 2023-02-10 14:55:27 +01:00
15dea9bd1b delete download 2023-02-10 14:51:33 +01:00
a8d8fb658f supp slider 2023-02-10 14:43:08 +01:00
2f3a39ad2c Merge branch '12204' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 12204 2023-02-10 14:15:52 +01:00
cece24b60a 12204 Nettoyage de commentaires 2023-02-10 14:15:28 +01:00
566f123c2d 12204 Nettoyage de commentaires 2023-02-10 14:15:01 +01:00
c8a546f6e9 php 8.2 testing 2023-02-10 11:25:52 +01:00
056ce8421a utf8 encode replacement 2023-02-10 11:25:42 +01:00
c48da3d7f9 Responsive File Manage
imagecreatetruecolor imagefilledrectangle required int and not float
UTF8_encode
2023-02-10 11:25:05 +01:00
bc43689d41 checkup exit message 2023-02-10 10:42:42 +01:00
b9194c223c compatibilité php 8.1 max 2023-02-10 10:41:57 +01:00
eb9a894c0a 12204 mise à jour depuis 11.5.12 sleep(2) 2023-02-10 10:29:00 +01:00
50a664638d 12204 fix pre-update 2023-02-10 10:08:33 +01:00
b74a741bb7 Merge branch '12204-dates' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 12204-dates 2023-02-10 09:59:07 +01:00
514d49bb15 12204
Add pre-required checkup php  and modules
Add pre-checkup to manage databases outside framework
clean time date var
dateUTF8 WIP remove utf8_encode
2023-02-10 09:58:55 +01:00
27dd70953c 12204
Add pre-required checkup php  and modules
Add pre-checkup to manage databases outside framework
clean time date var
dateUTF8 WIP remove utf8_encode
2023-02-10 09:58:38 +01:00
1fe0740553 12204 checkup module 2023-02-09 10:36:52 +01:00
e486c9344a bloque PHP 8.2 2023-02-08 19:51:00 +01:00
65f5dd7c60 12204 Norme interface graphique (bouton retour) 2023-02-07 14:21:15 +01:00
1661fae398 12204 supprime la fonction getUILanguages 2023-02-07 14:05:03 +01:00
cd3ccb0fc7 12204 Désactive l'édition d'une langue de l'UI 2023-02-07 13:39:10 +01:00
00e4a7ae24 12204 Désactive l'édition d'une langue de l'UI 2023-02-07 13:38:53 +01:00
821d18518d 12204
Update UI languages when open translates setup
2023-02-07 13:31:58 +01:00
a5b79b1689 12204
Delete useless makeUiLanguages
Update UI languagues from template when install
2023-02-07 13:31:11 +01:00
0fcc2b511e 12204 Languafe database version is int 2023-02-07 13:29:20 +01:00
7be2729eb6 séactive le mode test des mises à jour 2023-02-07 11:26:18 +01:00
c5b15578cc 12204
Ajoute une option de fréquence de la recherche auto
Fait correspondre le numéro de version des langues avec la version des données
Mise à jour des langues prenant con compte la nouvelle option
2023-02-07 11:21:21 +01:00
247087b481 12204 sort const 2023-02-07 08:36:19 +01:00
52ea9f66fa 12204 Autoupdate : Optimisation des variables 2023-02-06 21:45:41 +01:00
ebc7b59b20 12204 Supprime Tahoma en double
Réécrit la fonction de contrôle d'une mise à joru en ligne
2023-02-06 21:45:03 +01:00
623d5e775b 12204 autoupdate paramètres manquants 2023-02-06 21:43:40 +01:00
5dc317b131 1204 Wrong class displayNone 2023-02-06 20:11:31 +01:00
4d4512fcc6 dataVersion OKAY
autoupdate actif in config WIP
2023-02-05 19:10:42 +01:00
5a83835b4d typo 2023-02-05 09:51:58 +01:00
4c36ecc088 form 3.6 2023-02-04 22:29:26 +01:00
7e591e99e7 Versions 2023-02-04 17:48:10 +01:00
42506dabfd 12203 bug avec le format de language.json 2023-02-04 17:39:50 +01:00
b491acb4e7 htaccess error 2023-02-04 16:17:09 +01:00
051c787bfe ; riding 2023-02-04 16:12:38 +01:00
0178c694fe Erreur de languages.json 2023-02-04 16:10:46 +01:00
d8f4ec7a69 Mise à jour de '.htaccess' 2023-02-04 16:02:41 +01:00
9332d40c9d changes.md 2023-02-03 22:37:20 +01:00
badfafd8bb Langues version 4 + supprimer le module download de master 2023-02-03 22:30:25 +01:00
b2daeccc2c Bug plugin variable enum dataDirectory empty 2023-02-03 22:17:10 +01:00
50e94976fa plugin delete test constants 2023-02-03 21:59:36 +01:00
7ca90968a0 download 3.2 fix icon's sizes 2023-02-03 21:57:03 +01:00
86b12eca8f plufin okay 2023-02-03 16:14:06 +01:00
af263364f8 liste des pages okay 2023-02-03 15:49:05 +01:00
ca75d9e475 Bug Plugins + download WIP 2023-02-03 11:14:03 +01:00
615c3cc1aa typo 2023-02-02 21:04:38 +01:00
58ba7af79c 12201 bug langues 2023-02-02 21:00:03 +01:00
3f2733c033 Merge branch '12201' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 12201 2023-02-02 20:31:46 +01:00
56efada4a6 12201 plugin JSON_UNESCAPED_UNICODE 2023-02-02 16:12:27 +01:00
f233478ead 12201 Adaptation des modules 2023-02-02 15:30:33 +01:00
f67f2deafb 12201 Modules publiés 2023-02-02 15:28:35 +01:00
245375c28e 12201 Allow to select extend input types, not only text (ex : color; week, etc) 2023-02-02 09:39:05 +01:00
fd0a331c88 enum gallery 2023-02-01 21:32:09 +01:00
ee5477414d gallery 3.8 2023-02-01 21:26:02 +01:00
8d6dc7f2e4 12201 Better save json function, 5 tries if save error. 2023-02-01 21:16:55 +01:00
8dded3d437 Fix english modules translations 2023-02-01 10:14:09 +01:00
8761c3500f 12200 2023-02-01 10:07:56 +01:00
e0d47d68c4 120102 bug zip folder + modules enum 2023-01-31 22:52:07 +01:00
87f65862fb change 2023-01-30 09:27:30 +01:00
c266d916ac Form 3.4 bug div en trop 2023-01-27 08:26:34 +01:00
4cc1c59abe Gr_GR mods 2023-01-26 09:00:59 +01:00
FredTempez
1d173dc25a 12102 Modules translations 2023-01-24 16:41:16 +01:00
Prof Langues
c83336b853 Merge branch '12102' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 12102 2023-01-24 14:30:52 +01:00
d8636b4839 12102 Responsive menus 2023-01-24 14:30:47 +01:00
944474e151 12.1.02 fix banner 2023-01-24 14:30:47 +01:00
Fred Tempez
8c7a2c5990 Ckeck default i18n languages 2023-01-24 11:54:24 +01:00
Fred Tempez
73e728118a redirection translate okay 2023-01-24 11:53:24 +01:00
Fred Tempez
27f5797086 gallery gr okay 2023-01-24 11:51:47 +01:00
Fred Tempez
e90f2cea84 form translations okay 2023-01-24 09:57:45 +01:00
Fred Tempez
76df6d2dcc blog gr Okay 2023-01-24 08:51:13 +01:00
Fred Tempez
c923567aba Blog es translation 2023-01-24 08:48:26 +01:00
Fred Tempez
99bc5c55e5 gr_GR ready 2023-01-24 08:35:40 +01:00
Fred Tempez
fc21681ad2 nettoyage 2023-01-24 08:19:54 +01:00
5fb6346385 blog ready to translate 2023-01-23 18:07:22 +01:00
Fred Tempez
ed0e882ce3 blog translates in progress 2023-01-23 15:44:11 +01:00
Fred Tempez
ad6fac8450 Traudction des boutons 2023-01-23 14:40:03 +01:00
Fred Tempez
aba48be013 Update languages 2023-01-23 14:36:07 +01:00
Fred Tempez
1c92141f71 Move modules dialogues download 2023-01-23 14:22:29 +01:00
e7432f4b7f 12102 Responsive menus 2023-01-21 10:07:12 +01:00
89c1012564 12.1.02 fix banner 2023-01-20 10:39:42 +01:00
946a18a389 Modules translattions es and gr_GR 2023-01-20 09:59:56 +01:00
1ac9f85d85 es WIP 2023-01-19 15:56:23 +01:00
7ef894513d Blog translations es 2023-01-19 15:26:42 +01:00
f81b99badd search es 2023-01-19 15:01:25 +01:00
56626ab671 gallery redirection search translations 2023-01-19 14:58:07 +01:00
b2d185cf1d Gallery h4 translations 2023-01-19 14:53:09 +01:00
667f5a8294 translations h4 form 2023-01-19 14:05:25 +01:00
affb6d476f Blog h4 translations 2023-01-19 13:53:02 +01:00
ce1a0d4b30 redirection and gallery multiliguisme 2023-01-19 13:32:07 +01:00
c5683c0a81 News dialogues js files 2023-01-19 13:28:50 +01:00
7dacf80a73 form ? missing 2023-01-19 11:49:56 +01:00
2112f1f4cf gallery dialogues js files 2023-01-19 11:49:10 +01:00
eafa935c9e Form dialogues js file 2023-01-19 11:47:11 +01:00
cc57609816 Merge branch 'master' into 12100-modules-translations 2023-01-19 11:42:39 +01:00
d690331c7a Blog 6.4 Dialogues JS files 2023-01-19 11:38:23 +01:00
f592ca0844 Core version number 2023-01-18 17:51:20 +01:00
f7256bf27d 12101 Fix random captcha 2023-01-18 15:01:52 +01:00
737af38b70 Core messages translations 2023-01-17 16:32:16 +01:00
84e01a2a35 Code cleaning 2023-01-17 16:01:28 +01:00
bfa1e60e4e All modules translations dialogs 2023-01-17 14:21:36 +01:00
2a4dd3b70a Translation 2023-01-17 13:11:03 +01:00
ab0f98c977 README md block 2023-01-17 13:10:24 +01:00
81b25ae15e bug fix language activation not allowed 2023-01-17 12:45:48 +01:00
39cf9b1d74 12100 Delete pending modules translations 2023-01-17 11:57:20 +01:00
7eb758bcc5 English README 2023-01-17 11:45:34 +01:00
0de17eecfa update README 2023-01-17 11:41:59 +01:00
3c332b06bc Clean dialogues modules blog & form 2023-01-13 17:16:39 +01:00
50e30a2f10 Merge branch '12100---collecte-dialogues-modules' into 12100 2023-01-13 16:04:17 +01:00
46c2455853 Comment translate function 2023-01-13 15:59:59 +01:00
b2cbbf0c2d dialogues redirection 2023-01-13 15:58:11 +01:00
83ffd46644 search dialogues 2023-01-13 15:56:06 +01:00
9ee0e57b9c forme dialogues 2023-01-13 15:22:47 +01:00
f92cee284b 12100 Fix external scripts integrations 2023-01-11 18:01:35 +01:00
ca5a59c673 12100 Auto delete tags <script> and <style> 2023-01-10 18:23:33 +01:00
e5080015a6 gallery dialogues 2023-01-10 15:45:46 +01:00
0256856501 Blog dialogues 2023-01-10 15:35:22 +01:00
b1a2a0ce90 blog translations WIP 2023-01-10 15:22:29 +01:00
18c6f9d5fb Translate module tool 2023-01-10 15:22:13 +01:00
a22e8745fe 121000 fix bad merge 2023-01-10 15:20:57 +01:00
710f2cc2f0 Merge branch '12100---collecte-dialogues-modules' into 12100 2023-01-10 15:19:10 +01:00
fff26fd561 12100 dialogue translation templates 2023-01-10 15:18:07 +01:00
a97a215e0b 12100 capture function 2023-01-10 09:47:21 +01:00
eb1b735a95 12100 cleaning tinymce plugins useless 2023-01-09 20:01:38 +01:00
26dce57cb6 12100 Licence range years 2023-01-09 10:23:32 +01:00
9b1aa98424 12100 fix align colon lost password in login window 2023-01-08 20:30:59 +01:00
bfd8797aa4 12100 include script, add <script> markup 2023-01-08 20:22:31 +01:00
c67a1c0e8e 12100 Fix body.inc.html called twice 2023-01-08 20:09:42 +01:00
552f2d7295 Revert "12100 Corrige un double appel des script dans body"
This reverts commit 3207b5cd8e.
2023-01-08 20:06:24 +01:00
3207b5cd8e 12100 Corrige un double appel des script dans body 2023-01-08 19:55:22 +01:00
2d5722dbe8 Version 2 des langues 2023-01-02 18:16:17 +01:00
1ed41e8fb0 12100 Espace en trop 2023-01-02 18:05:31 +01:00
714c4a4788 12100 label select a file 2023-01-02 18:03:48 +01:00
d60498e313 12100 Pages dans le menu 2023-01-02 17:52:18 +01:00
bf35165558 " Manquants 2023-01-02 17:42:39 +01:00
6a742aea74 12100 Site description 2023-01-02 17:38:40 +01:00
c1d9d8da0c 12100 Simplification Title 2023-01-02 17:36:03 +01:00
911876e4f9 Termes Accueil 2023-01-02 17:31:03 +01:00
1a3ef73c13 12100 Select contents translation 2023-01-02 17:23:11 +01:00
70f1bdd5a7 12100 Comment htaccess files 2023-01-01 14:56:25 +01:00
f27d643b8e 12100 protect site/i18n 2023-01-01 14:49:04 +01:00
cf1e574173 12100 Restore database language 2023-01-01 11:12:30 +01:00
6e97d5c519 Mise à jour des langues par défaut 2023-01-01 10:58:51 +01:00
2739909b6c Enable language selector into admin bar 2022-12-31 16:17:51 +01:00
b7266092fa Disabled language menu selector 2022-12-31 15:43:37 +01:00
b6ba3bbc26 Responsive menu icons sizes 2022-12-31 15:43:19 +01:00
df041b2214 Clean code 2022-12-31 15:42:58 +01:00
c45ef8ccf1 12100 Traduction des label du template absente 2022-12-31 10:37:11 +01:00
ddfef50a73 12100 Nom de l'étiquette multilingue 2022-12-30 15:51:34 +01:00
45c918e2ee 12100 Sélecteur de langue du site dans la barre d'administration 2022-12-30 15:47:55 +01:00
1c16e14bac 12100 Fix traduction du site position des boutons utilitaires 2022-12-30 09:35:09 +01:00
3ec95e1776 12100 Fix bug lors de l"édition d'une locale d'un site non activé 2022-12-30 09:25:09 +01:00
51b8d909c7 12100 fix bug install variable name 2022-12-30 09:15:59 +01:00
fe11a1cc3b 12100 Crédits dans la configuration et lien vers le site et le forum 2022-12-30 08:48:35 +01:00
c427b3ffe2 Affichage de la licence 2022-12-29 17:16:33 +01:00
fca0ec707d License CC Attribution-NonCommercial-NoDerivatives 4.0 International 2022-12-29 17:02:20 +01:00
d2b9ab906c New languages files by order 2022-12-29 11:04:38 +01:00
291860aa2b fix table col 2022-12-29 11:02:40 +01:00
6e46a49287 12100 Remove comment code 2022-12-29 10:42:32 +01:00
5287696476 12100 fix col 2022-12-29 10:30:24 +01:00
69d7f10940 changes.md 2022-12-29 10:10:22 +01:00
3d589a023d 12100 Remove delete languages UI option 2022-12-29 10:08:53 +01:00
be62496d35 12100 temp languages database name is languages.json 2022-12-29 10:06:19 +01:00
f77b40d4b2 12010 devient 12100 2022-12-28 16:39:04 +01:00
4166d77ef9 12010 procédure d'installation avec la base des langues de l'UI 2022-12-28 16:35:20 +01:00
432defa7ca 12010 Gestion des langues de l'UI : base de données dans data/ - gestion du catalogue et traduction manuelle des dialogues 2022-12-28 16:20:55 +01:00
29d505a262 Langue anglaise Un accent en trop dans APRES 2022-12-28 16:17:53 +01:00
5e706a7be8 Par défaut anglais, es et fr 2022-12-28 14:42:20 +01:00
264bbe8b58 12010 Champ date 2022-12-28 14:41:04 +01:00
ac9ab66986 12010 Catalogue et règlementation 2022-12-28 10:35:26 +01:00
ed80401feb 12010 CHANGEs pour les nouvelles langues 2022-12-27 19:05:42 +01:00
71a03f83f0 12010 Activation du Grec et d'autres langues 2022-12-27 18:38:51 +01:00
bcc11ef379 12010 fix mt_srand error 2022-12-27 18:24:19 +01:00
e45c240f3e 12010 Installation d'une langue depuis le store 2022-12-27 17:59:04 +01:00
338ea4210b 12010 Se déconncter sans ? et Actualiser non traduit 2022-12-27 17:33:36 +01:00
1336c8c5db 12010 Langues de l'UI en cours reste le store à actualiser 2022-12-27 09:49:29 +01:00
d208512b45 12010 ? après mettre à jour 2022-12-27 09:48:53 +01:00
3f8c6edc8c Supp les points d'interrogation après mettre à jour 2022-12-27 09:31:34 +01:00
97767dc2cc 12010 changes.md 2022-12-26 12:07:46 +01:00
51dacd7c27 12010 effacement d'une traduction du site 2022-12-26 12:05:01 +01:00
e9ca38b9ab Multilingue 2022-12-26 11:06:28 +01:00
8becae3c11 12010 2022-12-26 11:03:36 +01:00
6c595bdc7b typo 2022-12-20 16:33:49 +01:00
def2f7c821 typo 2022-12-20 15:54:49 +01:00
d80721f650 typo 2022-12-20 15:52:01 +01:00
c05c286707 Merge branch 'master' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS 2022-12-20 15:43:55 +01:00
f91c35ecc7 Fix italian and purtugues 2022-12-20 15:43:40 +01:00
59285fdfad Supprimer 'site/i18n/fr_FR.json' 2022-12-20 15:43:40 +01:00
e4547b226f Supprimer 'site/i18n/es.json' 2022-12-20 15:43:14 +01:00
aeb4eb9e2e Supprimer 'site/i18n/en_EN.json' 2022-12-20 15:42:36 +01:00
cec369987b Fix italian and purtugues 2022-12-20 15:41:28 +01:00
90418e22fd gitignore 2022-12-20 15:27:20 +01:00
dbf9b264c6 Supprimer 'site/i18n/fr_FR.json' 2022-12-20 15:25:44 +01:00
9e82ee9a25 Supprimer 'site/i18n/es.json' 2022-12-20 15:25:39 +01:00
1e211fe564 Supprimer 'site/i18n/en_EN.json' 2022-12-20 15:25:29 +01:00
ada54fab32 Change et gitignore 2022-12-20 15:25:06 +01:00
843c74492c Utilitaire d'actualisation 2022-12-20 15:24:52 +01:00
f481459afc Actualise les langues de l'interface 2022-12-20 15:24:34 +01:00
f8954abe3a IOtalian language file duplicate 2022-12-20 14:10:15 +01:00
29b4cf5564 update i18n language failes 2022-12-20 14:09:31 +01:00
c42620ef14 Fix confirm message download to filemanager 2022-12-20 14:09:06 +01:00
1213b6997e fix cookie consent windows blinking 2022-12-20 13:55:29 +01:00
9e66ec9971 12009 2022-12-20 12:43:06 +01:00
75e5d02fc7 fix store status update when module is install and attached to a page 2022-12-20 12:38:41 +01:00
497d99082e fix enum search 2022-12-20 12:32:43 +01:00
07e7ecf9f9 fix redirection enum.json 2022-12-20 12:30:44 +01:00
dd4ad63bfd fix news enum.json 2022-12-20 12:26:21 +01:00
f4b921eee1 fix galery enum.json 2022-12-20 12:25:25 +01:00
7228adb77b fix form enum.json 2022-12-20 12:21:19 +01:00
cacc9e50eb 12009 fix plugin install from store 2022-12-20 12:19:42 +01:00
f6600201fe Blog fix enum 2022-12-20 12:19:04 +01:00
0925372a70 branche v12 2022-12-19 08:49:31 +01:00
844ba88a1a 12008 fix gestion des plugins quand aucun module est utilisé 2022-12-19 08:46:45 +01:00
0dca0487ec beta07 Génère un content vide localisé selon la langue sélectionnée 2022-12-18 11:34:06 +01:00
5f2f9ee820 beta 07 pas de modules dans le site de test en langues étrangères 2022-12-18 09:59:03 +01:00
b5b361c705 Fix : bug de restauration 2022-12-14 14:12:05 +01:00
7d5d856b75 Dépréciation de fonction php 8.1 paramétres basename 2022-12-13 11:27:36 +01:00
9c924a75e2 beta05 accessibilité 2022-12-13 11:19:37 +01:00
ec8f179279 Accessibilité = attribut alt dans les icônes 2022-12-13 08:13:16 +01:00
0025dba2aa Typo 2022-12-11 09:31:15 +01:00
0b8cd181e8 changes 2022-12-11 09:21:11 +01:00
fc431fd190 beta04 couleur de la bordure des éditeurs 2022-12-01 20:41:59 +01:00
b472780feb Tiny MCS Arrière plan grisé 2022-11-29 21:55:24 +01:00
2961d04fda Beta 3 2022-11-29 15:08:54 +01:00
cbd74bcca1 edit sizes 2022-11-29 15:07:37 +01:00
28e919ba67 Bug avec commentaires 2022-11-29 11:59:04 +01:00
b36d2715d8 console.log 2022-11-29 11:17:51 +01:00
efdfe1aeb3 Supprimer stickytoolbar 2022-11-29 10:51:51 +01:00
e254b4da22 Revert "TinyMCE modules dépréciés"
This reverts commit fca35dfa9a.
2022-11-29 10:35:39 +01:00
1ee738ce64 Revert "TinyMCE plugins dépréciés"
This reverts commit 87ee136faf.
2022-11-29 10:35:27 +01:00
fca35dfa9a TinyMCE modules dépréciés 2022-11-29 10:35:03 +01:00
87ee136faf TinyMCE plugins dépréciés 2022-11-29 10:28:45 +01:00
cdf3810855 relative false 2022-11-29 09:55:23 +01:00
5652f252b8 bug de remplacement 2022-11-29 09:37:49 +01:00
40a2ca6e7f Merge 11513 2022-11-29 09:00:17 +01:00
cfd7f0f083 Traduction en italien 2022-11-29 08:36:46 +01:00
548d82e9d4 beta02 corrections d'étiquettes 2022-11-24 09:04:18 +01:00
ed725c6e83 Raccourcissement des étiquettes dans les onglets de la gestion des langues 2022-11-24 09:03:29 +01:00
f8294853f3 texte d'une bulle d'aide 2022-11-24 08:52:22 +01:00
c753280771 var_dump dans la notification 2022-11-22 18:02:10 +01:00
69109e7e51 12 beta01 2022-11-22 17:45:55 +01:00
b2b57d3088 Langue PT 2022-11-22 10:25:53 +01:00
dfde6794a3 Corrections des langues + pt_PT 2022-11-22 09:19:48 +01:00
8aeca85b3b Dupliquer et non cloner 2022-11-22 08:33:19 +01:00
86a71afe0d Chaînes manquantes 2022-11-21 18:43:36 +01:00
86fb62a31c langues de site/i18n 2022-11-21 18:31:09 +01:00
41611b1ce5 gitignore 2022-11-21 18:30:16 +01:00
7b57b4f796 Mise à jour de langues 2022-11-21 18:28:39 +01:00
128cb6d290 Support avif + bug de langue 2022-11-21 18:15:30 +01:00
6766e395e9 pb d'accents 2022-11-21 15:09:31 +01:00
349cab2f02 changes 2022-11-21 14:13:38 +01:00
c68b1870f0 Numéro de version 2022-11-21 10:40:29 +01:00
3130c8da76 renomme les dossiers de langue 2022-11-21 10:40:11 +01:00
f2f0753584 lire la version directement 2022-11-21 10:38:32 +01:00
04b04b8eef installation depuis version inférieure 2022-11-21 10:22:04 +01:00
e56d16b58f Mise à jour depuis 11.5 2022-11-21 10:05:55 +01:00
47ea5538d5 Version 11.5.12 changes 2022-11-17 17:58:00 +01:00
4ec9bf8179 TinyCME conversion + relative URL : false 2022-11-17 17:50:13 +01:00
82fc3c6250 Style et script dans les barres 2022-11-16 16:13:52 +01:00
189f5e1365 Page Améliore l'insertion CSS et JS 2022-11-16 15:51:12 +01:00
1de6177929 forgot password 2022-11-15 08:13:57 +01:00
bda043ebda faute dans change 2022-11-14 22:36:09 +01:00
7cdb236d36 dev020 2022-11-14 22:25:50 +01:00
5b56359db4 Anglais 2022-11-14 22:24:22 +01:00
6ceedb3711 traduction en 2022-11-09 15:56:53 +01:00
9743284242 Supprimer stickytoolbar
Stocke un cookie de langue UI pour l'éditeur
L'éditeur prend la langue de l'utilisateur sauf espagnol !?
2022-11-08 08:41:57 +01:00
49b0b9ade6 TinyMCE language PB es 2022-11-07 18:11:34 +01:00
d3db216061 TinyMCE language dynamic 2022-11-07 17:44:38 +01:00
58c0a634d6 TinyMCE barre d'outils 2022-11-07 10:36:03 +01:00
2a9f898c55 traduction label mail ignoré 2022-11-07 10:25:13 +01:00
729a5ecd0c Install présélection de la langue fr 2022-11-07 09:49:39 +01:00
f6213610a9 Forme 3.2 2022-11-07 08:47:49 +01:00
098b886c9b SiteMap bouton dans la config 2022-11-07 08:37:14 +01:00
87cc514de2 dev019 2022-11-01 20:56:09 +01:00
c22198d52d Activation de la langue à l'installation 2022-11-01 20:53:19 +01:00
ff16d480c0 Bug installation, pb de préselection de langue UI en cours 2022-10-27 21:22:06 +02:00
c3361343ab costumisation 2022-10-26 16:24:28 +02:00
4e84e4fb38 dev017
Bug installation
Drapeau de langue affiché sur un site non multilangue
Effacement de la langue de site active
2022-10-26 15:53:26 +02:00
1b00e853e3 dev017 2022-10-23 17:40:03 +02:00
0fd14d2fee User edit langue sélectionnée 2022-10-23 17:38:47 +02:00
821c8644c8 RFM
Selecting file and placing into the editor fails - fixed
Select image fail : dialog.php null parameter  with php 8.1
2022-10-23 17:33:11 +02:00
ef984055f1 Traduction RFM dans la langue de l'interface 2022-10-23 17:27:57 +02:00
d752ed4784 version dev016 2022-10-22 18:30:03 +02:00
165f9edfef Etiquettes 2022-10-20 20:29:14 +02:00
ee4d06413c Choix de la langue de l'interface au niveau de l'ulisateur et pas de la config 2022-10-20 20:29:00 +02:00
2ca1a81879 changes 2022-10-19 18:14:11 +02:00
1c75a7df26 Typo 2022-10-19 18:13:25 +02:00
830ccb2e71 conse,t WIP 2022-10-19 16:30:15 +02:00
318bc81bba login fonction dépréciée 2022-10-19 14:33:31 +02:00
22f371ccdb blog 3.1 bug minitaure rss 2022-10-19 14:11:46 +02:00
05caca8b17 dev015 2022-10-19 10:49:30 +02:00
379e8607a4 fichiers de langue actualisés 2022-10-19 10:44:18 +02:00
c36c8de863 plugin dialogues manquants + plugin données des modules dans le cloud 2022-10-19 10:42:40 +02:00
0a29e83b3f Corrige le retour de $success en lecture écriture de fichier 2022-10-19 10:31:31 +02:00
7ff51d24fb switch $action à terminer. 2022-10-18 18:51:36 +02:00
03d27a5ee4 Stockage des données de module dans le cloud WIP 2022-10-18 18:46:21 +02:00
978fd08857 Export des données de module plusieurs langues en un écran 2022-10-18 18:36:23 +02:00
334ea6867a plugin bug data module 2022-10-18 11:53:53 +02:00
13b0cbddf8 template flag bug 2022-10-18 11:07:48 +02:00
d93286985c template flag bug option selected 2022-10-18 11:03:48 +02:00
3635ba4947 import libellé fr et es 2022-10-18 11:03:27 +02:00
d5e11f2d32 plugin import export okay 2022-10-18 10:40:33 +02:00
6de88ea3fa plugin import export WIP 2022-10-17 17:41:15 +02:00
43ac79ddd4 microtime return float 2022-10-17 17:01:55 +02:00
bfd48adcf9 blog 6.22 initialisation de la config + reformatage 2022-10-16 18:07:51 +02:00
a85dedbeb3 Normalisation 2022-10-16 17:47:05 +02:00
29d46887e9 search 2.7 initialisaiton 2022-10-16 17:44:04 +02:00
a6a37a4fc8 Plugin data export import WIP 2022-10-16 17:35:27 +02:00
e6a0b3c84b descripteur.json devient enum.json 2022-10-16 08:20:20 +02:00
ddd0d3bf10 Sauveragde du descripteur d'un module 2022-10-16 08:16:04 +02:00
83dbd90a91 Descripteur des modules générés à la sauvegarde 2022-10-16 08:15:42 +02:00
a66c3368fa Livraison des fichiers de langues à l'installation fraiche ou la mise à jour 2022-10-16 07:41:57 +02:00
335d99a2ae Nettoyage de fichiers non livrés 2022-10-15 19:02:32 +02:00
3d03591b18 nettoyage 2022-10-15 19:00:15 +02:00
d0818a52df dev0014 2022-10-15 09:02:27 +02:00
06c912c7a8 Ajouter une pagination 2022-10-15 09:00:53 +02:00
a017f3a74f csrf non nécessaire 2022-10-15 08:41:12 +02:00
06d140a27f Editer dialogues 2022-10-15 08:20:02 +02:00
7ebdebaa38 Etiquette dialogue 2022-10-15 08:19:38 +02:00
479e74d720 bug format json 2022-10-15 08:16:41 +02:00
fd476c0ad3 Numérote les lignes de dialogues 2022-10-15 08:11:30 +02:00
2b7f5bbd33 autre doublon 2022-10-15 08:11:05 +02:00
cab3bfb2e0 Une archive du dossier /site/data est conservée pendant 30 jours. Activation recommandée 2022-10-15 08:10:06 +02:00
405d0ff07e Correctifs fichier de langue et interface 2022-10-14 20:26:37 +02:00
c761c08d70 Translate bug $data pas ouvert 2022-10-14 19:34:34 +02:00
7007009490 Translate traduction des chaînes de l'interface 2022-10-14 19:18:48 +02:00
2289677b5e footer login icon standard size 2022-10-14 15:17:41 +02:00
f1f6b41a95 Traductoin des liste de choix config et page 2022-10-14 10:20:29 +02:00
ba94a3e5f8 Fcihiers de langues organisé temporairements 2022-10-14 09:39:02 +02:00
16f9ddc833 dev 011 pris en compte des modules serach en test 2022-10-14 09:36:30 +02:00
ce15d55695 search 2.7 2022-10-13 18:21:08 +02:00
5502114fff Support nginx 2022-10-13 10:07:38 +02:00
07a105f53c Désactivation url intelligente sous NGINX 2022-10-13 09:59:05 +02:00
03cb184fdb Traduction es 2022-10-12 10:47:28 +02:00
fa53c121b4 reformatage 2022-10-11 11:44:48 +02:00
00da98f0fe typo sprintf 2022-10-11 11:40:28 +02:00
29b5d9e11b translate Chargement des dialogues pour le smodules A VERIFIER 2022-10-11 11:38:23 +02:00
17a8017a59 utilitaires temporaires 2022-10-11 10:51:10 +02:00
8bf9b4c6d5 es message de notification 2022-10-11 10:50:59 +02:00
084ee771bb Translate Traitement des notifications 2022-10-11 10:33:44 +02:00
b3c4a335e5 config traduction des notifications 2022-10-10 17:08:47 +02:00
77a22feb4e chaines des modules incomplètes 2022-10-10 16:44:20 +02:00
57fc249a92 CSS de form déplacé de common.css à index.css 2022-10-10 11:36:59 +02:00
41f122783c Initialisation news 2022-10-10 11:29:54 +02:00
65bdf8121f form initialisation 2022-10-10 11:28:27 +02:00
59aaa07e10 news erreur de class extends 2022-10-10 11:28:05 +02:00
8e437f0aaf helper translate 2022-10-10 10:33:29 +02:00
02efb4125d json des modules à filtrer 2022-10-10 10:33:01 +02:00
1b01099816 Blog 6.3 fonction option nettoyée 2022-10-10 09:48:00 +02:00
13cb7a4b69 news 4.22 anrning à l'initialisation 2022-10-10 09:27:21 +02:00
41b704f4f5 extraction es des champs de modules 2022-10-10 09:18:13 +02:00
6deaa5cb16 dev010 2022-10-09 10:53:11 +02:00
daa3d38695 chargement de la classe strftime à la demande + helper::dateUTF8 appliqué partout 2022-10-09 10:50:28 +02:00
d4713f15cd news strftime + remplacement à par - dans les dates + uniformisation de la mise en page avec blog 2022-10-09 10:35:56 +02:00
221d42193c change 11510 2022-10-09 09:59:09 +02:00
2a2d162ef0 news 421 2022-10-09 09:52:38 +02:00
69e5bc3d92 6.22 blog dateUTF8 2022-10-08 17:41:26 +02:00
a7a4949113 Reverse strftime 2022-10-08 17:14:33 +02:00
95a98a2bc7 setlocale pour v12 2022-10-08 17:06:59 +02:00
d1fc4fc2d8 setlocale pour la classe strftime 2022-10-08 16:45:02 +02:00
2c4f78fbfb Slash manquant 2022-10-08 08:14:14 +02:00
8406e8ecf4 modules en es 2022-10-08 08:10:16 +02:00
525f9cf048 Aménagement disposition blog 6.21 2022-10-07 20:13:55 +02:00
9ad9a1df64 tiret supprimé 2022-10-07 19:37:40 +02:00
9a853523a4 blog date du commentaire, date découpée 2022-10-07 19:37:30 +02:00
40e25d9b6e Api key default data 2022-10-07 19:26:02 +02:00
a13bc2ed6d buh sélection langue de l'UI 2022-10-07 18:47:30 +02:00
72be48405c url canonical homepage 2022-10-07 17:31:47 +02:00
f2bb8b964c param null login 2022-10-05 18:17:33 +02:00
db41e8f060 Slash devant la classe strftime 2022-10-05 15:19:19 +02:00
b71d33d4ff change 2022-10-05 14:10:50 +02:00
a7ec9f3059 filter null param 2022-10-05 10:36:13 +02:00
7dc92583ac getinpu return null 2022-10-05 10:15:35 +02:00
c0e3a32be0 module meta description param null 2022-10-05 09:39:25 +02:00
0f069e0302 blog param null version compare 2022-10-05 09:29:35 +02:00
e22ad9998d nettoyage 2022-10-05 07:22:22 +02:00
c81b84b024 param creation de la config par défaut 2022-10-05 07:20:18 +02:00
9db9708a9f param null 2022-10-05 06:58:08 +02:00
a4068fe934 bug install postinstall 2022-10-05 06:50:56 +02:00
ca13f83d16 PB Install WIP 2022-10-04 18:10:04 +02:00
075f2f48ea stoper la capture 2022-10-04 14:33:07 +02:00
2f5bebcaeb Etiquettes de langues : corrections 2022-10-04 13:56:39 +02:00
8b432f200f Langues modules en es 2022-10-04 11:55:43 +02:00
ff00bc34d6 complément des messages 2022-10-04 11:48:55 +02:00
0f49c1308c Param null passé 2022-10-04 10:28:07 +02:00
5cfa4291dc paramètre null passé 2022-10-04 10:22:33 +02:00
7ce77b98f0 paramètre null passé 2022-10-04 10:18:45 +02:00
02ae9a1820 Paramètre null passé 2022-10-04 10:15:39 +02:00
317d2fc934 Calsse strftime cause dépréciation 2022-10-04 10:13:57 +02:00
fdbb213670 changes 2022-10-04 09:42:20 +02:00
3212072cea dot library support php 8 2022-10-04 09:25:12 +02:00
9184bf3390 getInput return null without filter 2022-10-04 09:20:40 +02:00
aeb604468a Replace FILTER_SANITIZE_STRING 2022-10-04 08:40:55 +02:00
fcab66dc45 Langues à suivre dans le dépôt dédié 2022-10-03 19:14:14 +02:00
e6a2070628 peauvinage EN 2022-10-03 19:03:31 +02:00
bdadd44efb Corrections diverses 2022-10-03 19:01:42 +02:00
6bbfc0094a h4 translate manquants 2022-10-03 18:37:25 +02:00
371f2b6481 h4 non traduits 2022-10-03 18:27:39 +02:00
8d3b92ba21 thumb webp 2022-10-03 18:17:02 +02:00
49512b153c désactiver le script de trad auto 2022-10-03 15:59:52 +02:00
dd5d1213dc dev009 2022-10-03 15:44:39 +02:00
d1356ee1b7 Nouvelles langues 2022-10-03 15:42:57 +02:00
3c19e4632c Mode auto du helper 2022-10-03 14:21:05 +02:00
3eed5e0cf3 faute d'accent 2022-10-03 14:20:33 +02:00
1c3b3e4501 E majuscule accentué 2022-10-03 14:20:11 +02:00
01d04cd7fb Remplacement de slash 2022-10-03 14:07:11 +02:00
c5e86713d2 slash remplacé 2022-10-03 14:04:47 +02:00
3e4bbe12cb - pour / 2022-10-03 14:03:39 +02:00
62d05de41b de en et it 2022-10-03 13:37:25 +02:00
ee41cb5f2f 5 langues actualisées 2022-10-03 11:58:46 +02:00
654c253511 H4 non traduits 2022-10-03 11:50:29 +02:00
1ad9ae68b9 Ajout de traduction + moteur d'auto traduction 2022-10-03 11:28:28 +02:00
2a840251bc Bug constante 2022-10-03 09:12:19 +02:00
9d89064215 Traduction des titres de pages 2022-10-02 10:59:42 +02:00
74739764f3 Nouvelle version es 2022-10-01 16:47:54 +02:00
b8db212716 Nouvelle version es 2022-10-01 16:46:59 +02:00
ae916975ee Minification 2022-10-01 16:44:23 +02:00
eea0234792 Couleur du texte dans les en-têtes des tableaux 2022-10-01 16:31:20 +02:00
a8e261f517 Installation des fichiers de langues 2022-09-30 14:48:01 +02:00
4cd699b160 Champ de clé plus grand 2022-09-30 14:34:25 +02:00
19697968c4 changes + messages 2022-09-30 14:30:19 +02:00
6f107718a4 nettoyage 2022-09-30 12:00:31 +02:00
8504b5f949 Suppression des doublons et nettoyage 2022-09-30 11:52:37 +02:00
9144b2fd9f Translate message 2022-09-30 11:44:38 +02:00
f6a479598d Translate pour la traduction 2022-09-30 11:43:14 +02:00
1ed9c0fae1 v12 2022-09-30 11:09:06 +02:00
ad87c35d35 Translate Gestion fine des boutons utilitaires 2022-09-30 11:08:06 +02:00
ed203095dc rempalce template topic par helper translate 2022-09-29 19:20:10 +02:00
ff9cfd49e6 Petits changements 2022-09-29 19:14:03 +02:00
bf1302a0a4 Nom du cookie + drapeaux ok 2022-09-29 19:08:32 +02:00
ac8f65277e Translate copy okay 2022-09-29 10:55:20 +02:00
469581e37f Normalisation + bugs de variables 2022-09-29 08:45:59 +02:00
32b4f3b7de Drapeau anglais + copie de module WIP 2022-09-28 15:58:35 +02:00
8cf721bfe7 Drapeaux dans la table 2022-09-28 15:13:42 +02:00
7f9f97c6a2 fr_FR template Flag langue sélectionnée selected 2022-09-28 14:58:21 +02:00
0bac09a48d Bouton Help mis de coté 2022-09-28 14:18:05 +02:00
d242199446 translate ajout d'une langue OK 2022-09-28 14:15:06 +02:00
9a44401cf7 Translate edit optimisation 2022-09-28 10:18:58 +02:00
53593e08ab Translate suppression et édition des locales OK 2022-09-27 16:42:10 +02:00
b357076a6f Translate édition des locales ok 2022-09-27 11:25:05 +02:00
8510eb2798 Translate boutons de commande 2022-09-27 09:21:48 +02:00
bb8a12c1d1 Bouton plus vert 2022-09-27 08:54:08 +02:00
15c69649b2 translate index WIP 2022-09-26 16:30:40 +02:00
f02379453c Bug couleur du texte dans les en-têtes de tableau 2022-09-26 16:21:56 +02:00
848a2cf222 Bug réinitialisation nouveau initData 2022-09-26 16:06:32 +02:00
45376ce0d7 Module translate WIP 2022-09-26 14:54:15 +02:00
067a416fd9 Nom de la variables des langues disponibles 2022-09-26 14:45:40 +02:00
f1eb8e821a fr_FR par défaut 2022-09-24 18:06:32 +02:00
ce60948d8d Module translate : neutralisation de la sélection de contenu
Un seul tableau de langues compatibles avec la normalisation
Conversion des noms de dossiers sur 2 caractères
2022-09-24 17:27:15 +02:00
88c12710fc Installation avec choix de la langue 2022-09-21 19:51:46 +02:00
89390e1dba Plugin traduction en-tête de tables 2022-09-21 19:18:02 +02:00
733526b6bd Déterminer la lague de contenu hors ouverture des données EN COURS 2022-09-21 16:15:04 +02:00
9e74d13e98 Enlever des langues 2022-09-21 16:05:22 +02:00
c44a6c42df Choix de la langue à l'installation 2022-09-21 16:02:06 +02:00
a62135c172 Choix de la langue à l'intallation 2022-09-21 15:09:25 +02:00
55b4763cff Translate : nom de variable 2022-09-21 15:09:13 +02:00
677ecaf19c install proxy select supprimé 2022-09-21 14:12:21 +02:00
299f11bfd1 Install supprimer l'accordéon pour le compte 2022-09-21 13:52:42 +02:00
b8424ed6bd Installation langue de l'UI WIP 2022-09-21 10:19:55 +02:00
9a6d4f6911 nom de variable 2022-09-21 09:53:50 +02:00
75fc5a8233 File manager dans la langue de l'UI + variable default devient interface 2022-09-20 11:35:55 +02:00
25f74054ff couleurs des onglets au survol 2022-09-20 09:58:47 +02:00
df4c2d9014 mauvaise affectation par défaut 2022-09-20 09:34:12 +02:00
1e28e021b9 Traduction des tables + chaines manquantes en espagnol 2022-09-19 19:31:06 +02:00
47c87043b9 Effet onglet dans translate + couleur de l'effet sur l'onglet 2022-09-19 19:08:59 +02:00
6873ad45fc Langue ES 2022-09-19 18:48:21 +02:00
fdfaee71db Module plugin bug présélection des boutons 2022-09-19 17:01:39 +02:00
32048ffa12 Langue de l'interface par défaut fr_FR 2022-09-19 16:57:54 +02:00
d08a8f72db module translate WIP + module plugin bug JS 2022-09-19 14:56:30 +02:00
2570dc157a Liste des langues installées + normalisation des noms de fichiers 2022-09-19 11:40:39 +02:00
072e6b9ed4 Bug de la fonction de traduction 2022-09-19 10:42:29 +02:00
232f0d2b1d corrige echo absente de template::topic 2022-09-19 10:33:23 +02:00
620c989845 Éditeur remplace Editeur 2022-09-19 10:26:39 +02:00
cea261469b templates complètés 2022-09-19 10:18:03 +02:00
6e342449f6 complément avec les textes des boutons absents du template 2022-09-19 10:17:49 +02:00
98503c649c charge la langue sélectionnée 2022-09-19 09:37:22 +02:00
62a1a9c3e4 Effacer un fichier help.html inutile 2022-09-19 09:37:06 +02:00
59b153d480 Version espagnole 90% 2022-09-19 09:25:27 +02:00
60da2f174a dev007 fichier de langue OKAY avec core.js.php 2022-09-19 08:46:36 +02:00
b2bf9331d4 Echo manquant dans appel template::topic 2022-09-18 18:21:27 +02:00
d174c639fd Traduction js dossier user 2022-09-18 17:55:20 +02:00
53469bab4a traduction js dossier plugin 2022-09-17 17:49:19 +02:00
89933ed14e traduction module page 2022-09-17 17:45:52 +02:00
b6e122cf45 traductions js du dossier install 2022-09-17 17:36:53 +02:00
0836619ef0 traduction des messages js de config 2022-09-17 16:55:22 +02:00
1e627f55c2 transcribe devient topic 2022-09-14 22:59:01 +02:00
13f93f5916 fin des modules 2022-09-14 22:54:46 +02:00
1956385a2b trenascibe plugin 2022-09-13 11:27:27 +02:00
06bef3c5bf transcribe module maintenance 2022-09-13 10:52:26 +02:00
f4a71455fb template:transcribe module installation 2022-09-13 10:51:10 +02:00
332941fe83 template::header devient topic::transcribe 2022-09-13 10:35:52 +02:00
5f148baad5 effacement d'un robot.txt inexistant 2022-09-13 10:29:39 +02:00
ee06dca830 Titre H4 de la config dans le template header 2022-09-13 09:46:03 +02:00
ecce84afd1 Création d'un template header pour la traduction des titres nom à changer ??? 2022-09-12 22:32:55 +02:00
a91de0528b Ajout de l'option de langue - onglets à ajouter 2022-09-12 22:14:51 +02:00
0eac2b11c9 Fermer la captation 2022-09-06 20:34:35 +02:00
8ba635624e template complet 2022-09-06 20:23:54 +02:00
5540c010fa template complet 2022-09-06 20:18:39 +02:00
6897bf82ad Bug template ico inactives 2022-09-06 20:07:15 +02:00
eeeda6febb template de langue 2022-09-06 19:54:31 +02:00
775d4f5872 Modèle install 2022-09-05 21:17:11 +02:00
3589b536da Bug dans la gestion des pluginq 2022-09-05 21:03:38 +02:00
f0dcc903ec langue par defaut désactivée 2022-09-05 20:47:22 +02:00
915997a3ff traduction génération du template.json 2022-09-05 20:17:50 +02:00
6aef6e81cd Commit incomplet traduction en cours 2022-09-05 09:00:23 +02:00
b256cafc6b Bulle aide nouvelle page 2022-09-03 09:09:41 +02:00
f8f92e0579 attribute de captcha inutile 2022-09-03 09:09:26 +02:00
d9fb3d093e Utilitaire de captation 2022-09-03 09:09:05 +02:00
eb55cb5ea4 Etendre la fonction de traduction à tout le template 2022-09-02 19:03:22 +02:00
914ea0dc79 Nom de la constante langue du contenu 2022-09-02 18:45:55 +02:00
20521c57da fix template::ico 2022-09-02 18:14:42 +02:00
95dab7b7ab Remettre la confirmation de suppresion dans le core 2022-09-02 18:10:20 +02:00
8c82f617a4 mise à jour blog 6.1 2022-09-02 18:07:53 +02:00
4aadb02de3 La confirmation de la suppression de page supprimée de core.js 2022-09-02 18:07:38 +02:00
93cad06654 Core.js les messages texte passent par le heper 2022-09-02 16:06:05 +02:00
6862c8d4f5 oubli dans la constante 2022-09-02 15:37:23 +02:00
674d7c0a56 Embryon de fonction de lecture des dialogues 2022-09-02 15:36:05 +02:00
dc1c0b6fe0 Suppresion de la fonction d'import de v9 et de la dummy fonction saveData. Embryon de la fonction de lecture des dialogues à compléter 2022-09-02 15:35:39 +02:00
e2d202506f Langue par défaut dans une variable 2022-09-02 15:34:28 +02:00
e0414c83dc nettoyage module search 2022-08-30 20:29:50 +02:00
e4916fa9cc dev006 réorganisation du contenu multilangues 2022-08-29 22:04:57 +02:00
0d31c15edf dev006 quelques nettoyages 2022-08-29 21:24:02 +02:00
1688960767 dev005 contrôle de validité du token 2022-08-29 20:37:36 +02:00
ba9c5bd98b dev005 remplacement de l'API Google de capture d'écran 2022-08-29 14:15:08 +02:00
2f5c0be4c7 nettoyage de code commenté 2022-08-29 11:45:45 +02:00
59a2406aaa Merge branch '11600-mac' into 11600 2022-08-29 11:31:27 +02:00
bba8ba33ca dev004 Nettoyage des icônes et script Google 2022-08-28 20:05:14 +02:00
9366b4d173 dev004 Supprimer les scripts Google 2022-08-28 19:55:52 +02:00
750e9f8881 dev004 suppression des données GT 2022-08-28 19:41:41 +02:00
967d8c929c dev004 Intégration des aides des icônes du core dans le template 2022-08-28 19:37:58 +02:00
3c8e438294 dev004 supprimer la classe notranslate spécifique à GT 2022-08-28 08:53:02 +02:00
cb2a7f4997 dev004 template ico 2022-08-27 10:17:43 +02:00
40f7296430 version core dev003 2022-08-27 09:40:09 +02:00
06b32aa54e dev003 bugs 2022-08-24 20:11:07 +02:00
c12978f93a dev003 suppression de la traduction automatique Google 2022-08-24 20:04:39 +02:00
7fe695d6a9 dev002 corrige un bug avec l'import des donénes d'un module qui n'est pas installé 2022-08-23 20:58:23 +02:00
78a05c4a55 dev002 plugin largeur des boutons 2022-08-23 20:45:34 +02:00
71d8c1ae09 dev001 install proxy champs pré renseignés 2022-08-23 20:36:08 +02:00
eba00a5039 dev-001 installation options avancées alignement d'une row 2022-08-22 21:12:53 +02:00
fabd739896 11.6.00-dev001 configuration du proxy au démarrage 2022-08-22 21:01:01 +02:00
2f44aceac5 11600 include version number 2022-08-20 09:52:08 +02:00
deb7ca6143 11600 2022-08-20 09:50:14 +02:00
c4a8bc6761 merge 11507 2022-08-08 10:16:12 +02:00
5e4a21627f Merge branch '11507' into 12_dev 2022-08-08 10:14:53 +02:00
fa43ddb202 ajoute des espaces 2022-08-08 10:09:06 +02:00
800818c9b0 11507 retour fichier initial 2022-08-08 09:59:14 +02:00
96ba0ed3e5 Suppression Google Analytics 2022-07-31 19:17:56 +02:00
e966767f4f 11506 bug barre de membres 2022-07-31 17:34:12 +02:00
49e636a726 11507 dossier fontes 2022-07-26 20:12:58 +02:00
f0ffb1bb8e 11506 Problème de chargement RFM 2022-07-19 17:15:19 +02:00
ece2ed97ad 11506 bug barre de membres 2022-07-19 17:15:17 +02:00
61c14b4189 11506 optimisation mise à jour en ligne 2022-07-19 17:13:51 +02:00
de9c235275 11505 2022-07-19 17:12:29 +02:00
aa7044e8c3 11506 Problème de chargement RFM 2022-07-19 17:01:58 +02:00
ccb440f386 11505 changes 2022-07-17 13:06:55 +02:00
a30f0977b8 length 2022-07-07 17:57:39 +02:00
8a5b045ae9 11506 bug barre de membres 2022-07-02 14:27:45 +02:00
f8fc633297 11506 optimisation mise à jour en ligne 2022-06-25 16:31:25 +02:00
64158856c2 typo 2022-06-25 15:14:18 +02:00
97366a9622 typo 2022-06-25 15:14:06 +02:00
346a10d1d4 12_dev changes11505 2022-06-25 15:07:45 +02:00
5c0b2b00f9 11505 changes 2022-06-25 15:06:03 +02:00
69e9f78508 11505 saisie obligatoire d'une ressource 2022-06-25 15:03:49 +02:00
64bc960029 <1505 bug cookie sur url complète 2022-06-25 15:03:49 +02:00
af49819e37 11505 bug catégorie de fonte vide + warning sur variable non initialisée 2022-06-25 15:03:49 +02:00
98bddca72a 11505 2022-06-25 15:03:44 +02:00
fb4d71c26c 11505 saisie obligatoire d'une ressource 2022-06-25 14:57:53 +02:00
f8687b857e <1505 bug cookie sur url complète 2022-06-25 14:57:48 +02:00
5195d970d2 11505 bug catégorie de fonte vide + warning sur variable non initialisée 2022-06-20 15:01:12 +02:00
50bff9081d 11505 2022-06-19 17:13:35 +02:00
837e13f7d2 Merge branch 'master' into 12_dev 2022-06-14 10:51:23 +02:00
4f44c8e817 Version du core 2022-06-12 15:14:24 +02:00
9faea02ac3 typos 2022-06-11 17:44:44 +02:00
67aea648eb 11504 bug API Google 2022-06-10 18:44:29 +02:00
4716733c34 11504 Génération de la capture d'écran du site 2022-06-10 18:40:55 +02:00
fe07622042 11504 Bug dans le module de recherche 2022-06-10 18:15:49 +02:00
b06f855ffc 11504 bug du sélecteur de module 2022-06-10 18:01:55 +02:00
760ae91027 Merge branch 'master' into 12_dev 2022-06-08 15:54:37 +02:00
aa2db372e7 changes 2022-06-08 15:48:43 +02:00
e4e9a808a6 changes 2022-06-08 15:47:48 +02:00
6dc4951dec 11503 alléger RFM 2022-06-06 16:10:30 +02:00
d77e8ba1e3 lity 90% width + RFM nettoyage dialog 2022-06-06 15:44:19 +02:00
290aab12d8 11503 Affiche les options d'édition lorsque le module de la page a été effacé 2022-06-02 14:35:31 +02:00
d8ddf7b0d8 Blog 53 icône RSS 2022-06-02 11:31:40 +02:00
35f8f26409 11503 changes 2022-06-01 12:42:11 +02:00
136dfad982 11503 Pb de fontes par cdn 2022-06-01 12:38:37 +02:00
269587a8f6 11503 2022-06-01 10:47:33 +02:00
0bf783f1fa 11502 changes 2022-06-01 10:15:39 +02:00
bfc1896028 bug cookie consent port différent de 80 2022-05-31 21:07:20 +02:00
cec51c03aa 11502 bug fontes 2022-05-31 21:03:56 +02:00
055e9d624c Merge branch 'master' into 12_dev 2022-05-29 13:55:54 +02:00
8023cb0826 Bouton installation de module 2022-05-28 18:45:25 +02:00
fccc3795f4 typo 2022-05-28 18:13:07 +02:00
93d35ba7b2 Merge branch 'master' into 12_dev 2022-05-28 18:08:13 +02:00
264ae85f0f version 11.5 2022-05-28 18:04:35 +02:00
1db350e937 search simplification du test 2022-05-28 18:03:43 +02:00
899b02cf79 update download 2.6 dans le module 2022-05-27 20:49:23 +02:00
0eab5625b3 Merge branch '11403' into 12_dev 2022-05-26 20:06:45 +02:00
5c358028c9 changes store 2022-05-26 20:01:22 +02:00
d53e3b2df3 Restauration de l'installation à partir du store 2022-05-26 20:00:53 +02:00
784d73f7ee Bug de la fonction copie 2022-05-26 19:57:57 +02:00
9c6ef7a346 search correctif pour download 2022-05-26 19:37:47 +02:00
b908be1287 Mise à jour structure pour download 2.6 2022-05-26 19:37:24 +02:00
18563c61bc Page ajouter nom court non défini 2022-05-26 19:00:58 +02:00
2981220cc3 forum WIP 2022-05-26 18:49:11 +02:00
6ad5d62d1f support image dans le résumé des articles. 2022-05-23 20:42:34 +02:00
4af1e61f61 Merge branch '11403' into 12_dev 2022-05-22 18:33:48 +02:00
a53d32dda6 Merge branch 'master' into 12_dev 2022-05-22 18:33:01 +02:00
de22004f48 supprimer constantes de modules inutiles 2022-05-22 18:31:02 +02:00
fb82059529 dot support php 8 2022-05-21 17:12:51 +02:00
355572b927 gallery masquer le bouton beck en mode mono galerie 2022-05-21 16:44:36 +02:00
45fd35bed5 bug unique gallery 2022-05-21 16:39:04 +02:00
0276406577 gallery initialisation config 2022-05-21 15:24:57 +02:00
7b01190bcd gallery bug unique gallery 2022-05-19 18:47:49 +02:00
0550e7a8f9 page edit bug persistence onglet extension 2022-05-19 18:30:23 +02:00
4697bd581f Modules Persistance tab sélection 2022-05-19 18:26:04 +02:00
c605d31e48 Connexion persistante 2022-05-19 15:20:57 +02:00
201d97ec41 modules supprimés 2022-05-18 15:04:30 +02:00
d41b8890ec message téléchargement bloqué 2022-05-15 17:32:24 +02:00
b9e753153f version 11.5 2022-05-15 16:45:04 +02:00
556a2f6c1a changes 2022-05-12 19:00:18 +02:00
9680e46eaf Merge branch '11.4.02' into 12_dev 2022-05-12 18:51:17 +02:00
76017a68e3 changes 2022-05-12 18:35:24 +02:00
faa3d7c895 Numéro de version 2022-05-10 18:23:00 +02:00
bd1a174272 Validité des fontes 2022-05-09 17:25:59 +02:00
66cb645700 typo 2022-05-09 16:25:59 +02:00
f4437eb72b Descriptif des fichiers 2022-05-08 18:38:00 +02:00
52573c58ed déplacement de bloc dans la config 2022-05-08 18:07:41 +02:00
538234fbb4 changes 2022-05-07 19:18:50 +02:00
6eb4f8fe9f Bug avec les fontes installées 2022-05-07 19:17:27 +02:00
1d7483729c Anciens fichiers d'aide non chargés 2022-05-07 18:37:44 +02:00
9ebe23aa0b Bug redirect validation cookie consent 2022-05-06 22:31:44 +02:00
f8a1dd5761 Edition de page sélecteur OK 2022-05-06 18:55:14 +02:00
b09bb1a85a Reverse accès aux BDD 2022-05-05 18:19:56 +02:00
6bf3fc29b5 typo 2022-05-04 13:19:54 +02:00
a27f2c2101 typo 2022-05-04 13:18:36 +02:00
1e6dbf9243 gitignore 2022-05-04 13:15:20 +02:00
67a55fb6d6 changes 2022-05-04 13:14:31 +02:00
785daea994 changes 2022-05-04 13:09:00 +02:00
14b66a7436 Merge branch '114_dev' into 12_dev 2022-05-03 16:38:42 +02:00
60166caf79 merge complément 2022-05-03 16:08:29 +02:00
188dd6b17d Merge branch '114_dev' 2022-05-03 16:08:13 +02:00
29c5192b78 bug htaccess 2022-04-30 15:37:24 +02:00
5b2075a6ac bug htaccess 2022-04-30 15:36:52 +02:00
e610c22283 Merge branch '114_dev' into 12_dev 2022-04-29 19:37:40 +02:00
408a8ed60e changes 2022-04-29 19:35:40 +02:00
5e25484263 Compatibilité RFM php 8.1 2022-04-29 19:25:31 +02:00
2de6bfb149 Merge branch '114_dev' of https://forge.chapril.org/Zwii/ZwiiCMS into 114_dev 2022-04-29 19:23:20 +02:00
25d1556210 commentaire htaccess - ligne à ne pas supprimer 2022-04-29 19:23:11 +02:00
ae71326bd0 virer gitignore 2022-04-29 19:22:22 +02:00
60f74c3247 virer gitignore 2022-04-29 16:21:02 +02:00
f567d7645d Disable rewrite not apache 2022-04-28 12:51:25 +02:00
02766515c5 Désactive rewrite URL sous nginx 2022-04-28 12:39:27 +02:00
fredtempez
01dd64f3e1 check Apache Server WIP 2022-04-28 11:17:51 +02:00
fredtempez
cc8dcce9e3 init bug rewrite 2022-04-28 11:04:01 +02:00
d24379e1cf Merge branch '114_dev' into 12_dev 2022-04-27 20:11:34 +02:00
ab37ed0ea9 Vérification de type dans import de 11307 + suppression baseUrl de core + numéro de version de defaultdata 2022-04-27 16:30:51 +02:00
8a96138620 Supprimer courrier 2022-04-27 16:23:35 +02:00
a659521c29 font edit restriction activation 2022-04-27 16:21:08 +02:00
cad736d74b Edition d'une fonte buf affichage des options des sélecteurs 2022-04-27 16:08:39 +02:00
8670ee34d6 fira sans url incorrecte 2022-04-26 18:51:13 +02:00
3d4be63df8 Fontes locales okay + boutons petits dans le thème 2022-04-26 18:46:09 +02:00
fbd17e0e38 Préchargement 2022-04-22 15:56:45 +02:00
f833181e37 arvi roboto et lora websafe 2022-04-22 15:44:58 +02:00
908e5501d1 fontes dynamiques selon le scope 2022-04-22 11:55:01 +02:00
fa4eaa9576 bug filtre fonte installée 2022-04-22 11:06:49 +02:00
bb0436f79f Fontes chargées à la demande selon le scope 2022-04-22 09:17:49 +02:00
b5caba6e70 Chargement de toutes les fontes 2022-04-21 23:37:57 +02:00
64af161bb2 Select avec family name 2022-04-21 18:38:19 +02:00
3177faf3f7 Revert "Supprime la propriété fonts du template select"
This reverts commit e4b84b024f.
2022-04-20 17:03:54 +02:00
e4b84b024f Supprime la propriété fonts du template select 2022-04-20 16:38:54 +02:00
a4503f8abb Merge branch '114_dev' into 12_dev phpmailer 2022-04-18 17:57:59 +02:00
4ec08675be php mailer v6.6.0 2022-04-18 17:52:14 +02:00
e3c0ba1735 changes 2022-04-18 17:31:09 +02:00
9a55d4ce02 changes 2022-04-18 17:30:54 +02:00
2651f59735 plugina dd to accessListe + changes 2022-04-18 17:18:41 +02:00
e8f338e417 addon add to accessList et changes 2022-04-18 17:18:05 +02:00
8c6aaf39c5 config connect libellé 2022-04-18 17:13:21 +02:00
16997b9648 state success sitemap 2022-04-18 14:55:26 +02:00
0f86ced72d Merge branch '114_dev' into 12_dev
Option de redirection
2022-04-18 14:55:02 +02:00
1b2991e640 Option qui redirige les pages d'administration vers le login 2022-04-18 14:51:10 +02:00
3293522dd1 accessList doublon 2022-04-18 14:33:12 +02:00
8abb9f9ae4 accessList doublon 2022-04-18 14:31:08 +02:00
b840d235ad Theme admin fontes non chargées 2022-04-17 14:47:06 +02:00
8ad2d12c45 Thème admin fontes available non chargée. 2022-04-17 14:45:44 +02:00
06358f6616 connectData manquant pour initData 2022-04-17 14:32:50 +02:00
a3c1dc32ad bug clé de fonte vide 2022-04-17 14:30:06 +02:00
bf447031eb bug clé de fonte vide 2022-04-17 14:29:47 +02:00
82e73a3383 bug clé de fonte vide 2022-04-17 14:28:51 +02:00
69d1648fbc TinyMCE : Bouton de justification 2022-04-16 17:32:29 +02:00
400552a759 feuille de style et script dans les barres 2022-04-16 17:29:25 +02:00
c3495cbc6d Message site map supp commentaires 2022-04-16 14:36:37 +02:00
76ccd3458d Message mise à jour sitemap 2022-04-16 14:36:04 +02:00
f0fc978869 message site map 2022-04-16 14:35:33 +02:00
80020983c0 Merge branch '114_dev' into 12_dev 2022-04-16 10:12:53 +02:00
7c83923c46 Bug liste des pages + renommage de fonctions 2022-04-16 10:08:59 +02:00
415f1e18a6 Merge branch '114_dev' into 12_dev 2022-04-15 18:21:32 +02:00
2c7914be34 bug cookie safari 2022-04-15 18:18:41 +02:00
f18a568451 bug cookies Safari 2022-04-15 18:17:41 +02:00
0c3b8182b9 Nettoyage codemirror
Bugs liés au CSS et JS perso des pages
2022-04-14 23:16:44 +02:00
ad538dd08f update dot 2022-04-14 22:21:57 +02:00
336992434b nettoyage 2022-04-14 22:16:52 +02:00
62866cf688 commentaire 2022-04-14 22:11:45 +02:00
0af64f6792 Merge branch '12_dev_db' into 12_dev 2022-04-14 22:09:58 +02:00
d978e9ac5b suppression import de version 9 2022-04-14 22:08:23 +02:00
071899ae2a chargement à la demande 2022-04-14 21:54:09 +02:00
844296ae33 Merge branch '114_dev' into 12_dev 2022-04-13 22:47:58 +02:00
a81385f4a3 Libellé dans page 2022-04-13 19:19:39 +02:00
3d0273f3a7 Réorganisation menu des pages 2022-04-13 16:11:41 +02:00
905cbab8d4 libellés des menus de page 2022-04-13 14:55:04 +02:00
88bd282034 création page pas de nom court 2022-04-13 14:48:57 +02:00
524bf1248e bug url relative dans tinymce 2022-04-12 13:26:08 +02:00
fredtempez
c073109f5a supprimer l'installation d'un template 2022-04-08 14:23:58 +02:00
fredtempez
fcd11f5475 english comments 2022-04-08 11:42:11 +02:00
fredtempez
61e97681b6 Régénration d'une BDD nulle 2022-04-08 11:35:37 +02:00
fredtempez
7bce73f553 Initialise les BDD vides 2022-04-08 11:05:59 +02:00
fredtempez
b60c4d4ba8 TinyMCE codemirror 2022-04-08 10:57:33 +02:00
fredtempez
f98708677a Merge branch '12_dev' of https://forge.chapril.org/Zwii/ZwiiCMS-private into 12_dev 2022-04-08 09:58:30 +02:00
fredtempez
010d04a67c plugin okay + new copyDir 2022-04-08 09:57:59 +02:00
fredtempez
56f9cd9b76 collum devient column compatibilité assurée 2022-04-08 09:57:59 +02:00
fredtempez
1d8aa3c0d3 Compatibilité arrayColumn et arrayCollumn 2022-04-08 09:57:58 +02:00
fredtempez
1caefb2d99 suspension l'option d'installation d'un module 2022-04-08 09:56:41 +02:00
fredtempez
b23d9f8c9b plugin okay + new copyDir 2022-04-08 09:47:35 +02:00
fredtempez
19aa822c8e collum devient column compatibilité assurée 2022-04-06 09:46:28 +02:00
fredtempez
cff4aeeda2 Merge branch '114_dev' into 12_dev 2022-04-06 09:42:49 +02:00
fredtempez
c10149eb42 Compatibilité arrayColumn et arrayCollumn 2022-04-06 09:38:58 +02:00
fredtempez
e4e6aff2ee libellé 2022-04-05 16:00:32 +02:00
fredtempez
8c26b42dec ajout d'une galerie ok 2022-04-05 15:50:48 +02:00
fredtempez
da1f293379 add vide WIP 2022-04-05 13:46:44 +02:00
fredtempez
a263ebc2a4 sotre renvoie vers addon et non install 2022-04-05 11:11:30 +02:00
fredtempez
81ed0a5cac suspension l'option d'installation d'un module 2022-04-05 11:10:39 +02:00
fredtempez
4ab2284231 Revert "install nettoyage pb de droit ?"
This reverts commit 058e6c4974.
2022-04-05 11:04:56 +02:00
058e6c4974 install nettoyage pb de droit ? 2022-04-04 20:05:13 +02:00
fredtempez
3da6f8970c options des galeries à vérifier 2022-04-04 16:36:59 +02:00
1b3a467bc7 routage form option 2022-04-02 18:13:55 +02:00
fredtempez
af74ff8c12 init 2022-04-01 15:45:14 +02:00
fredtempez
d82367104a galerie étendu du formulaire 2022-04-01 14:54:06 +02:00
fredtempez
13930a12a7 Interface boutons back 2022-04-01 14:45:47 +02:00
fredtempez
08e486c3cb Merge branch '114_dev' into 12_dev 2022-04-01 14:19:55 +02:00
fredtempez
03796c6bd1 Bug position images tri manuel 2022-04-01 14:14:36 +02:00
fredtempez
0ec7a8dc4e Gallery sort bug OKAY 2022-04-01 10:10:15 +02:00
fredtempez
dd15acf15c Merge branch '114_dev' into 12_dev 2022-04-01 09:33:54 +02:00
fredtempez
714f3b8ceb Merge branch '114_dev' into 114_dev_gallery_sort 2022-04-01 09:32:50 +02:00
fredtempez
6489cec8c3 Nettoyage de code 2022-04-01 09:32:04 +02:00
fredtempez
32154ffd6f Merge branch '114_dev' into 114_dev_gallery_sort 2022-04-01 09:04:05 +02:00
fredtempez
e59eecebc8 Merge branch '114_dev' into 12_dev 2022-04-01 08:40:19 +02:00
fredtempez
0ecf080d03 Merge branch '114_dev' of https://forge.chapril.org/Zwii/ZwiiCMS into 114_dev 2022-04-01 08:39:02 +02:00
fredtempez
cc78360984 URL lien d'aide du thème 2022-04-01 08:36:24 +02:00
d5bc4c87d9 Affichage + animations jquery okay 2022-03-31 21:57:52 +02:00
c775bcd998 Gallery bouton back paramètrable
display none dans gallery à voir  et jquery option à faire
2022-03-31 20:07:52 +02:00
b8016a3bc1 update quotes dans family name 2022-03-31 15:43:36 +02:00
0b2f514320 simple quotes 2022-03-31 15:40:16 +02:00
f35fbb8c71 import presque ok 2022-03-31 15:37:44 +02:00
c52c6f4438 import de fontes DIR_DATA !!!! 2022-03-31 15:07:16 +02:00
3f52396e9d import des fontes WIP 2022-03-31 15:03:13 +02:00
fa2e4b2be0 import font locale en test 2022-03-31 14:57:50 +02:00
fredtempez
6608f4dbd9 init 2022-03-30 12:30:27 +02:00
fredtempez
8fdf1367e2 Merge branch '114_dev' into 12_dev 2022-03-29 16:35:27 +02:00
fredtempez
fe15df439b Table DND 1.0.5 2022-03-29 16:00:35 +02:00
fredtempez
c03ef6fd65 Merge branch '114_dev' into 12_dev 2022-03-29 13:54:55 +02:00
fredtempez
48fb312730 change avec libellé modifié 2022-03-29 13:53:27 +02:00
fredtempez
1fa2bab090 Merge remote-tracking branch 'origin/114_dev' into 12_dev 2022-03-29 13:09:35 +02:00
fredtempez
2b02e058c4 Met à jour les URL absolues 2022-03-29 13:07:31 +02:00
fredtempez
aff2dce496 gerpage : supprime un test inutile 2022-03-29 13:07:12 +02:00
309a31639b format des icônes 2022-03-28 19:10:30 +02:00
2f45c1d0c3 format des icônes 2022-03-28 19:09:55 +02:00
5bb453739c remove gallery unique du theme 2022-03-28 19:07:44 +02:00
6d53973d67 merge gallery 2022-03-28 19:06:48 +02:00
1d50ee3f93 Merge remote-tracking branch 'origin/114_dev' into 12_dev 2022-03-28 19:06:31 +02:00
8da52e715a galerie avec nouvelles options 2022-03-28 18:57:06 +02:00
fredtempez
aea20bb2ae galerie : masquege de l'index d'une galerie unique en option 2022-03-28 16:57:53 +02:00
fredtempez
378f719ec6 RFM compatibilité PHP 8 2022-03-28 15:13:32 +02:00
8a2191af25 tinymce 5 wip 2022-03-27 19:06:00 +02:00
01bc932fe3 Update database engine 2022-03-27 18:13:43 +02:00
fredtempez
10c79f6247 no filebase on this branch 2022-03-25 14:19:19 +01:00
fredtempez
26318d73f4 filebase path 2022-03-25 14:10:46 +01:00
fredtempez
9a4fd20017 filebase install WIP 2022-03-25 11:51:01 +01:00
fredtempez
91266119de Merge branch '114_dev' into 12_dev 2022-03-25 10:40:54 +01:00
fredtempez
495a1f30c6 changes 2022-03-25 10:40:28 +01:00
fredtempez
b7573bd633 Merge branch '114_dev' into 12_dev 2022-03-25 10:32:08 +01:00
fredtempez
ec7ad7eb4f TYPO 2022-03-25 10:31:33 +01:00
fredtempez
68e933eab4 TYPO 2022-03-25 10:31:02 +01:00
fredtempez
74e6103d3b typo 2022-03-25 10:29:09 +01:00
fredtempez
897af85d72 Merge branch '114_dev' into 12_dev 2022-03-25 10:16:10 +01:00
fredtempez
91fdd14d5d Nom court 2022-03-25 10:15:49 +01:00
fredtempez
75ffd4b6b1 supprimer flur de page 2022-03-25 09:53:42 +01:00
fredtempez
928f43bfe7 Merge branch '114_dev' into 12_dev 2022-03-25 09:20:56 +01:00
fredtempez
255349e93c Mise à jour de pages TinyMCE, fonction mal placée 2022-03-25 09:19:45 +01:00
fredtempez
3a12176bbb furl page short title 2022-03-25 09:18:29 +01:00
f2a324e7f1 reload data 2022-03-24 18:39:36 +01:00
fredtempez
cf290efa0a Merge branch '114_dev' into 12_dev 2022-03-24 12:20:21 +01:00
fredtempez
6e2b089ee8 changes 2022-03-24 12:20:06 +01:00
fredtempez
a67047864a Merge branch '114_dev' into 12_dev 2022-03-24 10:53:39 +01:00
fredtempez
0e2542dba5 Formulaire complet de création de galerie 2022-03-24 10:53:24 +01:00
fredtempez
01ebc40fac Merge branch '114_dev' into 12_dev 2022-03-24 10:11:09 +01:00
fredtempez
02c7319035 bugs divers 2022-03-24 10:09:41 +01:00
fredtempez
23d8f1daaf changes galerie + version 2022-03-24 08:24:08 +01:00
fredtempez
0915f7901c Merge branch '114_dev' into 12_dev 2022-03-24 08:23:01 +01:00
fredtempez
67e873c7ed lignes vides 2022-03-24 08:22:18 +01:00
fredtempez
775b70ec80 Merge branch '114_dev' into 12_dev 2022-03-24 08:21:09 +01:00
fredtempez
9f38d65c6a supprimer un bloc et des espaces 2022-03-24 08:18:15 +01:00
c59f68b455 Galerie 3.5 avec supp espace et option showPageContent 2022-03-23 18:18:48 +01:00
fredtempez
9fd078bdaa Merge branch '114_dev' into 12_dev 2022-03-23 12:49:23 +01:00
fredtempez
399e94d9cb suppression updatebaseurl 2022-03-23 12:43:43 +01:00
fredtempez
bed633b5b1 url relative dans 11.4 2022-03-23 12:09:12 +01:00
fredtempez
6aa6916354 URL relatives + header adapté 2022-03-23 12:07:50 +01:00
ea438faae3 typo 2022-03-22 19:05:36 +01:00
1a8f99c7ee 11307 fonte placeholder 2022-03-22 18:50:53 +01:00
8b27aac5bd 11307 2022-03-22 18:50:33 +01:00
00bd968d32 Merge branch 'dev' into 12-dev 2022-03-22 18:38:34 +01:00
5534ea0247 Merge branch '11307-dev' into dev 2022-03-22 18:38:22 +01:00
fe9a6a8518 Numéro de version 2022-03-22 18:34:06 +01:00
fredtempez
cee76c53ce Merge branch 'dev' into 12-dev 2022-03-22 17:01:33 +01:00
fredtempez
b1dabba247 Merge branch '11307-dev' into dev 2022-03-22 16:57:21 +01:00
fredtempez
8e17734144 Mono galerie avec fullscreen ok 2022-03-22 16:53:01 +01:00
fredtempez
041b232dc6 supprimer commentaire 2022-03-22 15:46:18 +01:00
fredtempez
8174a0dc2a merge 2022-03-22 15:44:52 +01:00
fredtempez
244b302a92 Merge branch 'master' into 12-dev 2022-03-22 15:05:56 +01:00
fredtempez
ad7001eeb7 gammery 3.4 démarrage en mode plein écran inopérant 2022-03-22 13:55:26 +01:00
fredtempez
157ecc16ca faire diaparaitre le bouton back pour une mono galerie 2022-03-22 13:30:34 +01:00
b2dd61e392 change search 2022-03-21 19:22:46 +01:00
afbc7053e3 Check présence feuille de style avant chargement 2022-03-21 19:22:34 +01:00
77e3a54158 Merge branch 'dev' into 12-dev 2022-03-21 19:16:30 +01:00
2c981072a6 Gallery affiche directement la galerie seule + bug style absent 2022-03-21 19:16:11 +01:00
4b11331f81 Merge branch 'dev' into 12-dev 2022-03-21 18:58:11 +01:00
be1a9515df warning chargement de feuille de style de module absente 2022-03-21 18:57:13 +01:00
35cc13ae2f Merge branch 'dev' into 12-dev 2022-03-21 18:52:14 +01:00
0eaabc5f64 preconnect GF 2022-03-21 18:51:53 +01:00
6a13590c9b Merge branch 'dev' into 12-dev 2022-03-21 18:35:11 +01:00
64272d2c64 conversion des doubles quotes 2022-03-21 18:34:57 +01:00
85651cb4db guillemets simples dans update 2022-03-21 18:30:17 +01:00
7417b932de warning type vide 2022-03-21 18:25:54 +01:00
fredtempez
93595a53ca supprimer getfonts 2022-03-21 16:54:11 +01:00
fredtempez
8fc7ea86de gestion des fontes :
Simplifier getfonts
2022-03-21 15:35:05 +01:00
fredtempez
8bfc8ca519 varibale globale self::$fonts 2022-03-21 14:37:25 +01:00
fredtempez
373a62a8be Merge branch 'dev' into 12-dev 2022-03-21 11:52:39 +01:00
fredtempez
684212b031 idem pour les autres champs 2022-03-21 11:38:52 +01:00
fredtempez
9e229a5afe Nom de la famille de fonte, suppressio du filtre short string 2022-03-21 11:37:45 +01:00
fredtempez
c6144c3aa8 update ajout des fontes locales 2022-03-21 11:18:01 +01:00
fredtempez
10c3d01597 changes 2022-03-21 10:01:54 +01:00
fredtempez
b0d4823bec Merge branch 'dev' into 12-dev 2022-03-21 09:42:48 +01:00
fredtempez
40c6b8d787 Merge branch 'master' into dev 2022-03-21 09:42:25 +01:00
fredtempez
edffeecda3 fontes okay 2022-03-21 09:33:12 +01:00
de202823d9 bug double fontes à tester 2022-03-20 19:21:02 +01:00
04324128f0 changes 2022-03-20 18:58:27 +01:00
ef11622593 ajoute les fontes 2022-03-20 18:57:26 +01:00
3f65b79e82 ajout des fontes ok 2022-03-20 18:56:31 +01:00
6f42bb480f directory iterator wip 2022-03-20 10:11:30 +01:00
84b8ffffa9 init include fonts in progress 2022-03-20 09:15:06 +01:00
30baba0a08 Revert "12306-de"
This reverts commit 3e5fde5839.
2022-03-18 18:27:18 +01:00
3e5fde5839 12306-de 2022-03-18 18:21:57 +01:00
2285dd1cc5 bug de fonte admin, fichier de fonte absent 2022-03-18 18:19:21 +01:00
fredtempez
82b3c27b8b bug de fontes 2022-03-18 16:12:30 +01:00
fredtempez
4890b04baf plufin WIP + download en test 2022-03-18 14:15:21 +01:00
fredtempez
66c3636007 balise sémantique 2022-03-17 12:55:16 +01:00
fredtempez
d24acb3bc2 news perso css et balise sémantique article 2022-03-17 12:55:04 +01:00
fredtempez
8c9f3d0bd5 Police devient Fonte 2022-03-17 10:46:09 +01:00
fredtempez
7e971a3e38 font par défaut du menu 2022-03-17 10:45:18 +01:00
2ef99978c4 Initialisation correcte du module 2022-03-16 19:02:07 +01:00
638db41369 arrayColluymn la fonction 2022-03-16 18:44:51 +01:00
7c6ca6c940 arraycollumn quand même pour éviter les problèmes 2022-03-16 18:43:35 +01:00
aad80bc484 Merge branch 'dev' into 12-dev 2022-03-16 18:05:48 +01:00
1a4a85406d Merge branch 'master' into dev 2022-03-16 18:05:27 +01:00
c1cce42737 bug de virgule 2022-03-16 17:49:34 +01:00
fredtempez
2c0304369f amélioration plugins 2022-03-16 12:56:58 +01:00
fredtempez
c9ad1e1ef0 libellé page 2022-03-16 12:35:01 +01:00
fredtempez
b66a9562f1 Blog lien permanent + imga ede couvertire non obligatoire 2022-03-16 11:53:26 +01:00
fredtempez
038d85219f changes 2022-03-16 11:14:42 +01:00
fredtempez
19fcd10430 Position module dans page 2022-03-16 11:07:00 +01:00
fredtempez
4a8e2ff541 Contenu avancé des pages (css et js) 2022-03-16 11:02:17 +01:00
fredtempez
0df34177ca commenter la notification d'erreur 2022-03-15 16:46:23 +01:00
fredtempez
66d0b16837 bug rss okay 2022-03-15 16:45:44 +01:00
fredtempez
e26c319eba erreur rss à voir 2022-03-15 16:23:59 +01:00
fredtempez
7ce41dad33 Présentation des commentaires 2022-03-15 16:04:25 +01:00
fredtempez
04413d3a83 volume de signes 2022-03-15 15:39:44 +01:00
fredtempez
ca388016f7 blog disposition moderne + ordre headings 2022-03-15 15:30:33 +01:00
fredtempez
732fa5ffea Merge branch 'dev' into 12-dev 2022-03-15 11:49:11 +01:00
fredtempez
fd3e17a27f Merge branch 'master' into dev 2022-03-15 11:48:54 +01:00
fredtempez
c87face0a2 init 2022-03-15 09:57:56 +01:00
fredtempez
10218d0a63 blog WIP reste pleine page 2022-03-15 09:16:42 +01:00
fredtempez
ba58f2052f page bouton actif 2022-03-14 11:42:24 +01:00
fredtempez
71739486cf Merge branch 'dev' into 12-dev 2022-03-14 10:17:33 +01:00
fredtempez
6c29baf30f fira manquant de l'un des thèmes 2022-03-14 10:17:11 +01:00
fredtempez
9cc840d3ba Merge branch 'dev' into 12-dev 2022-03-14 09:39:59 +01:00
fredtempez
746f8d5a32 rafraichir les thèmes 2022-03-14 09:39:49 +01:00
fredtempez
35103c73c7 Merge branch 'dev' into 12-dev 2022-03-14 09:34:47 +01:00
fredtempez
1d4913417c changes 2022-03-14 09:33:17 +01:00
fredtempez
141b05ad61 bug type vide 2022-03-14 09:31:35 +01:00
28a83cfd6b collumn column 2022-03-13 17:59:24 +01:00
b360acca02 Merge branch '12-dev' of https://forge.chapril.org/fredtempez/ZwiiCMS into 12-dev 2022-03-13 14:47:06 +01:00
6fa4d6402c resource 2022-03-13 14:47:01 +01:00
8f39d10465 resource 2022-03-13 14:46:39 +01:00
307a5ea0e1 resource 2022-03-13 14:45:48 +01:00
ba7aa5ed51 url to ressource 2022-03-13 11:56:00 +01:00
0ad1126efa url -> ressource 2022-03-13 11:55:26 +01:00
3532288fcf Merge branch 'dev' into 12-dev 2022-03-13 10:20:05 +01:00
4964d6b08b delete fonte ok 2022-03-13 10:14:56 +01:00
7355b06db4 fontEdit en mieux 2022-03-13 10:09:49 +01:00
d6c2cd62d2 fontEdit à tester 2022-03-12 14:00:33 +01:00
827047b8cd formulaire édition de fonte okay 2022-03-12 12:28:28 +01:00
9f2fb7732c défaut initialisation 2022-03-12 12:00:12 +01:00
fredtempez
dbf1f18e34 font edit à terminer 2022-03-11 16:09:43 +01:00
fredtempez
c6e1ef2aeb font Add okay 2022-03-11 15:56:06 +01:00
fredtempez
2aadc1bbaa Nouvelle structure de fontes ok 2022-03-11 14:03:42 +01:00
fredtempez
cd6e6145f4 formulaire ajout de fonte okay 2022-03-11 11:12:16 +01:00
fredtempez
29396c8a10 liste des fontes ok 2022-03-11 09:59:59 +01:00
fredtempez
bafb7b3bc3 theme liste des polices ok 2022-03-11 09:17:13 +01:00
142611e69d theme WIP 2022-03-10 17:06:28 +01:00
fredtempez
9dc533d7a9 Gestion des fontes des feuilles de style ok 2022-03-10 15:09:56 +01:00
fredtempez
cfb61590f0 Présentation config / sécurité de la connexion 2022-03-10 09:55:38 +01:00
fredtempez
3284486383 column renommé + import des polices en cours 2022-03-09 12:50:05 +01:00
fredtempez
f5ba9c2ccb collumn avec un seul l 2022-03-09 12:24:23 +01:00
fredtempez
f4cc1af9ae bug changement menu standard ou accessoire 2022-03-09 09:15:47 +01:00
fredtempez
66faa596dd commentaire et polices par défaut 2022-03-08 15:22:22 +01:00
fredtempez
3d243e3463 Bug : ordre des pages du menu standard a résoudre 2022-03-08 13:46:55 +01:00
fredtempez
f57f9ec4bb Ok sans la liste des pages accessoires 2022-03-08 13:12:03 +01:00
fredtempez
015b0377ea menu accessoire, retour à la version la première du js 2022-03-08 11:32:55 +01:00
fredtempez
4c406844cb Merge branch 'dev' of https://forge.chapril.org/fredtempez/ZwiiCMS into dev 2022-03-08 10:47:33 +01:00
fredtempez
06251825cc bannière info dimensions de l'image 2022-03-08 10:47:26 +01:00
fredtempez
88a8793258 Fontes websafe + cdfonts en option 2022-03-08 10:47:26 +01:00
fredtempez
5d63297205 bug help largeur 2022-03-08 10:47:26 +01:00
9a469dc71c websafe Manque prévisualisation dans la liste de fontes 2022-03-08 10:47:26 +01:00
fredtempez
6deda024c8 init 2022-03-08 10:47:15 +01:00
fredtempez
a5cb27611f sauvegarder js et css des pages 2022-03-08 08:54:43 +01:00
fredtempez
dfde4ee228 Merge branch 'dev' into 12-dev 2022-03-07 15:28:19 +01:00
fredtempez
5928881ce6 bannière info dimensions de l'image 2022-03-07 14:09:09 +01:00
fredtempez
059efebddd Fontes websafe + cdfonts en option 2022-03-07 11:31:52 +01:00
fredtempez
3117ebedbe bug help largeur 2022-03-07 10:30:56 +01:00
2fbf20a612 websafe Manque prévisualisation dans la liste de fontes 2022-03-05 15:49:03 +01:00
600799f35b changes 2022-03-05 10:22:48 +01:00
8d284d55ff Merge branch 'master' into 12-dev 2022-03-04 21:11:21 +01:00
e7bbd18e4c changes et readme 2022-03-04 18:07:14 +01:00
abdf47cd01 commentaire 2022-03-04 18:00:26 +01:00
33086ee933 méthode chargement des polices 2022-03-04 17:59:30 +01:00
f354377711 contenu 2022-03-04 17:11:57 +01:00
5e4eede049 change 2022-03-04 12:31:33 +01:00
9bcfca906b Page EDIT WIP 2022-03-04 10:15:24 +01:00
565788f81a Numéro de version 2022-03-03 16:56:50 +01:00
4cf65fcd17 disposition 2022-03-03 16:56:25 +01:00
bf0cc8c4b6 onglets de la config 2022-03-03 16:53:46 +01:00
283b98c6e7 login buttons 2022-03-03 16:14:49 +01:00
fdae48ba2c Ajout d'une classe aux contenus 2022-03-01 19:41:31 +01:00
c8f2648009 config systeme de tabulation 2022-03-01 19:39:24 +01:00
487e42394e id dupliquées 2022-03-01 18:46:05 +01:00
f3d64c17f8 numéro de verison et change 2022-03-01 10:33:20 +01:00
02f261b51a duplication d'id bis 2022-03-01 10:27:27 +01:00
a33e4fe738 Revert "duplication d'ID"
This reverts commit 2a94973073.
2022-03-01 10:26:11 +01:00
2a94973073 duplication d'ID 2022-02-28 18:53:57 +01:00
db9ac7292b bug validation cookie 2022-02-27 11:51:38 +01:00
dd14c02b64 </div> en trop 2022-02-27 11:40:12 +01:00
c98ad08618 changes 2022-02-26 17:20:55 +01:00
99d57bdcf3 update message erreur explicite 2022-02-26 15:16:03 +01:00
7aa0cda992 display error + delete trailing spaces 2022-02-26 14:46:43 +01:00
1f9dd15f2c Merge branch 'master' into 114-dev 2022-02-26 14:26:51 +01:00
456b20b895 11.4 2022-02-26 14:14:34 +01:00
44b41c4cc1 proprité ExtraProsition false par défaut 2022-02-25 20:45:42 +01:00
19162c3572 changes 2022-02-25 20:04:57 +01:00
500372a146 Ordre des pages (menu accessoire) 2022-02-25 20:03:12 +01:00
fredtempez
8edda8e586 Aide vers la page des fontes 2022-02-25 14:45:12 +01:00
fredtempez
d94a5db617 getUrlContent 2022-02-25 11:24:16 +01:00
fredtempez
e4fc3c8cae changes et taille des cones dans les boutons 2022-02-25 11:23:21 +01:00
fredtempez
7aeb6da244 fix dot class 2022-02-25 11:02:20 +01:00
fredtempez
4a893f6b29 nettoyage 2022-02-25 10:54:37 +01:00
fredtempez
da29b0ea3f admin couleur par défaut texte des boutons sombre 2022-02-25 10:44:54 +01:00
fredtempez
77aaeba374 erruer theme admin coueluir du texte 2022-02-25 10:29:52 +01:00
fredtempez
01dbf094c2 icone 'cancel' devient 'trash' pour les effacements 2022-02-25 10:04:46 +01:00
fredtempez
4660d25f93 coimmentaires IO 2022-02-25 09:05:37 +01:00
fredtempez
bd881b6a80 deleteData ok 2022-02-25 08:49:06 +01:00
fredtempez
7ce2d60b50 delete ok 2022-02-25 08:42:00 +01:00
fredtempez
63f94e321f setData return ok 2022-02-25 08:27:16 +01:00
fredtempez
3e4cb99750 init 2022-02-24 15:41:51 +01:00
fredtempez
79c22bef27 Merge branches '11303-dev' and '11303-dev' of https://forge.chapril.org/fredtempez/ZwiiCMS into 11303-dev 2022-02-24 09:37:54 +01:00
6e0fedb15d ordre des pages dans le menu accessoire 2022-02-22 19:11:05 +01:00
fredtempez
fe70175221 Liste des pages dans extra 2022-02-22 16:29:47 +01:00
fredtempez
8e66337cd8 Merge branch 'export' 2022-02-22 09:03:48 +01:00
fredtempez
10d8b78b70 Supprimer le theme admin de la page accueil du theme
Numérotation de la version
2022-02-22 08:55:39 +01:00
0ac47e16af typo 2022-02-21 18:04:21 +01:00
43196b5680 typo 2022-02-21 17:57:31 +01:00
e2a9cfe252 core version 2022-02-21 17:56:16 +01:00
fredtempez
e022892e7d changes 2022-02-21 16:38:02 +01:00
fredtempez
b0308ad941 Bug import de fonte + définition d'une fonte en ligne 2022-02-21 16:17:46 +01:00
fredtempez
b86d88ed0e Theme moderne corrigé 2022-02-21 16:17:16 +01:00
fredtempez
550c234656 Pb d'URL avec le thème moderne 2022-02-21 14:11:43 +01:00
b8f3d1c2c1 lity 2022-02-18 18:51:37 +01:00
4b555ae12a minify lity 2022-02-18 18:49:18 +01:00
17cc95ef22 petits bugs 2022-02-18 18:40:30 +01:00
2bf7020886 changes et strip_tags dans blog 2022-02-18 18:24:26 +01:00
a3651b189f extraPosition manquante 2022-02-18 17:58:25 +01:00
0951382c40 extra position 2022-02-18 13:25:30 +01:00
bd786bd6bb Récupération extra 2022-02-18 12:44:21 +01:00
b49c7b5bf5 Récupération extra 2022-02-18 12:43:48 +01:00
1f202ed38b supprimer sleekdb dans master 2022-02-17 18:04:04 +01:00
2a9d8a1bc2 double descripteur 2022-02-17 16:58:52 +01:00
48bbaee29b sleekdb AUTOLOAD 2022-02-17 15:47:19 +01:00
b64c92bf22 classe sleekDB 2022-02-17 15:46:59 +01:00
a16550b0cd Module plugin qui a sauté 2022-02-17 15:45:25 +01:00
17420c1a33 Merge branch 'master' of https://forge.chapril.org/fredtempez/ZwiiCMS-private 2022-02-17 15:28:33 +01:00
3cc976b60e removeDir addon when no folder 2022-02-17 15:28:27 +01:00
fredtempez
152c4fc712 icone courte des fontes + readme 2022-02-17 15:27:57 +01:00
57d15fc646 url cdnfonts en https 2022-02-17 15:23:18 +01:00
c6c9aad4d4 bug rfm 2022-02-17 10:48:25 +01:00
788ff73bbb typos 2022-02-15 13:53:50 +01:00
51e4b03c1c Merge branch '12000' 2022-02-15 13:27:33 +01:00
0ed4c3752d version 11.3.00 2022-02-15 13:18:52 +01:00
e2998666b1 Bug notification de mise à jour 2022-02-15 11:17:55 +01:00
c2f6e591d2 changes 2022-02-15 11:08:30 +01:00
0730ee36d0 Strip_tag 2022-02-15 10:58:08 +01:00
050386826d Page dans le menu accessoire, actualisation de la liste des pages dans le sélecteur 2022-02-14 12:34:41 +01:00
0f77fd4d2b format webp 2022-02-13 15:03:34 +01:00
fc524450b6 removeDir addon when no folder 2022-02-12 17:12:12 +01:00
b2094b7834 Revert "Merge branch '11300' of https://forge.chapril.org/fredtempez/ZwiiCMS-private into 11300"
This reverts commit 81f2fad880, reversing
changes made to 333bc1f9cb.
2022-02-12 17:10:59 +01:00
5bdd8a211d Merge remote-tracking branch 'origin/11300' into 12000 2022-02-12 17:00:01 +01:00
81f2fad880 Merge branch '11300' of https://forge.chapril.org/fredtempez/ZwiiCMS-private into 11300 2022-02-12 16:58:44 +01:00
333bc1f9cb Pages dans le menu accessoire 2022-02-12 16:55:41 +01:00
04c597d0fe cosmetique 2022-02-12 15:54:15 +01:00
fredtempez
52c2f3f82e icone courte des fontes + readme 2022-02-11 16:08:49 +01:00
fredtempez
ae89206766 readme 2022-02-11 16:07:11 +01:00
fredtempez
6e07c7ff4e bouton fonte en trop 2022-02-11 15:22:37 +01:00
fredtempez
d146b240e6 Merge branch '11300' into extra 2022-02-11 15:16:51 +01:00
fredtempez
9a5104f37c jeu icone fonte 2022-02-11 14:33:05 +01:00
fredtempez
c9d4d8aeda Emplacement icone boutons 2022-02-11 14:18:47 +01:00
fredtempez
f020114588 Bug import par cdnfonts 2022-02-11 11:50:28 +01:00
fredtempez
ffd1e3e18a getUrlContents 2022-02-10 14:43:38 +01:00
fredtempez
ef32aa45d2 getUrlContents 2022-02-10 14:43:00 +01:00
fredtempez
f05e2ae497 needle error 2022-02-10 13:34:33 +01:00
fredtempez
0128e3620d tableau des fontes 2022-02-10 10:44:35 +01:00
fredtempez
155166ea8f Important des fontes en ligne avec link 2022-02-10 10:38:46 +01:00
fredtempez
bec2a671e0 guillemet font family 2022-02-10 09:50:09 +01:00
fredtempez
53e10841d5 Tri des polices bis 2022-02-10 09:22:21 +01:00
fredtempez
dcc0bd6d95 Tri alphabétique 2022-02-10 09:16:25 +01:00
fredtempez
77781aa817 Amélioration du formulaire de fonte 2022-02-10 09:10:21 +01:00
fredtempez
ce1b69d42b Formatage du code + typo 2022-02-10 08:29:28 +01:00
fredtempez
4f9e555e82 Check de valiaité sur le nom de la fonte 2022-02-10 08:25:23 +01:00
fredtempez
c0110c7c22 wwarning suppression de page sans contenu 2022-02-10 08:03:52 +01:00
2a8a303de1 Test viré en attente + bug files 2022-02-09 16:33:03 +01:00
72c5bbc836 input file pas obligatoire 2022-02-09 16:19:17 +01:00
33ba0bef22 Aide fontadd 2022-02-09 16:17:56 +01:00
98684d3613 décalage du bouton dans input file avec une notice 2022-02-09 16:10:13 +01:00
2e572a793b retour addform 2022-02-09 16:07:45 +01:00
71fcae697d core var_dump 2022-02-09 16:03:20 +01:00
bc28e72aff Check family name 2022-02-09 15:59:11 +01:00
950396a8a0 changes 2022-02-09 15:36:09 +01:00
d736610248 notice effacement d'une page sans module 2022-02-09 15:32:04 +01:00
fa4b762d00 Fontes utilisées okay pour tests 2022-02-09 15:21:44 +01:00
fredtempez
225f38064c Fontes employée WIP 2022-02-09 12:56:59 +01:00
fredtempez
f034ea3b57 Autrre bug de défintiion css à vérifier 2022-02-09 12:56:42 +01:00
fredtempez
a26f07de0c bug constructeur de css 2022-02-09 12:48:32 +01:00
fredtempez
34454b7238 Changes 2022-02-09 10:47:42 +01:00
fredtempez
5d3f06a527 Import et suppression des fontes 2022-02-09 10:43:04 +01:00
05e0fad922 Copy ok 2022-02-08 21:19:39 +01:00
a3c2eb3978 manque copie du fichier woff 2022-02-08 19:34:37 +01:00
fredtempez
d64c743467 Effacement de police WIP 2022-02-08 17:00:08 +01:00
fredtempez
be0b4ca818 réimport du thème pour les fontes WIP 2022-02-08 13:23:34 +01:00
fredtempez
e1d18c54d3 optimisation fontes dans le theme 2022-02-08 13:23:15 +01:00
fredtempez
6578c455ae Merge branch '11300' into extra 2022-02-08 12:40:59 +01:00
fredtempez
f8f315617d menu de fonts en cours 2022-02-08 12:28:22 +01:00
fredtempez
613d048fcc identification des li dans le menu 2022-02-08 12:26:56 +01:00
fredtempez
129a3b568b id et class des éléments de menu 2022-02-08 11:44:37 +01:00
8ea56f8ae9 test fonts 2022-02-07 19:10:16 +01:00
fredtempez
452d245e00 Effacer le dossier addon 2022-02-07 15:17:21 +01:00
fredtempez
a4ad7645ea Numérotation v12 2022-02-07 15:14:02 +01:00
fredtempez
0a498fedb6 Préparation gestion des fontes 2022-02-07 15:10:31 +01:00
fredtempez
db9123362e changes 2022-02-07 15:10:19 +01:00
fredtempez
44e7c653e6 nettoyage de code commenté 2022-02-07 14:58:53 +01:00
fredtempez
4d222d8e8e Jeu d'icônes en conflit de merge 2022-02-07 14:05:10 +01:00
fredtempez
e01a1a62e1 update 2022-02-07 14:03:22 +01:00
fredtempez
4446e93c6b Merge branch 'extra' of https://forge.chapril.org/fredtempez/ZwiiCMS-private into extra 2022-02-07 14:02:05 +01:00
fredtempez
04d953747a petites modifs ergonomie 2022-02-07 14:01:32 +01:00
fredtempez
25aea3bfca Boutons de sélection 2022-02-07 14:01:32 +01:00
fredtempez
33b4fa9139 Supp module okay 2022-02-07 14:01:32 +01:00
fredtempez
7df429d5e2 Delete Module WIP 2022-02-07 14:01:32 +01:00
fredtempez
9d729ee710 Filtre des pages de l'import 2022-02-07 14:01:32 +01:00
fredtempez
0af01481c4 Modules dans la langue sélectionnée 2022-02-07 14:01:32 +01:00
fredtempez
04b602b118 descripteur d'export 2022-02-07 14:01:32 +01:00
2d07aa2c4d dataImport WIP 2022-02-07 14:01:32 +01:00
cb3a3d82c5 oredre des tableaux 2022-02-07 14:01:32 +01:00
fredtempez
a566883b06 importData WIP 2022-02-07 14:01:32 +01:00
fredtempez
ae09556e8d Sauvegarde des modules 2022-02-07 14:01:32 +01:00
0e8c03e79b Commentaires et nettoyage 2022-02-07 14:01:32 +01:00
d38a913bee moduels orphelins ok 2022-02-07 14:01:31 +01:00
fredtempez
b2d9f48faa Résourdre la lecture des modules et des pages dans chaque langue traduite 2022-02-07 14:01:31 +01:00
fredtempez
3cc035d37c Gestion des modules Ok avec langues 2022-02-07 14:01:31 +01:00
fredtempez
5ad0bed230 méthode non privée 2022-02-07 14:01:31 +01:00
fredtempez
7db85004a0 addon -> plugin 2022-02-07 14:01:31 +01:00
fredtempez
7e2df69c95 nom addon -> plugin +export wip 2022-02-07 14:01:31 +01:00
fredtempez
9663e67bc3 bug autoupdate 2022-02-07 14:01:31 +01:00
f9810ade1d url store 2022-02-07 14:01:31 +01:00
2442576010 effacement du dossier des sauvegarde auto 2022-02-07 14:01:31 +01:00
fredtempez
bfbcb95510 Nouveau jeu d'icônes 2022-02-07 14:01:31 +01:00
fredtempez
ec8ead747a supprime le système d'aide interne 2022-02-07 13:59:47 +01:00
fredtempez
ebe76fad2a Aide sur les boutons d'icônes 2022-02-07 13:59:47 +01:00
7dda7063d2 version 2022-02-07 13:59:47 +01:00
fredtempez
eaf9048479 Aide des boutons 2022-02-07 13:59:18 +01:00
fredtempez
51e6fd6b98 Template button, propriété help 2022-02-07 13:59:18 +01:00
fredtempez
fc89f26d19 Réduction des boutons 2022-02-07 13:59:18 +01:00
fredtempez
f22298a113 Boutons courts dans les modules 2022-02-07 13:59:18 +01:00
fredtempez
69150cb4db news layout -> option 2022-02-07 13:59:18 +01:00
fredtempez
b9be27810e blog form et gallery icone dans value 2022-02-07 13:59:18 +01:00
fredtempez
0a8646ebd9 blog icones sans texte 2022-02-07 13:59:18 +01:00
fredtempez
524ea94bbc layout -> option 2022-02-07 13:59:18 +01:00
fredtempez
7c687e75c2 forme v3 suite 2022-02-07 13:59:18 +01:00
fredtempez
bf8b71e4bf form option alignement + gabarit 2022-02-07 13:59:18 +01:00
bd3e068095 update version de test 2022-02-07 13:59:18 +01:00
fredtempez
c8cc8ea9fd init.js complet + changes + numéro de version update 2022-02-07 13:59:18 +01:00
c201e70af5 config mise à jour avec la nouvelle fonction 2022-02-07 13:56:04 +01:00
323147ac85 toutes url relatives 2022-02-07 13:56:04 +01:00
b03488c689 relative_url 2022-02-07 13:56:04 +01:00
fredtempez
5be1f4641f layout -> option 2022-02-07 13:56:04 +01:00
fredtempez
18a17e5576 Form 3.0 WIP 2022-02-07 13:56:04 +01:00
0e3c9e779b Blog 6.0 2022-02-07 13:56:04 +01:00
615bf640a9 News 4.0 Icone bu bouton layout + version en bas du masque layout 2022-02-07 13:56:04 +01:00
195f638469 Gallery 3.4 2022-02-07 13:56:04 +01:00
29fe8f84d8 News v4.0 2022-02-07 13:56:04 +01:00
fredtempez
50354200af Bug site.js 2022-02-07 13:50:40 +01:00
fredtempez
327387b6d6 Création du dossier des fontes dans data 2022-02-07 10:32:36 +01:00
fredtempez
23c5200aac Importation des polices 2022-02-07 10:27:21 +01:00
fredtempez
92e0837576 Fontes theme + admin corrections + liberation 2022-02-07 09:29:29 +01:00
fredtempez
94ce5a2d85 version dans defaultdata 2022-02-07 07:57:49 +01:00
b7e475cc61 changes 2022-02-06 17:18:21 +01:00
b31159513c Chargement localisé des polices de carcatères 2022-02-06 17:13:16 +01:00
4f64de7aa3 Compression des olices importées 2022-02-06 12:16:51 +01:00
2fa77bc465 version 2022-02-06 11:32:29 +01:00
1d3483f315 Update OKay 2022-02-06 11:16:16 +01:00
fredtempez
93ae867328 Init
Nouvelles polices cdnfonts
Correction de bugs

Mise à jour à corriger
2022-02-04 16:26:39 +01:00
fredtempez
09fdb34b7f garder puzzle 2022-02-04 09:14:39 +01:00
fredtempez
4a4e44e681 Suppression fontawesome 2022-02-04 09:12:07 +01:00
fredtempez
957121d76e petites modifs ergonomie 2022-02-04 08:45:58 +01:00
fredtempez
5c9a779dff Boutons de sélection 2022-02-03 12:16:01 +01:00
fredtempez
3c0e80699b Supp module okay 2022-02-03 11:46:48 +01:00
fredtempez
ac7d71e349 Delete Module WIP 2022-02-03 10:58:16 +01:00
fredtempez
3e202102ea Filtre des pages de l'import 2022-02-03 10:41:59 +01:00
fredtempez
418b3b20c3 Modules dans la langue sélectionnée 2022-02-03 09:47:52 +01:00
fredtempez
0e004a6f52 descripteur d'export 2022-02-03 08:55:14 +01:00
e315283830 bug aperçu theme site 2022-02-02 18:27:42 +01:00
78c28ca79f dataImport WIP 2022-02-02 17:59:07 +01:00
de24c11189 oredre des tableaux 2022-02-02 17:04:44 +01:00
fredtempez
760257e3b2 importData WIP 2022-02-01 16:56:02 +01:00
fredtempez
07ea34eb9b Merge branch '11206' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 11206 2022-02-01 13:46:06 +01:00
fredtempez
f148b41782 Supprimer une propriété CSS 2022-02-01 13:43:36 +01:00
cc713f1a16 changes 2022-01-31 18:50:34 +01:00
ad692bd985 Informations sur l'image de la bannière 2022-01-31 18:49:03 +01:00
597a7493e2 init 11206 2022-01-31 18:16:37 +01:00
fredtempez
5bc2ecdab8 Sauvegarde des modules 2022-01-31 14:24:45 +01:00
c73722c5b4 Commentaires et nettoyage 2022-01-29 19:26:58 +01:00
798b1df093 moduels orphelins ok 2022-01-29 19:22:09 +01:00
fredtempez
4bc8b9b080 Résourdre la lecture des modules et des pages dans chaque langue traduite 2022-01-28 15:13:04 +01:00
fredtempez
4c6be2f63c Gestion des modules Ok avec langues 2022-01-28 14:28:37 +01:00
fredtempez
53246e9567 méthode non privée 2022-01-27 10:21:54 +01:00
fredtempez
2638a58aac addon -> plugin 2022-01-26 11:41:36 +01:00
fredtempez
29aaf0c346 nom addon -> plugin +export wip 2022-01-26 11:40:48 +01:00
fredtempez
974b6ac3e1 merge 11205a into extra 2022-01-26 10:51:24 +01:00
fredtempez
21d8c58b96 bug autoupdate 2022-01-26 10:22:41 +01:00
fredtempez
c575e9c696 11205 bug icone comptes éditeurs 2022-01-26 09:51:51 +01:00
fredtempez
199022a244 Gestion des cookies 2022-01-25 11:36:11 +01:00
fredtempez
ee91af4bdc 11205 Pb de config des cookies 2022-01-24 16:53:04 +01:00
fredtempez
3c0c290533 Revert "Champs de cookie obligatoires si case non cochée"
This reverts commit 4b2183cc34.
2022-01-24 16:49:25 +01:00
fredtempez
4b2183cc34 Champs de cookie obligatoires si case non cochée 2022-01-24 16:45:37 +01:00
bbfe41e0fe typo 2022-01-22 16:36:56 +01:00
4486995404 url store 2022-01-21 19:12:24 +01:00
28988342a3 effacement du dossier des sauvegarde auto 2022-01-21 19:11:51 +01:00
fredtempez
e37460f4f8 Nouveau jeu d'icônes 2022-01-21 14:31:36 +01:00
fredtempez
9b2221bed2 supprime le système d'aide interne 2022-01-21 13:50:21 +01:00
fredtempez
4a0848c003 Aide sur les boutons d'icônes 2022-01-21 10:58:13 +01:00
fredtempez
99f57dfd31 11204 changes.md + commentaire dans htaccess 2022-01-21 08:48:34 +01:00
fredtempez
86116c6563 11.2.04 Check Version 2022-01-21 08:45:52 +01:00
e094a79a24 version 2022-01-20 17:11:12 +01:00
fredtempez
297016a87f Aide des boutons 2022-01-20 15:40:56 +01:00
fredtempez
318458b948 Template button, propriété help 2022-01-20 13:39:42 +01:00
fredtempez
a49fda9657 Réduction des boutons 2022-01-20 13:28:33 +01:00
fredtempez
16d848f884 Boutons courts dans les modules 2022-01-20 10:50:40 +01:00
fredtempez
a7e287b74c news layout -> option 2022-01-20 10:37:00 +01:00
fredtempez
3aa29f8fa2 blog form et gallery icone dans value 2022-01-20 10:32:32 +01:00
fredtempez
334f3c8e8a blog icones sans texte 2022-01-20 10:25:20 +01:00
fredtempez
9de918120f layout -> option 2022-01-20 09:53:40 +01:00
fredtempez
bb9dbdd799 forme v3 suite 2022-01-20 09:34:04 +01:00
fredtempez
29ba48850c form option alignement + gabarit 2022-01-20 09:33:29 +01:00
30edec7ff7 Merge branch 'extra' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into extra 2022-01-19 19:30:49 +01:00
74d28667d9 update version de test 2022-01-19 19:14:14 +01:00
2a90e078df point version le dossier update v11 2022-01-19 19:08:51 +01:00
76761079be v11.3 2022-01-19 19:08:15 +01:00
b03055654f Merge branch 'relative-url' into extra 2022-01-19 18:55:43 +01:00
fredtempez
02d48bd724 layout -> option 2022-01-19 11:43:16 +01:00
fredtempez
d21bd7232d Form 3.0 WIP 2022-01-18 16:55:48 +01:00
7d328124f4 Blog 6.0 2022-01-17 19:32:06 +01:00
17f2e87cb8 News 4.0 Icone bu bouton layout + version en bas du masque layout 2022-01-17 19:30:25 +01:00
1700769354 Gallery 3.4 2022-01-17 19:29:36 +01:00
c35b89c8b8 Revert "News v4.0"
This reverts commit 78c3d4e174.
2022-01-17 19:13:35 +01:00
78c3d4e174 News v4.0 2022-01-17 19:12:07 +01:00
432906085d News v4.0 2022-01-17 19:11:05 +01:00
7d570763eb news 3.7 défaut initialisation 2022-01-17 18:41:46 +01:00
fredtempez
1f8fba7a71 Affichage des blocs 2022-01-17 10:52:42 +01:00
fredtempez
ed9381925f TinyMCE barre d'outils allégée 2022-01-17 10:47:13 +01:00
fredtempez
f10be16de6 Theme surnuméraire 2022-01-17 09:49:45 +01:00
fredtempez
1d92f39f2f Addon étiquettes 2022-01-14 15:27:19 +01:00
fredtempez
16fd8639cb bug addon 2022-01-14 14:57:56 +01:00
fredtempez
f19d12743d bouton d'aide en trop 2022-01-14 14:13:48 +01:00
fredtempez
4473d03265 init.js complet + changes + numéro de version update 2022-01-14 09:18:09 +01:00
e066336b9f config mise à jour avec la nouvelle fonction 2022-01-13 19:08:07 +01:00
0b0259ce7a toutes url relatives 2022-01-13 18:31:20 +01:00
7878bc74c6 relative_url 2022-01-13 18:11:29 +01:00
fredtempez
14a961602b changes 2022-01-13 08:32:27 +01:00
fredtempez
518f7947f8 flatpickr 2022-01-12 12:11:06 +01:00
fredtempez
c88d83e27c tab 2022-01-11 15:28:32 +01:00
fredtempez
87cfd5bd15 Bug page parent orpheline 2022-01-11 13:35:26 +01:00
fredtempez
3681fe6f30 11203 bug pied de page fixe 2022-01-10 14:19:05 +01:00
1412c2c33b position options dans footer 2022-01-09 17:58:49 +01:00
290b97dd33 Merge branch 'master' into 11203 2022-01-09 17:37:48 +01:00
5068888e7d Casse logo bannière perso 2022-01-09 17:24:41 +01:00
2972c73929 branche de test 2022-01-09 16:59:13 +01:00
47b4fe4f17 changes + readme 2022-01-09 11:35:38 +01:00
59b5c9b2d3 Checksum md5 2022-01-09 11:33:41 +01:00
681b3d1c21 Bouton mise à jour si en ligne supérieure 2022-01-09 11:23:31 +01:00
5ea92be85a die(); 2022-01-09 11:21:32 +01:00
760e2eb1d0 md5_file 2022-01-09 11:19:47 +01:00
bdb093c4fd version 2022-01-09 11:17:58 +01:00
0570701203 checksum update 2022-01-09 11:17:01 +01:00
e9a975610b typo 2 2022-01-09 11:10:27 +01:00
8411f0323f typos 2022-01-09 11:09:28 +01:00
0c9c3305c5 suppression redirection https 2022-01-09 10:46:33 +01:00
d7f3733081 Numro de version + changes 2022-01-09 10:41:07 +01:00
fae639ee7c renommaer les anciens champs Coockies en test 2022-01-09 10:29:00 +01:00
2d1a012a9c Revert "bug update cookies labels"
This reverts commit 522caf2463.
2022-01-09 10:15:20 +01:00
522caf2463 bug update cookies labels 2022-01-09 10:14:58 +01:00
aca51a8d04 Sortir la redirection https 2022-01-08 18:43:56 +01:00
7b825054d2 Ifmodule et non ifmodule 2022-01-08 18:30:56 +01:00
f79e7bee9e bulle d'aide rewrite url 2022-01-08 12:38:51 +01:00
5ae2f52fb6 Version 2022-01-07 17:32:04 +01:00
fredtempez
12d788bad8 changes + version readme 2022-01-07 11:10:36 +01:00
fredtempez
52f41b84cf version de core 2022-01-07 11:09:02 +01:00
fredtempez
77ed1336c1 Indication sur le aides cliquables 2022-01-07 10:22:08 +01:00
fredtempez
ecd542f7ac Date par défaut du blog 2022-01-06 10:52:06 +01:00
74e2644dc4 Apparence du numéro de version 2022-01-05 18:13:25 +01:00
c451ec6050 Mise à jour de 'CHANGES.md' 2022-01-05 17:31:14 +01:00
f2c7ddd147 readme 2022-01-05 16:27:07 +01:00
8241a51078 Merge branch '11200' 2022-01-05 16:26:38 +01:00
52e7e72340 12.2.01 changes.md + version de core + dossier de mise à jour 2022-01-05 16:26:08 +01:00
fredtempez
6cfdfc9c7d image bannière perso manquante 2022-01-03 16:41:46 +01:00
13c255b811 .31 annulation protection 2021-12-31 11:21:27 +01:00
630aed70e7 Annulation protection des dossiers hauts 2021-12-31 11:18:55 +01:00
8310343886 Merge branch '11200' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 11200 2021-12-31 11:17:12 +01:00
b6fd7f47e9 Revert ".30 protection htaccess"
This reverts commit a418db8a11.
2021-12-31 11:13:22 +01:00
a418db8a11 .30 protection htaccess 2021-12-28 22:57:02 +01:00
71dde0cef6 Protection des dossiers hauts 2021-12-28 22:56:03 +01:00
99c2fa06ee .29 erruer 500 htaccess 2021-12-23 10:14:25 +01:00
ce304140ba Update RFM + WebP 2021-12-21 22:46:30 +01:00
f95eedb798 .27 2021-12-19 15:52:11 +01:00
16817dcfea Bug captcha strong + ménage 2021-12-19 15:51:41 +01:00
6d5ae0a3fc Animation options de captcha 2021-12-18 18:00:54 +01:00
4cd8e98bea aide 2021-12-18 17:18:56 +01:00
78f144073b "dévoiler" 2021-12-18 17:17:37 +01:00
504c7a8825 Version .26 2021-12-18 17:13:20 +01:00
5de620251f dates in copyright 2021-12-18 10:25:33 +01:00
d697717c69 option mot de passe dévoilé 2021-12-17 18:18:24 +01:00
fredtempez
6b704bd121 .25 images intégrées au header perso, sauvegarde des medias 2021-12-16 09:24:32 +01:00
fredtempez
af75ca83e1 Merge branch '11200' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 11200 2021-12-16 09:23:25 +01:00
271f231d26 Mise en attente line-height proportionnelle 2021-12-16 09:23:15 +01:00
4ae440ccd9 export images de la bannière 2021-12-15 19:03:52 +01:00
1b747ec1d0 big update baseUrl 2021-12-15 18:04:18 +01:00
2951ce80ef line-height rejected 2021-12-15 17:29:57 +01:00
aaefb93363 Mise en attente line-height proportionnelle 2021-12-14 18:55:19 +01:00
c84533e601 bannière encodage en 64 2021-12-14 18:26:28 +01:00
c1168c7ee8 Beautify file 2021-12-14 10:10:52 +01:00
48d1bf27a0 header responsive avec feature 2021-12-14 08:02:11 +01:00
07a1d97149 Ajout des images banniere perso a l'archive 2021-12-14 07:09:57 +01:00
eda1960d25 .24 2021-12-13 17:08:08 +01:00
b66ce54ac3 Bug path dans bannière perso + theme moderne 2021-12-13 17:07:32 +01:00
fredtempez
7d07753abf .23 2021-12-13 13:35:10 +01:00
fredtempez
0efa63007c Config : Mise en évidence des notices d'erreur 2021-12-13 13:34:45 +01:00
fredtempez
787a323001 Bug présentation options smtp 2021-12-13 13:30:20 +01:00
7f74c62555 network smtp Champs de saisie obligatoire WIP 2021-12-12 19:52:23 +01:00
095e0770d9 config warning boutons saisie obligatoire 2021-12-12 19:36:32 +01:00
a6306439f5 .22 2021-12-11 10:01:03 +01:00
f370dbe205 Masquer la homepage suite au rebasage 2021-12-11 09:58:12 +01:00
a714f6fa9d Merge branch '11200' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 11200 2021-12-11 09:55:14 +01:00
2d3ce1b172 bug cookie consent 2021-12-11 09:54:16 +01:00
fredtempez
fb81fa6cf6 sitemap 2021-12-11 09:54:16 +01:00
fredtempez
70e723c48a sitemap WIP 2021-12-11 09:54:16 +01:00
fredtempez
1b7c0fc340 ordre de sboutons de la barre : fichiers ; theme ; modules ; langue ; config ; users ; user account ; update ; disconnect 2021-12-11 09:52:02 +01:00
fredtempez
7581abc855 Bloquage de la traduction du terme cookie dans le footer + suppression des popups dans footer Copyright 2021-12-11 09:52:02 +01:00
fredtempez
4ad4dc4ea3 Update Theme par Seb 2021-12-11 09:52:02 +01:00
d8a5d25e4d .21 2021-12-10 19:04:53 +01:00
7b076ed0be bug cookie consent 2021-12-10 19:04:28 +01:00
fredtempez
db13e3d437 sitemap 2021-12-10 15:57:51 +01:00
fredtempez
63a309b5f1 sitemap WIP 2021-12-10 15:39:09 +01:00
fredtempez
2746ac553b ordre de sboutons de la barre : fichiers ; theme ; modules ; langue ; config ; users ; user account ; update ; disconnect 2021-12-10 13:46:00 +01:00
fredtempez
d66c26f0c0 Bloquage de la traduction du terme cookie dans le footer + suppression des popups dans footer Copyright 2021-12-10 13:40:45 +01:00
fredtempez
46f531d2ec Update Theme par Seb 2021-12-10 12:05:54 +01:00
e1abf734c4 site map et page site map 2021-12-09 18:28:37 +01:00
fredtempez
b593bf86fe Test homePageId 2021-12-09 17:23:15 +01:00
1cb73244f2 .20 2021-12-07 10:27:15 +01:00
fbd3c35991 lity close 2021-12-07 10:26:00 +01:00
2d8935d2c5 Cookie consent = true 2021-12-07 10:21:06 +01:00
7508c9a38b drapeau trad mode connecté + homepage changement de langue 2021-12-06 18:26:16 +01:00
4a81c99b9a drapeau trad auto membre connecté + homepage changement de langue 2021-12-06 18:17:13 +01:00
fredtempez
e9ed9aaa2e Suppression console.log 2021-12-06 12:23:39 +01:00
fredtempez
16b934ccc4 bug animation smtp 2021-12-06 12:03:48 +01:00
fredtempez
cd4ed108b8 .18 cookie absent 2021-12-06 11:37:03 +01:00
fredtempez
c0f44630ba Erreur de lien d'aide 2021-12-06 09:48:24 +01:00
fredtempez
1ed666dfd9 .17 2021-12-06 09:38:10 +01:00
fredtempez
56b6545e54 Config : positionnement par défaut 2021-12-06 09:28:02 +01:00
fredtempez
eeac65ba45 pb de positionnement du menu 2021-12-06 09:14:14 +01:00
fredtempez
518c74d877 Diminution de la taille des captchas 2021-12-06 09:05:02 +01:00
2dd8e5c8d8 Revert "bug libellé de cookie obligatoire"
This reverts commit 5a4a1279a6.
2021-12-06 06:02:26 +01:00
5a4a1279a6 bug libellé de cookie obligatoire 2021-12-06 05:58:17 +01:00
6bbc77c0b5 theme pb de titre dans l'aperçu 2021-12-05 16:34:14 +01:00
8d3baea758 css script google 2021-12-05 16:16:35 +01:00
2adca800ec Suppression de l'option de traduction en mode connecté 2021-12-03 17:43:28 +01:00
21abb228da TinyMenu arrière-plans ok 2021-12-03 17:10:53 +01:00
a110f6afe6 Revert "Arrière-plan Tiny Ok"
This reverts commit a9bb3de500.
2021-12-03 16:39:19 +01:00
fredtempez
a9bb3de500 Arrière-plan Tiny Ok 2021-12-03 15:45:24 +01:00
fredtempez
4f98e463b5 aspect des menus TinyMCE 2021-12-03 15:08:21 +01:00
fredtempez
7940d14307 .16 problème arrirèe plan dans les menus tinymce quand une image est définie dans le body 2021-12-03 14:27:55 +01:00
fredtempez
f958e286a5 TinyMCE fichier map absent 2021-12-03 12:38:13 +01:00
fredtempez
b4674af657 Suppirmer le jquery interne à l"éditeur 2021-12-03 12:24:32 +01:00
fredtempez
eba115218e .15 2021-12-03 11:22:30 +01:00
fredtempez
55a7003cb6 URL d'aide 2021-12-03 11:21:29 +01:00
de1c63a15f Libellés et animations wait 2021-12-02 15:43:07 +01:00
395d79d813 Annulation mouse wait 2021-12-02 15:37:43 +01:00
fredtempez
294ddd8798 Redirection obligatoire dans la config et survol des boutons souris wait 2021-12-02 14:52:43 +01:00
fredtempez
3279ead197 Merge branch '11200' into 11200_vendors 2021-12-02 14:24:23 +01:00
2958a9fb88 .14 2021-12-02 11:16:24 +01:00
bf14d2687f Supprimer les blocs dépliants 2021-12-02 11:16:10 +01:00
1a3f2f1fbf Bug position notice 2021-12-02 09:41:44 +01:00
049ce3767e .13
Nettoyage de code et correction de petits bugs
2021-12-01 19:00:33 +01:00
cea0f9cddf config locale button bug 2021-12-01 18:59:45 +01:00
cc920635c3 Config button select after submit 2021-12-01 18:55:55 +01:00
242e695ab7 Config : button sélectionné après un submit 2021-12-01 18:47:50 +01:00
975d0c579d cookie de config lax 2021-12-01 18:27:40 +01:00
59c0ec0735 Nettoyage code commenté
Config :Remplacement des redirections vers des vues
2021-12-01 18:25:50 +01:00
b4c4ff49f9 Erreur config/advanced au lieu de config dans les URL de retour 2021-12-01 17:39:31 +01:00
f76f4b95c9 Icone spin identique sauvegarde et restauration 2021-12-01 17:34:58 +01:00
097b888323 Animations unique submission sur les boutons de soumission, page avec un bouton brouillon 2021-12-01 17:08:35 +01:00
400278071e Favicon Switcher - Flatpikr 2021-12-01 16:07:42 +01:00
272de57267 Merge branch '11200' into 11200_vendors 2021-12-01 15:42:21 +01:00
3fa37cd001 .12 2021-11-30 19:16:05 +01:00
23c03ed46d Pb cookie footer en mode trad
libellé confidentialité devient cookie
2021-11-30 19:14:06 +01:00
ac370dd89f Bug débordement image del abnnière perso 2021-11-30 14:03:58 +01:00
f843b46333 bug de chemin 2021-11-30 13:11:15 +01:00
71332d0636 erreur de chemin 2021-11-30 13:05:00 +01:00
30031d7188 changes 2021-11-29 17:33:34 +01:00
6a6be677c9 Bug de traduction auto détection du navigateur 2021-11-29 17:29:59 +01:00
fredtempez
bd2dc0ed7e uniformiser les setrawcookie 2021-11-29 14:45:22 +01:00
fredtempez
653ef44087 bug apparition dans le footer 2021-11-29 12:00:13 +01:00
fredtempez
91aea4d17c Revert "Google Translate Cookie."
This reverts commit df18c2441a.
2021-11-29 11:30:54 +01:00
df18c2441a Google Translate Cookie.
manque : effacer les cookies internes à ga et gt
manque : bug lien footer inopérant page traduite auto
2021-11-28 19:30:52 +01:00
4c3e947ffa Mise en conformité + modifs mineures 2021-11-28 14:29:22 +01:00
6a23966843 Cookie OKay ! 2021-11-28 12:07:07 +01:00
b49b2c103d lien mentions légales si page définie 2021-11-27 17:43:19 +01:00
dd78774357 Déplacement des options dans la config 2021-11-27 16:20:25 +01:00
947df17551 Lien gestion des cookies dans le footer 2021-11-27 08:47:00 +01:00
fredtempez
ce702d3de2 changes 2021-11-26 15:12:43 +01:00
fredtempez
fd5b7ba7ad Merge branch '11200-propre' into 11200 2021-11-26 14:51:38 +01:00
fredtempez
fef670a209 supprimer les animations de cookies 2021-11-26 14:48:39 +01:00
fredtempez
4f4b4b292e changes 2021-11-26 12:34:59 +01:00
fredtempez
3acbaa72d1 Bug couleur arrière plan de la bannière perso 2021-11-26 12:05:07 +01:00
fredtempez
350370eaf0 Variable non définie 2021-11-26 11:36:41 +01:00
fredtempez
32d936b60d litty jquery simplelightbox + bug source_image absent 2021-11-25 17:35:16 +01:00
fredtempez
ed1d0f19d5 commentaires de gestion des cookies 2021-11-25 13:44:11 +01:00
fredtempez
6ff1444deb Erreur de rebase corrigée 2021-11-25 13:40:14 +01:00
fredtempez
4aa5938953 Merge branch '11200' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 11200 2021-11-25 13:26:35 +01:00
3f3ceaed31 Timer 2000 à 3000 2021-11-25 13:25:32 +01:00
fredtempez
bc070c05d7 Spécification du domaine et du chemin dans le cookie 2021-11-25 13:25:32 +01:00
fredtempez
7f113a6d82 cookie consent path + lax 2021-11-25 13:25:32 +01:00
fredtempez
fbdf44daa5 Rafraichissement sans message 2021-11-25 13:24:42 +01:00
48166813fe libellé du theme par defaut 2021-11-25 13:24:42 +01:00
fredtempez
c9507bf58b Version 2021-11-25 13:24:42 +01:00
fredtempez
9c28c95aac Données par défaut du thème 2021-11-25 13:24:42 +01:00
fredtempez
8cdd5346ac Theme recharge de la page après import à revoir 2021-11-25 13:24:42 +01:00
b8dbf50033 11.2.00.6 :
L'arrière plan du contenu perso est défini dans le thème et non "à la main"
Fond devient Arrière-plan dans la définition des couleurs
2021-11-25 13:24:41 +01:00
4721782368 11.2.00.5 aperçu contenu perso en-tête + aspect bloc zone de saisie 2021-11-25 13:22:21 +01:00
7c990e3def Logo social 2021-11-25 13:22:21 +01:00
fredtempez
61bcce515e 11.2.00.4 themes 2021-11-25 13:22:21 +01:00
fredtempez
b9970c246a Actualisation des thèmes 2021-11-25 13:22:20 +01:00
fredtempez
0ce7f2cc46 11.2.00.3 2021-11-25 13:22:20 +01:00
fredtempez
5894a5361f page erreur bloc déroulant référencement 2021-11-25 13:22:20 +01:00
fredtempez
1c8f2f502f Header : position du checkbox de masquage du titre hors le bloc de l'image 2021-11-25 13:22:20 +01:00
fredtempez
989ee2e57c jeu de couleurs + tinymce taille des polices ; supp bouton emoticon supp + theme en 1170px avec bannière perso 2021-11-25 13:22:20 +01:00
95e7c5cc74 Mise à jour des cookies + appel fonction cookie 2021-11-25 11:16:52 +01:00
521c4b1834 Déplacement cookieconsent dans defaultData 2021-11-25 11:07:14 +01:00
8a11ef8118 Traitement cookieConsent 2021-11-25 11:06:07 +01:00
7016df5753 Déplacement du check cookieConsent 2021-11-25 11:05:05 +01:00
020da0f9e3 Modification gestion des cookies 2021-11-24 07:18:29 +01:00
a300220913 Timer 2000 à 3000 2021-11-23 12:20:58 +01:00
39aaa035b4 Merge branch '11200_cookies_clean' into 11200_cookies_fusion 2021-11-22 19:35:00 +01:00
7d3634cd50 Cooike Sylvain + croix 2021-11-22 19:32:32 +01:00
bb8d7c4294 showcookie propre 2021-11-22 16:23:13 +01:00
a2743f8ed2 Modifications de messages par défaut 2021-11-22 14:22:09 +01:00
d83ffc4458 defaultdata et custom" 2021-11-22 14:11:22 +01:00
c004fec8c9 Nom des cookies unique 2021-11-22 13:59:23 +01:00
fredtempez
2e9402f1c8 alignements 2021-11-22 13:50:43 +01:00
fredtempez
462b7b9ed6 log en moins 2021-11-22 13:50:08 +01:00
fredtempez
84b4023e19 Nom du cookie + nettoyage 2021-11-22 13:46:16 +01:00
fredtempez
2f36a0b69b Spécification du domaine et du chemin dans le cookie 2021-11-22 11:18:27 +01:00
fredtempez
442ba6b84d cookie consent path + lax 2021-11-22 09:53:33 +01:00
fredtempez
39cc4fbba5 Rafraichissement sans message 2021-11-22 09:48:54 +01:00
9dd0b1aad9 libellé du theme par defaut 2021-11-22 09:25:08 +01:00
fredtempez
dbdce944c2 Version 2021-11-22 08:47:09 +01:00
fredtempez
52d092619b Données par défaut du thème 2021-11-22 08:45:36 +01:00
fredtempez
22ef9b519e Theme recharge de la page après import à revoir 2021-11-22 08:43:52 +01:00
bf9e887c00 Paramètrage consentement cookies 2021-11-21 17:16:47 +01:00
993fa80624 11.2.00.6 :
L'arrière plan du contenu perso est défini dans le thème et non "à la main"
Fond devient Arrière-plan dans la définition des couleurs
2021-11-21 16:11:40 +01:00
f9109bb4a1 11.2.00.5 aperçu contenu perso en-tête + aspect bloc zone de saisie 2021-11-21 10:28:06 +01:00
863169d32b Logo social 2021-11-21 09:59:33 +01:00
12bec0e14f modification du nom des cookies de consentement 2021-11-20 07:48:41 +01:00
fredtempez
5dfe4d9e18 11.2.00.4 themes 2021-11-19 16:00:20 +01:00
fredtempez
2ce6223959 Actualisation des thèmes 2021-11-19 15:59:49 +01:00
fredtempez
8d016f929c 11.2.00.3 2021-11-19 15:23:04 +01:00
fredtempez
e3a1b05f5d page erreur bloc déroulant référencement 2021-11-19 15:22:42 +01:00
fredtempez
5eb422be37 Header : position du checkbox de masquage du titre hors le bloc de l'image 2021-11-19 15:17:23 +01:00
fredtempez
66e4f2ffe9 jeu de couleurs + tinymce taille des polices ; supp bouton emoticon supp + theme en 1170px avec bannière perso 2021-11-18 17:07:57 +01:00
9485c2ba5a Gestion des cookies 2021-11-18 11:34:19 +01:00
860ff8c35a branche de test 2021-11-17 10:13:04 +01:00
99f279c3e8 chargement script google 2021-11-17 10:10:07 +01:00
c11003a018 Ajout de 'seo' dans le getData() de showAnalytics() 2021-11-17 07:59:23 +01:00
69564bfabe Bug position du menu hors le site 2021-11-16 16:41:43 +01:00
6f282e90a7 Bug changement de langue 2021-11-16 15:56:12 +01:00
cd9214b15d Revert "oredre des champs menu"
This reverts commit cab89a41d3.
2021-11-16 15:23:50 +01:00
cab89a41d3 oredre des champs menu 2021-11-16 14:39:28 +01:00
3bbb14b217 Aperçu des marges header dans le site 2021-11-16 14:37:50 +01:00
c9fd1bc17b header bug aperçu 2021-11-16 12:23:26 +01:00
ca1c1d1d73 header marge container supprimée 2021-11-16 12:20:13 +01:00
ec252292cc alt drapeaux traduits 2021-11-16 12:11:56 +01:00
8d40bf9f10 changes 2021-11-16 11:32:46 +01:00
aa8b322e07 Bug conversion URL 2021-11-16 08:57:33 +01:00
81a1cd4de0 Type de captcha non initialisé à l'installation 2021-11-16 08:37:46 +01:00
5096c4f37a Merge branch '11200' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 11200 2021-11-15 22:30:34 +01:00
0fed5d1998 changes 2021-11-15 22:27:52 +01:00
e928b5bc73 Taille des imagettes 2021-11-15 22:26:02 +01:00
e2731d8c52 Inversion 2021-11-15 22:26:02 +01:00
6280e606b8 init pour test 2021-11-15 22:26:02 +01:00
ded4ed6052 idem pour le menu variable wide 2021-11-15 22:25:26 +01:00
14975789c4 Bugs et corrections et simplification jquery 2021-11-15 22:23:21 +01:00
054c7ec945 notice inline 2021-11-15 21:48:56 +01:00
711f702c7c bug restauration d'un fichier vide 2021-11-15 21:44:12 +01:00
776d85895c Supprimer 'debug.log' 2021-11-15 17:25:17 +01:00
b873ea5eb5 Ajustement de messages 2021-11-15 17:26:12 +01:00
fredtempez
3cd1f633ed avertissement backup et (restore à terminer) 2021-11-15 14:22:36 +01:00
fredtempez
12e21a3067 noms de variables + bug overflow 2021-11-15 09:01:08 +01:00
fredtempez
d9c0bc4b9b erreur captcha strong 2021-11-15 08:15:26 +01:00
fredtempez
e73e481a70 erreur captcha strong 2021-11-15 08:14:57 +01:00
fredtempez
21c1535343 Bug nom de variable 2021-11-15 08:12:43 +01:00
eccb64356a Débordement ok 2021-11-14 10:12:17 +01:00
cc31e1ac79 Version ! 2021-11-13 16:51:17 +01:00
b1415bb9e0 changes 2021-11-13 16:19:31 +01:00
eaccb4bb9d Noms des variables 2021-11-13 09:06:37 +01:00
c54b9d262d Mise à jour + default 2021-11-13 08:58:34 +01:00
fredtempez
c9679ec4c5 Aperçu du menu + marges 2021-11-12 12:59:58 +01:00
fredtempez
6fe1ecb294 bannière : hauteur dynamique selon contenu perso 2021-11-12 11:44:40 +01:00
fredtempez
a1e274537e Largeur de la page sans la marge à droite 2021-11-12 10:59:09 +01:00
fredtempez
0c1c3a7423 alignement à droite en cours 2021-11-12 09:54:10 +01:00
fredtempez
8a1887aa11 Merge branch '11200' into 11200-header 2021-11-12 09:29:09 +01:00
fredtempez
2489fffcb9 Merge branch '11101' into 11200 2021-11-12 09:28:56 +01:00
fredtempez
9d76304aca class i18nFlag + ul 2021-11-12 09:24:53 +01:00
fredtempez
72a936e9ef bug analytic 2021-11-12 09:17:28 +01:00
0984abc205 Libellés 2021-11-11 16:31:54 +01:00
92e5f06d46 options animation largeur 2021-11-11 16:29:20 +01:00
7db65c45b1 largeur de la bannière hors le site 2021-11-11 16:25:43 +01:00
4572612051 textAlign Manquant + jquery en cours 2021-11-11 15:54:57 +01:00
4150fa72f1 id theme menu body footer header 2021-11-10 17:12:34 +01:00
ac3f74581e Supprimer attribut style 2021-11-10 14:59:34 +01:00
2695a0a6d5 Merge branch '11200' into 11200-header 2021-11-10 14:49:47 +01:00
af0f00744a Index du thème 2021-11-10 09:58:11 +01:00
51fdad314a Boutons d'aide pour le thème 2021-11-10 08:03:31 +01:00
f5ea37e3b5 Aperçu à finir 2021-11-09 22:31:31 +01:00
8fdac9753e adaptation manquante + jquery en cours 2021-11-09 18:58:19 +01:00
bc60e9b857 header.js en cours 2021-11-09 18:46:38 +01:00
bd23324501 feautre Banner css + show and hide options 2021-11-09 18:38:37 +01:00
fea3ff4075 site theme option bug margin 2021-11-09 13:29:53 +01:00
3b74d630d2 theme site bug option marges 2021-11-09 13:29:20 +01:00
9d785957cb Mise à jour du lien vers la documentation dans user/view/import suite 2021-11-08 18:09:22 +01:00
91579cf0bc Mise à jour du lien vers la documentation dans user/view/import 2021-11-08 17:59:33 +01:00
932caa814d Bannière personnalisée
Manque JS  + tests
2021-11-07 15:50:24 +01:00
6384e75393 urls pages ok 2021-11-05 16:14:17 +01:00
6d5af81780 bug url intelligentes 2021-11-05 16:08:36 +01:00
2c613b7186 ne pas actualiser les positions des pages orphelines 2021-11-05 15:13:52 +01:00
bd2fd89c4f ne pas actualiser les positions des pages orphelines 2021-11-05 15:13:16 +01:00
354c9d5d7e changes 2021-11-05 14:47:12 +01:00
49b9dfd2f3 changes 2021-11-05 14:46:12 +01:00
f8e15f3f5b Bug page parent renommée avec des pages enfants absentes non affichées 2021-11-05 14:44:28 +01:00
d2b4e702fe Bug page parent renommée avec des pages enfants absentes non affichées 2021-11-05 14:43:14 +01:00
ab723d6cd0 url-maintenance 2021-11-05 14:18:16 +01:00
2d8f132437 edit pages à compléter 2021-11-05 14:05:01 +01:00
e3a0f4b865 supprimer le texte de l'animation 2021-11-05 10:21:39 +01:00
b9ec4399f7 Buttons names 2021-11-04 19:12:27 +01:00
c9be9bd24c user help button 2021-11-04 19:05:12 +01:00
1ed203925d i18n help 2021-11-04 18:59:53 +01:00
42d7b814e7 Merge branch '11200' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 11200 2021-11-04 18:49:21 +01:00
b04560a049 bug anchor 2021-11-04 18:49:15 +01:00
36c1270733 bug anchor 2021-11-04 18:44:10 +01:00
7faac3cdfa Titre court emplacement du champ 2021-11-04 14:13:35 +01:00
0779284c5f Titres courts 2021-11-04 13:55:23 +01:00
6028cd4d0a bug anchor not closed 2021-11-04 12:44:57 +01:00
f4131848e3 Mise en évidence des pages inactives et orphelines 2021-11-03 18:53:12 +01:00
77c48682e1 bug drapeaux 2021-11-03 17:42:29 +01:00
f1fb22d2eb Fix robots.txt 2021-11-03 17:25:26 +01:00
3ce482598e Fix robots.txt 2021-11-03 17:24:34 +01:00
0282368bc7 Cleaning help files 2021-11-03 17:19:01 +01:00
0c509242c9 Tout bloc ok 2021-11-03 16:54:22 +01:00
f9fb84cef4 Libellé réseau 2021-11-03 16:49:44 +01:00
9ddab7a03a social help ok 2021-11-03 16:49:35 +01:00
615e04482b changes 2021-11-03 16:33:07 +01:00
a0dc711cea changes 2021-11-03 16:30:48 +01:00
7e324da4a3 libellé 2021-11-03 13:31:18 +01:00
618c0aa837 libellé de boites configuration 2021-11-03 12:28:53 +01:00
f025632394 Locale : un bloc une page 2021-11-03 09:36:14 +01:00
6f029282b3 Une page d'aide un seul bloc 2021-11-03 09:25:54 +01:00
773a922af6 Backup wait pointer 2021-11-02 18:47:52 +01:00
e92100a0d8 Effet backup avec bouton wait 2021-11-02 18:46:51 +01:00
8a9aa3e33c Liens dans les ? 2021-11-02 18:29:32 +01:00
d0838994d3 nom de blocs 2021-11-02 18:05:05 +01:00
8282aaefa8 sauvegardes auto bouton 2021-11-02 17:57:07 +01:00
66449900eb Déplacement de blocs et aide supprimée 2021-11-02 17:25:39 +01:00
c03fa4b4a5 typo 2021-11-02 16:43:24 +01:00
9273e89431 bug copye site 2021-11-02 12:54:56 +01:00
548c55b658 Bug copy site 2021-11-02 12:53:55 +01:00
27a1cc73fb Aide en ligne 2021-11-02 12:52:19 +01:00
2c49919d9a annuler les aides 2021-11-02 12:48:51 +01:00
2d55016495 locale + modif setup 2021-11-01 20:05:33 +01:00
d1d4922baa Setup ok 2021-11-01 20:05:09 +01:00
3e48fc61b6 bug jquery 2021-11-01 14:38:28 +01:00
7d9f7c343a Aide manquante 2021-11-01 14:38:15 +01:00
698d433c3b fichier robots.txt absent des ressources suppriemr la copie 2021-10-31 17:15:45 +01:00
c8a6fd6165 Sélection de la div après submit ok 2021-10-31 17:11:05 +01:00
af6e4beb32 Activation i18n ok 2021-10-31 16:18:49 +01:00
92cbc0b6d4 effet couleur menus 2021-10-31 11:32:56 +01:00
cbb43f9174 Vérif toute saisie data 2021-10-30 18:59:58 +02:00
3d928d866b autodisconnect 2021-10-30 18:48:33 +02:00
0535dc951b captcha strong 2021-10-30 18:45:17 +02:00
21887439e4 fichier robots.txt absent des ressources suppriemr la copie 2021-10-30 18:42:00 +02:00
0ae97913ee setup + locale ok 2021-10-30 18:36:43 +02:00
02ff10df39 Validations à vérifier 2021-10-30 18:12:34 +02:00
b41c352bc5 Déplacement autodisconnect 2021-10-30 18:11:50 +02:00
5e49633f81 Version 11.2.00 2021-10-30 17:52:19 +02:00
1b97a52ced déplacement captchaStrong 2021-10-30 17:40:18 +02:00
650d57b7cb Virer advanced et unifier la fonction index 2021-10-30 12:48:29 +02:00
716495c9e2 config tout en un seul écran 2021-10-30 12:31:24 +02:00
47775ec420 cinfig à vérifier 2021-10-29 19:25:17 +02:00
f891e5a0c1 masques ok 2021-10-29 18:34:01 +02:00
fredtempez
511dbd1246 nouvelle config WIP 2021-10-29 16:14:51 +02:00
fredtempez
ebbe211b92 disposition config 1 2021-10-29 14:01:59 +02:00
fredtempez
44acb59ff7 changes et readme 2021-10-29 12:30:22 +02:00
fredtempez
10dffb328b disposition footer 2021-10-29 11:25:00 +02:00
fredtempez
d4a899fd8a Disposition footer 2021-10-28 16:54:57 +02:00
fredtempez
d1e65d1bd9 Disposition footer 2021-10-28 16:41:10 +02:00
fredtempez
412098f6b7 Disposition menu 2021-10-28 16:37:24 +02:00
fredtempez
eb9b39161a Disposition header 2021-10-28 16:23:11 +02:00
fredtempez
d6c99942f1 Disposisition du site 2021-10-28 16:20:54 +02:00
fredtempez
1021300f11 Disposition footer 2021-10-28 16:19:30 +02:00
800e95a92e typo 2021-10-27 15:43:53 +02:00
0e9347f656 gitignore 2021-10-26 15:55:58 +02:00
a421eaf31e Mise à jour de 'CHANGES.md' 2021-10-26 15:34:05 +02:00
306fce9a11 Modification de droits 2021-10-26 15:22:29 +02:00
a08e6e94d9 Theme orange black vraiment black 2021-10-26 14:35:46 +02:00
fb05292d5d changes 2021-10-26 14:24:23 +02:00
bec7c69058 Merge branch '11100-tiny' into 11100-newmain 2021-10-26 09:45:17 +02:00
7122f7f457 0 -> false 2021-10-26 09:35:13 +02:00
ec505de872 public showContent 2021-10-26 09:05:32 +02:00
67b16b1039 indentations 2021-10-25 18:08:43 +02:00
37b5e09c1c Une ligen remise + commentaire main.php 2021-10-25 17:59:46 +02:00
9aeb4e1881 une ligne déplacée 2021-10-25 17:54:59 +02:00
2ae3afb47f Initialisation 2021-10-25 17:51:30 +02:00
fredtempez
ddce685a40 update + files.tar.gz + opérateurs ternaires dans main 2021-10-25 12:52:12 +02:00
1c8aeae41c Merge branch '11100-tiny' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 11100-tiny 2021-10-25 09:45:56 +02:00
3d8e6014be init logoBurger et burgerContent dans defaultdata.php 2021-10-25 09:41:34 +02:00
45bf016eea Transférer les fichiers vers 'site/file/source' 2021-10-25 09:15:04 +02:00
52d5c7a38e nouvelles options menu burger 2021-10-25 09:11:58 +02:00
85dc3a3386 init à tester 2021-10-24 18:01:13 +02:00
d8cb766519 Defaultdata + var name + layout header setup 2021-10-24 16:43:47 +02:00
90c422ed54 bug positionnav au lieu de positionNav 2021-10-24 10:52:24 +02:00
67fa9b0f2a Option masquage bannière en petit écran 2021-10-24 09:57:25 +02:00
d0923188e6 libellé des thèmes 2021-10-23 20:09:24 +02:00
7b4f1b5c8c Bug sitemap 2021-10-23 19:18:02 +02:00
8e18a0a425 thème banniere par défaut 2021-10-23 19:07:40 +02:00
e729f185e0 change url intelligente 2021-10-22 18:33:35 +02:00
fa698604b0 Redirection http vers https si url intelligente 2021-10-22 18:31:48 +02:00
b9c1055c87 Thème supprimer la fonction obsolete de contrôle du theme 2021-10-22 18:27:16 +02:00
e4814fe26e Libellé login 2021-10-22 18:00:57 +02:00
36dde47de8 3 thèmes en test 2021-10-22 17:32:29 +02:00
324195b5ec Merge branch '11100' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 11100 2021-10-22 17:28:49 +02:00
96a2ea054b changes 11.1 2021-10-22 17:13:37 +02:00
655da7a2cc Installation des thèmes 2021-10-19 19:37:04 +02:00
83ecfc4ba6 Installation du thème 2021-10-19 19:14:52 +02:00
67c255952b Warning causé à l'installation par la page de redirection 2021-10-18 18:57:59 +02:00
fredtempez
55b25b239a un theme livré 2021-10-18 12:53:12 +02:00
fredtempez
0e4971da17 Aide : droits sur les dossiers 2021-10-18 09:48:53 +02:00
fredtempez
31a261de36 changes 2021-10-15 15:50:16 +02:00
fredtempez
9c5c73ff95 Changes 2021-10-15 15:49:49 +02:00
fredtempez
3a4528a93d Droits de l'éditeur sur les fichiers du gestionnaire 2021-10-15 15:17:44 +02:00
96068f7d5e typo 2021-10-11 18:14:19 +02:00
95416e2341 update changes.md 2021-10-11 18:11:49 +02:00
2f88a3bd41 une valeur de test 2021-10-11 17:54:19 +02:00
79df051d08 Journal anonymisé 2021-10-11 17:53:41 +02:00
c90ca726c9 Branch init 2021-10-11 17:07:09 +02:00
fredtempez
a172f67598 changes complété 2021-10-11 11:59:13 +02:00
00bd01edae 11.1.00 réécriture aperçu header / menu 2021-10-10 14:41:13 +02:00
ba107ac872 Bug position du menu selon celle de la bannière 2021-10-09 21:16:53 +02:00
d09e928338 11.1.00 Nom des variables liste de pages cf commit d47f6e29 2021-10-06 18:18:41 +02:00
c34eb7d84a 11.1.00 pagination manquante dans form liste des données 2021-10-06 18:13:25 +02:00
d47f6e291c 11.1.00 Liste des pages dans footer et config : déplacement du code hors de la vue 2021-10-06 18:00:59 +02:00
46c40ec7a3 Numérotation 11.1.00 2021-10-03 17:33:04 +02:00
3cabadc501 Amélioration des liens dans le footer + gestion des drapeaux + masque de traduction 2021-10-03 17:26:05 +02:00
ca067121f9 drapeau plutot que du texte 2021-10-02 14:15:27 +02:00
9e4010a4d5 bugs nom des variables d'étiquettes 2021-10-02 12:56:29 +02:00
9908056c8e Mise à jour changes 2021-10-02 12:33:31 +02:00
fredtempez
bf2b706358 Localisation des étiquettes du footer 2021-10-01 15:53:38 +02:00
fredtempez
0f0fc52a4f Bug contenu vide dans l'édition d'une page avec avec le module de redirection 2021-10-01 12:41:15 +02:00
fredtempez
06ad3c3467 searchpage et legal : la désactivation de la page dans la config entraîne la désactivation du lien dans le footer. 2021-10-01 10:42:21 +02:00
fredtempez
df3ee6e0e4 Boutons d'aide permanent 2021-10-01 10:18:38 +02:00
fredtempez
e9fc835baf Boutons d'aide permanent 2021-10-01 10:17:13 +02:00
fredtempez
07f8751501 Message d'erreur si le contenu de la page est absent. 2021-10-01 10:10:24 +02:00
fredtempez
ebca94dc3f Bug maintenance 2021-09-30 16:30:54 +02:00
1bade19380 11010 simplification affichage des drapeaux, la page courante reste affichée lors d'un changement de langue 2021-09-29 17:40:53 +02:00
f633f177d6 Renommer la varaible i18n de active à enable 2021-09-29 16:40:25 +02:00
206ab7f9a1 11.0.10 mkdir permission 0755 + init module galerie 2021-09-29 14:50:25 +02:00
04057c285a 11.0.10 2021-09-25 18:54:10 +02:00
fredtempez
9dc6447de0 11009 notranslate title 2021-09-17 11:47:39 +02:00
fredtempez
4a71b85602 11009 bloque la traduction automatique du titre du site 2021-09-17 08:43:17 +02:00
992576613b Form 2.10 amélioration affichage des données reçues 2021-09-15 15:38:52 +02:00
baffa9cc16 11009 supprimer download 2021-09-15 15:01:40 +02:00
692e01b2e8 Revert "exclure download"
This reverts commit 489c5e59a3.
2021-09-15 14:59:39 +02:00
489c5e59a3 exclure download 2021-09-15 14:57:37 +02:00
6f663ec3fe nettoyage du dossier data lors d'un import 2021-09-14 21:10:21 +02:00
b00e4ed91e Version 11009 2021-09-14 20:55:32 +02:00
63a831af1f bug setPage + réécriture de l'importation 2021-09-14 20:54:31 +02:00
d642560e30 download 2.5 bug téléchargement 2021-09-10 08:35:21 +02:00
fc11676d02 typo 2021-09-09 19:41:31 +02:00
9016fb4cf2 Module download warning 'picture' 2021-09-09 19:17:14 +02:00
d7d2d67480 Mise à jour module Download 2021-09-08 06:27:32 +02:00
0f0ae30621 Aide dans addon index et upload 2021-09-04 15:40:14 +02:00
32d898d72d Message confirmation effacement d'un module 2021-08-30 22:51:59 +02:00
5872159184 Merge branch '11008' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 11008 2021-08-30 22:46:29 +02:00
c87953a5c5 Bug sautillement, suppression 100vh 2021-08-30 22:46:19 +02:00
bd2d9425e7 Bug new page 2021-08-30 22:46:19 +02:00
ff93cf0956 Bug sautillement, suppression 100vh 2021-08-30 22:44:20 +02:00
5385a5289a Bug new page 2021-08-30 22:40:40 +02:00
09048e97a2 Catégoris dans le store 2021-08-30 22:40:13 +02:00
9d2ae04e88 position des boutons 2021-08-30 22:21:32 +02:00
aa18c441b2 Construction de l'URL du store 2021-08-30 22:17:30 +02:00
9ea85fe46a Position des boutons Submit 2021-08-24 21:36:38 +02:00
f7a8efa52a Bug nouvelle page 2021-08-24 20:14:00 +02:00
958ffcd41f i18n valeurs par défaut 2021-08-22 19:22:39 +02:00
093c7109e9 Erreur de double mise à jour 2021-08-22 19:18:51 +02:00
7a81044d00 update 11008 2021-08-21 18:39:42 +02:00
72d845f37f bug installation des pages 2021-08-21 18:22:31 +02:00
df87a23bbc smtppar défaut 2021-08-21 09:16:21 +02:00
40d3c97dc5 Numéro de version 2021-08-21 09:03:10 +02:00
4090e8153b Merge branch '11007' into 11008 2021-08-21 09:02:19 +02:00
057b915513 Fonction setPage 2021-08-21 08:56:08 +02:00
6f4ebfbbcd fonction de gestion du contenu des pages : getPage 2021-08-21 08:44:37 +02:00
b24ca52a45 numero de version des modules news gallery et search 2021-08-20 11:50:32 +02:00
cc630ccfa3 11007 news et gallery init ne s'exécute que si le numéro de version du module n'existe pas 2021-08-20 11:44:38 +02:00
bc20e90209 11007 bug search + procédure init 2021-08-20 11:39:04 +02:00
5848941062 Réorganisation des modules 2021-08-20 07:03:08 +02:00
d4c79e95fd Propriété shadow, valeur par défaut invalide 2021-08-19 05:30:01 +02:00
a6255053d3 Bug sautillement avec l'apparition de l'ascenseur. 2021-08-19 05:18:19 +02:00
aa4741d473 mise à jour activation du référencement 2021-08-17 09:04:25 +02:00
9f9817aee0 11007 en cours 2021-08-17 08:24:12 +02:00
6dce12e621 bug module de recherche 2021-08-14 21:54:28 +02:00
82f06b1c19 seo message et valeur par defaut 2021-08-10 22:59:29 +02:00
749e9fe454 seo valeur par defaut true 2021-08-10 22:33:52 +02:00
2082e016e0 11005 Sitemap : update, bug et option disallow 2021-08-08 07:01:19 +02:00
a14fca6b1c Nettoie le code html dans les condensés des articles. 2021-08-05 15:46:20 +02:00
7ea764f15f Module download en test 2021-07-26 14:54:34 +02:00
c7df5d50cc 11004 barre admin ordre icones 2021-07-23 19:39:10 +02:00
c5b637e902 Nouveau style des articles de news 2021-07-23 19:34:23 +02:00
16ccc1d376 changes + news hauteur de caractères 2021-07-23 10:12:01 +02:00
0afbaf81ea ok 2021-07-23 10:05:37 +02:00
73cfc61823 bug Effacer feuille de style 2021-07-22 23:30:01 +02:00
fa3a4c0fe8 Données par défaut 2021-07-22 23:23:06 +02:00
c25bc1ab65 Données par défaut 2021-07-22 23:19:02 +02:00
5bee7f1c5b effacer dossier complet ave cle fichier 2021-07-22 23:14:33 +02:00
76c8669f09 Initialisation 2021-07-22 23:11:55 +02:00
b23ed7e94b Merge branch 'layout' into 11000 2021-07-22 21:56:51 +02:00
1050235785 11003 2021-07-22 21:46:08 +02:00
148b780c68 Layout 2021-07-22 21:35:01 +02:00
4413420d40 Aide de la configuration avancée 2021-07-12 07:29:56 +02:00
1d95638dfa changes 2021-07-11 14:12:59 +02:00
3b47002e71 changes 2021-07-11 12:39:54 +02:00
482746ed5e Numerotation 11002 2021-07-11 12:24:56 +02:00
4d5c85c414 Bugs module news increment et publishedOff 2021-07-05 08:44:10 +02:00
65be0c4b6d Cas d'une page sans titre 2021-06-25 09:53:18 +02:00
b0079ddc1f Suppression self::$content=... dans page.php 2021-06-25 08:12:30 +02:00
44ab41289e page content load in edit 2021-06-24 22:16:36 +02:00
ccb5ccdf42 Restaurer le copier coller des images dans tinymce 2021-06-24 07:09:14 +02:00
b5f24f16a5 changes 10.6 2021-06-19 08:26:22 +02:00
3d1d4914cc message core installation des données 2021-06-19 08:23:51 +02:00
294c6c2370 nas pas basculer vers la langue sélectionnée 2021-06-19 07:59:39 +02:00
e9ab9027ba Merge branch '11000' into layout 2021-06-18 21:20:27 +02:00
92fb3f2347 bug creation d'une langue 2021-06-18 21:10:16 +02:00
b665045225 suppression slash 2021-06-18 19:52:08 +02:00
117530b8f1 move var $script in index 2021-06-18 19:50:41 +02:00
1b1975b252 defaultdata fix 2021-06-18 19:50:06 +02:00
ddf03b670a Modification de l'aide dans addon upload 2021-06-18 11:03:29 +02:00
bc7ed54aad Modification translate/.../index.php 2021-06-17 14:44:58 +02:00
7c8e6dec50 Page d'aide pour la gestion des langues 2021-06-17 14:36:42 +02:00
9555c86ce5 Suppression dans translate view index de l'aide en bas de page 2021-06-17 11:34:22 +02:00
4ce0e2b8c1 correctif entête meta 2021-06-14 18:54:31 +02:00
d7c969224d entête html lire la langue dans core 2021-06-14 18:43:45 +02:00
301de2f18c main langue du navigateurA REVOIR 2021-06-14 18:40:53 +02:00
eb9e5bdeae main langue du navigateurA REVOIR 2021-06-14 18:38:44 +02:00
ebb3f6544f layout in common 2021-06-14 18:37:45 +02:00
becac08795 11002 2021-06-14 17:05:37 +02:00
8564dbd4c1 page vide 2021-06-14 17:05:06 +02:00
235e8b0f86 correction i18n 2021-06-14 16:55:17 +02:00
052a2b1746 Revert "config i18n supp la varaible enable"
This reverts commit c97a0847a8.
2021-06-14 16:44:26 +02:00
b97465c8d4 appel de update sur une ligne 2021-06-12 19:30:04 +02:00
7a5c8012d0 suppression update() de core.php 2021-06-12 07:18:40 +02:00
97ecf60181 deplacement de update dans un fichier include 2021-06-12 07:13:03 +02:00
4c09a771f1 Mise à jour suite au module de téléchargement 2021-06-11 18:55:05 +02:00
3628faf4f0 news comment css 2021-06-10 17:46:00 +02:00
d314ce6818 Aide pour user import 2021-06-08 08:17:33 +02:00
e84840d33f déplacer gestion des users dans la barre admin 2021-06-07 19:34:36 +02:00
c97a0847a8 config i18n supp la varaible enable 2021-06-07 19:29:14 +02:00
c8ababce27 Merge branch '11000' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 11000 2021-06-07 19:24:21 +02:00
4a32c284e1 addon bug import 2021-06-07 19:24:10 +02:00
dbddef8781 bug i18n advanced 2021-06-07 19:24:10 +02:00
248ad3638d addon import page content 2021-06-07 19:24:10 +02:00
e7f4391e24 Bugs divers 2021-06-07 19:24:10 +02:00
741c041f17 petites modifs 2021-06-07 19:23:39 +02:00
3f94b9f3de addon bug import 2021-06-07 19:02:38 +02:00
a8ebd8cc73 bug i18n advanced 2021-06-07 18:59:18 +02:00
ff93b545b9 Gestion des fichiers par certains membres 2021-06-07 18:09:38 +02:00
85f31d986d addon import page content 2021-06-07 13:27:52 +02:00
5ce8eefa6b Bugs divers 2021-06-07 10:57:03 +02:00
5d09fb6146 création nouvelle branche 2021-06-07 10:16:09 +02:00
fb6245fd0a Revert "check id identique à un dossier du site"
This reverts commit d01a717709.
2021-06-06 19:14:25 +02:00
d01a717709 check id identique à un dossier du site 2021-06-06 19:12:11 +02:00
0828862c10 duplicate check pageid 2021-06-06 18:49:50 +02:00
3f48ab9e1e mise à jour de l'url de la feuille de style 2021-06-05 17:53:07 +02:00
a1d7931c41 Bug effacer du dossier 2021-06-05 17:43:55 +02:00
f2daa8fefd Bug versionData manquant 2021-06-05 17:43:09 +02:00
b64fd84ab8 update déplacement des dossiers dans pages/ 2021-06-05 17:38:11 +02:00
8769b47756 'pages/' devient rien 2021-06-05 17:21:07 +02:00
c1938b3b2b Revert "Dans modules 'pages/' devient '/'"
This reverts commit 8c3b161b15.
2021-06-05 17:14:15 +02:00
8c3b161b15 Dans modules 'pages/' devient '/' 2021-06-05 17:12:43 +02:00
57c4976fa1 readme 2021-06-05 16:46:58 +02:00
6b22cc193b Merge branch '11000' into v11_filepage 2021-06-05 16:40:39 +02:00
1fd6805186 Addon version actualisée 2021-06-05 16:40:16 +02:00
78dfdcbdbd gestion des pages ok 2021-06-05 08:17:57 +02:00
14c96fa5af Merge branch '11000' into v11_filepage 2021-06-04 18:37:51 +02:00
710089acf1 custom_copy -> copy dir 2021-06-04 18:37:17 +02:00
5fbaeec1ae Merge branch '11000' into v11_filepage 2021-06-04 18:28:12 +02:00
a7e9ef3cdb arrangements interface 2021-06-04 18:28:02 +02:00
cb6d2b87ec changes 2021-06-04 18:21:03 +02:00
743fee450d Vérification v10 - v11 2021-06-04 17:53:30 +02:00
c79e348a76 aide dans translate 2021-06-04 14:21:23 +02:00
76f9da92bd merge common.css 2021-06-04 14:16:24 +02:00
01b9f8c103 Gestion des langues 2021-06-04 13:57:44 +02:00
342df04879 translate devient i18n 2021-06-04 13:41:21 +02:00
579a3655df constante update url 2021-06-04 13:05:01 +02:00
566f678eca Config avec l'aide 2021-06-04 13:00:35 +02:00
837a15daa4 Merge branch '11000' into v11_filepage 2021-06-04 11:48:11 +02:00
70a3030afc Merge branch '10603' into 11000 2021-06-04 11:47:56 +02:00
566b8a8453 url bannière 2021-06-04 11:43:39 +02:00
dda001de7a Merge branch '11000' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 11000 2021-06-04 11:42:45 +02:00
82aec8cf2c Aide pour la configuration avancée 2021-06-04 11:42:17 +02:00
f8da2dbb38 Merge branch '10603' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 10603 2021-06-04 11:32:23 +02:00
8437b71db8 Merge branch 'master' into 10603 2021-06-04 11:32:10 +02:00
8ed7d6ffe6 bad dataversion 2021-06-04 11:29:57 +02:00
226234d16c Merge branch 'master' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS 2021-06-04 11:28:14 +02:00
96bd53531d Merge branch 'master' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS 2021-06-04 11:28:04 +02:00
3cbe429de4 Merge branch 'master' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS 2021-06-04 11:27:39 +02:00
92cdf2d5d1 bad dataversion 2021-06-04 11:27:22 +02:00
1ebf25e5a8 Erreur de lien vers le site zwiicms.fr 2021-06-04 07:54:49 +02:00
760dcddd6c Erreur de lien vers le site zwiicms.fr 2021-06-04 07:53:49 +02:00
81e376cefa Erreur de lein vers le site zwiicms.fr 2021-06-04 07:52:35 +02:00
8ae137a68c Merge branch '11000' into v11_filepage 2021-06-01 09:20:17 +02:00
c6f41a3517 merge install 2021-06-01 09:19:48 +02:00
1fca0aab7e supprimer copie de favicon 2021-06-01 09:19:05 +02:00
067b3d1098 favicon 2021-06-01 09:11:51 +02:00
f1575bc2b4 Nouveau defaultdata 2021-06-01 09:10:32 +02:00
20d0e0944e favicons 2021-06-01 08:48:06 +02:00
fredtempez
7dea7220ac Nouveau tar.gz 2021-05-28 20:43:25 +02:00
fredtempez
ea317326cc nouveau tar.gz 2021-05-28 20:42:38 +02:00
fredtempez
d059bb1846 files.tar.gz avec les images démo 2021-05-28 20:40:26 +02:00
fredtempez
ef38d8f14d news files.tar.gz 2021-05-28 20:25:30 +02:00
fredtempez
47df12b856 DefaultData à modifier 2021-05-28 20:09:53 +02:00
fredtempez
ae0cb8bc70 ranger les fonctions de gestion des données disque 2021-05-27 23:11:51 +02:00
fredtempez
aeddcfc20a constante ZWII_UPDATE_URL 2021-05-27 22:45:01 +02:00
fredtempez
26ced2987b merge update url 2021-05-27 22:40:20 +02:00
fredtempez
cd9291270e changes 2021-05-27 22:29:28 +02:00
fredtempez
295b2a294e Version à partir de la forge + constante 2021-05-27 17:08:29 +02:00
fredtempez
d2d62a019d Transféréer les permissions 2021-05-27 16:09:06 +02:00
fredtempez
3ff41b9952 blob 2021-05-27 08:36:42 +02:00
fredtempez
74fa14dd35 blob 2021-05-27 08:36:21 +02:00
fredtempez
22bff87bc1 désactiver imagetool 2021-05-26 19:44:48 +02:00
fredtempez
553aa49518 désactiver image tool 2021-05-26 19:44:16 +02:00
fredtempez
6d6a1201c0 Version dans readme 2021-05-26 19:16:36 +02:00
fredtempez
b23f087dc9 Supprimer les fichiers d'exemples zippés 2021-05-26 19:15:37 +02:00
fredtempez
f37464b7ab merge 10603 2021-05-26 19:14:53 +02:00
fredtempez
e89de51932 gitignore 2021-05-26 19:09:21 +02:00
fredtempez
d315991004 Nettoyage des fichiers d'exemples 2021-05-26 19:08:00 +02:00
fredtempez
33f77c2b60 Update depuis le site 2021-05-26 18:50:18 +02:00
fredtempez
ff0c9e680f Merge branch '10603' into install_update 2021-05-26 18:19:24 +02:00
fredtempez
3720e017c6 Blog 5.1 RSS Check image 2021-05-26 18:16:35 +02:00
fredtempez
8b156674ef Numéro de version 2021-05-26 17:57:16 +02:00
fredtempez
d86cc8d72e News 3.3 rss sur page affichée 2021-05-26 17:37:08 +02:00
c5b7e44c56 Supprimer 'site/file/source/truc.txt' 2021-05-24 23:12:31 +02:00
779f381424 Transférer les fichiers vers 'site/file/source' 2021-05-24 23:12:21 +02:00
e50645ff3a Ajouter 'site/file/source/truc.txt' 2021-05-24 23:10:59 +02:00
fredtempez
3589ae9cb9 gitignore 2021-05-24 23:09:19 +02:00
fredtempez
aebc097828 nettoyer chaine contenant la version 2021-05-24 19:17:51 +02:00
fredtempez
8a32240339 Installation à partir de la forge 2021-05-24 18:59:43 +02:00
fredtempez
ebc4bfa2ca URL TLD fr 2021-05-24 18:47:00 +02:00
fredtempez
5b5771f973 Livraison des fichiers du thème exemple dans une archibe. Dossiers de site vides. 2021-05-24 18:43:16 +02:00
fredtempez
6c15770ea2 readme 2021-05-20 21:59:08 +02:00
fredtempez
0134f11964 changes 2021-05-20 21:58:41 +02:00
fredtempez
ab72401a3a version 10602 2021-05-20 21:56:36 +02:00
fredtempez
e6789bb02a Restore 10602 in master 2021-05-20 21:52:09 +02:00
fredtempez
33d2a4d8c4 Revert "Merge erreur"
This reverts commit 323b46be00.
2021-05-20 21:38:47 +02:00
fredtempez
323b46be00 Merge erreur 2021-05-20 21:32:30 +02:00
fredtempez
aaa31a5981 typo 2021-05-19 20:31:52 +02:00
fredtempez
127e3704c0 typo 2021-05-19 20:30:09 +02:00
fredtempez
bdd8d63d08 10602 bug journaux 2021-05-19 20:28:40 +02:00
9281e13e87 Merge branch 'master' into 11000 2021-05-15 15:27:48 +02:00
fa8ec8534e news 3.2 defaultdata 2021-05-15 14:18:01 +02:00
fb3ca86d81 update news versionData 2021-05-15 14:17:14 +02:00
8ec673b549 news 3.2 effet blur modifié 2021-05-15 13:49:04 +02:00
4486ce6513 news désactivation de l'effet flou 2021-05-15 12:17:53 +02:00
430befa3c4 Dépublication champ non saisi 2021-05-15 12:04:10 +02:00
5ba62c38ea Merge commit 'd8ec88cb4655c1e8d5a8866c645e59dfdf06b910' into 11000 2021-05-14 21:04:55 +02:00
a41492f174 Merge commit '27c91356fbcb3d88ce495e480e85cdb24b46319e' into 11000 2021-05-14 21:04:36 +02:00
665f9d336c Merge commit 'ffe62bbbf9b9ff2ce515dbd8bcf34152a4cd87cc' into 11000 2021-05-14 21:04:23 +02:00
c41aeb180d Merge commit '3caa1eb6a16e11b4ef1d558dc6668781beb45a05' into 11000 2021-05-14 21:03:14 +02:00
d8ec88cb46 Sélecteur de date bouton delete 2021-05-14 19:14:59 +02:00
6c12a2e772 Champs : hauteur select identique aux autres champs à 9px 2021-05-14 18:49:22 +02:00
27c91356fb Search 2.1 config vide 2021-05-14 17:52:07 +02:00
ffe62bbbf9 Bug placeholder 2021-05-14 17:25:51 +02:00
3caa1eb6a1 gitignore 2021-05-14 17:20:22 +02:00
50d46e8a0e Typo 2021-05-13 23:06:01 +02:00
fb52221d66 typo + gitignore 2021-05-13 22:58:12 +02:00
cf66ca0b99 Merge branch 'master' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS 2021-05-13 15:01:39 +02:00
bfcd71a518 nettoyage 2021-05-13 11:59:47 +02:00
33a4b0b2b7 nettoyage 2021-05-13 11:57:57 +02:00
fed35e00d4 Supprimer 'site/data/search/pages/recherche/theme.css' 2021-05-13 11:55:56 +02:00
f8013c4670 Supprimer 'site/data/news/pages/telechargement/theme.css' 2021-05-13 11:55:47 +02:00
a29035f382 Supprimer 'site/data/news/pages/accueil/theme.css' 2021-05-13 11:55:37 +02:00
8f8965fe18 Supprimer 'site/data/modules/news/actu/style.css' 2021-05-13 11:55:15 +02:00
76229e6dfc Bouton Help par défaut dans update() 2021-05-13 10:52:54 +02:00
ece9d87a79 Bug config advanced() setData i18n 2021-05-11 15:59:47 +02:00
fe0bd22668 Texte d'aide config view index 2021-05-11 11:31:01 +02:00
892b2a833a Bug sitemap $parent remplacé par $parentId 2021-05-11 07:51:43 +02:00
a9c01cb906 Bug sitemap $parent remplacé par $parentId 2021-05-11 07:50:29 +02:00
a6b0921f12 copyDir 2021-05-10 15:21:57 +02:00
54c472675c News update 2021-05-09 18:19:43 +02:00
e1ef89b1c2 news : add publishoff 2021-05-09 18:07:59 +02:00
293cf382c0 news : add publishoff 2021-05-09 17:54:20 +02:00
35efa6f16b Modification mineure dans le texte d'aide de la gestion des modules 2021-05-09 11:29:06 +02:00
c3e436c75e Personnalisation du bouton d'aide 2021-05-09 11:19:20 +02:00
15009b3503 Modification mineure sur common.css 2021-05-09 11:08:08 +02:00
7157e43baf Personnalisation du bouton d'aide 2021-05-09 10:41:19 +02:00
b9976e2893 Modification du texte de l'aide dans addon upload 2021-05-08 23:02:09 +02:00
788fb8257e Modification du texte d'aide addon / upload 2021-05-08 22:55:24 +02:00
5114ddaf0f Bug dans addon suite au découpage des fonctions 2021-05-08 15:22:07 +02:00
25887c88a5 Mise à jour du système d'aide et de son application dans addon 2021-05-08 11:18:54 +02:00
612ad106e8 Mise à jour du système d'aide dans addon 2021-05-08 09:01:21 +02:00
e252c087a8 Merge branch '10600' into 11000 2021-05-06 14:24:14 +02:00
b4c7a39054 Merge branch '11000' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 11000 2021-05-06 14:23:22 +02:00
a5d2278d31 copyTree -> copyDir 2021-05-06 14:23:16 +02:00
2d093a61e0 Suppression du copié collé dans tinymce 2021-05-06 07:39:58 +02:00
d335660d30 Suppression du copié collé dans tinymce 2021-05-06 07:37:11 +02:00
5dc33bd8a5 faute 2 2021-05-05 19:13:35 +02:00
706da4ab8f faute 2021-05-05 19:13:11 +02:00
f67de97eb9 custom_copy devient copy Dir dans core + check backup copy error 2021-05-05 19:03:20 +02:00
d3387330bd suppression backup auto 2021-05-05 16:14:17 +02:00
03eaed72a1 système d'aide + utilitaire de copie de langues 2021-05-05 15:36:05 +02:00
ec91858263 Récupérer backup auto dans file manager 2021-05-04 19:21:47 +02:00
0bcd1c527c Restore -> manage 2021-05-04 18:29:44 +02:00
cbd3deede9 tableau 'translate' devient 'i18n' 2021-05-04 18:17:33 +02:00
bd0062ecd2 config adaptée + activation gestion des langues 2021-05-04 17:59:15 +02:00
96514f092a Lity option supprimée 2021-05-04 09:41:13 +02:00
fredtempez
8b93bdbe11 Merge branch '10600' into 11000 2021-05-03 22:18:51 +02:00
fredtempez
364e6e4be5 News 3.1 dépublication 2021-05-03 22:18:38 +02:00
fredtempez
1eb78c5cd8 Merge branch '10600' into 11000 2021-05-03 21:13:27 +02:00
fredtempez
3908d75240 News : titre d'article h1 en h2 pour respecter la hiérarchie 2021-05-03 19:04:28 +02:00
fredtempez
1fe067aa25 gitignore 2021-05-03 18:57:21 +02:00
fredtempez
bd3630f718 Bug core version 2021-05-03 18:55:41 +02:00
fredtempez
6506679466 News : Bug theme par defaut 2021-05-03 18:54:07 +02:00
fredtempez
3a88ae8dca gitignore 2021-05-03 18:35:47 +02:00
fredtempez
a89f3e9329 Commentaire 2021-05-03 18:35:42 +02:00
fredtempez
f8decc4ce3 News bug import + bug couleur arrière-plan sombre 2021-05-03 18:35:31 +02:00
fredtempez
12e59b0b4b Supp module download 2021-05-03 18:35:06 +02:00
fredtempez
524bf2223a Structure datadirectory dossier racine 2021-05-03 16:32:36 +02:00
01da51ac9b Logo dans le mail envoyé par form 2021-05-03 09:02:58 +02:00
fredtempez
ad0fa89ede core version 2021-04-27 10:29:59 +02:00
fredtempez
479a546679 Merge branch '10504' into 10600 2021-04-27 10:08:30 +02:00
fredtempez
dc0638cab9 changes et readme 2021-04-27 10:07:46 +02:00
fredtempez
b1418461ad Merge branch '10504' into 10600 2021-04-27 09:26:07 +02:00
fredtempez
b58113a8ef Sitemap articles par date 2021-04-27 09:25:54 +02:00
fredtempez
346b2a8cec Merge branch '10504' into 10600 2021-04-27 08:53:39 +02:00
fredtempez
59f0fe537f DATADIRECTORY chemins corrects 2021-04-27 08:53:16 +02:00
fredtempez
d79861cbdf Version 5.0 (mise à jour du bug effacement des commentaires dans 10504) 2021-04-26 22:07:04 +02:00
fredtempez
78f18afab8 Blog bug effacement commentaires 2021-04-26 22:05:46 +02:00
fredtempez
54426593d5 Blog 5.1 bug bouton effacement des commentaires 2021-04-26 22:03:49 +02:00
fredtempez
0b8ae49b70 DATADIRECTORY supprimer le dossier modules 2021-04-26 21:18:32 +02:00
a55c2b9de4 Chemin des feuilles de style .../class_du_module/pages/instance/theme.css 2021-04-26 13:59:21 +02:00
97374fafb4 Page.php, mise à jour et effacement du dossier au nom du module et de l'instance 2021-04-25 08:56:28 +02:00
fredtempez
b1b77d767c news effet blur avec arrière plan contrasté 2021-04-22 20:48:32 +02:00
fredtempez
2b94ba426a Fautes de frappe dans un commentaire 2021-04-22 20:39:33 +02:00
fredtempez
7594821ca7 petites corrections 2021-04-15 18:06:28 +02:00
fredtempez
d378cd94a2 Merge branch '10600' into 11000 2021-04-13 18:09:49 +02:00
fredtempez
a7158cf366 Merge branch 'master' into 10600 2021-04-13 18:05:52 +02:00
fredtempez
66ad9623da Merge branch '10600' into 11000 2021-04-13 17:22:48 +02:00
fredtempez
ff6ececbb9 update 10600 2021-04-13 16:36:47 +02:00
fredtempez
f4f8cfe885 suppression items par page de la config 2021-04-13 16:36:18 +02:00
fredtempez
4e02938e3a itemsparPage supprimé dans la config 2021-04-13 16:33:26 +02:00
fredtempez
06ec036d9a Form gestion des données nombre de lignes par page 2021-04-13 16:22:17 +02:00
fredtempez
67565a1d93 403 et 404 par défaut 2021-04-13 14:03:45 +02:00
fredtempez
3789ca2b42 Merge branch '10600' into 11000 2021-04-12 18:33:12 +02:00
fredtempez
a08367a992 Merge branch '10503' into 10600 2021-04-12 18:33:01 +02:00
fredtempez
93c13f3f16 10503 bug smtp 2021-04-12 18:29:10 +02:00
fredtempez
f24688afa2 Merge branch '10600' into 11000 2021-04-12 18:14:47 +02:00
fredtempez
1442f75f15 changes 2021-04-12 18:14:39 +02:00
fredtempez
ba06a9f69a Merge branch '10600' into 11000 2021-04-12 18:14:02 +02:00
fredtempez
b4da3b7d98 Simplification + gestion des ressources de module au niveau de la page 2021-04-12 17:54:31 +02:00
fredtempez
2f5a8c565d change 2021-04-12 12:03:55 +02:00
fredtempez
a07775f25a Sample site defaultdata fix 2021-04-12 11:44:03 +02:00
fredtempez
d25dbd3a81 Blog bouton déplacé 2021-04-11 20:09:46 +02:00
fredtempez
cde0e52528 Gallery sample defalutdata 2021-04-11 19:53:41 +02:00
fredtempez
4d17eebdd6 Blog Nettoyage des espaces inutiles 2021-04-11 19:24:50 +02:00
fredtempez
452123813e Blog site sample Positions not set 2021-04-11 19:20:48 +02:00
fredtempez
26fe5fb214 blog example defaultdata 2021-04-11 19:13:08 +02:00
fredtempez
d7991f702e Merge branch '10600' into 11000 2021-04-11 09:16:34 +02:00
fredtempez
39a449d92a activation core auto update modules 2021-04-11 09:08:22 +02:00
fredtempez
1c1a97c22a Gallery WIP 2021-04-09 16:42:13 +02:00
fredtempez
080a601c3f News option blur ok 2021-04-09 14:42:21 +02:00
F Tempez
5e481ca3d7 News OK + blur option 2021-04-09 13:29:11 +02:00
fredtempez
1f32a6e7cc News tester update 2021-04-09 11:34:16 +02:00
16a95dc510 Supprimer 'module/download/view/item/item.php' 2021-04-09 11:11:19 +02:00
44d32d0677 Supprimer 'module/download/view/index/index.php' 2021-04-09 11:11:12 +02:00
fredtempez
1f37f1ca91 Search OK !!! 2021-04-09 08:48:48 +02:00
fredtempez
0f3cdfe3c6 search en test 2021-04-08 19:29:40 +02:00
fredtempez
6084179d1d update search ok 2021-04-08 11:45:06 +02:00
fredtempez
490d39a9ba uodate news ok 2021-04-08 11:33:35 +02:00
F Tempez
08bed9fc33 Merge branch '10598' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 10600 2021-04-08 09:44:54 +02:00
F Tempez
9240883e59 fix gallery from 10502 2021-04-08 09:44:13 +02:00
fredtempez
36ed072667 core modules autnomes update 2021-04-07 17:57:38 +02:00
F Tempez
dfd6291563 Merge branch '10600' into 11000 2021-04-07 14:45:34 +02:00
F Tempez
babebc5a7e fix setData mal placé 2021-04-07 14:35:21 +02:00
F Tempez
43da5f03db Appel automatique des initCSS lors de la mise à jour vers 10600 2021-04-07 14:29:24 +02:00
F Tempez
55c921025a News : initCss 2021-04-07 14:26:12 +02:00
F Tempez
3247e14a83 initCss variable d'instance 2021-04-07 14:06:07 +02:00
F Tempez
e3744bf7d8 Bug module initcss manque style 2021-04-07 13:57:54 +02:00
F Tempez
695abf314a warning stristr deprecated 2021-04-07 13:57:09 +02:00
fredtempez
fc2fbf2103 init 2021-04-07 11:58:22 +02:00
fredtempez
4c0e0bd4b6 i18n pour la v11 2021-04-07 08:04:43 +02:00
F Tempez
33b4337d0b Merge branch '10600' into 11000 2021-04-06 17:44:25 +02:00
F Tempez
6f7efd7420 Bug variable non déclarée dans config 2021-04-06 17:44:03 +02:00
F Tempez
108e285704 Merge branch '10600' into 11000 2021-04-06 17:37:17 +02:00
F Tempez
9de4b08d20 addon effacement des données 2021-04-06 17:35:46 +02:00
F Tempez
04fab0e06c Merge branch '10600' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 10600 2021-04-06 17:22:22 +02:00
F Tempez
6a9d194942 export nouveau datadirectory 2021-04-06 17:22:20 +02:00
2ad1036a7f Mise à jour de 'core/class/helper.class.php' 2021-04-06 17:19:39 +02:00
fredtempez
14f525a618 Merge branch '10600' into 11000 2021-04-06 11:26:04 +02:00
fredtempez
e90da78bad Modules : datadirectory type string 2021-04-06 11:20:04 +02:00
F Tempez
ba1d5bbf1f Gallery datadirectory 2021-04-06 09:56:26 +02:00
fredtempez
93e78c0963 Merge branch '10600' into 11000 2021-04-05 16:04:57 +02:00
fredtempez
03ae2b84f9 changes et readme 2021-04-05 16:03:05 +02:00
fredtempez
d209f40cf9 Merge branch '10600' into 11000 2021-04-05 15:58:29 +02:00
fredtempez
2510a1bc8d Search bouton loupe si pas de texte 2021-04-05 15:54:19 +02:00
fredtempez
687a98df15 Icône search 2021-04-05 15:41:42 +02:00
fredtempez
77fc370e28 Fonction initCss 2021-04-05 15:38:07 +02:00
fredtempez
a1d934ad7b search initCSS 2021-04-05 15:33:38 +02:00
fredtempez
9a8592cb68 Search fonction initialisation 2021-04-05 15:32:04 +02:00
fredtempez
cba87d3295 news Effet blur 2021-04-05 15:01:42 +02:00
fredtempez
374439755c Gallery correction init 2021-04-05 14:38:31 +02:00
fredtempez
89a5828d99 suprresion des options de langues commentées 2021-04-05 14:38:15 +02:00
fredtempez
c45fdc4895 config advanced emplacements des sélecteurs 2021-04-05 09:09:51 +02:00
fredtempez
df778fbee1 config objets par page 2021-04-05 09:05:33 +02:00
fredtempez
9630f093cd defaultdata de la v11 2021-04-05 09:00:29 +02:00
fredtempez
c2c67b55ff Modules de v11 2021-04-05 08:59:24 +02:00
fredtempez
fd8a15812b Style perso 2021-04-05 08:57:16 +02:00
fredtempez
e2f1d5e0e3 gitignore 2021-04-05 08:55:50 +02:00
fredtempez
b9af44b99c Merge branch 'master' into 11000 2021-04-05 08:52:29 +02:00
fredtempez
020392ae3d update gitignore 2021-04-04 19:15:56 +02:00
fredtempez
650ae755be bug modif theme + init feuille de style 2021-04-04 19:11:41 +02:00
fredtempez
90ad9f29fb Gallery v3 à vérifier : installation sans site exemple + import 2021-04-04 18:55:20 +02:00
fredtempez
a6e245e83b Gallery 3.0 structure données config et content 2021-04-04 14:55:47 +02:00
fredtempez
c6d48a8fdf search 2.0 update + module css 2021-04-04 14:05:42 +02:00
fredtempez
20ebf0d2c9 Search css nouvelle norme 2021-04-04 10:58:06 +02:00
fredtempez
2d8c5cad07 news nom de la feuille de style dans data 2021-04-04 10:29:27 +02:00
fredtempez
0c4827b507 Merge branch '11000' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 11000 2021-04-04 10:20:59 +02:00
fredtempez
b495afc2e8 Version devient versionData 2021-04-04 10:20:57 +02:00
fredtempez
89ef3c84ab Merge branch '11000' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 11000 2021-04-03 17:54:22 +02:00
fredtempez
2d730ab100 changes 2021-04-03 17:54:20 +02:00
fredtempez
4d9d71602e init ok 2021-04-03 16:24:25 +02:00
fredtempez
40a62401bc news : marge sous content 2021-04-03 16:10:58 +02:00
Fred Tempez
1f6c665479 Lity à tester 2021-04-02 16:33:14 +02:00
Fred Tempez
fc90dc0d45 lity affectation erronée 2021-04-02 16:14:07 +02:00
fredtempez
ef75ce3b28 RSS syntaxe erreur 2021-04-02 15:24:30 +02:00
fredtempez
ab95e70846 Lity in progess 2021-04-02 15:01:19 +02:00
fredtempez
52b10d1382 10502 Erreur de marge 2021-04-02 11:16:44 +02:00
Fred Tempez
9d97c0a75f Détail article 2021-04-02 10:07:56 +02:00
fredtempez
1ca00c11e5 NEWS blur css à régler. 2021-04-01 19:53:12 +02:00
fredtempez
6bd248fb6a News : effet blur 2021-04-01 19:45:02 +02:00
Fred Tempez
faf64a0660 News Hauteur paramétrable 2021-04-01 18:00:49 +02:00
Fred Tempez
7389f3026d Supprimer init update version 2021-04-01 17:31:18 +02:00
Fred Tempez
7f4e03f2c6 update : save version when save config 2021-04-01 17:15:05 +02:00
Fred Tempez
90d0fc2127 update comparaison 2021-04-01 16:25:00 +02:00
Fred Tempez
ba5cdb3deb Revert "Inversion du test de version WIP"
This reverts commit 0432eb65b6.
2021-04-01 16:22:02 +02:00
Fred Tempez
0432eb65b6 Inversion du test de version WIP 2021-04-01 14:48:51 +02:00
fredtempez
c8b16f2f25 update change 2021-03-31 19:31:24 +02:00
fredtempez
86e9ef539b suppression options par page dans la config 2021-03-31 19:13:20 +02:00
Fred Tempez
e7348012ba config sans itemsperpage 2021-03-31 16:52:18 +02:00
Fred Tempez
1dab50c5ff itemsperPages blog + download 2021-03-31 16:50:12 +02:00
Fred Tempez
861d08768a itemsperPage 2021-03-31 16:42:32 +02:00
Fred Tempez
ffe91f99d8 init 2021-03-31 14:47:15 +02:00
Fred Tempez
b0e8be710b news update simplifié 2021-03-31 14:36:09 +02:00
Fred Tempez
51b6f4b51d private update 2021-03-31 13:57:46 +02:00
Fred Tempez
b9ca6e500f news v3 2021-03-31 13:40:08 +02:00
Fred Tempez
1ed2e8ec35 fonction update 2021-03-31 13:30:27 +02:00
fredtempez
541ab1728b Aide supprimée 2021-03-30 20:08:41 +02:00
fredtempez
9c9c95653c Merge branch '11000' into NewsColumn 2021-03-30 19:40:10 +02:00
fredtempez
05920a3171 Bug page de connexion 2021-03-30 19:39:46 +02:00
fredtempez
0b55bba9c6 Auto update en test 2021-03-30 19:30:03 +02:00
Fred Tempez
b2969a748e Mise en forme de la config 2021-03-30 17:58:16 +02:00
Fred Tempez
92bbafdafd Nom de variables et alignements 2021-03-30 17:52:16 +02:00
Fred Tempez
08127b1fd5 Init 2021-03-30 17:39:15 +02:00
Fred Tempez
88b716a448 Lity suite et fin 2021-03-30 14:15:29 +02:00
cb254d9a31 Search maj copyright 2021-03-30 11:47:00 +02:00
bbab45758f Module search modification du placeholder 2021-03-30 10:02:09 +02:00
9864d8120c Modification des conditions de traduction et longueur minimale des mots clefs 2021-03-30 09:59:27 +02:00
Fred Tempez
2d432a375a Lity page avec un module 2021-03-30 09:49:33 +02:00
fredtempez
27154982ec Lity bug galery + login 2021-03-29 19:40:43 +02:00
fredtempez
6a76673dd3 config bug aide page recherche 2021-03-28 12:27:15 +02:00
fredtempez
2f41223c29 affichage correct d'une page avec module dans un lity 2021-03-27 14:30:36 +01:00
fredtempez
40a770a1f6 Page lity dans le pied de page - à voir page avec module générée complète dans lity 2021-03-27 14:25:58 +01:00
fredtempez
57821752f4 Merge branch '10501' into 11000 2021-03-27 08:41:45 +01:00
fredtempez
e54edf6fe1 changes 2021-03-27 08:41:26 +01:00
fredtempez
993089841b Option de layout datality 2021-03-26 21:52:02 +01:00
fredtempez
02d3a41e26 LAYOUT LITY 2021-03-26 20:47:05 +01:00
fredtempez
e5b0ff0311 Téléchargement depuis le store en attendant l'installation automatique 2021-03-26 20:26:26 +01:00
fredtempez
3fad88dcbc uploadItem WIP 2021-03-26 18:16:06 +01:00
fredtempez
66c4395069 installation d'un module ok 2021-03-26 16:47:50 +01:00
fredtempez
2f256c65f0 renommer fonction module Delete 2021-03-26 16:19:45 +01:00
fredtempez
a4fe13124d Import remise en état 2021-03-26 16:17:29 +01:00
fredtempez
316faabcbc Détaile module à terminer 2021-03-26 15:17:08 +01:00
fredtempez
8923dd9a2d Download 1.1 2021-03-26 15:02:38 +01:00
fredtempez
125d3a2a5d Module pour modification 2021-03-26 12:34:52 +01:00
fredtempez
2b72cb419e URL du store 2021-03-26 12:31:55 +01:00
fredtempez
f4bff1b460 Store installé ou pas code couleur 2021-03-26 10:25:11 +01:00
fredtempez
dc3e7f8356 Calsse buttonBlue n'existe aps 2021-03-26 09:58:30 +01:00
fredtempez
e14d9b17b0 no buttonBlue class, cleaning code 2021-03-26 08:55:24 +01:00
fredtempez
7d84df4722 store install or update 2021-03-26 08:54:10 +01:00
fredtempez
0cdf031a53 versin readme 2021-03-26 08:40:32 +01:00
Fred Tempez
39e6e38107 Store Fonction importModule pour le store et l'import de zip 2021-03-25 17:56:31 +01:00
Fred Tempez
8112e732d7 addon erreur d'adresse de store 2021-03-25 16:07:34 +01:00
Fred Tempez
812e7ca904 fix table lenght 2021-03-25 16:02:00 +01:00
Fred Tempez
a233a1aa24 dossiers à supprimer 2021-03-25 10:37:53 +01:00
Fred Tempez
8de48859c2 Merge branch '10501' into 11000 2021-03-24 16:35:31 +01:00
Fred Tempez
d694d604a4 update default data 2021-03-24 16:35:11 +01:00
Fred Tempez
b5aa88483d Merge branch '10501' into 11000 2021-03-24 16:32:33 +01:00
Fred Tempez
0658c6a9bc Fix modulelName error 2021-03-24 16:31:05 +01:00
Fred Tempez
d89b1f40c0 drapeaux dans le site écrans plus petits que 1024px 2021-03-24 14:57:03 +01:00
Fred Tempez
a62366d0a0 Merge branch '10501' into 11000 2021-03-23 08:46:05 +01:00
Fred Tempez
9e36af3846 changes 2021-03-23 08:45:56 +01:00
Fred Tempez
1bd5e0b17c Merge branch '10501' into 11000 2021-03-23 08:43:56 +01:00
Fred Tempez
8ee77b8072 upgrade helpDisplay content 2021-03-23 08:42:47 +01:00
fredtempez
ffe8e7aa8a Revert header.js 2021-03-22 18:51:40 +01:00
Fred Tempez
b9d4971aa6 preview menu position dans le header WIP 2021-03-22 17:27:00 +01:00
Fred Tempez
6c893e4333 fix menu.js.php 2021-03-22 17:18:46 +01:00
Fred Tempez
0512fd914f Aperçu Menu position WIP 2021-03-22 16:09:12 +01:00
Fred Tempez
0cb9de7b8e bug position du menu par rapport à la bannière 2021-03-22 13:39:24 +01:00
Fred Tempez
fed8fb6ab1 Bug déplacement menu à valider 2021-03-22 11:30:34 +01:00
Fred Tempez
8a7919cf6b changes bug titre maintenance 2021-03-22 11:06:43 +01:00
Fred Tempez
f38f7ce547 Bug : titre de page de maintenance non caché 2021-03-22 11:02:29 +01:00
fredtempez
1199a67ed6 backup date filename 2021-03-21 18:12:25 +01:00
fredtempez
6a27eb440b version changes 2021-03-21 14:50:01 +01:00
fredtempez
f4c764e2f6 numéro de version dans change 2021-03-21 14:49:53 +01:00
fredtempez
7a4cc0c651 changes 2021-03-21 14:49:04 +01:00
fredtempez
6e3647909b signature dans le module news 2021-03-21 14:43:44 +01:00
fredtempez
2c087edd85 changes 2021-03-21 14:18:33 +01:00
fredtempez
9c9bea68de rechargement common.css et jeu d'icônes 2021-03-21 14:12:32 +01:00
fredtempez
cd1f578011 update v11 2021-03-21 03:47:50 +01:00
fredtempez
eee99d43f9 Merge branch 'master' into 11000 2021-03-21 03:46:45 +01:00
fredtempez
2e9272d8c2 Merge branch 'master' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS 2021-03-21 03:43:56 +01:00
fredtempez
07049a4ab6 version 10.5.00 2021-03-21 03:43:41 +01:00
fredtempez
7d0f09ece9 curl order in function 2021-03-21 03:43:41 +01:00
f74d665fb3 core version 2021-03-21 03:43:20 +01:00
fredtempez
e28b5d77c7 supp udate de v11 !! 2021-03-21 03:42:32 +01:00
fredtempez
cb162a91de version 10.5.00 2021-03-21 03:30:21 +01:00
Fred Tempez
f01e9d3899 Merge branch '10500' into 11000 2021-03-19 13:44:26 +01:00
Fred Tempez
93d20a230c Fix CSS news de common vers index.css et supp size dans blog article 2021-03-19 13:43:12 +01:00
e4483538fe Système d'aide dans addon pour export import 2021-03-19 08:35:34 +01:00
a73fc581b8 Ajout dans core.php d'une ligne de css table thead tr pour admin.css 2021-03-19 08:28:43 +01:00
f6e4b6f9bd Ajout du système d'aide dans common.css 2021-03-19 08:24:06 +01:00
eec377a386 Ajout dans news de edit.css 2021-03-19 08:19:32 +01:00
a375d9cd3a Modification de CHANGES.md 2021-03-19 08:16:09 +01:00
5c07089123 Merge branch '10500' into 11000 2021-03-18 16:17:18 +01:00
85843f985e changes 2021-03-18 16:16:49 +01:00
cbe3f64e46 changes 2021-03-18 16:06:23 +01:00
e2aa5d3e20 Merge branch '10500' into 11000 2021-03-18 14:35:44 +01:00
f392604977 versions 2021-03-18 14:31:10 +01:00
00e6005983 news bouton léger d'édition 2021-03-18 14:30:34 +01:00
cca005fb06 supprimer les modules en trop dans extensions 2021-03-18 14:17:14 +01:00
ce0297251c Merge branch 'extensions' into 11000 2021-03-18 14:10:00 +01:00
fredtempez
4839b306d9 Merge branch '10500' into 11000 2021-03-15 17:33:20 +01:00
fredtempez
b56320189a Merge branch '10500' into extensions 2021-03-15 17:32:56 +01:00
fredtempez
c7bf3a36cf blog edit button fix defautl data 2021-03-15 17:32:41 +01:00
f8887806a0 Bouton édition léger blog et download 2021-03-15 16:46:59 +01:00
e5b1165333 Merge branch '10500' into extensions 2021-03-15 16:41:10 +01:00
154278ef98 modules blog et download WIP 2021-03-15 16:40:29 +01:00
fredtempez
3a80515b17 Licene et auteur + nouvelle présentation 2021-03-14 14:42:37 +01:00
fredtempez
59ed2b7ad0 bug update site map 2021-03-12 13:04:44 +01:00
fredtempez
e9d97b49b1 curl order in function 2021-03-12 07:21:56 +01:00
296d1593e6 Merge branch '10500' into 11000 2021-03-11 14:59:50 +01:00
6ddec644ac merge change 10406 2021-03-11 14:59:12 +01:00
3c385f4a41 Merge branch '10500' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 10500 2021-03-11 14:57:26 +01:00
37cf776789 Pb sitemap avec proxy 2021-03-11 14:57:10 +01:00
2a197e886b Système d'aide dans core.js.php 2021-03-11 11:37:46 +01:00
1695d7d242 core version 2021-03-11 10:40:00 +01:00
f60e1ab9e7 Merge branch '10500' into 11000 2021-03-11 10:07:39 +01:00
a079cadc68 Merge branch '10500' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 10500 2021-03-11 10:07:16 +01:00
c180f65af8 curl avant stream open 2021-03-11 10:06:59 +01:00
fredtempez
de6a3fffdc Merge branch '10500' into 11000 2021-03-10 19:01:37 +01:00
fredtempez
ddbeedd4d5 Php 7.2 2021-03-10 19:00:43 +01:00
fredtempez
2f332d2bc3 Revert "Merge branch '10500' into 11000"
This reverts commit 6d576a16a6, reversing
changes made to 7766c16ed9.
2021-03-10 18:57:41 +01:00
fredtempez
cb8b5d4de1 Revert "Merge branch '10500' into 11000"
This reverts commit 6d576a16a6, reversing
changes made to 7766c16ed9.
2021-03-10 18:55:15 +01:00
fredtempez
0d157b8957 Revert "Merge branch '10406' into 10500"
This reverts commit f7d2c36086, reversing
changes made to 60bb775109.
2021-03-10 18:52:17 +01:00
fredtempez
6d576a16a6 Merge branch '10500' into 11000 2021-03-10 14:51:27 +01:00
fredtempez
f7d2c36086 Merge branch '10406' into 10500 2021-03-10 14:49:52 +01:00
fredtempez
61a3dc6093 Reverse Sitemap Version 2021-03-10 14:48:54 +01:00
7766c16ed9 Merge branch '10500' into 11000 2021-03-10 13:47:40 +01:00
60bb775109 Merge branch '10500' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 10500 2021-03-10 13:37:35 +01:00
28c5c67e26 geturlcontent ajout de curl 2021-03-10 13:37:13 +01:00
7fc128c1fc Correction des dossiers pour inclusion des classes rss 2021-03-09 16:59:32 +01:00
30f72c6859 Module Install from store WIP 2021-03-09 16:38:02 +01:00
a0a259f92f Détail brut d'un item du catalogue 2021-03-09 16:15:54 +01:00
a7498110fb Correction dossier pour l'image du flux RSS 2021-03-09 14:26:09 +01:00
fredtempez
33d47a7e5c Liste des objets du store et détail d'un objet WIP 2021-03-08 19:27:55 +01:00
c30b839587 Transférer les fichiers vers 'module/download' 2021-03-08 18:34:34 +01:00
ab05c7a7f7 Transférer les fichiers vers 'module/download' 2021-03-08 18:33:53 +01:00
47851aa99a Mise à jour de 'README.md' 2021-03-08 11:13:19 +01:00
fredtempez
bb6750def5 Gestion des modules par catalogue 2021-03-06 18:16:52 +01:00
fredtempez
9b6f8f1c11 Download limit json rest api 2021-03-06 17:40:35 +01:00
fredtempez
7dc0b4caf8 liste les modules en json 2021-03-05 18:33:03 +01:00
fredtempez
5bcb36c23d Merge branch '10500' into extensions 2021-03-05 18:00:33 +01:00
fredtempez
f000db5746 Merge branch '10500' into 11000 2021-03-05 15:17:55 +01:00
fredtempez
e0adc83d60 Merge branch 'master' into 10500 2021-03-05 15:17:37 +01:00
fredtempez
2df93cb653 Supprimer effacement theme dans update 10405 2021-03-05 15:16:35 +01:00
fredtempez
5ac2b33a2d constante update 2021-03-04 13:30:38 +01:00
88762ee5de auto inscription 2021-03-03 14:24:15 +01:00
b76724107e ajout des autres modules 2021-03-03 14:22:58 +01:00
Fred Tempez
8d6bda4629 Merge branch '10500' into extensions 2021-03-03 14:19:42 +01:00
fredtempez
101b8ac0f0 readme version 2021-03-03 08:44:18 +01:00
fredtempez
2951b2cb5f changes 2021-03-03 08:43:45 +01:00
fredtempez
5b895c8375 Merge branch '10500' into 11000 2021-03-03 08:43:08 +01:00
fredtempez
2c8be86f60 Merge branch 'master' into 10500 2021-03-03 08:42:24 +01:00
fredtempez
4d49ea0974 change 2021-03-03 08:41:32 +01:00
fredtempez
3def0e9b92 Merge branch '10500' into 11000 2021-03-02 11:22:25 +01:00
fredtempez
a6920c6c4e Merge branch '10405' into 10500 2021-03-02 11:20:58 +01:00
fredtempez
79442c9174 Conformité avec les nouvelles nouvelles constantes 2021-02-27 18:26:57 +01:00
fredtempez
5fb09bd802 Mise à jour des thèmes dans update 2021-02-26 21:42:30 +01:00
fredtempez
b668b586bf TinyMCE Arrière-plan du sélecteur de block identique au site + couleur du lien dans les blocs H4 des pages administration 2021-02-26 21:37:19 +01:00
fredtempez
766a89ee56 change 2021-02-26 21:09:45 +01:00
fredtempez
96a6b9ff27 Ajustement des marges footer 2021-02-26 21:04:44 +01:00
fredtempez
606c67ae7e Aide page de config 2021-02-26 09:59:58 +01:00
fredtempez
21c70e7eab Test footer fixe marges 2021-02-25 21:19:27 +01:00
c10ad5d5da Modification de la constante UPDATE 2021-02-25 07:53:57 +01:00
fredtempez
22bd4aa037 backtotop plus haut 2021-02-22 09:56:57 +01:00
fredtempez
c48bb16655 zindex bouton de remontée 2021-02-22 09:54:52 +01:00
fredtempez
3fe450e06e Mise à jour Site Map Genegratoir 4.3.1 2021-02-22 09:43:30 +01:00
3bc9e52c3d Addon modification message import impossible 2021-02-21 08:18:29 +01:00
10ef44aaaf Gestion des modules import notification si pages de même nom dans le site et l'archive 2021-02-20 16:36:53 +01:00
20d5c4d221 Modifications helper.class.php, addon.php export import 2021-02-20 09:25:22 +01:00
fredtempez
31d3320f19 import à tester 2021-02-19 16:38:22 +01:00
fredtempez
a894628696 Merge branch '10500' into 11000 2021-02-19 09:14:03 +01:00
fredtempez
d8d0d68f47 Merge branch '10500' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 10500 2021-02-19 09:13:26 +01:00
fredtempez
98a3a67478 Merge branch 'master' into 10500 2021-02-19 09:13:22 +01:00
fredtempez
95c269873f Constante data directory par défaut 2021-02-19 09:08:56 +01:00
887ce73f02 correction colonnes tableau addon 2021-02-19 07:53:34 +01:00
f95d8a7961 addon messages en cas de delete 2021-02-19 07:49:04 +01:00
0e002df2af Correction dans addon du contrôle d'update 2021-02-19 07:14:42 +01:00
fredtempez
14af9847f6 Import WIP + une correction dans le theme (nom de fonction en double) 2021-02-18 18:34:53 +01:00
fredtempez
ef2aee3f59 export ok 2021-02-18 17:15:13 +01:00
fredtempez
40c862d251 Nom fonction export 2021-02-18 16:54:34 +01:00
fredtempez
3dcf8f1b96 export ok à tester 2021-02-18 14:01:44 +01:00
fredtempez
74f0f60a8a Effacer createZip 2021-02-18 12:40:41 +01:00
fredtempez
0e4d1ed570 datadirectory si erreur de syntaxe 2021-02-18 12:32:28 +01:00
fredtempez
af72107c79 addon export WIP (pages missing) 2021-02-18 12:07:40 +01:00
fredtempez
d900380822 news erreur de merge 2021-02-18 10:19:12 +01:00
fredtempez
32312a3e54 Merge branch '10500' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 10500 2021-02-18 10:16:40 +01:00
fredtempez
1244f2a60c Merge branch '10404' into 10500 2021-02-18 10:16:38 +01:00
fredtempez
b5d31033ff Blog Balise de fermeture de commentaire - constantes dans les modules 2021-02-18 10:07:05 +01:00
e584e9fd5f Ajout copyright addon 2021-02-18 08:56:07 +01:00
fredtempez
1eb994368e Export WIP 2021-02-17 19:34:08 +01:00
fredtempez
d75d78fa31 Effacement autorisé si DELETE = TRUE OU NON DEFINI et module pas mis en oeuvre 2021-02-17 14:16:58 +01:00
fredtempez
75539e2ef1 Copyright encore 2021-02-17 13:51:12 +01:00
fredtempez
0bf94567bf Copyright année 2021-02-17 13:49:58 +01:00
fredtempez
8a3d876e8f Merge branch '10500' into 11000 2021-02-17 08:51:39 +01:00
fredtempez
688c923214 Merge branch 'master' into 10500 2021-02-17 08:50:04 +01:00
fredtempez
23de277cd6 blog version 2021-02-17 08:37:53 +01:00
f0a9371e5a Nettoyage de core/module/addon....index.php 2021-02-17 07:32:43 +01:00
fredtempez
df42bb55c9 div manquant 2021-02-16 18:46:58 +01:00
fredtempez
fdeb89465d removedir retourn un booléen 2021-02-16 18:45:01 +01:00
fredtempez
ca5e16d729 Déclaration supprimée 2021-02-16 14:31:25 +01:00
fredtempez
9dabff9d74 typos dans change 2021-02-16 13:37:05 +01:00
ee476e2842 Modification fonction index() de addon.php 2021-02-16 11:53:52 +01:00
fredtempez
19825afe2d 10.4.03 petites corrections 2021-02-16 09:44:04 +01:00
fredtempez
f04a05168f all pages match 2021-02-15 20:45:26 +01:00
fredtempez
9d7810ebf2 index construction du tableau 2021-02-15 20:38:38 +01:00
fredtempez
3b1f6a874a core + ordre is_post avant 2021-02-15 18:31:23 +01:00
ec5b33dd0f Suppression de core/module/config/view/modules 2021-02-15 17:27:50 +01:00
55801d2d96 Merge branch '10500' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 10500 2021-02-15 17:14:39 +01:00
fdcbb22e0c Nettoyage de core/module/config/config.php 2021-02-15 17:13:57 +01:00
e1bfde36dc Suppression de gps.php fichier vide 2021-02-15 15:01:38 +01:00
f5bb4cb050 Ajout core/module/addon suite 2021-02-15 14:42:34 +01:00
bcd1f4910a Ajout core/module/addon 2021-02-15 14:37:17 +01:00
1d75d17e4d Ajout de constantes dans getModules() 2021-02-15 13:38:23 +01:00
2393a17742 modif config/view/index/index.php 2021-02-15 12:01:58 +01:00
fredtempez
cc22f5ac1a Zwiico + getmodule simplifié 2021-02-15 11:15:52 +01:00
af496ab23a Barre d'administration
Ajout d'un lien 'Gérer les modules', icône provisoire
2021-02-15 07:59:48 +01:00
fredtempez
6a7642e5a0 Module téléchargement 2021-02-14 14:21:58 +01:00
fredtempez
696d38b1f4 getModules 2021-02-14 11:53:11 +01:00
fredtempez
4ba7c59d32 Stat ok manque le total dans la liste et l'export 2021-02-12 18:37:31 +01:00
ed2130e8e1 Merge branch 'download' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into download 2021-02-12 17:07:29 +01:00
af94b2e5bc Stats en cours 2021-02-12 17:06:38 +01:00
fredtempez
35408d32eb Stats en cours 2021-02-12 14:25:51 +01:00
5fda899e88 stats ok 2021-02-12 10:32:12 +01:00
fredtempez
73aeea6874 File stats in progress 2021-02-12 08:13:25 +01:00
fredtempez
e6dc5dff75 Merge branch 'master' into download 2021-02-12 07:28:09 +01:00
68b4cab5ac Initialisation du module Donwload 2021-02-11 17:05:59 +01:00
Fred Tempez
fed10aa71d getmodules gestion des erreurs 2021-02-11 10:31:58 +01:00
fredtempez
31173bcef3 Numéro de version 2021-02-10 18:18:39 +01:00
fredtempez
8dff1cd069 scandir original 2021-02-10 17:58:08 +01:00
fredtempez
ddb0f4f4a5 Merge branch 'modules' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into modules 2021-02-10 17:52:02 +01:00
Prof Langues
1cad66691c Commentaire 2021-02-10 17:04:41 +01:00
Prof Langues
98f017d6c5 Merge branch '10402' into modules 2021-02-10 17:00:25 +01:00
Prof Langues
c6bda6ebb7 Merge branch '10402' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 10402 2021-02-10 17:00:19 +01:00
Prof Langues
c1a1cdf1bd readme version 2021-02-10 17:00:15 +01:00
Prof Langues
3f68897639 scanSubDir and check empty folder 2021-02-10 16:59:17 +01:00
fredtempez
a5437ef333 méthode de sauvegarde 8 clés 2021-02-10 09:49:27 +01:00
fredtempez
041da51cac changes 2021-02-09 19:11:50 +01:00
fredtempez
eaf479246e Merge branch '10402' into modules 2021-02-09 18:59:07 +01:00
fredtempez
b45afbc245 Merge branch '10402' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 10402 2021-02-09 18:57:44 +01:00
Prof Langues
c648d328d6 appel en trop 2021-02-09 18:20:53 +01:00
Prof Langues
dde3a1c6a2 fonction getModules 2021-02-09 18:04:24 +01:00
Prof Langues
4fb0528ea5 Init fichiers Sylvain 2021-02-09 16:12:32 +01:00
Prof Langues
0dc4420bff Merge branch '10401' into 11000 2021-02-09 16:07:23 +01:00
Prof Langues
834de6a5f2 10402 bug import de theme 2021-02-09 15:56:22 +01:00
fredtempez
a8438fb722 Bug couleur de fond tinyMCE + aperçu du site 2021-02-09 11:45:10 +01:00
fredtempez
878b3ecbb1 change 2021-02-08 18:47:47 +01:00
fredtempez
40ca6378a2 Erreur de contrôle du thème 2021-02-08 18:44:15 +01:00
fredtempez
cff5bb8a4a 10401 et module form, erreur de syntaxe 2021-02-08 18:33:15 +01:00
fredtempez
1900495cd6 numero de version court 2021-02-07 14:20:34 +01:00
fredtempez
8da4cc0cfa typos 2021-02-07 14:08:00 +01:00
fredtempez
418f5d74d2 Faille csrf : réinitialisation du custom.css 2021-02-06 20:01:10 +01:00
fredtempez
734d3e67fa Merge branch '10400' into 11000 2021-02-06 19:06:06 +01:00
fredtempez
9367721d99 bug de présentation login 2021-02-06 19:05:46 +01:00
fredtempez
24d9d08f96 Merge branch '11000' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 11000 2021-02-06 18:20:17 +01:00
fredtempez
1beb70a5c3 Merge branch '10400.15' into 11000 2021-02-06 14:49:26 +01:00
Prof Langues
e9c3c2ba22 Changes 2021-02-05 11:28:58 +01:00
Prof Langues
17a7b63761 Bug sélecteur de fichier label de type block plutôt que inline-block 2021-02-05 11:23:08 +01:00
Prof Langues
2935a4dd8e Active la position fixe sur contain ou cover dans l'image d'arrière plan 2021-02-05 10:07:58 +01:00
Prof Langues
f6c1e2a9f3 Form numéro de version 2021-02-04 16:55:29 +01:00
Prof Langues
3facabaeca Form 2.6 Caractères spéciaux mal affichés dans les noms des champs du formulaire lors de l'édition 2021-02-04 16:52:37 +01:00
Prof Langues
3b8b09df59 015 Effets d'agrandissements de l'image en arrière plan lorsque la page s'étire 2021-02-04 16:41:54 +01:00
fredtempez
0f85512bb8 Bug page null dans les modules 2021-01-30 12:25:03 +01:00
fredtempez
691eed8ba4 changelog 2021-01-21 10:27:55 +01:00
fredtempez
9de5d5975b Option de déconnecion automatique 2021-01-21 10:21:49 +01:00
fredtempez
37b3bdb14a double quote pour simple quote 2021-01-21 09:46:47 +01:00
fredtempez
271beb06e9 Trad auto langue du navigateur 2021-01-18 19:18:13 +01:00
fredtempez
34ef8d7237 Merge branch '10400' into 11000 2021-01-16 19:12:26 +01:00
fredtempez
da87070418 Nettoyage des codes i18n 2021-01-16 19:09:21 +01:00
fredtempez
efc324c3db Modif cookies WIP 2021-01-16 18:13:00 +01:00
fredtempez
36e4cd8253 Pas de trad auto du login 2021-01-15 15:14:39 +01:00
fredtempez
7e43f3adf4 Bug effacement langue déjà installée 2021-01-15 14:40:32 +01:00
fredtempez
3e53df3e7f Langue du navigateur + désactivation de la langue sélectionnée. 2021-01-15 14:34:06 +01:00
fredtempez
ff4f1489f2 Auto détermination de la langue du script google 2021-01-15 09:00:30 +01:00
fredtempez
eea05bf358 faute de frappe 2021-01-14 15:59:25 +01:00
fredtempez
d752d3b03b Susteme d'aide hover plustôt que click 2021-01-14 15:26:13 +01:00
fredtempez
8d1c68a2c6 Merge branch '10400' into 11000 2021-01-14 14:49:47 +01:00
fredtempez
2b8466428d data htaccess 2021-01-14 14:48:00 +01:00
fredtempez
82a42d8daf Sélecteur de copie de langues plus souple 2021-01-13 19:35:28 +01:00
fredtempez
606cd9de62 Merge branch '10400' into 11000 2021-01-13 19:09:41 +01:00
fredtempez
d4d8f0eab5 Neutraliser cookie langue 2021-01-13 19:08:28 +01:00
fredtempez
440fed288c Merge branch '10400' into 11000 2021-01-13 19:03:49 +01:00
fredtempez
668fda3d1d Supprimer la clé 'keywordColor' 2021-01-13 19:03:37 +01:00
fredtempez
019a774ddc del trailing spaces 2021-01-13 19:00:32 +01:00
fredtempez
9b8d8c603f supprimer un test 2021-01-13 18:47:30 +01:00
fredtempez
5b2e349726 Merge branch '10400' into 11000 2021-01-13 18:46:41 +01:00
fredtempez
0feee84a23 Blog 1.4 initialisation et couleur des mots clés par instance 2021-01-13 18:45:39 +01:00
fredtempez
384ac6052f Bug sélection de langue 2021-01-13 10:30:30 +01:00
fredtempez
babf10f4bf annulation dans getUrl 2021-01-13 10:13:07 +01:00
fredtempez
f86eee254c remove getUrl fix 2021-01-09 13:49:25 +01:00
fredtempez
29a2524231 remove htaccess fix 2021-01-09 13:46:33 +01:00
fredtempez
d7f03521df Merge branch '10400' into 11000 2021-01-09 11:46:32 +01:00
fredtempez
2ad68ca01d changes 2021-01-09 11:32:44 +01:00
fredtempez
d6f97b03bb fbclid dans htaccess avec la réécriture 2021-01-08 15:21:15 +01:00
fredtempez
78e6dd7adc Remove Facebook fbclid 2021-01-08 15:13:16 +01:00
fredtempez
f22eda7e6d Blog notification 2021-01-08 10:49:31 +01:00
fredtempez
beff8b1012 marqueur filebackup pas dans les données de site mais un fichier .backup 2021-01-08 10:37:56 +01:00
fredtempez
29036af835 mail de notification nom erroné 2021-01-07 09:49:57 +01:00
fredtempez
f8683cc9e6 .backup marqueur du backup 2021-01-07 09:48:53 +01:00
fredtempez
1a5935815a Merge branch '10400' into 11000 2021-01-06 19:32:36 +01:00
fredtempez
7be1dff6aa Option d'activation ou de suppression des fichiers back.json qui deviennent backup.json 2021-01-06 19:31:55 +01:00
fredtempez
52f59c1061 $i18nCurrent non déclarée ?! 2021-01-06 18:40:10 +01:00
fredtempez
f1207551a5 Merge branch '10400' into 11000 2021-01-06 14:40:49 +01:00
fredtempez
6d184fb0e4 Merge branch 'master' into 10400 2021-01-06 14:40:08 +01:00
37278e626f Mise à jour de 'README.md' 2021-01-06 14:39:08 +01:00
fredtempez
c8a313687f change 2021-01-06 14:33:52 +01:00
fredtempez
76e7f45ac1 Merge branch '10400' into 11000 2021-01-04 17:59:05 +01:00
fredtempez
3a637cc9fb Merge branch '10313' into 10400 2021-01-04 17:58:36 +01:00
fredtempez
bb782a7e8f Nom des fichiers de backup + htaccess 2021-01-04 17:54:47 +01:00
fredtempez
ba7ceaa2cf Merge branch '10313' into 10400 2021-01-04 17:44:45 +01:00
fredtempez
b9864fbfb8 login message erroné 2021-01-04 17:33:38 +01:00
fredtempez
18bfadec1f Préfixe _ 2021-01-03 18:52:36 +01:00
fredtempez
aa2bfa5ddb Amélioration journalisation 2021-01-03 18:41:25 +01:00
fredtempez
a8eb0f39ad Merge branch '10400' into 11000 2021-01-03 15:12:47 +01:00
fredtempez
e7bd96af39 Merge branch '10313' into 10400 2021-01-03 15:12:26 +01:00
fredtempez
03b9ee2094 Ajout de script dans Tinymce 2021-01-03 15:09:53 +01:00
fredtempez
7c3c0c145c Merge branch '10400' into 11000 2021-01-02 17:24:49 +01:00
fredtempez
7699120fe1 Merge branch '10313' into 10400 2021-01-02 17:24:30 +01:00
fredtempez
31981a39e6 Blog version 2021-01-02 17:21:38 +01:00
fredtempez
0e00d64620 Blog mail notification : nom de l'article plutôt que la page. 2021-01-02 17:16:29 +01:00
fredtempez
a082bb130e Interdire le téléchargement des backup 2020-12-31 18:02:08 +01:00
fredtempez
1beadf188b Merge branch '10400' into 11000 2020-12-31 17:57:51 +01:00
fredtempez
b2700fc989 Merge branch '10313' into 10400 2020-12-31 17:57:22 +01:00
fredtempez
7dd83edb4c change 2020-12-31 17:57:12 +01:00
fredtempez
5d5b87d9e6 Merge branch '10400' into 11000 2020-12-31 17:56:40 +01:00
fredtempez
5deec55290 Merge branch '10313' into 10400 2020-12-31 17:56:13 +01:00
fredtempez
6c2074ca70 Thème couleur texte bouton standard 2020-12-31 17:56:02 +01:00
fredtempez
21fa4d242c Merge branch '10400' into 11000 2020-12-31 17:47:38 +01:00
fredtempez
4121504f60 Merge branch '10313' into 10400 2020-12-31 17:47:27 +01:00
fredtempez
1d9e6ddee4 Message blocage 2020-12-31 17:39:36 +01:00
fredtempez
fc0cf37fc3 Merge branch '10400' into 11000 2020-12-31 17:20:11 +01:00
fredtempez
b57d87859c Merge branch '10313' into 10400 2020-12-31 17:19:32 +01:00
fredtempez
c57b176f20 change 2020-12-31 17:19:02 +01:00
fredtempez
5ec18961de Merge branch '10400' into 11000 2020-12-30 17:42:05 +01:00
fredtempez
aaf0e1c459 merge 10313 2020-12-30 17:41:27 +01:00
fredtempez
92b78bc7a9 Merge branch '10313' of https://github.com/fredtempez/ZwiiCMS into 10313 2020-12-30 17:31:33 +01:00
fredtempez
1eeb8fcac7 change 2020-12-30 17:30:57 +01:00
fredtempez
4535c05dd2 change 2020-12-30 17:30:35 +01:00
fredtempez
1cf8ff5ca1 Message de bienvenue 2020-12-30 17:27:45 +01:00
fredtempez
258ebce4a1 RAZ données de blocage 2020-12-28 21:08:33 +01:00
fredtempez
6e7de11d64 Merge branch '10400' into 11000 2020-12-27 16:18:33 +01:00
fredtempez
8e64e6637e Merge branch '10313' into 10400 2020-12-27 16:17:29 +01:00
fredtempez
8efafd9683 Coquille 2020-12-27 16:15:08 +01:00
fredtempez
757ac6672f Merge branch '10400' into 11000 2020-12-27 11:04:49 +01:00
fredtempez
8b2d09ed61 Merge branch '10313' into 10400 2020-12-27 11:04:10 +01:00
fredtempez
47e6121567 Blog 212 notification par email, pas de nom de page 2020-12-27 10:56:23 +01:00
fredtempez
41408bc047 Merge branch '10313' into 11000 2020-12-27 10:14:18 +01:00
fredtempez
44c0eda419 Merge branch '10313' into 10400 2020-12-27 10:12:46 +01:00
fredtempez
945f45609c Nouveau fichier json 2020-12-27 10:10:50 +01:00
fredtempez
0ab9c3e309 Merge branch '10400' into 11000 2020-12-25 20:20:09 +01:00
fredtempez
bb7481aabe Merge branch '10313' into 10400 2020-12-25 20:18:55 +01:00
fredtempez
1fc11e26b7 Version finale de la classe jsondb 2020-12-25 20:15:56 +01:00
fredtempez
23fdca6c52 gestion d'erreur par exception 2020-12-23 17:33:57 +01:00
fredtempez
72e12e17c0 nombre d'essais en cas de fichier verrouillé 2020-12-22 22:29:25 +01:00
fredtempez
311deabfb4 gtag anonymous 2020-12-22 22:15:02 +01:00
fredtempez
94e65e92aa verrouillage des fchiers ouverts 2020-12-22 22:01:10 +01:00
fredtempez
49744a75b0 Merge branch '10400' into 11000 2020-12-19 22:58:29 +01:00
fredtempez
db9cb1f6ab Merge branch 'master' into 10400 2020-12-19 22:57:00 +01:00
fredtempez
51607bfbb7 supprimer un dump 2020-12-18 16:10:48 +01:00
fredtempez
815be8cd3b Merge branch '10400' into 11000 2020-12-18 15:45:40 +01:00
fredtempez
73cc7c0a91 Merge branch '10312' into 10400 2020-12-18 15:45:15 +01:00
fredtempez
c319240444 Bug commentaires du blog 2020-12-18 15:05:36 +01:00
fredtempez
4b53936fa8 Merge branch '10400' into 11000 2020-12-14 12:43:20 +01:00
fredtempez
b74073645a Merge branch 'master' into 10400 2020-12-14 12:42:56 +01:00
fredtempez
185a3993db bug search 2020-12-14 12:34:02 +01:00
fredtempez
9920be0b20 fix css 2020-12-13 17:54:35 +01:00
fredtempez
aa318357fa typo 2020-12-13 17:44:10 +01:00
fredtempez
45c9788228 Merge branch '10400' into 11000 2020-12-13 17:37:46 +01:00
fredtempez
3fe2e76741 Merge branch 'master' into 10400 2020-12-13 17:37:12 +01:00
fredtempez
0aad617a33 RGPD + bug search 2020-12-12 18:40:08 +01:00
fredtempez
cd73ac6996 Message cookie 2020-12-12 18:34:07 +01:00
fredtempez
4c0811ccb6 Merge branch '10400' into 11000 2020-12-10 14:05:50 +01:00
fredtempez
812ad68832 dirdata devient datapath 2020-12-10 14:04:30 +01:00
fredtempez
8bbb19fb35 Numérotation 2020-12-09 16:26:33 +01:00
fredtempez
5bfceca3ec Erreur span + aide 2020-12-08 13:26:26 +01:00
fredtempez
b91db6fbbc faute de frappe 2020-12-06 17:51:26 +01:00
fredtempez
adaea91dbb i18n :
- écran de copie de contenu d'une langue vers uen autre
- masquer et effacer une langue
- nouveau système d'aide sous forme d'une popup générale : une par écran
2020-12-06 17:45:37 +01:00
fredtempez
7b286c7940 petits correctifs 2020-12-06 12:10:07 +01:00
fredtempez
704930aa5d Merge branch 'i18n' of https://github.com/fredtempez/ZwiiCMS into i18n 2020-12-06 11:36:18 +01:00
fredtempez
1da895bda8 Merge branch 'master' into i18n 2020-12-06 11:34:59 +01:00
fredtempez
d4ad266573 Merge branch 'master' into i18n_search 2020-12-06 11:34:15 +01:00
fredtempez
4406458c11 changes 2020-12-06 11:32:17 +01:00
fredtempez
e7b320e5ad Traduction de la recherche ok 2020-12-05 15:51:53 +01:00
fredtempez
7b4bfcc484 Merge branch 'i18n' into i18n_search 2020-12-04 21:00:18 +01:00
fredtempez
cf7a0cf177 Merge branch '10400' into i18n 2020-12-04 20:59:42 +01:00
fredtempez
59354b4556 user original 2020-12-04 20:57:02 +01:00
fredtempez
c0643c03a0 bouton importation 2020-12-04 20:53:10 +01:00
fredtempez
d641d9d673 Erreur de mise en forme 2020-12-04 20:51:46 +01:00
fredtempez
f47fd18a12 version 2020-12-04 17:21:58 +01:00
fredtempez
a78db57ef5 Merge branch '10400' into 10400-import 2020-12-04 17:09:02 +01:00
fredtempez
5bdd1b13cd Merge branch '10400' into i18n_search 2020-12-04 17:08:54 +01:00
fredtempez
30a3caf75e Merge branch '10400' into i18n 2020-12-04 17:07:34 +01:00
fredtempez
043df9922d Merge branch '10310' into 10400 2020-12-04 17:07:09 +01:00
fredtempez
b01ea7aa42 Images de blogs smartphone 2020-12-04 17:06:42 +01:00
fredtempez
2ee8f59c89 Merge branch '10400' into i18n 2020-12-04 13:03:13 +01:00
fredtempez
e3749b8fc7 Merge branch '10310' into 10400 2020-12-04 13:03:00 +01:00
fredtempez
0de6e5a1cb changes + init.js 2020-12-04 13:02:02 +01:00
fredtempez
0cd84b7f2e 012 UI des options de langue 2020-12-04 12:56:20 +01:00
fredtempez
caca2507ca Merge branch '10400' into i18n 2020-12-03 15:04:43 +01:00
fredtempez
b8c3e7a266 prism dans le module de Roger 2020-12-03 15:02:44 +01:00
fredtempez
1a201d127a espace + inversion de logique 2020-12-03 14:28:14 +01:00
fredtempez
1d404290c3 modifs Jean 2 2020-12-03 14:10:57 +01:00
fredtempez
53a2b8c270 modifs jean 1 2020-12-03 14:06:12 +01:00
fredtempez
33d4c02bb2 Merge branch '10400' into i18n 2020-12-02 19:09:29 +01:00
fredtempez
384c620ae7 bug installation 2020-12-02 19:08:07 +01:00
fredtempez
3a6739fa4f class captcha en double 2020-12-01 21:07:07 +01:00
fredtempez
a5fd6a99e0 bug module form v2.5 2020-12-01 21:05:22 +01:00
fredtempez
1a881e2023 page désactivée -> erreur 404 2020-12-01 20:47:05 +01:00
fredtempez
1e76d58f7e Bug page privée et désactivée + bug module de recherche groupes pages enfants 2020-12-01 18:29:58 +01:00
fredtempez
184fb45b70 too many requests 2020-11-30 16:08:46 +01:00
fredtempez
06d379c747 en cours 2020-11-30 15:27:03 +01:00
fredtempez
5802814f15 Bug ACCEPT LANGUAGE 2020-11-30 13:57:47 +01:00
fredtempez
867b0d3d0b UI page de traduction 2020-11-29 08:48:29 +01:00
fredtempez
966e88abd0 bug installation version core 2020-11-28 10:54:47 +01:00
fredtempez
3287c300f5 bug installation vierge et réinstallation 2020-11-28 10:53:33 +01:00
fredtempez
36dddcf30b Bug fix 2020-11-26 16:38:34 +01:00
fredtempez
33e1ac75a6 Sécurisation du formulaire 2020-11-26 16:21:40 +01:00
fredtempez
2abcc365ae Bug autoDetect + Drapeau sélectionné 2020-11-26 12:42:47 +01:00
fredtempez
39f7421569 Données par défaut + update 2020-11-26 12:11:36 +01:00
fredtempez
bafd6addbf Option du français 2020-11-26 12:09:06 +01:00
fredtempez
6c4aa26608 Libellé 2020-11-26 12:00:54 +01:00
fredtempez
c39ae60a42 Position des options 2020-11-26 11:59:51 +01:00
fredtempez
2aa3e80e0a Langue du navigateur autodétectée 2020-11-26 11:56:35 +01:00
fredtempez
7245fb8804 Bloc de drapeaux dans le menu 2020-11-26 11:17:27 +01:00
fredtempez
88f50b825c trad auto ok 2020-11-26 10:56:03 +01:00
fredtempez
de6c83380a Traduction rédigée ok 2020-11-26 09:52:22 +01:00
fredtempez
49e8603ff9 bug effacement langue installée 2020-11-26 08:59:04 +01:00
fredtempez
793860f7d1 Position des drapeaux dans content 2020-11-25 18:58:27 +01:00
fredtempez
1828d9c7a3 traduction manuelle ok 2020-11-25 18:25:16 +01:00
fredtempez
fee358a385 Merge branch '10400' into i18n 2020-11-25 14:32:19 +01:00
fredtempez
9541002a39 Gestion blacklist + liens 2020-11-25 14:31:43 +01:00
fredtempez
de1dc21f4e Activation 2020-11-25 14:06:20 +01:00
fredtempez
b0272b4761 Désactivation temporaire des langues 2020-11-25 14:04:04 +01:00
fredtempez
6b329558dd pb config 2020-11-25 13:58:59 +01:00
fredtempez
1c2e2d2d85 ajout / supp fichiers de langue traduits WIP 2020-11-25 10:01:13 +01:00
fredtempez
6f257433a5 Nom de variable 2020-11-25 08:21:52 +01:00
Fred Tempez
0eafd2edfa fonction update 2020-11-24 19:06:49 +01:00
Fred Tempez
19039a8eb2 Préparation traduction rédigée 2020-11-24 19:00:23 +01:00
Fred Tempez
07b7c5350f Bug translate UI 2020-11-24 15:29:47 +01:00
Fred Tempez
b85fdfcd9e Merge branch '10309' into 10400 2020-11-24 14:33:14 +01:00
Fred Tempez
b38628d726 version 2020-11-24 14:26:11 +01:00
Fred Tempez
642a1afea8 changes 2020-11-24 14:21:11 +01:00
Fred Tempez
9dcc5a28a6 Affichage crédits 2020-11-24 13:59:25 +01:00
Fred Tempez
51361afc12 Options pages admin + choix et position des drapeux 2020-11-24 13:44:31 +01:00
Fred Tempez
949e4468c5 Priorité du choix 2020-11-24 11:22:51 +01:00
Fred Tempez
21d649946f Position des drapeaux 2020-11-24 11:12:33 +01:00
Fred Tempez
89c86300d4 fix merge completed 2020-11-24 10:09:03 +01:00
Fred Tempez
bb59346027 Merge branch '10400' into drapeaux 2020-11-24 09:19:26 +01:00
Fred Tempez
1251f247d3 defaut data correction sylvain + emplacement translate dans config 2020-11-24 09:13:49 +01:00
Fred Tempez
639fa7c85f Bug user 2020-11-24 08:29:53 +01:00
Fred Tempez
86830a4c9b Merge branch '10400' into drapeaux 2020-11-22 19:03:03 +01:00
Fred Tempez
68eb2cc061 Merge branch '10309' into 10400 2020-11-22 19:01:15 +01:00
Fred Tempez
5c50a87ff9 Theme reset normal 2020-11-22 18:59:03 +01:00
Fred Tempez
62a4debf62 Réinitialisation du mdp 2020-11-22 18:56:14 +01:00
Fred Tempez
0a2e3cb28d bords des icones RSS tranparentes 2020-11-22 18:01:41 +01:00
Fred Tempez
dc31fc3ee6 Paramètres du module WIP 2020-11-22 13:32:20 +01:00
Fred Tempez
41ae0e18e1 init WIP 2020-11-21 17:49:24 +01:00
Fred Tempez
7d6a46c9b5 Nouveaux écran de config 2020-11-21 16:51:06 +01:00
Fred Tempez
55bead4f4f bloc maintenance 2020-11-21 15:26:41 +01:00
Fred Tempez
1a5a163d4f fix config titre récupération 2020-11-21 15:18:47 +01:00
Fred Tempez
5577b1b9b0 Merge branch '10400' into Localisation-config 2020-11-21 15:17:30 +01:00
Fred Tempez
2c5986c127 Persistence ouverture des blocs dans la config 2020-11-21 15:16:51 +01:00
Fred Tempez
6f48ed51bd Merge branch '10309' into 10400 2020-11-21 15:15:09 +01:00
Fred Tempez
c89eb7b505 version defaultdata 2020-11-21 15:14:49 +01:00
Fred Tempez
8a7503a7c1 Déplacer dans locale identité et choix des pages 2020-11-21 15:09:10 +01:00
Fred Tempez
6f9f447763 Merge branch 'master' into 10400 2020-11-21 12:56:53 +01:00
Fred Tempez
fb0a9d74fc changes 2020-11-21 12:50:15 +01:00
Fred Tempez
b0491002e8 update 2020-11-21 12:39:02 +01:00
Fred Tempez
226b4e03df bug 10307 effacer updateAvailable 2020-11-21 12:35:26 +01:00
Fred Tempez
96139d31fd bug setData données false non nulle 2020-11-21 10:07:48 +01:00
Fred Tempez
9b53b55682 Merge branch '10.3.08' into 10400 2020-11-21 04:37:20 +01:00
Fred Tempez
6de44652fa Nettoyage theme admin + bug backup 2020-11-21 04:36:14 +01:00
Fred Tempez
a83d577f66 Backup Bug modal css 2020-11-21 04:29:17 +01:00
Fred Tempez
47e8016c51 Versions 2020-11-21 03:58:02 +01:00
Fred Tempez
30c3196460 RSS news add anchor 2020-11-21 03:57:27 +01:00
Fred Tempez
d20bd6d14f RSS Images intégrées 2020-11-20 20:14:19 +01:00
Fred Tempez
c0df60b319 Enclosure 2020-11-20 19:52:44 +01:00
Fred Tempez
44fd79e3b2 version 2020-11-20 19:07:36 +01:00
Fred Tempez
4107cb0df0 correctif format xml 2020-11-20 17:32:38 +01:00
Fred Tempez
f56790516e Support intégré RSS 2020-11-20 17:08:19 +01:00
Fred Tempez
b02326f0cc Amélioration flux RSS 2020-11-20 13:44:32 +01:00
Fred Tempez
b8366f34cb changes 2020-11-19 09:09:47 +01:00
Fred Tempez
e414988bee Durcir update blog et news 2020-11-19 08:53:52 +01:00
Fred Tempez
4215eb06b4 supprimer module traduction 2020-11-19 08:41:19 +01:00
Fred Tempez
b35d48bdc2 Merge branch 'master' into 10400 2020-11-18 22:40:18 +01:00
Fred Tempez
3136da34ca Bug installation 2020-11-18 22:38:43 +01:00
Fred Tempez
b5640310b7 init 10400 2020-11-18 22:26:46 +01:00
Fred Tempez
5e4f5ddf91 Init 2020-11-18 22:22:45 +01:00
Fred Tempez
2ef87c0c1a init 2020-11-18 22:16:52 +01:00
Fred Tempez
9a26cf73d6 Merge 10307 2020-11-18 21:45:36 +01:00
Fred Tempez
a9ee02d1bc Merge branch 'master' into 10400 2020-11-18 21:45:14 +01:00
ZwiiCMS-team
c368746eae
Update install.php 2020-11-18 19:27:12 +01:00
Fred Tempez
2e90cb5952 sitemap 2020-11-18 18:49:15 +01:00
Fred Tempez
4c6762e55f Merge branch 'master' of https://github.com/ZwiiCMS-team/ZwiiCMS 2020-11-18 18:43:07 +01:00
Fred Tempez
496cbb2054 Merge branch '10307' 2020-11-18 18:43:00 +01:00
Fred Tempez
ff4a9c45ea Changes 10306 2020-11-18 18:42:04 +01:00
Fred Tempez
20ed2464d4 fix sitemap 2020-11-18 18:40:18 +01:00
Fred Tempez
671eb4001c Merge branch 'master' of https://github.com/ZwiiCMS-team/ZwiiCMS 2020-11-18 18:31:51 +01:00
Fred Tempez
3b128b7b9b Changes 10306 2020-11-18 18:31:36 +01:00
Fred Tempez
3b2c78e178 Merge branch '10307' 2020-11-18 18:30:13 +01:00
Fred Tempez
c7c3b4e97e changes 2020-11-18 18:18:16 +01:00
Fred Tempez
92d55df344 version 2020-11-18 18:06:43 +01:00
Fred Tempez
2b207f0499 10.3.07 petits correctifs 2020-11-18 17:55:21 +01:00
Fred Tempez
5962ef846e Changes 10306 2020-11-18 12:38:10 +01:00
Fred Tempez
04602aacea Version 2020-11-18 12:16:28 +01:00
Fred Tempez
3ba789dde2 Sécurisation d'écriture 2020-11-17 15:00:10 +01:00
Fred Tempez
f987aecbff modif options d'activation 2020-11-17 10:31:08 +01:00
Fred Tempez
8023df17e6 Numéros de version 2020-11-17 10:16:50 +01:00
Fred Tempez
354d9c5627 commentaires 2020-11-17 09:48:21 +01:00
Fred Tempez
a8e74d471f fix module blog + news complet 2020-11-17 09:47:45 +01:00
Fred Tempez
82e1493ede Nouvelle structure données blog 2020-11-17 08:52:32 +01:00
Fred Tempez
21580cf4fa Protection des données de config 2020-11-16 18:39:32 +01:00
Fred Tempez
9158a48d39 suppression de classe générale 2020-11-16 18:19:39 +01:00
Fred Tempez
24f463b77e URL dans les pages 2020-11-16 14:55:46 +01:00
Fred Tempez
d4d336d730 Versions 2020-11-16 14:34:44 +01:00
Fred Tempez
1c61bf5e88 Installation de la classe FeedWriter 2020-11-16 14:33:59 +01:00
Fred Tempez
f3d1c930d7 Premier commit 2020-11-15 18:39:03 +01:00
Fred Tempez
0af5e5663d Merge branch '10400' of https://github.com/ZwiiCMS-team/ZwiiCMS into 10400 2020-11-14 16:26:32 +01:00
Fred Tempez
7397630165 aide traduction 2020-11-14 16:26:27 +01:00
Fred Tempez
f41811a861 Merge branch '10306' into 10400 2020-11-14 16:20:29 +01:00
Fred Tempez
135df50a66 merge 10400 fix 2020-11-14 16:16:51 +01:00
Fred Tempez
3c4e1f1294 Merge branch '10400' into module_i18n 2020-11-14 16:09:57 +01:00
Fred Tempez
d36a2048a6 Zwiico update 2020-11-14 16:04:30 +01:00
Fred Tempez
ea8fd8e097 Traduction auto 2020-11-14 15:49:01 +01:00
Fred Tempez
784d3b9cb8 Merge branch '10306' into module_i18n 2020-11-14 14:52:28 +01:00
Fred Tempez
34a26ea4ab trad auto hors connexion 2020-11-14 14:52:18 +01:00
Fred Tempez
972b86676e premier commit 2020-11-11 19:48:07 +01:00
Fred Tempez
cafb3cd1ee bug édition de page bouton option du module désactivé 2020-11-09 17:21:35 +01:00
Fred Tempez
dd00425e33 Merge branch 'master' into 10400 2020-11-07 17:50:37 +01:00
Fred Tempez
d486674d73 Réinitialisation des thèmes 2020-11-07 17:48:10 +01:00
Fred Tempez
256c9c62b2 core version 2020-11-05 07:49:16 +01:00
Fred Tempez
64b1ceeccb version 2020-11-05 07:38:02 +01:00
Fred Tempez
27df460d0c 10305 problème avec l'import d'une theme admin 2020-11-05 07:34:12 +01:00
Fred Tempez
159c7f82e2 Captcha simple : addition simple 2020-11-04 20:56:23 +01:00
Fred Tempez
7a31eb4ff1 Merge branch '10400' into data_engine 2020-11-04 20:40:22 +01:00
Fred Tempez
8fce54024e view light top margin 5% 2020-11-04 20:39:39 +01:00
Fred Tempez
747d0455f1 Merge branch '10400' into data_engine 2020-11-04 20:35:35 +01:00
Fred Tempez
8d089a0dc5 captcha form 2020-11-04 20:34:07 +01:00
Fred Tempez
01bffadc87 Merge branch '10400' into data_engine 2020-11-04 14:37:13 +01:00
Fred Tempez
f4048cfb4e Merge branch 'master' into 10400 2020-11-04 14:36:08 +01:00
Fred Tempez
ff951024ea mage light haute 150 px pour installation 2020-11-04 14:35:58 +01:00
Fred Tempez
3f23765791 Merge branch 'master' into 10400 2020-11-04 14:21:01 +01:00
Fred Tempez
2ad472e548 changes + version 2020-11-04 14:20:26 +01:00
Fred Tempez
32b7ca8c00 changes 2020-11-04 14:15:11 +01:00
Fred Tempez
e8326e848e changes 2020-11-04 14:14:23 +01:00
Fred Tempez
13b70d499c Merge branch '10400' into data_engine 2020-11-04 14:07:45 +01:00
Fred Tempez
a7b7512ed5 Merge branch '10304' into 10400 2020-11-04 14:07:33 +01:00
Fred Tempez
6d3cec1b65 changes 2020-11-04 14:06:31 +01:00
Fred Tempez
67843f4f0f Nettoyage css 2020-11-04 13:35:07 +01:00
Fred Tempez
d06aa23eba générateur aléatoire 2020-11-04 13:26:25 +01:00
Fred Tempez
8105d466c9 redirection maintenance 2020-11-04 13:22:07 +01:00
Fred Tempez
47eef28318 inversion icones + et - config 2020-11-04 09:50:20 +01:00
Fred Tempez
3a5702e36b recharger le thème 2020-11-04 09:17:29 +01:00
Fred Tempez
f2e6af6dea Light div site marge haute 2020-11-04 09:15:08 +01:00
Fred Tempez
20c2858c36 Merge branch '10304' into 10400 2020-11-03 17:33:28 +01:00
Fred Tempez
f667587274 Icones dans la gestion du theme 2020-11-03 17:27:32 +01:00
Fred Tempez
8eed8d73fb Merge branch '10400' into data_engine 2020-11-03 17:11:10 +01:00
Fred Tempez
5e43d6fd21 Merge branch '10304' into 10400 2020-11-03 17:10:29 +01:00
Fred Tempez
493b8ff6b2 Contraste theme black 2020-11-03 17:09:53 +01:00
Fred Tempez
e7424dc9dd check la validité d'une thème importé 2020-11-03 15:34:57 +01:00
Fred Tempez
96b0a1a9b9 erreur de commentaire 2020-11-03 15:34:42 +01:00
Fred Tempez
52be6d2997 Bug theme menu 2020-11-03 12:02:59 +01:00
Fred Tempez
0a755dc1fa Merge branch '10400' into data_engine 2020-11-03 08:31:26 +01:00
Fred Tempez
66c2546b7a Merge branch '10304' into 10400 2020-11-03 08:31:07 +01:00
Fred Tempez
459f55081c warning primo installation 2020-11-03 07:48:56 +01:00
Fred Tempez
6634e99569 Merge branch '10400' into data_engine 2020-11-02 13:45:12 +01:00
Fred Tempez
31987f4066 Merge branch '10304' into 10400 2020-11-02 13:44:47 +01:00
Fred Tempez
ca411cf9a1 bug classe active dans menu latéral 2020-11-02 12:11:59 +01:00
Fred Tempez
72d3bb772f Couleur du sous-menu 2020-11-01 20:19:02 +01:00
Fred Tempez
9a2274a716 heure blog 2020-11-01 19:06:33 +01:00
Fred Tempez
ba7a0633b0 colorvariants option rgb supprime la transparence 2020-11-01 19:00:24 +01:00
Fred Tempez
62da5cc5b5 double arrière-plan dans le menu 2020-11-01 14:15:13 +01:00
Fred Tempez
f863b69a4d Localisation avec test de l'encodage 2020-11-01 13:38:25 +01:00
Fred
7783eb69ab
taille de la loupe 2020-11-01 09:12:28 +01:00
Fred Tempez
6180b903c9 Alignement du menu centré 2020-11-01 08:51:23 +01:00
Fred Tempez
3508f3a6cf Merge branch '10400' into data_engine 2020-11-01 08:29:04 +01:00
Fred Tempez
507912926d Merge branch '10304' into 10400 2020-11-01 08:28:03 +01:00
Fred Tempez
ca8b3e8d7b Localation pour Free 2020-11-01 08:27:32 +01:00
Fred Tempez
a7058e4c49 localisation pour Free + position du démarrage de session 2020-11-01 08:16:30 +01:00
Fred Tempez
746163e0d1 Merge branch '10400' into data_engine 2020-11-01 07:59:02 +01:00
Fred Tempez
ae98d2f1ae Merge branch '10304' into 10400 localisation alignement menu 2020-11-01 07:57:20 +01:00
Fred Tempez
53c82522aa Localisation FR 2020-11-01 07:56:04 +01:00
Fred Tempez
813dc501a3 changes 2020-10-31 18:35:49 +01:00
Fred Tempez
b8e0d53288 alignement du menu 2020-10-31 18:34:55 +01:00
Fred Tempez
b192070782 Merge branch '10400' into data_engine 2020-10-31 17:57:02 +01:00
Fred Tempez
23fa96a2b6 table des très petits écrans 2020-10-31 17:56:18 +01:00
Fred Tempez
6fae1187e3 installation et ajout d'un user 2020-10-31 17:55:54 +01:00
Fred Tempez
2f27ca0235 Merge branch '10400' into data_engine 2020-10-31 17:40:57 +01:00
Fred Tempez
bbc727d400 captcha évolué suite et fin 2020-10-31 17:37:39 +01:00
fredtempez
4f6f4139bb Merge branch '10400' into data_engine 2020-10-29 22:07:34 +01:00
fredtempez
cd39cfe53c supprimer commentaires inutiles 2020-10-29 22:06:37 +01:00
fredtempez
17890bc81d table responsive 2020-10-29 22:06:13 +01:00
fredtempez
b5532c8662 encodage fr 2020-10-29 22:05:55 +01:00
fredtempez
71e12a5ada Merge branch '10400' into data_engine 2020-10-29 19:14:35 +01:00
fredtempez
567a70d909 espaces 2020-10-29 19:14:19 +01:00
Fred
3fefff219d
Update init.js 2020-10-29 15:44:03 +01:00
Fred
1915f554b7
Update template.class.php 2020-10-29 13:50:10 +01:00
fredtempez
aff90ba298 Merge branch '10400' into data_engine 2020-10-28 19:36:59 +01:00
fredtempez
5de144f947 Optimisation captcha 2020-10-28 19:36:23 +01:00
fredtempez
8833dca44f Merge branch '10304' into 10400 2020-10-28 19:28:44 +01:00
fredtempez
81a6496ee6 changes 2020-10-28 19:28:21 +01:00
fredtempez
7b40871927 Merge branch '10400' into data_engine 2020-10-28 19:26:16 +01:00
fredtempez
cf6b37f49d Merge branch '10304' into 10400 2020-10-28 19:25:10 +01:00
fredtempez
d0e1f5abe1 tinymce 4.9.11 2020-10-28 19:24:00 +01:00
fredtempez
1a97c3b477 Merge branch '10400' into data_engine 2020-10-28 19:06:08 +01:00
fredtempez
f615a37473 Merge branch '10400' of https://github.com/fredtempez/ZwiiCMS into 10400 2020-10-28 19:04:50 +01:00
fredtempez
e7c19df92e Merge branch '10304' into 10400 2020-10-28 19:04:43 +01:00
fredtempez
b8772c0ac6 changes 2020-10-28 19:02:19 +01:00
Fred
e5d838b345
Update template.class.php 2020-10-28 08:21:58 +01:00
fredtempez
41c44b4557 thème admin css 2020-10-28 07:53:51 +01:00
fredtempez
fc1ac0c5e7 Merge branch '10400' into data_engine 2020-10-28 06:30:22 +01:00
fredtempez
27e4b9db3b Validation d'un commentaire 2020-10-28 06:29:49 +01:00
fredtempez
d1d0a485d7 Merge branch '10400' into data_engine 2020-10-27 21:38:28 +01:00
fredtempez
dc3d7dbe7c message de confrmation et de rejet 2020-10-27 21:37:56 +01:00
fredtempez
c88fbe4092 blacklist non créé + une seule variable des description des données 2020-10-27 21:21:30 +01:00
fredtempez
cff5837d41 Merge branch '10400' into data_engine 2020-10-27 20:56:19 +01:00
fredtempez
c46907396c changes 2020-10-26 21:05:48 +01:00
fredtempez
3355e0311e Captcha arithmétique 2020-10-26 20:59:54 +01:00
fredtempez
dd65cdb3c2 Présentation améliorée du mail 2020-10-25 22:55:21 +01:00
fredtempez
ec59a0c77c 2 bugs de thème : import admin et nettoyage tmp 2020-10-25 22:49:28 +01:00
Fred Tempez
772bda27e6 Merge branch '10304' into 10400 2020-10-25 09:48:11 +01:00
Fred Tempez
34aac7834a merge 10304 2020-10-25 09:47:33 +01:00
Fred Tempez
8a66c3d1ae Merge branch '10304' of https://github.com/fredtempez/ZwiiCMS into 10304 2020-10-24 17:02:12 +02:00
Fred Tempez
bcbcb79a12 bug affichage menu petits écrans + barre admin 2020-10-24 17:01:40 +02:00
Fred Tempez
a892fd9855 bug affichage menu petit écrans + barre admin 2020-10-24 16:59:19 +02:00
Fred Tempez
f6cf9c107a Merge branch 'master' into data_engine 2020-10-22 19:21:21 +02:00
Fred Tempez
2fd69d0950 Merge branch 'master' into 10400 2020-10-22 19:20:42 +02:00
Fred Tempez
645cb7fef5 minor fix 2020-10-22 19:16:53 +02:00
Prof Langues
05f64946a6 Merge branch 'master' into 10400 2020-10-22 08:50:27 +02:00
Prof Langues
227b3943a3 Petites corrections 2020-10-22 08:47:02 +02:00
Fred Tempez
f5a31309b9 Merge branch 'master' into data_engine 2020-10-21 17:08:35 +02:00
Fred Tempez
2d41fad30d Merge branch 'master' into 10400 2020-10-21 17:07:19 +02:00
Fred Tempez
c0494b6ae6 Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2020-10-21 17:06:41 +02:00
Fred Tempez
dbf12fc999 changes 2020-10-21 17:06:23 +02:00
Fred Tempez
868271617a Commentaires 2020-10-21 17:04:07 +02:00
Fred Tempez
1d4e9a1862 Merge branch '10400' into data_engine 2020-10-20 19:19:38 +02:00
Fred Tempez
d2f643634e Bouton vert 2020-10-20 19:19:21 +02:00
Fred Tempez
8c8d42344d Merge branch 'master' into data_engine 2020-10-20 18:45:53 +02:00
Fred Tempez
9596ca9932 Merge branch 'master' into 10400 2020-10-20 18:45:31 +02:00
Fred Tempez
7b5f1aab4e changes 2020-10-20 18:45:15 +02:00
Fred Tempez
a741f0ddcd Merge branch 'master' into data_engine 2020-10-20 18:33:54 +02:00
Fred Tempez
cde72fe1ce Merge branch 'master' into 10400 2020-10-20 18:33:12 +02:00
Fred Tempez
c83e8e3149 Commentaires 2020-10-20 18:32:25 +02:00
Prof Langues
e07285259b Merge branch '10400' into data_engine 2020-10-20 09:58:35 +02:00
Prof Langues
1cfdd115bb Jeu d'icônes 2020-10-20 09:58:14 +02:00
Prof Langues
00ad2cc3a4 Merge branch '10303' into data_engine 2020-10-20 09:29:50 +02:00
Prof Langues
fcd20f61e5 Merge branch '10303' into 10400 2020-10-20 09:28:01 +02:00
Prof Langues
a37c02f8ac compatibilité 750px 2020-10-20 09:25:56 +02:00
Fred
6df7256a98
Update index.php 2020-10-19 20:48:18 +02:00
Fred
fd02c81190
Update index.php 2020-10-19 20:46:12 +02:00
Fred Tempez
2c7f2b6c96 Revert "Revert "Jeu d'icônes""
This reverts commit 024f7451e6.
2020-10-19 19:11:39 +02:00
Fred Tempez
024f7451e6 Revert "Jeu d'icônes"
This reverts commit f17161f9e9.
2020-10-19 19:11:04 +02:00
Fred Tempez
f17161f9e9 Jeu d'icônes 2020-10-19 19:08:26 +02:00
Fred Tempez
f5bda47965 fix captcha simple 2020-10-19 18:49:33 +02:00
Fred Tempez
22dfce63b9 Merge branch '10400' into data_engine 2020-10-19 18:21:36 +02:00
Fred Tempez
8abe700c42 Merge branch '10303' into 10400 2020-10-19 18:20:55 +02:00
Fred Tempez
5427853357 Revert "captcha simple par défaut - changement de structure de stockage"
This reverts commit 87d8f2a22a.
2020-10-19 18:20:23 +02:00
Fred Tempez
85c8e923d2 Merge branch '10303' of https://github.com/fredtempez/ZwiiCMS into 10303 2020-10-19 18:19:55 +02:00
Fred Tempez
c5a4e16726 captcha faible 2020-10-19 18:19:50 +02:00
Prof Langues
87d8f2a22a captcha simple par défaut - changement de structure de stockage 2020-10-19 17:07:37 +02:00
Prof Langues
01cd75cfd0 Revert "Erreur d'icônes sous Win ?"
This reverts commit 0952e597e4.
2020-10-19 15:38:20 +02:00
Prof Langues
0952e597e4 Erreur d'icônes sous Win ? 2020-10-19 15:20:10 +02:00
Fred Tempez
f382a5a16b Vérification de la valeur groupe 2020-10-19 09:53:28 +02:00
Fred Tempez
96425a116f version 2020-10-19 09:24:43 +02:00
Fred Tempez
fdd52d206c Aide connexion menu 2020-10-19 09:24:28 +02:00
Fred Tempez
23757e3fbc Champ d'import manquant 2020-10-19 09:22:56 +02:00
Fred Tempez
7e310da9c2 Merge branch '10400' into data_engine 2020-10-18 17:30:27 +02:00
Fred Tempez
f80db3cacf icone mail au lieu de comment 2020-10-18 17:27:20 +02:00
Fred Tempez
c535d7560a Merge branch '10400' into data_engine 2020-10-18 17:20:28 +02:00
Fred Tempez
cd41906adf Notification mail : icone dans la liste 2020-10-18 17:19:20 +02:00
Fred Tempez
97110dd032 Merge branch '10400' into data_engine 2020-10-18 13:24:21 +02:00
Fred Tempez
dac78b6c02 pas d'options selected 2020-10-18 13:23:47 +02:00
Fred Tempez
4b296ff48f Modif sélect 2020-10-18 09:03:50 +02:00
Fred Tempez
b6023ede0f engine ok 2020-10-18 08:51:02 +02:00
Fred Tempez
617351290d init 2020-10-17 17:18:41 +02:00
Fred Tempez
0562fbe33c correctif sylvain 2020-10-17 16:45:30 +02:00
Fred Tempez
fa0323141b Modifs Sylvain 2020-10-16 16:59:13 +02:00
Fred Tempez
4be16c87e8 Modif Sylvain 2020-10-15 21:13:48 +02:00
Prof Langues
ccc5041dad erreur de variables 2020-10-15 16:12:20 +02:00
Prof Langues
0517dc4df4 changes 2020-10-15 10:18:26 +02:00
Fred Tempez
5c6a90c0ac Version module blog 2020-10-14 19:17:37 +02:00
Fred Tempez
d4321076fc EDITOR devient MODERATOR 2020-10-14 19:17:13 +02:00
Fred Tempez
b2ed7b4866 version 2020-10-14 11:33:56 +02:00
Fred Tempez
f9eb28f6f3 Permissions du blog 2020-10-14 11:07:38 +02:00
Fred Tempez
174e087fc3 filtrage config du blog 2020-10-14 10:36:27 +02:00
Fred Tempez
e6f75275f2 Limite au groupe éditeur 2020-10-14 10:29:44 +02:00
Fred Tempez
1749b1265f Merge branch '10303' into 10400 barre de membre 2020-10-14 09:50:50 +02:00
Fred Tempez
ac773706a2 Merge branch '10303' of https://github.com/fredtempez/ZwiiCMS into 10303 2020-10-14 09:42:20 +02:00
Fred Tempez
7644da6401 barre de membre alignée à droite. 2020-10-14 09:42:14 +02:00
Fred Tempez
a4a2973dc4 coquilles 2020-10-13 19:07:10 +02:00
Prof Langues
4786942409 Revert "menuRight"
This reverts commit aa7a0926c4.
2020-10-13 15:13:55 +02:00
Prof Langues
3ebd99c284 Revert "modif css menuRight"
This reverts commit 8821da73a0.
2020-10-13 15:13:19 +02:00
Prof Langues
8821da73a0 modif css menuRight 2020-10-13 15:07:41 +02:00
Prof Langues
aa7a0926c4 menuRight 2020-10-13 11:04:30 +02:00
Fred Tempez
63f1c6844f permission accordée à l'autorité 2020-10-12 19:27:53 +02:00
Fred Tempez
6477265a8a Permissions en test 2020-10-12 19:12:38 +02:00
Prof Langues
d0827ca3e7 format date 2020-10-12 17:32:27 +02:00
Prof Langues
31961f112d syntaxe getUser 2020-10-12 16:59:44 +02:00
Prof Langues
1e2f6b9a6b syntaxte getUser 2020-10-12 16:47:35 +02:00
Prof Langues
50d12a210a position option captcha - icône login 2020-10-12 16:19:32 +02:00
Fred Tempez
2384367a68 Merge branch '10303' into 10400 2020-10-12 09:58:17 +02:00
Fred Tempez
0dc4df3b98 TLD com en fr 2020-10-12 09:49:17 +02:00
Fred Tempez
26841c795c captcha 10 ou 20 2020-10-11 19:29:33 +02:00
Fred Tempez
f8fa03e7de Données par défaut et update 2020-10-11 19:10:42 +02:00
Fred Tempez
5c35bd3c1d Permissions + correction nbre commentaires + noms des variables 2020-10-11 18:36:20 +02:00
Fred Tempez
1051fa0731 Merge branch '10303' into 10400 2020-10-11 05:07:53 +02:00
Fred Tempez
f0fe2c0177 Revert "instructions en double"
This reverts commit c83e0e6b4f.
2020-10-11 05:06:08 +02:00
Fred Tempez
589fe9f8cb changes 2020-10-11 04:31:30 +02:00
Fred Tempez
4104fdf736 revert to core origin 2020-10-11 04:29:57 +02:00
Fred Tempez
f2fc03ce91 modif routeur test en cours 2020-10-11 04:15:38 +02:00
Fred Tempez
2f3db2d426 inversions 2020-10-11 03:49:39 +02:00
Fred Tempez
c83e0e6b4f instructions en double 2020-10-11 03:48:03 +02:00
Fred Tempez
920f012007 bug routeur 2020-10-11 03:34:13 +02:00
Fred Tempez
107c41f409 10303 routage 2020-10-10 20:22:14 +02:00
Fred Tempez
93e2dd40e3 Merge branch 'master' into 10400 2020-10-10 20:15:29 +02:00
Fred Tempez
339241383f changes 2020-10-10 19:36:09 +02:00
Fred Tempez
a056755826 merge 10302 2020-10-09 08:45:03 +02:00
Fred Tempez
2e929d142b espaces en trop + supprimer = 2020-10-09 08:44:05 +02:00
Fred Tempez
62c0e29b44 modif Sylvain + gitignore png dans tmp 2020-10-09 08:37:34 +02:00
Fred Tempez
b9bc252979 Erreur de notification 2020-10-08 21:16:28 +02:00
Fred Tempez
00a3243d87 gitignore 2020-10-08 20:47:57 +02:00
Prof Langues
96d2fc2e0d Merge branch 'import_user' into blog_v3 2020-10-08 15:37:50 +02:00
Prof Langues
d0c14aaa49 merge 10302 2020-10-08 15:21:10 +02:00
Prof Langues
b4e7a0f5f4 erreur login captcha erroné 2020-10-08 15:16:01 +02:00
Prof Langues
332127401f Notifications 2020-10-08 12:55:19 +02:00
Prof Langues
50fd8a3c9d Notifications en cours 2020-10-08 12:49:09 +02:00
Prof Langues
5dfbe9a60d modif alogo de check + notification à revoir 2020-10-08 10:33:53 +02:00
Fred Tempez
a2b2896d80 envoi email en test 2020-10-07 19:39:31 +02:00
Fred Tempez
680af4c652 3.04.dev 2020-10-07 19:06:40 +02:00
Fred Tempez
643a60ddd5 données lors de l'ajout du user 2020-10-07 19:03:35 +02:00
Fred Tempez
2c3124b462 Merge branch 'import_user' of https://github.com/fredtempez/ZwiiCMS into import_user 2020-10-07 19:02:02 +02:00
Fred Tempez
5a151c577c bug changement de mot de passe 2020-10-07 19:01:57 +02:00
Fred Tempez
fe2425bf5d bug changement de mot de passe 2020-10-07 18:53:40 +02:00
Fred Tempez
fe7a6f3ca0 Merge branch '10302' into import_user 2020-10-06 18:36:09 +02:00
Fred Tempez
ef6928547b Bug connexion dans captcha 2020-10-06 18:28:21 +02:00
Prof Langues
2f97898e6e déclaration notification et success 2020-10-06 15:56:49 +02:00
Prof Langues
61fb84d594 libellé 2020-10-06 15:55:17 +02:00
Prof Langues
29a41a8d99 amélioration messages 2020-10-06 15:25:12 +02:00
Prof Langues
97c820c7d6 aide 2020-10-06 10:24:56 +02:00
Prof Langues
afeb66fd7d désactiver mime extension 2020-10-06 09:57:32 +02:00
Prof Langues
5291f058a7 Import focntionnel avec vérification 2020-10-06 08:29:14 +02:00
Prof Langues
72b82aa071 3.03 2020-10-05 17:09:49 +02:00
Prof Langues
03568f6641 verif et tableau de confirmation 2020-10-05 16:56:30 +02:00
Fred Tempez
2171f1b6d6 indentation 2020-10-05 09:50:57 +02:00
Fred Tempez
db6e2c3a97 tag article 2020-10-05 09:49:06 +02:00
Fred Tempez
7772b25d6a t manquant 2020-10-05 09:45:30 +02:00
Fred Tempez
7aad2deb53 module ok reste les tests et les notifications 2020-10-04 18:34:34 +02:00
Fred Tempez
3d140e1a36 Init 2020-10-04 17:14:15 +02:00
Fred Tempez
a5327a959c bouton gris 2020-10-04 17:12:33 +02:00
Fred Tempez
25f22f4ff2 Merge branch '10302' into blog_v3 2020-10-04 16:52:33 +02:00
Fred Tempez
c0564f705c captcha présentation sur une seule ligne 2020-10-04 16:49:28 +02:00
Fred Tempez
0b66f0ab2e blog 3.02.dev 2020-10-04 12:21:46 +02:00
Fred Tempez
e181178a54 Merge branch '10302' into blog_v3 2020-10-04 12:17:59 +02:00
Fred Tempez
33aed39f83 Diverses corrections 2020-10-04 12:16:37 +02:00
Fred Tempez
1901e06957 Changes 2020-10-04 11:58:24 +02:00
Fred Tempez
323042f563 Merge 3.01 SL 2020-10-03 14:48:00 +02:00
Fred Tempez
1308ab8a5f Erreur de variable 2020-10-03 14:15:03 +02:00
Fred Tempez
b676ed401e merge 10302 2020-10-03 14:14:02 +02:00
Fred Tempez
f8430c9745 Merge branch '10302' into blog_v3 2020-10-03 14:13:27 +02:00
Fred Tempez
52f69a2b37 Merge branch 'master' into blog_v3 2020-10-03 05:14:03 +02:00
Fred Tempez
eec9b80e81 htaccess compatibilité Free 2020-10-02 19:12:47 +02:00
Fred Tempez
b1c4ce34a4 Chemin d'accès aux images de captcha 2020-10-02 17:36:28 +02:00
Fred Tempez
b45bb37c4f Permission de l'accès aux images temporaires et chemin complet 2020-10-02 17:26:10 +02:00
Fred Tempez
af3d4dfa41 Dates UTF8 2020-10-02 17:07:14 +02:00
Fred Tempez
c88da6198b github icone 2020-10-02 16:56:44 +02:00
Fred Tempez
06d71f44f6 NUméro de version systeme 2020-10-02 16:49:21 +02:00
Fred Tempez
5fb003bae6 Masquer les images et leur dossier 2020-10-01 20:20:16 +02:00
Prof Langues
9d444be061 contraste amélioré 2020-10-01 15:50:33 +02:00
Prof Langues
175dd51a18 transfert du résultat dans un champ cahcé et hashé 2020-10-01 15:50:19 +02:00
Fred Tempez
0216e0c1e1 CSS + présentation du login 2020-09-30 17:37:26 +02:00
Fred Tempez
2278f837cb tailel des images CSS + centrage + largeur de saisie ++ 2020-09-30 17:21:19 +02:00
Fred Tempez
bf13ccb675 Taille deux images 2020-09-30 17:18:16 +02:00
Fred Tempez
9eed5ad28f installation captcha + version 2020-09-30 09:16:40 +02:00
Fred Tempez
4aaa6cbc58 Jeux d'images captcha 2020-09-30 08:57:56 +02:00
Fred Tempez
26f88cbb26 init 2020-09-29 19:03:35 +02:00
Fred Tempez
a66a2c516d update 2020-09-29 18:31:12 +02:00
Prof Langues
303455aec5 Merge branch 'beta' of https://github.com/fredtempez/ZwiiCMS into beta 2020-09-29 09:19:40 +02:00
Prof Langues
975c702d2c version 2020-09-29 09:19:35 +02:00
Prof Langues
5d2bde567f erreur de nom de fonction 2020-09-29 09:18:37 +02:00
fredtempez
cde9187b0d update change 2020-09-28 20:03:07 +02:00
Prof Langues
da4e8fc46c GROUP_MODERATOR devient GROUP_EDITOR 2020-09-28 16:45:22 +02:00
Prof Langues
e222a7ded2 Editer l'auteur d'un article : limiter la liste aux éditeurs et admins 2020-09-28 16:44:01 +02:00
Prof Langues
cda2d93812 approbation de commentaire notification inversée 2020-09-28 16:21:04 +02:00
Prof Langues
02951c7c66 fic test fonction update 2020-09-28 16:20:43 +02:00
Fred
f08650f148
Update index.php 2020-09-28 15:48:03 +02:00
Fred
1b117eb8c0
Update README.md 2020-09-27 21:28:49 +02:00
Fred Tempez
62f58b16a0 Merge branch 'master' into beta 2020-09-27 19:38:26 +02:00
Fred Tempez
c39e1640e2 libellé de bulle 2020-09-27 19:36:53 +02:00
Fred Tempez
bd43bf0e85 Merge branch 'master' into beta 2020-09-27 19:31:21 +02:00
Fred Tempez
435c1fa05f libellé de bulle 2020-09-27 19:28:32 +02:00
Fred Tempez
6f228d168d Merge branch 'blog_v3' into beta 2020-09-27 18:05:20 +02:00
Fred Tempez
4c93a1aa6d changes 2020-09-27 18:04:13 +02:00
Fred Tempez
ae46017b20 changes 2020-09-27 18:03:08 +02:00
Fred Tempez
dc426c25e3 permissions 2020-09-27 17:55:45 +02:00
Fred Tempez
6f82ddc1a2 Merge branch 'master' into blog_v3 2020-09-27 17:52:03 +02:00
Fred Tempez
2c1be3c3e2 réarranger theme 2020-09-27 12:41:13 +02:00
Fred Tempez
96f1a83850 Bloc configuration modifé 2020-09-27 12:32:34 +02:00
Fred Tempez
332bb6f1f9 séparateurs visuels 2020-09-27 09:21:00 +02:00
Fred Tempez
eace81330f numérotation de version galerie et ordre config 2020-09-27 09:18:44 +02:00
Fred Tempez
89ab970806 vérification de l'archive de thème importée 2020-09-26 18:27:46 +02:00
Fred Tempez
65a064ef92 menu position fixe mauvaise position après déco auto 2020-09-26 17:33:05 +02:00
Fred Tempez
a18df7cdf4 delete class reload 2020-09-26 17:23:03 +02:00
Fred Tempez
f0aff19b80 position fixe de la barre de membre simple 2020-09-26 17:13:59 +02:00
Fred Tempez
41ceb694d8 position fixe pour la barre de membre simple 2020-09-26 16:59:30 +02:00
Fred Tempez
c3ab04ee79 fix connect link 2020-09-26 10:02:03 +02:00
Fred Tempez
3c7c7c628f init 10.3.01 2020-09-25 20:02:01 +02:00
Fred Tempez
13627f5e59 Fix pb position gallery 2020-09-25 19:34:51 +02:00
Fred Tempez
4b9f0b1ef7 changes 2020-09-25 16:42:17 +02:00
Fred Tempez
be7ea6c4fb Modif valeur par defaut pageid recherche et mentions vides 2020-09-25 16:38:40 +02:00
Fred Tempez
de7caa49c1 pb de menu fixe après auto logout 2020-09-25 16:19:07 +02:00
Fred Tempez
2e644e7cd4 numéro de version des modules 2020-09-25 16:04:44 +02:00
Fred Tempez
80e5088b68 config filtrage des page et libellés 2020-09-25 11:50:14 +02:00
Fred Tempez
7229473a22 bug menu fixe 2020-09-25 11:49:11 +02:00
Fred Tempez
dc65a8e618 Merge branch 'beta' of https://github.com/fredtempez/ZwiiCMS into beta 2020-09-25 08:02:52 +02:00
Fred
2404142d9c
Update CHANGES.md 2020-09-24 22:30:38 +02:00
Fred Tempez
d5beaec9d7 merge 2020-09-24 18:01:51 +02:00
Fred Tempez
78259f3da6 Merge branch 'master' into blog_v3 2020-09-24 18:01:34 +02:00
Fred Tempez
0a877b0d24 update 2020-09-24 17:47:35 +02:00
Fred Tempez
b9f49174da update 2020-09-24 17:29:59 +02:00
Fred Tempez
beb85b9e9a Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2020-09-24 17:28:52 +02:00
Prof Langues
b6a448ca9b validation masque de saisie user 2020-09-24 11:34:26 +02:00
Prof Langues
7011373627 Revert "bug f5 après masque de saisie incomplet"
Fix bug rafraichissement écran après notice
2020-09-24 10:23:57 +02:00
Fred
b308b50476
Add files via upload 2020-09-23 06:56:10 +02:00
Fred
582ebe2650
Delete mini_nebula.jpg 2020-09-23 06:55:45 +02:00
Fred
c2a3cd09b5
Delete mini_earth.jpg 2020-09-23 06:55:38 +02:00
Fred
27e282245c
Delete mini_cosmos.jpg 2020-09-23 06:55:32 +02:00
Fred
42fd1dd842
Add files via upload 2020-09-23 06:54:55 +02:00
Fred
d1bde29a81
Delete mini_earth.jpg 2020-09-23 06:53:18 +02:00
Fred
6d8288ac9f
Delete mini_nebula.jpg 2020-09-23 06:53:10 +02:00
Fred
2aa777fac2
Delete mini_cosmos.jpg 2020-09-23 06:53:04 +02:00
Fred Tempez
027e75dd7e bug edit galeri nom vide 2020-09-22 19:20:35 +02:00
Fred
b8d464fea4
Add files via upload 2020-09-22 19:01:17 +02:00
Fred
44d7b54e5d
Add files via upload 2020-09-22 19:00:41 +02:00
Fred Tempez
bf17ed81c0 bug new galerie 2020-09-22 18:58:21 +02:00
Fred Tempez
b9b514263a Merge branch 'beta' of https://github.com/fredtempez/ZwiiCMS into beta 2020-09-22 18:54:18 +02:00
Fred Tempez
7e8dbc3f0e bug f5 après masque de saisie incomplet 2020-09-22 18:54:14 +02:00
Fred
75c796c5c2
Update common.css 2020-09-22 08:05:01 +02:00
Fred
aabe72594b
Correction de syntaxe 2020-09-22 08:04:32 +02:00
Fred
59eab29353
Correction de syntaxe 2020-09-22 08:03:55 +02:00
Fred Tempez
8398aae329 taille et effet 2020-09-20 18:57:34 +02:00
Fred Tempez
12c935656b effet hover 2020-09-20 18:29:44 +02:00
Fred Tempez
b746700d0c Duplication du module de page 2020-09-20 17:53:50 +02:00
Fred Tempez
fef55731be texte aide survol 2020-09-20 17:39:42 +02:00
Fred Tempez
c058d25d39 Changes 2020-09-20 16:07:26 +02:00
Fred Tempez
7edb7b4f0a Page duplication 2020-09-20 16:06:58 +02:00
Fred Tempez
2ddf76ef24 Icones + et - rondes et orange 2020-09-19 18:14:06 +02:00
Fred Tempez
3ac6bb75ea Update favicon switcher 2020-09-19 17:35:02 +02:00
Fred Tempez
d402ad9516 ne garder que page et module 2020-09-19 16:56:58 +02:00
Fred Tempez
e05f0d1bef RW mise en page des modules + améliorations 2020-09-19 16:49:58 +02:00
Fred Tempez
8d00613ce9 virgule 2020-09-19 15:00:33 +02:00
Fred Tempez
96b06cc19b Theme header bug présentation 2020-09-18 20:51:40 +02:00
Fred Tempez
9c6c0d664b header débordement inputfile 2020-09-18 16:00:25 +02:00
Fred Tempez
030b42ab09 jsonDb comment param inutiles 2020-09-18 04:31:58 +02:00
Fred Tempez
c0aaa15ad5 jsonDb supprimer init modèle données 2020-09-18 04:10:13 +02:00
Fred Tempez
0c08e387b7 jsonDb supprimer le template 2020-09-18 03:57:02 +02:00
Fred Tempez
318a2d7e1c Classe jsonDB gestion d'erreur + traduction commentaires russes 2020-09-18 03:55:22 +02:00
Fred Tempez
80c80aca3c Lien rechercher supp dans footer defaut site 2020-09-17 20:36:56 +02:00
Fred Tempez
f6d0635f1e Droits htaccess 2020-09-17 18:01:36 +02:00
Fred Tempez
901c21f894 install : bulle aide supprimée 2020-09-17 07:08:22 +02:00
Fred Tempez
1395ed4a0a Installation : option de site par défaut 2020-09-16 15:09:26 +02:00
Fred Tempez
9d9c6780df Traitement des modification et des suppression des pages spéciales 2020-09-16 15:04:14 +02:00
Fred Tempez
dfe31a2400 Traitement des modification et des suppression des pages spéciales 2020-09-16 14:59:21 +02:00
Fred Tempez
8885ddb362 Exemple de site bulle 2020-09-15 20:41:08 +02:00
Fred Tempez
b177a9eca1 Recherche titre des ressources 2020-09-15 20:35:32 +02:00
Fred Tempez
b3a467e274 Merge branch 'maintenance' of https://github.com/fredtempez/ZwiiCMS into maintenance 2020-09-14 21:21:33 +02:00
Fred Tempez
659bc7f922 bulle aide + filtre orphelines 2020-09-14 21:20:37 +02:00
Fred Tempez
084b5c73c5 pb du lien de login dans la page 2020-09-14 21:20:37 +02:00
Fred Tempez
4bca8f92f4 Bouton dans la page 2020-09-14 21:20:37 +02:00
Fred Tempez
f8e11f4016 bouton dans code de page 2020-09-14 21:20:37 +02:00
Fred Tempez
f26ca90a91 fic url bouton + libellé et options de page par défaut 2020-09-14 21:20:37 +02:00
Fred Tempez
ad275ec629 initialisation 2020-09-14 21:20:37 +02:00
Fred Tempez
d6eaa7cd50 bulle aide + filtre orphelines 2020-09-14 21:15:55 +02:00
Fred Tempez
2f40fd565a pb du lien de login dans la page 2020-09-13 18:11:03 +02:00
Fred Tempez
a42798f47c Bouton dans la page 2020-09-12 20:00:09 +02:00
Fred Tempez
d7b9817ae0 bouton dans code de page 2020-09-12 19:49:32 +02:00
Fred Tempez
9b6ece352b fic url bouton + libellé et options de page par défaut 2020-09-12 19:37:42 +02:00
Fred Tempez
44d5866d3d initialisation 2020-09-12 09:52:30 +02:00
Fred Tempez
a1c2a86d5a 10.3.00 bug test variable 2020-09-12 09:05:57 +02:00
Fred Tempez
9c5642b9b0 Installation + création user 2020-09-09 17:21:02 +02:00
Fred Tempez
f84613561e Valider nouveau user 2020-09-09 17:01:31 +02:00
Fred Tempez
61984d5c78 Revert "10.3.00 module installation corrections"
This reverts commit 711e5fef44.
2020-09-09 16:47:53 +02:00
Fred Tempez
711e5fef44 10.3.00 module installation corrections 2020-09-09 14:23:05 +02:00
Fred Tempez
19af48b777 Existence des pages 404 et 403 2020-09-08 22:26:33 +02:00
Fred Tempez
f89e2d3142 Bug masque installation validé vide 2020-09-08 21:28:53 +02:00
Fred Tempez
b36a0f069f Bug masque installation validé vide 2020-09-08 21:25:42 +02:00
Fred Tempez
0d5ed4bf8d Merge branch 'master' into beta 2020-09-08 21:11:29 +02:00
Fred Tempez
63d3931549 10.2.09 securisation setData 2020-09-08 14:14:59 +02:00
fredtempez
092c4053b2 Merge branch 'blog_v3' of https://github.com/fredtempez/ZwiiCMS into blog_v3 2020-09-02 09:08:40 +02:00
fredtempez
0ffe4f7b40 ajoute balise <article> 2020-09-02 09:08:27 +02:00
fredtempez
e576a62b2d aside dans les barres latérales 2020-09-02 09:03:01 +02:00
fredtempez
b4b33ec600 hauteur captcha 2020-09-01 21:42:46 +02:00
fredtempez
2d4a4b323c backup animation avec contenu du gestionnaire de fichiers 2020-09-01 21:35:25 +02:00
fredtempez
70a496a749 modif url vers zwiicms.fr + écriture update 2020-09-01 20:48:40 +02:00
fredtempez
7cf99fb99e lorem multiples 2020-08-26 20:01:36 +02:00
fredtempez
05beea4ab1 Tinymce espace insécable 2020-08-26 19:58:38 +02:00
fredtempez
36a2c0fcde Rechercher de phrase exacte entre guillemets 2020-08-26 19:54:17 +02:00
fredtempez
590daa8b89 mauvaise mise en évidence des espaces + réécriture de la fonction 2020-08-25 23:16:47 +02:00
fredtempez
77df0f9de8 mots clés apporchants par défaut 2020-08-25 21:01:10 +02:00
fredtempez
66ef114f56 Merge branch 'master' into beta 2020-08-25 20:45:11 +02:00
fredtempez
5ece1ed117 Permission 644 2020-08-25 20:43:17 +02:00
fredtempez
f7b1e76387 mots clés approchants + mot clé suivi d'un caractère de ponctuation. 2020-08-24 20:04:28 +02:00
Fred Tempez
a6a46fea76 Alignement des select 2020-08-22 18:26:08 +02:00
fredtempez
a5441402c0 Merge branch 'beta' of https://github.com/fredtempez/ZwiiCMS into beta 2020-08-22 12:15:39 +02:00
fredtempez
a3261a6a4b Merge branch 'master' into beta 2020-08-22 11:13:29 +02:00
fredtempez
34f0f8ff0d 10.2.08 bug pageId 2020-08-22 10:48:03 +02:00
Fred Tempez
4e88ec43ad 10.2.07 Numérotation de la version 2020-08-21 18:35:07 +02:00
Fred Tempez
8f696cc1cb Merge branch 'master' into beta 2020-08-21 18:02:50 +02:00
Fred Tempez
707397f3ec 10.2.07 bug flatpickr dans le module formulaire 2020-08-21 18:01:55 +02:00
Fred Tempez
04978ab13a debug off 2020-08-21 14:55:40 +02:00
Fred Tempez
04d585b277 libellé 2020-08-21 09:50:06 +02:00
Fred Tempez
1325b09fe9 défaut d'initialisation + libellés 2020-08-21 09:45:59 +02:00
fredtempez
86b552ec93 changes 2020-08-20 19:33:03 +02:00
fredtempez
14aaa9af23 espace supprimé 2020-08-20 19:31:19 +02:00
fredtempez
b050238af7 Erreur d'initialisation 2020-08-20 19:31:11 +02:00
Fred Tempez
016790052c Dimension de l'aperçu 2020-08-20 16:11:11 +02:00
Fred Tempez
7986fc27d7 Icônes d'aide 2020-08-20 15:56:48 +02:00
Fred Tempez
f26924461c avertissement dans thèmes galerie et recherche 2020-08-20 13:43:40 +02:00
Fred Tempez
f7b411a09f Modif galerie : mise à jour et nettoyage du json 2020-08-20 13:21:28 +02:00
Fred Tempez
b3a094c4ee Libellés 2020-08-20 12:14:36 +02:00
Fred Tempez
f25b27eae0 Search gestion du thème modifié 2020-08-19 21:08:21 +02:00
Fred Tempez
d2b6c54418 Gallery stockage unique des paramètres de theme 2020-08-19 21:08:00 +02:00
Fred Tempez
3feab64a17 Stockage des paramètres générique au module 2020-08-19 20:34:40 +02:00
Fred Tempez
711b3ffab9 echo supprimé + couleur par défaut keyword 2020-08-19 19:05:00 +02:00
Fred Tempez
1c065ba546 Recherche d'une suite de mots-clés. 2020-08-19 19:02:37 +02:00
Fred Tempez
04c5fe5193 Module search choix couleur des mots-clés 2020-08-19 18:46:00 +02:00
Fred Tempez
6f3e81f7ce Gallery : modif theme notification + espace en trop 2020-08-19 18:44:40 +02:00
Fred Tempez
64641b2417 présentation bloc h4 encore 2020-08-19 18:16:49 +02:00
Fred Tempez
18c5ca26a7 présentation div h4 2020-08-19 18:15:23 +02:00
Fred Tempez
540ec4a796 Champ vide 2020-08-19 17:46:39 +02:00
Fred Tempez
29a4193450 Petites corrections 2020-08-19 16:40:23 +02:00
Fred Tempez
1f4ba11970 occurence pluriel sur une ligne 2020-08-19 15:31:03 +02:00
Fred Tempez
3731ef209a pluriel occurence 2020-08-19 15:27:23 +02:00
Fred Tempez
6a075b9880 Moteur de recherche - résultats condensés 2020-08-19 15:18:57 +02:00
Fred Tempez
6647cf8bea oups 2020-08-19 14:06:34 +02:00
Fred Tempez
8bc087bc89 améliorer css + pb double affichage + découpage aperçu 2020-08-18 19:07:28 +02:00
Fred Tempez
dd39587938 tri par pertinence + css 2020-08-17 16:51:18 +02:00
Fred Tempez
4c43750e3a bug recherche vide 2020-08-17 15:36:31 +02:00
Fred Tempez
bd12f3d5d9 Modifications de libellés 2020-08-17 15:34:18 +02:00
Fred Tempez
c541c2e742 Masquer le nombre d'occurences 2020-08-17 11:09:32 +02:00
Fred Tempez
a17a7e0807 multi mise en évidence 2020-08-17 11:05:44 +02:00
Fred Tempez
0f851a7304 Présentation de l'aperçu 2020-08-17 10:53:32 +02:00
Fred Tempez
58b923fc18 aperçu sur deux lignes 2020-08-17 10:51:45 +02:00
Fred Tempez
0e93feb076 changes 2020-08-17 10:44:31 +02:00
Fred Tempez
784a4935fd Regex de nettoyage + mise en évidence 2020-08-17 10:39:44 +02:00
Fred Tempez
6976594a14 Nouveau moteur de recherche basé sur des regex - reste à faire recherche par chaine 2020-08-16 21:02:26 +02:00
Fred Tempez
9b847547f3 Textes par défaut dans la config 2020-08-16 16:24:09 +02:00
Fred Tempez
e076950f0e Personnalisation module de recherche 2020-08-16 15:59:37 +02:00
Fred Tempez
fe273b8019 Bug titre de la configuration du module masqué si titre de la page masqué 2020-08-16 15:52:05 +02:00
Fred Tempez
7cc5a928d0 Merge branch 'beta' of https://github.com/fredtempez/ZwiiCMS into beta 2020-08-16 11:03:20 +02:00
Fred Tempez
5ff6a7d65b Droits 2020-08-16 11:01:39 +02:00
Fred
9960979944
Delete mini_home_blue.png 2020-08-16 11:00:40 +02:00
Fred
6c870d23d2
Delete mini_home_black.png 2020-08-16 11:00:32 +02:00
Fred
1695e48db1
Add files via upload 2020-08-16 11:00:04 +02:00
Fred
eea886c1c8
Add files via upload 2020-08-16 10:58:31 +02:00
Fred
2c61f2a0b7
Add files via upload 2020-08-16 10:57:52 +02:00
Fred Tempez
1aa57f0f35 copyright 2020-08-16 10:55:52 +02:00
Fred Tempez
368f98e959 Liste des versions des modules dans config 2020-08-16 10:55:44 +02:00
Fred Tempez
67707f36ed Page de configuration du mode de recherche 2020-08-16 10:43:09 +02:00
Fred Tempez
59e42e81d8 Rechercher : loupe dans le menu 2020-08-16 10:34:09 +02:00
Fred Tempez
635e561765 autres modifs 2020-08-15 10:11:04 +02:00
Fred Tempez
b96a089678 Libellés modifiés 2020-08-15 10:03:36 +02:00
Fred Tempez
febbdf3923 Modif des bulles 2020-08-15 09:48:13 +02:00
Fred Tempez
cdb0dbc3b4 Nom du module en FR 2020-08-15 09:48:05 +02:00
Fred Tempez
7e3dc1d1c0 nom du module + variables static 2020-08-15 09:35:43 +02:00
Fred Tempez
f8e1f98002 Changes 2020-08-14 18:10:17 +02:00
Fred Tempez
8ba60263f7 page de recherche par défaut 2020-08-14 17:56:17 +02:00
Fred Tempez
18ab09cd3c déplacer le stockage de la nouvelle version du core 2020-08-14 17:56:03 +02:00
Fred Tempez
6227b843fb droits modifiés 2020-08-14 17:33:01 +02:00
Fred Tempez
3e65b0bc6a masque 2020-08-14 17:32:48 +02:00
Fred Tempez
997ef55efb Masque 2020-08-14 17:32:35 +02:00
Fred Tempez
3675aa196e gestion erreur 2020-08-14 17:32:21 +02:00
Fred Tempez
a4505c2d88 inscription module 2020-08-14 17:32:11 +02:00
Fred Tempez
88cc62e15d Supprimer le module interne 2020-08-14 16:26:48 +02:00
Fred Tempez
26d28be381 Modif config 2020-08-14 16:25:57 +02:00
Fred Tempez
f3013b0764 Merge branch 'beta' into module_rechercher 2020-08-14 16:10:02 +02:00
Fred Tempez
5801b09583 nom du module 2020-08-14 16:09:46 +02:00
Fred Tempez
5bd3c0a9fe 'occurence' 2020-08-14 16:00:42 +02:00
Fred Tempez
d374749ebc supprimer écriture dans json 2020-08-14 15:35:52 +02:00
Fred Tempez
40fc832c7c init 2020-08-14 15:24:14 +02:00
Fred Tempez
2c803996f6 Changes 2020-08-14 07:16:09 +02:00
Fred Tempez
0aa0652de1 Données par défaut actualisées 2020-08-14 07:14:11 +02:00
Fred Tempez
3a05406525 Erreur de champ 2020-08-13 14:16:06 +02:00
Fred Tempez
1a6ce51080 page 403 2020-08-13 14:11:33 +02:00
Fred Tempez
a7376f7f17 Choix aucune page personnalisée version 10.3 2020-08-13 09:47:58 +02:00
Fred Tempez
baffde2f07 erreur de slash 2020-08-12 18:26:04 +02:00
Fred Tempez
03620979b6 Commit inital 2020-08-12 18:19:54 +02:00
Fred Tempez
b3cdc71b8d Paramètrage du champ INPUT 2020-08-12 17:39:43 +02:00
Fred Tempez
b89314610b Nom de classe 2020-08-12 16:35:13 +02:00
Fred Tempez
0b400cdb35 Débordement dans inputfile 2020-08-12 09:21:40 +02:00
Fred Tempez
cddf3ab4a5 Fichier vide pour écrasement du fichier dans les installations existantes 2020-08-12 09:18:30 +02:00
Fred Tempez
fd633ccfd2 nettoyage d'espaces 2020-08-11 18:10:53 +02:00
Fred Tempez
87b19c913a largeur div captcha col5 2020-08-11 18:06:52 +02:00
Fred Tempez
f062d209c8 thème du bouton installation 2020-08-11 18:06:35 +02:00
Fred Tempez
6ec6e74c0b alignement sur image captcha 2020-08-11 16:28:10 +02:00
Fred Tempez
f97b2a7ed3 formulation 2020-08-11 16:09:11 +02:00
Fred Tempez
53bb2efeff captcha lettres 2020-08-11 16:03:48 +02:00
Fred Tempez
8ee8229e3f Bug bouton bouton éditer avec cookie persistant 2020-08-11 08:25:41 +02:00
Fred Tempez
ac15324da5 changes 2020-08-10 19:39:39 +02:00
Fred Tempez
e94cb81b24 Captcha en lettres + correction du nom : capcha en captcha 2020-08-10 19:07:17 +02:00
Fred Tempez
bf1819fc74 Ajustements 2020-08-10 13:30:48 +02:00
Fred Tempez
9c46c227d0 remember me true value 2020-08-10 09:16:28 +02:00
Fred Tempez
5a8420bd3d remember me ok 2020-08-10 09:10:20 +02:00
Fred Tempez
83b5234efb move loader png 2020-08-10 09:10:02 +02:00
Fred Tempez
d31cedb23e Menu : classe active 2020-08-09 19:16:39 +02:00
Fred Tempez
a670fa4e5d Backup name = base Url 2020-08-09 18:59:43 +02:00
Fred Tempez
74787dffbc Message d'attente 2020-08-09 18:32:16 +02:00
Fred Tempez
7c956dd919 Soumission unique 2020-08-09 18:11:49 +02:00
Fred Tempez
9ab2e0eefd Numéro de version 2020-08-09 18:10:36 +02:00
Fred Tempez
38e05f0115 reverse samesite=strict 2020-08-09 17:58:13 +02:00
Fred Tempez
5a9e7405e0 Cookie authentification : samesite = strict | remember me ok 2020-08-09 16:35:03 +02:00
Fred Tempez
c933abefc2 optimisation d'écriture 2020-08-09 15:53:30 +02:00
Fred Tempez
8b4775967d Image du loader 2020-08-09 15:53:20 +02:00
Fred Tempez
065c8832cb Changes 2020-08-09 12:14:03 +02:00
Fred Tempez
30542b157b Changes 2020-08-09 12:13:15 +02:00
Fred Tempez
d95142c3f1 Merge branch 'loading_animation' into beta 2020-08-09 12:06:52 +02:00
Fred Tempez
c38c8b8694 Gestion d'erreur 2020-08-09 12:00:29 +02:00
Fred Tempez
603f28189e Améliorations : spinner + masque 2020-08-09 11:47:46 +02:00
Fred Tempez
13a143815d Merge branch 'beta' of https://github.com/fredtempez/ZwiiCMS into beta 2020-08-09 10:54:03 +02:00
Fred Tempez
c03a22436e Merge bug_page_id 2020-08-09 10:53:58 +02:00
Fred Tempez
80f091b59f Merge bug_page_id 2020-08-09 10:50:45 +02:00
Fred Tempez
8581911e61 Correctif : edit page, changement id si le nom de la page a changé 2020-08-08 19:41:12 +02:00
Fred Tempez
4400b6de8b Notification ok + libellés 2020-08-08 18:36:11 +02:00
Fred Tempez
5a0998e139 Virer une console 2020-08-08 17:15:19 +02:00
Fred Tempez
14e0499bc8 Virer les icones de bouton + petites modifs 2020-08-08 17:14:52 +02:00
Fred Tempez
54b5efd1d8 init + améliorer la notification finale. 2020-08-08 17:06:06 +02:00
Fred Tempez
a049fcb269 Changes 2020-08-08 14:44:45 +02:00
Fred Tempez
7938ba7645 Merge branch 'master' into dev 2020-08-08 14:44:30 +02:00
Fred Tempez
b54f2ed9bc 10.2.06 changes 2020-08-08 14:33:34 +02:00
Fred Tempez
7863b098ad 10206 Numéro de version 2020-08-08 14:32:01 +02:00
Fred Tempez
d62ccb442f Merge branch 'master' into dev 2020-08-08 14:29:31 +02:00
Fred Tempez
2c6e4ff6d8 change 2020-08-08 10:33:54 +02:00
Fred Tempez
dfcc6e640d Warning map theme file tinymce 2020-08-08 10:25:08 +02:00
Fred Tempez
69ad317888 Warning samesite 2020-08-08 10:17:16 +02:00
Fred Tempez
38d80dab96 changes 2020-08-07 08:20:01 +02:00
Fred Tempez
a4c077db0b changes 2020-08-07 08:18:57 +02:00
Fred Tempez
299f936f64 Merge branch 'master' into blog_v3 2020-08-02 09:59:00 +02:00
fredtempez
2b59a39c7a 10.2.05 Merge branch 'dev' 2020-07-30 07:57:32 +02:00
fredtempez
35a7f614e9 10.2.05 bug champ date sous chrome et safari 2020-07-25 14:23:04 +02:00
Fred Tempez
fac102b038 Merge branch 'dev' 2020-07-17 21:16:03 +02:00
Fred Tempez
83d9980486 merge function login 2020-07-17 17:27:34 +02:00
Fred Tempez
0d7b674e0f Merge branch 'dev' into blog_v3 2020-07-17 17:24:48 +02:00
Fred Tempez
5bfa992290 10.2.04 login unknown notification 2020-07-17 17:19:27 +02:00
Fred Tempez
6dd3f034cb Compatibilité anciens blogs et correction de bugs (décompte) 2020-07-17 10:05:24 +02:00
Fred Tempez
ad73150bc4 Merge branch 'dev' into blog_v3 2020-07-16 19:23:28 +02:00
Fred Tempez
6529b611a4 Update flatPickr 4.6.3 2020-07-16 19:21:53 +02:00
Fred Tempez
1bd0d7b964 Update flatPickr 4.6.3 2020-07-16 19:19:58 +02:00
Fred Tempez
a7efdbf6c5 Approbation des commentaires 2020-07-16 18:50:57 +02:00
Fred Tempez
d6b2dc7e20 Notification commentaire en attente d'approbation 2020-07-16 13:59:04 +02:00
Fred Tempez
90d281b483 Article link in config screen 2020-07-16 12:24:52 +02:00
Fred Tempez
4387390dbc Comment approve : filtering missing 2020-07-16 12:10:20 +02:00
Fred Tempez
dca8fb57ab Comment approve : filtering missing 2020-07-16 12:06:51 +02:00
Fred Tempez
4a599c513c Merge branch 'dev' into blog_v3 2020-07-16 11:07:12 +02:00
Fred Tempez
490e91e391 change 2020-07-16 11:02:26 +02:00
Fred Tempez
cc45d3d009 10.2.04 standard button hover color 2020-07-16 11:01:57 +02:00
Fred Tempez
2e35c1fa2c Approbation des commentaires WIP 2020-07-16 10:33:37 +02:00
Fred Tempez
ce610b2d0a Variables names 2020-07-16 09:21:57 +02:00
Fred Tempez
529f495f3d Numérotation + changes.md 2020-07-16 09:18:58 +02:00
Fred Tempez
6d05cc6f48 102.04 theme admin font not body 2020-07-15 22:56:51 +02:00
Fred Tempez
452f60dc9b 10.2.04 bend icons at the right of blocks 2020-07-15 22:56:03 +02:00
Fred Tempez
01b83cd0f8 Merge branch 'master' into blog_v3 2020-07-15 18:28:45 +02:00
Fred Tempez
8ba7682a6c Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2020-07-15 18:27:29 +02:00
Fred Tempez
6883e3fe64 version 2020-07-15 18:22:16 +02:00
Fred Tempez
280b21c6f8 Libellées 2020-07-14 11:36:24 +02:00
Fred Tempez
8726c17034 Libellé config 2020-07-14 10:09:43 +02:00
Fred Tempez
2899195ef8 Merge branch 'dev' into blog_v3 2020-07-13 10:27:45 +02:00
Fred Tempez
cf99a0f7aa classe helper fonction isHttps 2020-07-13 10:26:16 +02:00
Fred Tempez
f96e7377f8 Constantes 2020-07-12 18:05:33 +02:00
Fred Tempez
e7ffeeefbd Merge branch 'dev' into blog_v3 2020-07-12 18:04:46 +02:00
Fred Tempez
6d5caf8623 Changes 2020-07-12 17:57:20 +02:00
Fred Tempez
20732d5f8a Sécurisation des cookies 2020-07-12 17:50:09 +02:00
Fred Tempez
29ef8f06f5 Comments Approval WIP 2020-07-11 20:00:31 +02:00
Fred Tempez
125378ec93 blog config layout + jquery 2020-07-11 19:44:02 +02:00
Fred Tempez
a94d0b4433 Merge branch 'dev' into blog_v3 2020-07-11 18:44:17 +02:00
Fred Tempez
a3ef3e9cb2 Changes 2020-07-11 18:44:09 +02:00
Fred Tempez
c38766258a Merge branch 'dev' into blog_v3 2020-07-11 18:39:06 +02:00
Fred Tempez
7d67818b52 No hover effect on class inputFile 2020-07-11 18:38:26 +02:00
Fred Tempez
550a9c6462 Merge branch 'dev' into blog_v3 2020-07-11 17:18:54 +02:00
Fred Tempez
c16746c9b1 Header color with a link + mail new user content 2020-07-11 17:18:18 +02:00
Fred Tempez
9780470f62 Header color with a link + mail new user content 2020-07-11 17:01:08 +02:00
Fred Tempez
0c9aadd621 Merge branch 'dev' into blog_v3 2020-07-10 18:11:00 +02:00
Fred Tempez
d46b5e43dd Revert "hauteur viewport et footer"
This reverts commit 4188264298.
2020-07-10 18:09:54 +02:00
Fred Tempez
c8ec4a7c77 Merge branch 'dev' into blog_v3 2020-07-10 17:25:09 +02:00
Fred Tempez
4188264298 hauteur viewport et footer 2020-07-10 17:24:21 +02:00
Fred Tempez
42fd538ccb Signatures : noms d'objets 2020-07-10 16:57:21 +02:00
Fred Tempez
14331ebd5e changes 2020-07-09 19:47:31 +02:00
Fred Tempez
a371a3770e changes 2020-07-09 19:47:08 +02:00
Fred Tempez
f1d1413314 Merge branch 'dev' into blog_v3 2020-07-09 19:44:23 +02:00
Fred Tempez
46762d13b2 Edit user empêcher le pré-remplisage auto de l'ancien mot de passe 2020-07-09 19:43:55 +02:00
Fred Tempez
91accd2c0d Edit user retour ou accueil selon droits 2020-07-09 19:25:24 +02:00
Fred Tempez
0f2bba19d2 Merge branch 'dev' into blog_v3 2020-07-09 19:22:14 +02:00
Fred Tempez
4e3263b5fe changes + listes d'objectifs à réaliser 2020-07-09 14:40:48 +02:00
Fred Tempez
e3e59db275 Structure de l'édition de page 2020-07-08 21:15:38 +02:00
Fred Tempez
8bb1d9954c WIIP - Libellés 2020-07-08 21:07:30 +02:00
Fred Tempez
2a59d74b33 changes 2020-07-08 18:55:41 +02:00
Fred
a0bb56e388
Update README.md 2020-07-08 08:26:15 +02:00
Fred Tempez
24e7c84824 10.2.03 id dupliqués dans le menu 2020-07-08 08:24:50 +02:00
Fred Tempez
fe8d473a76 Initialisation des champs lors d'une mise à jour 2020-07-07 15:31:57 +02:00
Fred Tempez
a4ac385577 Empêcher l'édition nom prenom par un membre simple -optimisation écriture 2020-07-07 15:17:48 +02:00
Fred Tempez
4c348e44f0 Initialiser la signature avec le pseudo, le prénom par défaut 2020-07-07 15:04:19 +02:00
Fred Tempez
c63a870843 10.2.02 Changes 2020-07-06 21:33:50 +02:00
Fred Tempez
a28419225a Version 10.3 2020-07-06 19:53:33 +02:00
Fred Tempez
43f2ccca4f Merge branch 'dev' into blog_v3 2020-07-06 19:51:16 +02:00
Fred Tempez
c010f4f518 Bug favicon select 2020-07-06 19:50:53 +02:00
Fred Tempez
52a22f5717 blocage annulation saisie commentaire 2020-07-06 12:24:06 +02:00
Fred Tempez
e44575d0ae Message effacement + court et nom de l'article 2020-07-06 12:20:46 +02:00
Fred Tempez
3ea30e9268 Messages de confirmation de suppression 2020-07-06 12:14:13 +02:00
Fred Tempez
ef141d72bf Ajout de la classe editorWysiwygComment 2020-07-06 11:46:34 +02:00
Fred Tempez
249e173b3e Merge branch 'master' into blog_v3 2020-07-06 11:41:24 +02:00
Fred
f32dbfc52d merge install pseudo 2020-07-02 19:58:35 +02:00
Fred
ef3e9db7f5 Merge module user 2020-07-02 19:53:52 +02:00
Fred
457b536fca Merge blog folder 2020-07-02 19:48:47 +02:00
Fred
2762c7df82 Merge branch 'master' into dev 2020-07-02 19:45:14 +02:00
Fred
eca6b4fb87 Revert "Permissions"
This reverts commit a9be62287a.
2020-07-02 19:43:31 +02:00
Fred
23a1e929a3 Revert "init"
This reverts commit 329f252d82.
2020-07-02 19:38:52 +02:00
Fred
329f252d82 init 2020-07-02 19:35:51 +02:00
Fred
c6aee2862f Merge branch 'master' into dev 2020-06-30 22:53:00 +02:00
Fred
cc61fce0eb Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2020-06-30 22:04:44 +02:00
Fred
d82fadfe03 10.2.01 2020-06-30 22:03:29 +02:00
Fred
8fc49e3218
Update README.md 2020-06-30 21:53:30 +02:00
Fred
cc4c73355e
Update README.md 2020-06-30 21:51:36 +02:00
Fred
8cace16d0d 10.2.01 No install window on fresh install 2020-06-30 21:50:40 +02:00
Fred
a9be62287a Permissions 2020-06-30 20:13:51 +02:00
Fred
c39654d99f Fix bug Safari RFM 2020-06-30 00:14:10 +02:00
Fred
3e115982f8 gitignore 2020-06-29 21:52:33 +02:00
Fred
29fbe0a001 10.2.01 fix select menu icon error 2020-06-29 21:48:06 +02:00
Fred
617364f578 10.2.01 fix select menu icon error 2020-06-29 21:26:20 +02:00
Fred
16894d1d90 10.2.01 fix imagetag 2020-06-29 20:55:22 +02:00
Fred Tempez
9579315407 10.2 Optimisation script protection login + journalisation IP 2020-06-27 16:21:22 +02:00
Fred Tempez
ff4d03c18a changes 2020-06-27 13:50:41 +02:00
Fred Tempez
9354863b1e Erreur de nom de variables de barre de membre simple dans update 2020-06-26 21:23:22 +02:00
Fred Tempez
0ed4582cf0 Gestion d'un compte non enregistré 2020-06-26 21:02:41 +02:00
Fred Tempez
eeeb5c3db8 10.2.01 gestion des échecs de connexion 2020-06-26 10:01:14 +02:00
Fred Tempez
51827c015b Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2020-06-25 12:09:00 +02:00
Fred Tempez
9d312c5582 Update non effacé après mise à jour 10.1 vers 10.2 cause option de sécurité 2020-06-25 12:08:57 +02:00
Fred
cf8796f45a
Update README.md 2020-06-25 11:03:39 +02:00
Fred Tempez
8756ff4bd5 10.2 2020-06-23 20:10:10 +02:00
Fred Tempez
624dae23c1 10.2.dev40 theme menu active textcolor non définie 2020-06-23 18:37:04 +02:00
Fred Tempez
ed8f77755e Bug déconnexion après modification compte 2020-06-19 11:09:24 +02:00
Fred Tempez
9d1618d2ea Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2020-06-18 13:28:41 +02:00
Fred Tempez
172d2f763b 10.2.dev39 barre de membre simple dans footer 2020-06-18 13:21:47 +02:00
Fred Tempez
f4e890f8e7 10.2.dev39 barre de membre simple dans footer 2020-06-18 13:16:34 +02:00
Fred Tempez
663842d8d0 Supp redondance génération theme.css 2020-06-17 20:45:49 +02:00
Fred Tempez
efbc893d53 10.2.dev38 barre de membres simples dans le menu + bug bouton retour édition compte 2020-06-17 19:07:51 +02:00
Fred Tempez
048e59e497 10.2.dev36 css pour le thème sombre 2020-06-17 18:45:02 +02:00
Fred Tempez
7c6befaa20 10.2.dev35 selecteur de pages en mode sombre 2020-06-16 18:44:26 +02:00
Fred Tempez
7df3330bb5 Changes 2020-06-16 12:45:15 +02:00
Fred Tempez
4975fa74c4 Gallery 2.26 largeur proportionnelle 2020-06-16 12:43:54 +02:00
Fred Tempez
83d614c4e2 10.2.dev34 option de préservation htaccess de la racine 2020-06-14 10:36:36 +02:00
Fred Tempez
0f42f03d4e position -> location 2020-06-12 18:22:34 +02:00
Fred Tempez
fc5b7172eb Edit page blocs fermés 2020-06-12 18:20:32 +02:00
Fred Tempez
363057d568 Tinymce supprimer codesample 2020-06-12 17:32:32 +02:00
Fred Tempez
9227fe5e3c Supprimer les espaces 2020-06-12 17:15:55 +02:00
Fred Tempez
4ed4a4e0d9 10.2.dev33 persistances des positions de blocs durant la durée de la session. 2020-06-11 11:25:53 +02:00
Fred Tempez
fd333a1090 update Changes 2020-06-10 19:38:49 +02:00
Fred Tempez
9c66bfcf9b Blog 2.2 options à la création 2020-06-10 16:38:53 +02:00
Fred Tempez
db9bebe596 Blog 2.3 options à la création 2020-06-10 16:32:33 +02:00
Fred Tempez
30f72054ec Activation paste TinyMCE 2020-06-10 12:21:42 +02:00
Fred Tempez
d7d000ff1d Couleurs par défaut du thème 2020-06-07 19:15:21 +02:00
Fred Tempez
842da132e0 Options de page dépliables 2020-06-07 18:55:38 +02:00
Fred Tempez
638f2a99d8 Interdire le clic sur le fond de boite 2020-06-07 18:55:24 +02:00
Fred Tempez
ba991a79b3 Supprimer les id inutiles 2020-06-07 18:08:10 +02:00
Fred Tempez
3b5a424c34 TinyMCS couleur bordure de contour 2020-06-07 17:04:02 +02:00
Fred Tempez
2e0d9dd20c 102.dev31 présentation configuration 2020-06-07 12:28:43 +02:00
Fred Tempez
e1a09676b4 10.2.dev31 config : blocs dépliants code optimisé. 2020-06-07 09:25:54 +02:00
Fred Tempez
0ac70c9f51 10.2.dev30 formulaire ouvert mauvais message 2020-06-06 11:55:56 +02:00
Fred Tempez
6b2c44c3fc 10.2.dev28 config blocs pliables - optimisation JS à réaliser. 2020-06-05 07:23:36 +02:00
Fred Tempez
c963a61389 10.2 commentaire + fonction private 2020-06-04 18:34:39 +02:00
Fred Tempez
b30f70a4c8 10.2.dev27 check login fail values 2020-06-04 13:57:50 +02:00
Fred Tempez
a700dcb1aa changes 2020-06-03 18:19:50 +02:00
Fred Tempez
2d93f5c5f5 10.2.dev26 + merge 10104 + correctif auth 2020-06-03 16:44:46 +02:00
Fred Tempez
75ac83331c 10.2 Erreur création thème pas défaut couleur du texte 2020-06-03 10:17:37 +02:00
Fred Tempez
e19e6548ee 10.2.dev25 en-têtes des logs + permissions des nouveaux fichiers 2020-06-03 10:13:15 +02:00
Fred Tempez
5151f64beb 10.2.dev25 en-têtes des logs + permissions des nouveaux fichiers 2020-06-03 10:06:11 +02:00
Fred Tempez
508cd838df 10.2 Nettoyage d'espaces 2020-06-03 09:07:00 +02:00
Fred Tempez
f6474295d4 Fomr 2.3 bug répondre à 2020-06-03 08:54:48 +02:00
Fred Tempez
4641fcf3d1 10.2 Suppression d'espaces en fin de ligne 2020-06-02 18:51:50 +02:00
Fred Tempez
63452426be 10.2 Suppression d'espaces en fin de ligne 2020-06-02 18:49:24 +02:00
Fred Tempez
3e3d3492d2 update jquery 2020-06-02 17:12:23 +02:00
Fred Tempez
5f3572c1a6 update jquery 2020-06-02 17:12:05 +02:00
Fred Tempez
0389499595 avertissement github 2020-06-02 17:09:39 +02:00
Fred Tempez
749d5ebe55 10.2.dev24 modification liste noire 2020-06-02 16:58:08 +02:00
Fred Tempez
165eeaecb5 Theme header text defaultcolor 2020-06-02 16:12:35 +02:00
Fred Tempez
caf767aaaa Erreur de création du theme.css 2020-06-02 14:29:10 +02:00
Fred Tempez
7273c41e30 10.2.dev23 update RFM + changes 2020-06-02 14:13:24 +02:00
Fred Tempez
4843b93366 10.2.dev22 erreur defaultdata css 2020-06-02 12:10:06 +02:00
Fred Tempez
a400b65654 10.2dev21 petites corrections 2020-06-02 12:03:45 +02:00
Fred Tempez
29e460ffad 10.2.dev21 supprimer stockage IP 2020-06-02 11:49:19 +02:00
Fred Tempez
3734697e90 changes 2020-06-01 15:51:19 +02:00
Fred Tempez
6d94f626fd Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2020-06-01 10:22:33 +02:00
Fred Tempez
d99bcbe9b2 10.2 Mise à jour 2020-06-01 10:22:29 +02:00
Fred Tempez
06c32689ef 10.2 Mise à jour 2020-06-01 10:20:25 +02:00
Fred Tempez
b0966d036e 10.2.dev20 Liste noire 2020-06-01 09:35:42 +02:00
Fred Tempez
9d71c34f3a 10.2.dev20 Liste noire 2020-06-01 09:35:03 +02:00
Fred Tempez
600426da61 10.2.dev20 Liste noire 2020-06-01 09:34:13 +02:00
Fred Tempez
80cb7a114d 10.2 RAZ auto update en début de script en cas d'échec 2020-06-01 08:19:34 +02:00
Fred Tempez
f50e2ab8c2 10.2.dev19 verrou connexion sans userId valide 2020-05-31 19:08:19 +02:00
Fred Tempez
d74a6e620c 10.2.dev18 connexion login d'un compte tentatives avec un login inexistant 2020-05-31 16:46:13 +02:00
Fred Tempez
a948f590fa 10.2.dev18 présenation config 2020-05-31 16:45:33 +02:00
Fred Tempez
1037717809 Suppression plugin fullpage tinymce 2020-05-30 18:26:05 +02:00
Fred Tempez
36360e19a3 10.2.dev17 blog ombre shadow et date couleur du texte 2020-05-30 17:55:06 +02:00
Fred Tempez
53a0289b9b logn brute force options par défaut 2020-05-30 12:17:54 +02:00
Fred Tempez
dd1d3f793f 10.2.dev16 journalisation + blocage brute force login 2020-05-30 12:04:45 +02:00
Fred Tempez
9ce6c8bd9d gitignore 2020-05-30 08:02:25 +02:00
Fred Tempez
9c7d9443ce thumb vignettes 640 2020-05-30 07:57:57 +02:00
Fred Tempez
d1272cb3c6 10.2.dev14 logique des options de sécurité de connexion 2020-05-29 17:53:30 +02:00
Fred Tempez
b7a90902ab 10.2.dev13 adapatation index et site du thème aux écrans 750px 2020-05-29 17:32:57 +02:00
Fred Tempez
4c29d94246 Sécurité connexion options par défaut 2020-05-29 08:24:32 +02:00
Fred Tempez
0d68f00710 10.2.dev12 sécurité de la conenxion au compte 2020-05-28 19:03:31 +02:00
Fred Tempez
9c94e84d82 10.2.dev11 config warning pwd smtp 2020-05-28 15:23:46 +02:00
Fred Tempez
397fbe8c26 10.2.dev11 bloquer l'accès au compte trop de mauvaises connexions 2020-05-28 15:19:32 +02:00
Fred Tempez
943a4dddf8 10.2.dev10 timer sur le controle d'accès 2020-05-28 09:28:10 +02:00
Fred Tempez
1cc2f5e225 Merge 10.1.02 2020-05-28 07:19:06 +02:00
Fred Tempez
1515579141 10.2.dev9 blog shadow dargrey 2020-05-27 08:56:20 +02:00
Fred Tempez
1c96e44623 10.2.dev9 h4 search 2020-05-27 08:44:14 +02:00
Fred Tempez
69b00a4250 10.2dev9 theme admin 2020-05-27 08:42:32 +02:00
Fred Tempez
3b8879dac9 10.2.dev8 police du texte 2020-05-26 09:25:08 +02:00
Fred Tempez
2a769406ff 10.2.dev7 encore le thme admin : bouton couleur du texte auto 2020-05-26 09:10:56 +02:00
Fred Tempez
3266154989 10.2.dev6 theme admin couleurs par défaut 2020-05-26 08:36:58 +02:00
Fred Tempez
f9d05aa803 10.2.dev6 accès concurrents login et logout 2020-05-26 08:32:51 +02:00
Fred Tempez
40c35a0de7 10.2.dev5 theme admin + présentation 2020-05-26 00:03:58 +02:00
Fred Tempez
43b7864b70 10.2.dev5 correction d'une régression 2020-05-26 00:03:34 +02:00
Fred Tempez
f92cad8f71 10.2.dev5 theme admin + supp fonction inutilisé 2020-05-26 00:03:10 +02:00
Fred Tempez
b886cc21cb 10.2 stratégie création screenshot 2020-05-25 21:03:34 +02:00
Fred Tempez
5b927d2a8e Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2020-05-25 20:50:35 +02:00
Fred Tempez
c324081076 Change 10.1.001 2020-05-25 20:50:30 +02:00
Fred Tempez
76793e7282 >Change 10.1.001 2020-05-25 19:41:04 +02:00
Fred Tempez
cae10ab155 10.2 bagnière de connexion thème du site 2020-05-25 15:47:50 +02:00
Fred Tempez
e0d94517e0 10.2 theme admin au login + version + changes 2020-05-25 14:49:28 +02:00
Fred Tempez
d75ec190b5 10.2 API imagetag 2020-05-25 11:58:54 +02:00
Fred Tempez
098eca657f 10.2 read.me 2020-05-24 20:22:10 +02:00
Fred Tempez
a358d8d4da 10.2 numéro de la version 2020-05-24 20:21:00 +02:00
Fred Tempez
77c930d737 10.2 accès concurrents WIP 2020-05-24 19:59:21 +02:00
Fred Tempez
c5f3c0ac4b Merge branch 'master' into accès_concurrents_2 2020-05-24 18:00:22 +02:00
Fred Tempez
5c42dece4f Supprimer un faux bouton 2020-05-24 18:00:06 +02:00
Fred Tempez
3a85ec44eb dev2 nonbreaking 2020-05-24 16:27:40 +02:00
Fred Tempez
7e0574f277 Revert "dev2 déplacer le chemin de fer"
This reverts commit 81f55490d3.
2020-05-24 16:03:33 +02:00
Fred Tempez
81f55490d3 dev2 déplacer le chemin de fer 2020-05-24 15:55:40 +02:00
Fred Tempez
5f1e9a4412 TinyMCE plugin inutiles 2020-05-24 15:41:26 +02:00
Fred Tempez
c485dcab7a TinyMCE plugin inutiles 2020-05-24 10:19:17 +02:00
Fred Tempez
8e7db68253 Nettoyage site/file 2020-05-24 10:06:38 +02:00
Fred Tempez
95665f8bb8 Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2020-05-23 19:02:16 +02:00
Fred Tempez
8535381f36 10.1.001.dev1 thème admin mode sombre 2020-05-23 19:02:10 +02:00
Fred Tempez
497d5286cc 10.1.001.dev1 thème admin 2020-05-23 18:59:53 +02:00
Fred Tempez
2209b65940 10.1.001.dev Theme admin - test darkmode 2020-05-22 17:57:03 +02:00
Fred Tempez
bbc2303fbd 10.1 changes 2020-05-22 16:20:19 +02:00
Fred Tempez
50b4efd6bd 10.1 warning création dossier existant 2020-05-22 16:13:38 +02:00
Fred Tempez
24f8267ac8 10.1 Compatibilite baseUrl IIS + Majuscules 2020-05-22 16:06:34 +02:00
Fred Tempez
ca963adbbd 10.1 Bug imagetag + majuscules 2020-05-21 12:01:46 +02:00
Fred Tempez
2553a659c5 10.1 Changes 2020-05-21 09:58:08 +02:00
Fred Tempez
5e5dce0b29 10.1 Changes 2020-05-21 09:55:49 +02:00
Fred Tempez
25b6007300 10.1 id de la page lien du menu 2020-05-21 09:28:09 +02:00
Fred Tempez
d9359a60e2 10.1 aperçu thème du site 2020-05-21 08:01:28 +02:00
Fred Tempez
902d70a663 10.1 toutjours afficher backtotop dans body 2020-05-21 08:00:52 +02:00
Fred Tempez
1475ff30fa 10.1 Sauvegarde du theme ou de l'admin 2020-05-18 18:26:21 +02:00
Fred Tempez
5647416cbc 10.1 Erreur de sitemap blog vide 2020-05-18 17:48:08 +02:00
Fred Tempez
a25523b638 10.1 correction données par défaut 2020-05-18 11:05:33 +02:00
Fred Tempez
3960e68365 10.1 Thème 2020-05-18 10:50:43 +02:00
Fred Tempez
1a1071992e 10.1 permissions 2020-05-18 08:16:49 +02:00
Fred Tempez
7fabae02e9 10.1 enregistrement de la sauvegarde auto 2020-05-17 15:26:14 +02:00
Fred Tempez
93ca724f08 [10.1.000] Change et version 2020-05-17 07:58:28 +02:00
Fred Tempez
b0c05a5200 093 libellé 2020-05-17 07:43:21 +02:00
Fred Tempez
514e0e83b6 Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2020-05-17 07:41:49 +02:00
Fred Tempez
ab6cba3574 093 Thème admin 2020-05-17 07:41:44 +02:00
Fred Tempez
4b38d4c3d6 093 Thème admin 2020-05-17 07:40:09 +02:00
Fred Tempez
e1f4a6dc8c 093 Personnalisation administration : reste à faire la couleur des blocs et l'aperçu. 2020-05-16 22:15:16 +02:00
Fred Tempez
85423bbf2c 093 sécurise la mise à jour de la couverture de la galerie 2020-05-16 21:39:29 +02:00
Fred Tempez
54ef6d95dd 093 Mise en cache des pages 2020-05-16 21:24:20 +02:00
Fred Tempez
2fca58ab52 093 supprimer is_readable 2020-05-16 13:52:52 +02:00
Fred Tempez
b436b16608 0193 bug codage mdp smtp 2020-05-16 08:46:56 +02:00
Fred Tempez
a2195dc572 093 helper pour Free 2020-05-15 18:52:54 +02:00
Fred Tempez
1934ef4ef0 093 protection image tag google api 2020-05-15 18:42:35 +02:00
Fred Tempez
5e77c51f51 093 thème menu couleur de la page sélectionnée 2020-05-15 18:31:01 +02:00
Fred Tempez
8cf09137fb 093 admin.css et admin.json couleurs du thème admin 2020-05-15 17:36:55 +02:00
Fred Tempez
4c1d91195b 093 effacer un var_dump 2020-05-15 17:35:20 +02:00
Fred Tempez
60148ffc4e Correction d'une horreur 2020-05-15 16:07:01 +02:00
Fred Tempez
faeb330579 093 déplacer admin.css dans data + dépalcement d'un fichier de ressources 2020-05-14 19:22:09 +02:00
Fred Tempez
bd854b20c3 093 actualisation htaccess de secours 2020-05-14 18:59:49 +02:00
Fred Tempez
31e9853ca7 093 masque un warning pour FREE !!! 2020-05-14 18:43:35 +02:00
Fred Tempez
cbc5cd2c4f 093 TinyMCE 4.9.10 + permissions 2020-05-14 11:19:03 +02:00
Fred Tempez
3d1914e847 092 compléter la suppression fullpage 2020-05-14 07:25:36 +02:00
Fred Tempez
ea4aca1bee 092 ajouter des ico dans config 2020-05-13 18:05:46 +02:00
Fred Tempez
5a354b4f06 092 ajouter des ico dans config 2020-05-13 18:00:11 +02:00
Fred Tempez
3fd624844e 092 chipotages 2020-05-13 17:52:05 +02:00
Fred Tempez
1eda5a7055 092 changes 2020-05-13 15:02:28 +02:00
Fred Tempez
ef1cdbdfc7 092 Thème administration 2020-05-13 14:36:05 +02:00
Fred Tempez
de61445249 092 compatibilité Free 2020-05-13 13:59:29 +02:00
Fred Tempez
bb6d41b106 092 désactiver le bouton autoupdate si indispo 2020-05-12 18:27:28 +02:00
Fred Tempez
fab314a7ee 0932 scrip vide 2020-05-12 16:40:33 +02:00
Fred Tempez
b77bdbd08a 092 Edition des scripts dans une fenêtre dédiée 2020-05-12 16:28:10 +02:00
Fred Tempez
67d2155569 Merge branch 'SMTP' 2020-05-12 09:19:30 +02:00
Fred Tempez
0d41800c0f 092 Suppression fullpage + changes 2020-05-12 09:19:28 +02:00
Fred Tempez
0ade031772 092 Changes 2020-05-11 18:25:46 +02:00
Fred Tempez
d25ebe52be 092 Suppression fullPage 2020-05-11 17:46:25 +02:00
Fred Tempez
8d814afa73 Cryptage mot de passe SMTP + masquage de champs 2020-05-11 17:02:32 +02:00
Fred Tempez
73cd16b953 Amélioreation form + param smtp false 2020-05-11 12:15:51 +02:00
Fred Tempez
5542ba5193 init smtp server 2020-05-10 18:06:57 +02:00
Fred
46a5a6b128
Merge pull request #7 from finkiki/master
typo
2020-05-10 14:24:00 +02:00
Fred Tempez
70ebd16e65 092 numéro de versoin 2020-05-10 14:22:34 +02:00
Fred Tempez
29f7304aea 092 extension manquante 2020-05-10 14:22:22 +02:00
Fred Tempez
322b202d22 092 Libellé erroné 2020-05-10 14:22:02 +02:00
Popol
e2731575ba
Update custom.css 2020-05-10 01:48:31 +02:00
fredtempez
5616b19bef 090 changes 2020-05-09 16:37:11 +02:00
fredtempez
3d941f2c90 090 changes 2020-05-09 16:33:00 +02:00
Fred Tempez
65c1220d75 090 source commentée 2020-05-09 12:52:29 +02:00
Fred Tempez
883120455b 091 restauration convetion url pour les modules 2020-05-09 12:06:22 +02:00
Fred Tempez
e893a9ff3c 091 restauration convetion url pour les modules 2020-05-09 12:05:56 +02:00
Fred Tempez
a7fc3e23e0 091 restauration convetion url pour les modules 2020-05-09 09:23:29 +02:00
Fred Tempez
c584612549 090 Option de marge en haut du site non fluide et correction theme dans core.php 2020-05-08 21:14:29 +02:00
Fred Tempez
1573fa7695 089 fullPage options 2020-05-08 19:50:13 +02:00
Fred Tempez
7c5aacd4be Typo 2020-05-08 16:22:29 +02:00
Fred Tempez
d43a0a97d1 089 inclus le script fullpage pour le nouveau site et deux templates tinymce + aide dans le module de redirection 2020-05-08 10:00:05 +02:00
Fred Tempez
7b741f0f74 088 libellés et aide 2020-05-07 16:51:24 +02:00
Fred Tempez
f0a2d7767a 087 import user de v9 2020-05-07 16:22:44 +02:00
Fred Tempez
f7799861e6 087 information sur les conversions. 2020-05-07 15:59:23 +02:00
Fred Tempez
67bdd386e2 087 conversion URL ok 2020-05-07 15:07:26 +02:00
Fred Tempez
4bab683c2b 087 config backup de la v10 WIP 2020-05-07 08:45:46 +02:00
Fred Tempez
5e748eb3f2 087 config backup de la v10 WIP 2020-05-07 08:36:24 +02:00
Fred Tempez
1312de02d8 086 Nom du fichier de backup 2020-05-06 16:15:08 +02:00
Fred Tempez
a06e71f6dc 085 backup CSS manquant 2020-05-06 15:54:16 +02:00
Fred Tempez
a3a059167c 085 Suppression css fenêtre update 2020-05-06 07:43:44 +02:00
Fred Tempez
52e1efdddf 085 présentation news + changes 2020-05-06 07:19:51 +02:00
Fred Tempez
9dac796d91 Update PHPMailer 2020-05-05 17:43:35 +02:00
Fred Tempez
92e7b57e6b Aperçu fond d'écran dans thème site 2020-05-05 17:22:04 +02:00
Fred Tempez
72a44219e2 Nom en clair d'un module 2020-05-03 11:16:41 +02:00
Fred Tempez
ad9b9c0b19 Nom en clair d'un module 2020-05-03 11:14:20 +02:00
Fred Tempez
934e5bc6f9 Position des images dans updates : correction 2020-05-02 21:47:01 +02:00
Fred Tempez
4e7d005924 Position des images dans updates : correction 2020-05-02 21:46:17 +02:00
Fred Tempez
d3e3769b62 080 Protection des données de module 2020-05-02 17:48:44 +02:00
Fred Tempez
8c12494412 Merge branch 'dev10' of https://github.com/fredtempez/ZwiiCMS into dev10 2020-05-02 11:18:24 +02:00
Fred Tempez
2db3fd21f0 079 Confirmer supp module 2020-05-02 10:30:55 +02:00
Fred Tempez
dfc72060fd 079 Confirmer supp module 2020-05-02 10:18:07 +02:00
Fred Tempez
ed807249fe 2.25 édition dela galerie change sa position 2020-05-01 13:43:27 +02:00
Fred Tempez
f101b0612a layout light css optimisé 2020-05-01 09:39:13 +02:00
Fred Tempez
da8fadecc3 2.24 bug : position manuelles perdues si la galerie change de nom. position devient positions dans json 2020-04-30 18:45:42 +02:00
Fred Tempez
a559558f9d Libellé aide tri manuel 2020-04-29 16:34:27 +02:00
Fred Tempez
467f03f0ad 077 Magic_quotes dépréciée 2020-04-29 13:38:01 +02:00
Fred Tempez
be614eae29 076 correction de headers 2020-04-29 02:57:57 +02:00
Fred Tempez
906ed547a6 gallery 2.23 le tri des images ne nécessite plus une validation 2020-04-28 19:29:24 +02:00
Fred Tempez
fe0e40cb99 075 optimisation méta d'un article de blog 2020-04-28 15:09:39 +02:00
Fred Tempez
3c45d77023 075 optimisation méta d'un article de blog 2020-04-28 15:06:49 +02:00
Fred Tempez
e1e625b361 Message relatif aux updates supprimé 2020-04-28 13:52:14 +02:00
Fred Tempez
6a8bed0240 Compléter avec urlGetContents 2020-04-28 10:34:11 +02:00
Fred Tempez
345e0c69f9 Gallery trop longue 2020-04-28 08:25:10 +02:00
Fred Tempez
77d5a024b4 Merge branch 'master' into dev10 2020-04-27 18:57:48 +02:00
Fred Tempez
c63882b49a Pb de décalage de marges 2020-04-27 18:53:22 +02:00
Fred Tempez
0afb4363ca Correctifs affichage d'un article 2020-04-27 12:14:42 +02:00
Fred Tempez
3c37807ee5 Merge branch 'master 9.2.28' into dev10 2020-04-27 09:14:34 +02:00
Fred Tempez
27719f772a 9.2.28 largeur footer 2020-04-27 09:12:52 +02:00
Fred Tempez
d343cfde44 071 correction accent dans id 2020-04-26 19:06:10 +02:00
Fred Tempez
6a6233e362 Libellé 2020-04-26 09:54:31 +02:00
Fred Tempez
da7aea6838 Bug tri gallery 2020-04-24 12:37:01 +02:00
Fred Tempez
f7a05e4bf6 070 raz config si indispo 2020-04-24 10:16:43 +02:00
Fred Tempez
fd951381f8 070 mise à jour : libellés 2020-04-24 10:11:25 +02:00
Fred Tempez
f1645e0ab8 Mise à jour forçée bloquée si pas de mise à jour détectée. 2020-04-24 10:00:16 +02:00
Fred Tempez
36b0b5bc9e 070 Structure 2020-04-24 09:48:42 +02:00
Fred Tempez
80a3abef2c 070 Gestion d'erreur mise à jour auto 2020-04-24 09:43:13 +02:00
Fred Tempez
d20b406cfb 070 Gestion d'erreur mise à jour auto 2020-04-24 09:42:16 +02:00
Fred Tempez
010c2e98df 070 Gestion d'erreur mise à jour auto 2020-04-24 09:28:44 +02:00
Fred Tempez
647e0a8b5b Blog 2.0 personnalisation image de couverture EN COURS 2020-04-23 19:55:47 +02:00
Fred Tempez
73800eabaa Revert "Hauteur minimale en vh"
This reverts commit 791d7c08f8.
2020-04-23 17:06:13 +02:00
Fred Tempez
791d7c08f8 Hauteur minimale en vh 2020-04-23 15:02:18 +02:00
Fred Tempez
7f41418bed 0.169 Amélioration de la mise à jour auto + change 2020-04-23 14:42:24 +02:00
Fred Tempez
3794fe96a1 [0.69] Mise à jour en ligne 2020-04-23 10:17:40 +02:00
Fred Tempez
2fb054cc57 Supprime les emojis de l'id de la page 2020-04-23 07:49:55 +02:00
Fred Tempez
efed2febae Valeurs par défaut de la galerie 2020-04-22 18:28:49 +02:00
Fred Tempez
205f054f0b PB arrondi angles 2020-04-20 18:21:26 +02:00
Fred Tempez
d3c3ce32bc Droit dossiers récursifs 2020-04-20 10:19:43 +02:00
Fred Tempez
b9e5c6fb3a Couleur des ombres + valeurs par défaut plus faibles 2020-04-19 19:43:37 +02:00
Fred Tempez
6b62351cd7 Libellé radius 2020-04-19 19:43:13 +02:00
Fred Tempez
1b2fd01535 Effacer le cache au changement de données du thème. 2020-04-19 19:24:23 +02:00
Fred Tempez
9b4688c1e7 Revert "Revert "Mise à jour TinyMCE""
This reverts commit e8ad6f019d.
2020-04-19 17:24:31 +02:00
Fred Tempez
3c7e965d1f Image du fond dans l'éditeur TinyMCE 2020-04-19 17:24:03 +02:00
Fred Tempez
463f6b0180 module rechercher présentation 2020-04-19 17:07:26 +02:00
Fred Tempez
e8ad6f019d Revert "Mise à jour TinyMCE"
This reverts commit c19b1daa63.
2020-04-19 16:57:54 +02:00
Fred Tempez
b80eab0939 2.19 ajustement de valeurs 2020-04-19 14:58:38 +02:00
Fred Tempez
498fd7f4d6 2.19 confirmation enregistrement 2020-04-19 13:07:01 +02:00
Fred Tempez
844acd8c8a 2.18 Ajout d'effets + masque du thème 2020-04-18 19:18:34 +02:00
Fred Tempez
79318d0408 2.17 icone + private sort 2020-04-18 16:56:12 +02:00
Fred Tempez
7fd1259a79 2.17 Thème de la galerie 2020-04-18 16:33:48 +02:00
Fred Tempez
c19b1daa63 Mise à jour TinyMCE 2020-04-17 20:04:00 +02:00
Fred Tempez
b7e8434556 Gallery : vignette d'album en plein écran 2020-04-17 19:32:51 +02:00
Fred Tempez
3310b88aca Gallery : css par défaut 2020-04-17 19:07:06 +02:00
Fred Tempez
f061d0edc9 Droits modifiés 2020-04-17 19:05:46 +02:00
Fred Tempez
77f28be18b Galerie 2.16 : règlage du thème WIP 2020-04-17 19:02:04 +02:00
Fred Tempez
52ad23b4f9 Libellé : A accent 2020-04-17 17:39:16 +02:00
Fred Tempez
f9617a45ee Warning count galerie inexistante 2020-04-17 14:16:53 +02:00
Fred Tempez
69e5d127cd Merge branch 'responsive_gallery' into dev10 2020-04-16 22:36:08 +02:00
Fred Tempez
48d3edac4f 2.14 Option d'ouverture automatique des images 2020-04-16 22:34:59 +02:00
fredtempez
349e859c08 Erreur de sortie de boucle 2020-04-16 19:27:52 +02:00
Fred Tempez
6393425895 2.11 gérer le déplacement ou la suppression de l'image de couverture. 2020-04-16 14:56:30 +02:00
Fred Tempez
229ef395db 2.11 gestion des images supprimées ou ajoutées au dossier 2020-04-16 14:15:49 +02:00
Fred Tempez
e02c2fd52f 0.10 correction getpathname -> getpath 2020-04-16 11:50:01 +02:00
Fred Tempez
3b501ce9cf [10.0.066] makeThumb filtre extension plutôt que type mime 2020-04-15 20:00:30 +02:00
Fred Tempez
905825b47a strtolower manquant 2020-04-15 19:59:28 +02:00
Fred Tempez
17471ed4e0 Libellés vignette 640 etc.. 2020-04-15 17:26:26 +02:00
Fred Tempez
768cb64c30 Merge branch 'dev10' of https://github.com/fredtempez/ZwiiCMS into dev10 2020-04-15 10:28:58 +02:00
Fred Tempez
579a47435b bannière par défaut 2020-04-15 10:28:53 +02:00
Fred
9c283ce0c3
Delete sitemap.xml.gz 2020-04-15 10:13:46 +02:00
Fred
b03dcaa5ac
Delete sitemap.xml 2020-04-15 10:13:39 +02:00
Fred
4900188ab9
Delete robots.txt 2020-04-15 10:13:30 +02:00
Fred Tempez
d06794d5dc Gallery 0.8 : tri manuel sans déplacement effectué 2020-04-14 23:18:58 +02:00
Fred Tempez
46708cbca1 gallery 0.6 Tri manuel sans déplacement -> passe en tri alpha 2020-04-14 14:13:12 +02:00
Fred Tempez
2568479ad8 Ne pas découper les noms de fichiers dans les id 2020-04-14 13:59:51 +02:00
Fred Tempez
aee4952dfd Ne pas découper les noms de fichiers avec des _ 2020-04-14 13:44:06 +02:00
Fred Tempez
9d4784db42 Miniature de couverture définie par défaut 2020-04-14 13:36:03 +02:00
Fred Tempez
2e6ce91b9b Default data footer 2020-04-13 19:05:36 +02:00
Fred Tempez
bca9cbfe02 Numérotation dév de la galerie 2.5 -> 2.05 2020-04-13 18:58:40 +02:00
Fred Tempez
ae682377d3 Création de la miniature RFM si absente (upload FTP) pour l'édition de la galerie 2020-04-13 18:58:09 +02:00
Fred Tempez
ed83251e9a makeThumb, dossiers récursifs 2020-04-13 18:53:06 +02:00
Fred Tempez
3356a5bd76 [10.0.064] Mise à jour simplelightbox 2020-04-13 18:30:30 +02:00
Fred Tempez
ea2085d584 [2.4] Constantes de tri - pas de tri dans la création de galerie dans la config 2020-04-13 18:13:01 +02:00
Fred Tempez
bc0185729c gitignore 2020-04-13 15:01:20 +02:00
Fred Tempez
30e0b0c425 Data par défaut 2020-04-13 15:00:57 +02:00
Fred Tempez
8d79dc3491 [2.4] incohérence nom fichier et nom de la couverture 2020-04-13 15:00:38 +02:00
Fred Tempez
9b141bda45 [10.0.063] suppresion option ouverture d'une page dans lity cause pb de thème. 2020-04-13 09:46:19 +02:00
Fred Tempez
345dc0e169 [10.0.063] suppresion option ouverture d'une page dans lity cause pb de thème. 2020-04-13 09:40:23 +02:00
Fred Tempez
a2c7e3e270 062 Mise à jour galerie 2020-04-12 19:32:39 +02:00
Fred Tempez
7ea47bd69c Edition de la galerie lien sur les mini vignettes en grande taille 2020-04-12 19:31:43 +02:00
Fred Tempez
8afb95689c Pb ordre et tri 2020-04-12 19:21:39 +02:00
Fred Tempez
0e182ce5ab Désactiver les icônes de tri dans l'édition des images de la galerie 2020-04-12 18:49:42 +02:00
Fred Tempez
2d010b36f2 Tri des galeries modifié après édition d'une galerie 2020-04-12 10:09:38 +02:00
Fred Tempez
564089b598 [10.0.061] Thème site : Valider -> bouton 2020-04-11 20:06:11 +02:00
Fred Tempez
ab619ab0be gallery 2.3 désactivation du drag and drop incomplet si pas de tri manuel 2020-04-11 20:03:59 +02:00
Fred Tempez
54a888f25e Gallery 2.3 message d'erreur si pas d'image 2020-04-11 20:03:29 +02:00
Fred Tempez
b79138e15e Gallery 2.3 bug image de couverture création d'une galerie de zéro 2020-04-11 20:03:06 +02:00
Fred Tempez
e5e0f2c471 [10.0.060] Optimisation du code de création des images mini 2020-04-11 15:16:50 +02:00
Fred Tempez
a3d0f7ac71 [10.0.060] Optimisation du code de création des images mini 2020-04-11 15:08:56 +02:00
Fred Tempez
6eb697e427 Gallery : upload par ftp, dossier miniature non créé. 2020-04-11 14:33:10 +02:00
Fred Tempez
72d5f46353 Image par défaut de la gallery 2020-04-10 16:10:44 +02:00
Fred Tempez
77230ab03f Gallery renommée -> erreur 2020-04-10 15:57:51 +02:00
Fred Tempez
7ddc7bc90a galeries par défaut 2020-04-10 15:36:14 +02:00
Fred Tempez
0b4ce70555 Réorganisation écran gestion des images 2020-04-09 23:12:15 +02:00
Fred Tempez
fc3b40eab4 Supprimer le formulaire inutile 2020-04-09 22:56:12 +02:00
Fred Tempez
7ae925e3dc v2.2 2020-04-09 22:53:51 +02:00
Fred Tempez
c2f68a4716 Supprimer le bouton trier 2020-04-09 22:53:24 +02:00
Fred Tempez
514c1d31b7 Tri des galeries : activation du bouton pb sur Chrome 2020-04-09 21:53:02 +02:00
Fred Tempez
2ba13c89b8 Update v9 2020-04-09 10:03:20 +02:00
Fred
987d03845d
Delete nebula.jpg 2020-04-09 09:30:45 +02:00
Fred
2ea7a4ad77
Delete earth.jpg 2020-04-09 09:30:40 +02:00
Fred
c64ccde509
Delete cosmos.jpg 2020-04-09 09:30:34 +02:00
Fred
e20c5487ce
Add files via upload 2020-04-09 09:29:48 +02:00
Fred
73ecc66869
Create t 2020-04-09 09:29:02 +02:00
Fred
51582b90ca
Delete space 2020-04-09 09:28:35 +02:00
Fred
2b3c36e4d2
Create space 2020-04-09 09:28:24 +02:00
Fred Tempez
3174d01518 annulation ancres 2020-04-09 08:47:51 +02:00
Fred Tempez
b44ef817e8 Rafraichissement forcé 2020-04-08 22:22:40 +02:00
Fred Tempez
193843ae14 Cosmétique 2020-04-08 21:10:13 +02:00
Fred Tempez
179f27270c Tri des images WIP 2020-04-08 17:46:29 +02:00
Fred Tempez
638606c87a Tri des images WIP 2020-04-07 19:08:24 +02:00
Fred
1106c74c9f
Delete t 2020-04-07 17:47:01 +02:00
Fred
9ba587177e
Add files via upload 2020-04-07 17:46:23 +02:00
Fred
dc8216217d
Create t 2020-04-07 17:44:21 +02:00
Fred Tempez
75afa19e1b Images par défaut avec les droits 2020-04-07 17:40:53 +02:00
Fred Tempez
c2ca2718e6 Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2020-04-07 17:36:27 +02:00
Fred Tempez
8a7377bfba [9.2.28] Compatibilité user edit module système avec module auto inscription 2020-04-07 17:36:24 +02:00
Fred Tempez
84c3cb72c0 059 filtrage des users en cours d'inscriptions dans module systeme user 2020-04-07 17:22:49 +02:00
Fred Tempez
179c1b5ca0 059 User edit Autorisations est masqué quand inutile 2020-04-07 17:15:13 +02:00
Fred Tempez
4e27765e12 Liste des modules de page Aucun toujours en tête 2020-04-07 10:41:41 +02:00
Fred Tempez
04c8f207b1 Merge branch 'dev10' of https://github.com/fredtempez/ZwiiCMS into dev10 2020-04-07 10:17:48 +02:00
Fred Tempez
630a63185a [10.0.058] Miniature du blog 2020-04-07 10:17:42 +02:00
Fred
dadac0a5ee
Delete mini_nebula.jpg 2020-04-07 09:30:22 +02:00
Fred
fb1dc88fec
Delete mini_earth.jpg 2020-04-07 09:30:17 +02:00
Fred
b176e47df1
Delete mini_cosmos.jpg 2020-04-07 09:30:11 +02:00
Fred
56cf213e41
Delete mini_nebula.jpg 2020-04-07 09:29:09 +02:00
Fred
5f8c692324
Delete mini_earth.jpg 2020-04-07 09:29:07 +02:00
Fred
21e7bfaa97
Delete mini_cosmos.jpg 2020-04-07 09:29:04 +02:00
Fred
b77c4571d2
Delete mini_meadow.jpg 2020-04-07 09:28:32 +02:00
Fred
ae64c1075a
Delete mini_iceberg.jpg 2020-04-07 09:28:24 +02:00
Fred
de001c5685
Delete mini_desert.jpg 2020-04-07 09:27:54 +02:00
Fred Tempez
3226e9f37f [10.0.058] Création des mini_ à la volée 2020-04-07 09:22:38 +02:00
Fred Tempez
1e87818a41 [10.0.057] Mise à jour récursive des miniatures. Taille width 320 2020-04-06 17:06:22 +02:00
Fred Tempez
f5aeb60236 [10.0.057] Mise à jour récursive des miniatures. Taille width 320 2020-04-06 17:02:46 +02:00
Fred Tempez
12dc91c986 Changes 2020-04-06 14:43:56 +02:00
Fred Tempez
335dc84064 Mini_ thumb 480 plutôt que 640 + auto - crop 2020-04-06 14:32:57 +02:00
Fred Tempez
b7022af095 [10.0.056] Erreur click galerie à trier + aperçu cliquable 2020-04-06 14:30:26 +02:00
Fred Tempez
c0c3d22d77 [10.0.056] Erreur click galerie à trier 2020-04-06 14:17:25 +02:00
Fred Tempez
44f861290c [10.0.055] version 2020-04-06 10:30:07 +02:00
Fred Tempez
d825de7b6c [10.0.055] Aperçu dans gallery 2020-04-06 10:14:52 +02:00
Fred Tempez
96a8e2993f [10.0.054] conversion des miniatures 2020-04-06 10:05:27 +02:00
Fred Tempez
543c4911da [10.0.053] Création des miniatures pour les galeries existantes WIP 2020-04-06 09:41:02 +02:00
Fred Tempez
bf9ba87c37 [10.0.052] RFM éditeur image actif + mise à jour config 2020-04-06 07:14:52 +02:00
Fred Tempez
f1e5ae5367 Edition des images d'une galerie, aperçu 2020-04-05 19:00:02 +02:00
Fred Tempez
4111ae6270 Gallery , mettre à jour la couverture import v9 2020-04-05 18:59:17 +02:00
Fred Tempez
77d4fcbdd8 couverture gallery v9 à v10 fix 2020-04-05 18:22:48 +02:00
Fred Tempez
ca2b7dda60 Merge branch 'dev10' of https://github.com/fredtempez/ZwiiCMS into dev10 2020-04-05 18:05:28 +02:00
Fred Tempez
d235f78689 homePicture et miniatures dans la galerie WIP 2020-04-05 18:02:34 +02:00
Fred
3681670b36
Add files via upload 2020-04-05 17:35:50 +02:00
Fred
64104f59f2
Add files via upload 2020-04-05 17:34:29 +02:00
Fred
8edc2d7ced
Add files via upload 2020-04-05 17:33:35 +02:00
Fred Tempez
232e0312fc Données par défaut galerie v10 2020-04-05 17:23:53 +02:00
Fred Tempez
328fdeef71 Mise à jour image de couverture v9 2020-04-05 17:23:21 +02:00
Fred Tempez
eda235904e [10.0.051] Bouton module pour les sous-pages 2020-04-05 16:40:35 +02:00
Fred Tempez
92a0e76625 [10.0.051] activer correctement les miniatures de la galerie L:640 2020-04-05 10:34:51 +02:00
Fred Tempez
213c922664 [10.0.050] Nom des modules en français 2020-04-04 19:15:32 +02:00
Fred Tempez
3b1bf1c777 Merge branch 'dev10_gallery_stock_v2' into dev10 2020-04-04 16:22:07 +02:00
Fred Tempez
6330400c63 Libellés + optimisation 2020-04-04 16:13:03 +02:00
Fred Tempez
e11fc3d101 parametre template::table et édition de galerie 2020-04-04 15:58:09 +02:00
Fred Tempez
ab8f5b5dca parametre template::table et édition de galerie 2020-04-04 15:56:46 +02:00
Fred Tempez
8b864fe9f9 parametre template::table et édition de galerie 2020-04-04 15:54:19 +02:00
Fred Tempez
869bff6a36 Order -> position 2020-04-04 10:27:14 +02:00
fredtempez
b27d3dfaae Texte fenêtre de déconnexion 2020-04-04 00:23:20 +02:00
fredtempez
17985b3514 fix showstyle redondant 2020-04-03 23:53:40 +02:00
fredtempez
27136da82b css manquant 2020-04-03 23:50:35 +02:00
fredtempez
c246020a79 [10.0.049] mise à jour gallery v2 dans v10 et non v9227 2020-04-03 18:58:30 +02:00
fredtempez
067b4c56f9 Default data 2020-04-03 18:54:43 +02:00
fredtempez
c66f28027b erreur installation default 2020-04-03 18:50:44 +02:00
Fred Tempez
599fd49fa6 Readme 2020-04-03 17:14:42 +02:00
Fred Tempez
5b440c8700 [10.0.048] bouton moduile dans barre admin 2020-04-03 15:22:44 +02:00
Fred Tempez
1d94e5015f JS vide 2020-04-02 22:57:47 +02:00
Fred Tempez
2053074e0b Adaptation v10 2020-04-02 22:32:46 +02:00
Fred Tempez
779a864761 Merge branch 'gallery_stock_v2' into dev10_gallery_stock_v2 2020-04-02 22:11:37 +02:00
Fred Tempez
bb80657c93 Merge branch 'master' into gallery_stock_v2 2020-04-02 21:44:07 +02:00
Fred Tempez
8c58135cda [9.2.27] data version 2020-04-02 21:42:32 +02:00
Fred Tempez
44736d8979 Merge branch 'master' into dev10 2020-04-02 21:41:18 +02:00
Fred Tempez
f3926d2832 Merge branch 'master' into gallery_stock_v2 2020-04-02 21:38:56 +02:00
Fred Tempez
e726f446e4 [9.2.27] Pb de mise à jour 2020-04-02 21:30:54 +02:00
Fred Tempez
cc29d14c07 Merge branch 'master' into dev10 2020-04-02 19:09:39 +02:00
Fred Tempez
c460cb0bed merge master 2020-04-02 19:05:10 +02:00
Fred Tempez
dba71ce796 Merge branch 'master' into gallery_stock_v2 2020-04-02 19:03:59 +02:00
Fred Tempez
ab75b904a4 Version 2020-04-02 18:48:47 +02:00
Fred Tempez
62341aed8c [9.2.27] Changes 2020-04-02 18:32:53 +02:00
Fred Tempez
5cfea185de Tris dans l'index manquant 2020-04-01 16:40:37 +02:00
Fred Tempez
d3b07ddb88 Largeur tableau 2020-04-01 13:47:37 +02:00
Fred Tempez
2c0f96ee05 Gallery 2.0 : formulaire non séparé 2020-04-01 13:43:15 +02:00
Fred Tempez
4b7626ea91 Merge branch 'master' into dev10 2020-03-31 12:49:03 +02:00
Fred Tempez
06c42aa8d6 Merge branch 'master' into gallery_stock_v2 2020-03-31 12:47:23 +02:00
Fred Tempez
82967f0e1b [9.3.00] nettoyer theme.css + gitignore 2020-03-31 12:46:02 +02:00
Fred Tempez
1af1553fc6 gitignore 2020-03-31 12:42:36 +02:00
Fred Tempez
2f94b27fc8 Merge branch 'master' into dev10 2020-03-31 10:11:02 +02:00
Fred Tempez
55a2dc887f Merge branch 'master' into gallery_stock_v2 2020-03-30 18:10:45 +02:00
Fred Tempez
cc9fa44052 [9.3.0] Couleurs de fond des champs de formulaire 2020-03-30 18:08:17 +02:00
Fred Tempez
2f2f0c10d5 [9.3.00] nettoyage 2020-03-28 19:32:52 +01:00
Fred Tempez
f4902bfed7 [9.3.00] nettoyage 2020-03-28 19:31:22 +01:00
Fred Tempez
1ec6fa2d96 Merge branch 'master' into dev10 2020-03-28 18:15:01 +01:00
Fred Tempez
c2d3fccff4 Merge branch 'master' into gallery_stock_v2 2020-03-28 18:14:33 +01:00
Fred Tempez
4892c0f798 [9.3.00] pointillés foxus menu 2020-03-28 18:13:58 +01:00
Fred Tempez
f768d40fd6 Merge branch 'master' into dev10 2020-03-28 17:57:06 +01:00
Fred Tempez
a7c4f5cbf3 Merge branch 'master' into gallery_stock_v2 2020-03-28 17:56:13 +01:00
Fred Tempez
92c1acb8f4 [9.3.00] couleur des boutons retour admin et thème 2020-03-28 17:55:51 +01:00
Fred Tempez
adb688c6fe [9.3.00] ne me lisez pas ! 2020-03-28 17:42:56 +01:00
Fred Tempez
538fd38bbb Merge branch 'master' into dev10 2020-03-28 17:37:36 +01:00
Fred Tempez
6c4433b6a1 Merge branch 'master' into gallery_stock_v2 2020-03-28 17:35:25 +01:00
Fred Tempez
29851a51f1 [9.3.00] Sélecteur de pages barre admin 2020-03-28 17:34:59 +01:00
Fred Tempez
9f86fe4c9a [9.3.00] thème pages admin en mode réécriture, corrections dans tinymce 2020-03-28 16:24:42 +01:00
Fred Tempez
b1ac2afb2e Merge branch 'master' into gallery_stock_v2 2020-03-28 10:20:29 +01:00
Fred Tempez
79940a7393 Initialisation des champs galerie version inférieure 2020-03-28 10:16:59 +01:00
Fred Tempez
a81ac29e00 [9.3.00] CSS inutile (buttongrey) 2020-03-28 09:45:26 +01:00
Fred Tempez
c9ba833698 Merge branch 'master' into gallery_stock_v2 2020-03-27 19:09:57 +01:00
Fred Tempez
45b200aa4a [9.3.00] correction CSS + préparation galerie 2.0 2020-03-27 19:04:39 +01:00
Fred Tempez
e4c4af5e1f Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2020-03-27 19:01:44 +01:00
Fred Tempez
5b122b167b [9.3.0] Couleur des boutons gris admin 2020-03-27 19:01:39 +01:00
Fred Tempez
5d8ad82ad6 Vérification erreur de saisie nom gallerie WIP 2020-03-27 18:58:47 +01:00
Fred Tempez
9d059aa01b Merge branch 'master' into gallery_stock_v2 2020-03-27 15:10:55 +01:00
Fred
58f20b59d7
Delete .gitignore 2020-03-27 15:07:05 +01:00
Fred Tempez
e3da2f3dba Gallery v2 init 2020-03-27 15:06:35 +01:00
Fred Tempez
5329511c70 Merge branch 'master' into dev10 2020-03-24 18:25:37 +01:00
Fred Tempez
339b06f221 [9.2.26] droits 2020-03-24 18:22:45 +01:00
Fred Tempez
ea7b997551 Merge branch 'master' into dev10 2020-03-24 17:53:52 +01:00
Fred Tempez
d8daa26b32 [9.2.26] nettoyage 2020-03-24 17:49:52 +01:00
Fred Tempez
932b78650a manque récupération données ajax 2020-03-24 17:48:54 +01:00
Fred Tempez
9ad9672a12 Merge branch 'master' into dev10 2020-03-23 18:05:45 +01:00
Fred Tempez
6d200124fd gallery nettoyage code 2020-03-23 18:04:06 +01:00
Fred Tempez
f42f0745ea gallery master 2020-03-23 17:53:43 +01:00
Fred Tempez
a137f5e962 [9.2.26] Suppression de commentaires 2020-03-23 17:42:22 +01:00
Fred Tempez
21ca53c9b0 Revert "Update gallery.css"
This reverts commit 64157f89f2.
2020-03-23 17:37:07 +01:00
Fred Tempez
e09cbf2e80 Revert "Update gallery.php"
This reverts commit 5c157189f7.
2020-03-23 17:36:56 +01:00
Fred
50b54f93ed
Merge pull request #5 from brunoduc/brunoduc-patch-2
Brunoduc patch 2
2020-03-23 17:31:44 +01:00
brunoduc
5c157189f7
Update gallery.php
Optimisation de l'affichage des photos sur de petits écrans en mode portrait et paysage. Plus "responsive desgin".
2020-03-23 16:38:34 +01:00
brunoduc
64157f89f2
Update gallery.css
Optimisation de l'affichage des photos sur de petits écran en mode portrait et paysage. Plus "responsive desgin".
2020-03-23 16:33:22 +01:00
Fred Tempez
89c5b3e535 Merge branch 'master' into dev10 2020-03-23 16:27:36 +01:00
Fred Tempez
6cad85c285 Version 2020-03-23 16:27:32 +01:00
Fred Tempez
fc7bfdd316 [9.2.26] étendre constantes 2020-03-23 16:16:45 +01:00
Fred Tempez
ee010b9dae Merge branch 'master' into dev10 2020-03-23 10:45:37 +01:00
Fred Tempez
215adf465d [9.2.26] fenetre login 2020-03-23 10:45:21 +01:00
Fred Tempez
c80d42a571 Merge branch 'master' into dev10 2020-03-23 10:39:06 +01:00
Fred Tempez
8dac462e79 [9.2.26] import style admin 2020-03-23 10:36:50 +01:00
Fred Tempez
7422df69fa [9.2.26] Position du menu lorsque le header est modifié 2020-03-23 10:34:53 +01:00
Fred Tempez
b1a411f8e7 [9.2.26] Suppression d'espaces 2020-03-23 10:25:41 +01:00
fredtempez
cd3d1d114b [9.2.26] marge de la barre d'admin 2020-03-23 10:01:12 +01:00
Fred Tempez
2fdb566fe1 Merge branch 'master' into dev10 2020-03-22 16:45:43 +01:00
Fred Tempez
d1783de185 [9.2.26] fix erreur de langue dans code mirror 2020-03-22 16:38:03 +01:00
Fred Tempez
6353f3a330 Merge branch 'master' into dev10 2020-03-22 16:09:27 +01:00
Fred Tempez
00a0ba769d [9.2.26] hover boutons admin 2020-03-22 16:08:34 +01:00
Fred Tempez
bc1fa8c53f [9.2.26] hover sur les boutons page admin 2020-03-22 16:06:43 +01:00
Fred Tempez
03d7a2db8e Merge branch 'master' into dev10 2020-03-22 15:44:53 +01:00
Fred Tempez
80398eca7f [9.2.26] Aperçu texte des boutons 2020-03-22 15:44:29 +01:00
Fred Tempez
78a602b208 Merge branch 'master' into dev10 2020-03-22 15:34:38 +01:00
Fred Tempez
eeacf5494d [9.2.26] changes 2020-03-22 15:30:45 +01:00
Fred Tempez
9666e482e8 [9.2.26] Tinymce : menu sticky 2020-03-22 15:29:15 +01:00
Fred Tempez
d25a42f07d Merge branch 'master' into dev10 2020-03-21 18:30:26 +01:00
Fred Tempez
c16a5bfac1 [9.2.26] changes 2020-03-21 18:28:57 +01:00
Fred Tempez
797e670c44 Merge branch 'master' into dev10 2020-03-21 18:18:01 +01:00
Fred Tempez
6527d0c03a [9.2.26] classe buttonBlue supprimée 2020-03-21 18:17:43 +01:00
Fred Tempez
7e6cffd19a Merge branch 'master' into dev10 2020-03-21 18:09:59 +01:00
Fred Tempez
d5065cde88 Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2020-03-21 18:08:10 +01:00
Fred Tempez
5adf44aeff [9.2.26] Thème admin + arrièreplan TinyMCE 2020-03-21 18:08:04 +01:00
Fred
8fdf0b9d8f
Merge pull request #3 from brunoduc/brunoduc-patch-1
add gpx and kml extention
2020-03-21 09:15:09 +01:00
Fred Tempez
6de8c27ce0 [9.2.26] thème des modules + oprimisation js edition page 2020-03-20 15:59:52 +01:00
Fred Tempez
23aa89069e [9.2.26] suppression ligne en trop 2020-03-20 15:08:10 +01:00
Fred Tempez
bb48004701 [9.2.26] Fix 2 background image dans tinymce 2020-03-20 15:04:54 +01:00
Fred Tempez
111263ba91 Merge branch 'master' into dev10 2020-03-20 09:12:42 +01:00
Fred Tempez
aaf380ae21 [9.2.26] fix arrièreplan TinyMCE 2020-03-20 08:57:11 +01:00
brunoduc
4f4f94e858
add gpx and kml extention
For use with map.
2020-03-19 18:07:00 +01:00
Fred Tempez
72c4681512 Merge branch 'master' into dev10 2020-03-19 12:18:57 +01:00
Fred Tempez
70bc030cd2 Changes 2020-03-19 12:13:20 +01:00
Fred Tempez
f0b82ce262 Merge branch 'dev10' of https://github.com/fredtempez/ZwiiCMS into dev10 2020-03-19 11:14:54 +01:00
Fred Tempez
9e618dc123 Installation par défaut 2020-03-19 11:13:39 +01:00
Fred Tempez
031df8993d Installation par défaut 2020-03-19 11:12:59 +01:00
Fred Tempez
f8a3a365b6 Merge branch 'master' into dev10 2020-03-16 18:55:58 +01:00
Fred Tempez
bfb93cddd1 [9.2.25] css site 2020-03-16 18:36:04 +01:00
Fred Tempez
375a98e957 Merge branch 'master' into dev10 2020-03-16 16:24:49 +01:00
Fred Tempez
90a84b7084 [9.2.25] Fix style site 2020-03-16 16:24:25 +01:00
Fred Tempez
0ed05e545f Merge branch 'master' into dev10 2020-03-16 15:29:13 +01:00
Fred Tempez
01b5f3458a [9.2.25] Thème menu monter la boite fonte pour faciliter la prévisualition 2020-03-16 15:27:53 +01:00
Fred Tempez
0c65fc56bb [9.2.25] Thème des pages d'admin 2020-03-16 15:25:31 +01:00
Fred Tempez
dc55de352b Merge branch 'master' into dev10 2020-03-16 10:40:40 +01:00
Fred Tempez
1496712bcf [9.2.25] https font google dans le select 2020-03-16 10:39:36 +01:00
Fred Tempez
d8eb134eba Merge branch 'master' into dev10 2020-03-16 10:21:27 +01:00
Fred Tempez
8c4ebad69a [9.2.25] Preview du site 2020-03-16 10:20:25 +01:00
Fred Tempez
2615198d7a [9.2.25] Preview footer ok 2020-03-16 08:59:10 +01:00
Fred Tempez
d25d319802 [9.2.25] Couleur administration neutre 2020-03-15 20:53:13 +01:00
Fred Tempez
b015d2894f Double déclaration news css 2020-03-15 17:53:56 +01:00
Fred Tempez
b443b22456 Merge branch 'master' into dev10 2020-03-15 17:48:06 +01:00
Fred Tempez
5816b3da36 [9.2.25] news signature et date couleurs dans default custom 2020-03-15 17:47:32 +01:00
Fred Tempez
1ff39b7f1d [9.2.25] news index style vide 2020-03-15 17:38:44 +01:00
Fred Tempez
7b654184c1 Merge branch 'master' into dev10 2020-03-15 17:33:13 +01:00
Fred Tempez
cfff2132c5 [9.2.25] Styles news dans common 2020-03-15 17:32:08 +01:00
Fred Tempez
73b612365f [9.2.25] Changes 2020-03-15 17:23:26 +01:00
Fred Tempez
0caaa2c10e Merge branch 'master' into dev10 2020-03-15 17:11:07 +01:00
Fred Tempez
21aecaf825 [9.2.25] Tinymce barre d'outils 2020-03-15 17:09:56 +01:00
Fred Tempez
257f836d4f Merge branch 'master' into dev10 2020-03-15 17:06:24 +01:00
Fred Tempez
72c727e773 [9.2.25] footer zindex under cookie concent 2020-03-15 17:04:41 +01:00
fredtempez
d7ea320daa merge master 2020-03-15 08:49:22 +01:00
fredtempez
cedf04e68c [9.2.25] tinymce menu barre outils 2020-03-15 08:44:46 +01:00
fredtempez
e8c630c21a [9.2.25] Décalage site SLB 2020-03-15 08:44:24 +01:00
fredtempez
446734949b [9.2.25] alléger codemirror 2020-03-14 19:12:11 +01:00
fredtempez
5f3d285452 [9.2.25]css body à cause de la galerie 2020-03-14 18:01:42 +01:00
fredtempez
49ced158a2 [9.2.25] nettoyage code mirror 2020-03-14 17:00:36 +01:00
Fred Tempez
321115bdc1 Merge branch 'master' into dev10 2020-03-14 10:32:40 +01:00
Fred Tempez
977a6f2a08 [9.2.25] arrièreplan ligne dans le curseur 2020-03-14 10:32:17 +01:00
Fred Tempez
91f998a602 Merge branch 'master' into dev10 2020-03-14 10:14:25 +01:00
Fred Tempez
7863ef5c8f [9.2.25] changes 2020-03-14 10:12:52 +01:00
Fred Tempez
5acfbdf787 [9.2.25] Codemirror dans Tinymce 2020-03-14 10:11:51 +01:00
Fred Tempez
99ecba2112 [9.2.24] codemirror standalone fix 2020-03-13 18:34:24 +01:00
fredtempez
6894c73f21 merge master 2020-03-12 19:28:10 +01:00
fredtempez
b9571c6ed7 [9.2.25] changes 2020-03-12 19:19:29 +01:00
fredtempez
7614f7b1b0 [9.2.25] config modiliée slb 2020-03-12 19:16:12 +01:00
Fred Tempez
2bf6880060 Css module de news 2020-03-12 14:54:53 +01:00
Fred Tempez
41c0e7e77e [10.0.043] version 2020-03-12 11:08:43 +01:00
Fred Tempez
589fe23b5c [10.0.043] SLB gallery 2020-03-12 11:06:41 +01:00
fredtempez
88b2948057 10.0.042 2020-03-12 10:15:26 +01:00
Fred Tempez
e5a128bdb5 Merge branch 'master' into dev10 2020-03-12 09:35:37 +01:00
Fred Tempez
2562138de5 [9.2.24] erreur thème menu : marge gauche 2020-03-12 09:35:18 +01:00
Fred Tempez
516946a608 Merge branch 'master' into dev10 2020-03-12 09:14:06 +01:00
Fred Tempez
a429a0c1c3 [9.2.24] décalage écran affichage SLB 2020-03-12 09:13:10 +01:00
Fred Tempez
559157ecc6 Merge branch 'dev10' of https://github.com/fredtempez/ZwiiCMS into dev10 2020-03-12 08:52:13 +01:00
Fred Tempez
d870722c3a Merge branch 'master' into dev10 2020-03-12 08:51:23 +01:00
Fred Tempez
88ff8c6449 Changes.md 2020-03-12 08:49:58 +01:00
fredtempez
a1b19d0032 merge master 2020-03-11 21:44:37 +01:00
fredtempez
3ca659b276 Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2020-03-11 21:43:06 +01:00
fredtempez
566f352317 [9.2.24] fix problème simplelightbox 2020-03-11 21:42:59 +01:00
fredtempez
d48c6f776c Merge branch 'dev10' of https://github.com/fredtempez/ZwiiCMS into dev10 2020-03-11 19:00:25 +01:00
fredtempez
2229a11db7 [10.0.142] Tinymce insertion de code + coloration 2020-03-11 19:00:13 +01:00
fredtempez
a15f1ce1c8 [10.0.042] fix 2020-03-11 18:59:35 +01:00
Fred Tempez
74cb38d69c Merge branch 'master' into dev10 2020-03-10 09:59:44 +01:00
Fred Tempez
4e7aa22cd2 changes 2020-03-10 09:57:36 +01:00
Fred Tempez
02f319eeda Merge branch 'master' into dev10 2020-03-09 17:07:14 +01:00
Fred Tempez
7e0a48d150 [9.2.23] Problèmes divers avec thème menu 2020-03-09 17:05:39 +01:00
fredtempez
c8040983a6 WIP 2020-03-08 18:19:52 +01:00
fredtempez
b3595f144c Merge branch 'Tri_gallerie' of https://github.com/fredtempez/ZwiiCMS into Tri_gallerie 2020-03-08 17:04:38 +01:00
fredtempez
c7a7ded396 [9.2.23] Warning SLB 2020-03-08 16:55:55 +01:00
Fred Tempez
cfc044a9f3 Texte au lieu de select 2020-03-08 14:57:42 +01:00
Fred Tempez
b6839bc0ac init WIp 2020-03-08 14:56:10 +01:00
Fred Tempez
91ddf5a0f3 Merge branch 'master' into dev10 2020-03-06 21:32:36 +01:00
Fred Tempez
eabac93f1f changes 2020-03-06 21:32:22 +01:00
Fred Tempez
daefeaf3a9 changes 2020-03-06 21:31:58 +01:00
Fred Tempez
1392b371f6 Merge branch 'master' into dev10 2020-03-06 21:31:17 +01:00
Fred Tempez
b26a6fb09d Changes 2020-03-06 21:31:03 +01:00
Fred Tempez
0f683c6061 Merge branch 'master' into dev10 2020-03-06 21:21:05 +01:00
Fred Tempez
ba05ecd74a 10.0.041.rc 2020-03-06 21:20:54 +01:00
Fred Tempez
e5ab71be0a [9.2.23] burger animé 2020-03-06 21:18:34 +01:00
Fred Tempez
8797c166c6 Erreur defaultdata 2020-03-05 11:47:26 +01:00
Fred Tempez
4c399ecfe8 Merge branch 'master' into dev10 2020-03-05 11:46:56 +01:00
Fred Tempez
1dc451604b [9.2.23] simplelightbox update good version 2020-03-05 11:45:23 +01:00
Fred Tempez
a040c6aac0 [9.2.23] Tinymce barre d'outils 2020-03-04 20:36:52 +01:00
Fred Tempez
27beca355a [9.2.23] SimpleLightBox 2.1.0 2020-03-04 11:04:50 +01:00
Fred Tempez
c4e5a257d6 [9.2.23] fonction backup -> export 2020-03-03 15:08:18 +01:00
Fred Tempez
64f581ab7d Merge branch 'master' into dev10 2020-03-03 08:50:36 +01:00
Fred Tempez
bf1de5ae3c [9.2.23] Autoriser ICS dans RFM 2020-03-03 08:49:55 +01:00
Fred Tempez
66e46bec66 Erreur de nom de variable 2020-03-02 13:32:14 +01:00
Fred Tempez
1d93f10602 appels à Savedata() supprimés 2020-03-02 13:14:19 +01:00
Fred Tempez
f6b607248c Merge branch 'master' into dev10 2020-03-02 13:11:16 +01:00
Fred Tempez
7bba87fed9 [9.2.23] Proxy Web 2020-03-02 13:08:03 +01:00
Fred Tempez
f770c0d9e2 Merge branch 'master' into dev10 2020-03-02 11:52:52 +01:00
Fred Tempez
83801a175c Libellés 2020-03-02 11:43:55 +01:00
Fred Tempez
2e57893e08 Merge master 2020-03-02 11:38:50 +01:00
Fred Tempez
ba1f8e6b3d [9.2.23] Bouton de mise à jour forcée. 2020-03-02 11:22:18 +01:00
Fred Tempez
c1f6f60c06 Merge branch 'master' into dev10 2020-03-02 10:35:48 +01:00
Fred Tempez
f181aa9954 [9.2.23] autoupdate hebdo 2020-03-02 10:29:28 +01:00
fredtempez
f9e616aec1 Merge master 2020-03-01 19:01:15 +01:00
Fred Tempez
1ba2d9dec6 Merge branch 'dev10' of https://github.com/fredtempez/ZwiiCMS into dev10 2020-03-01 18:57:48 +01:00
Fred Tempez
c27d02d3c9 Icone dark 2020-03-01 18:57:40 +01:00
Fred
2769cc848d
Delete faviconDark.ico 2020-03-01 18:55:31 +01:00
Fred Tempez
2283822c1f Change 2020-03-01 18:53:27 +01:00
fredtempez
cd11cf45f5 Merge branch 'dev10' of https://github.com/fredtempez/ZwiiCMS into dev10 2020-03-01 18:11:23 +01:00
fredtempez
0d836021a5 [10.0.040.dev] favicone 2020-03-01 18:11:04 +01:00
Fred
c9ce1678d0
Add files via upload 2020-03-01 18:08:27 +01:00
Fred
63ce6b3fba
Add files via upload 2020-03-01 18:07:22 +01:00
fredtempez
36afbfcdc0 Modification config 2020-03-01 17:36:54 +01:00
fredtempez
bdcc2dceb6 Modification config 2020-03-01 17:31:15 +01:00
fredtempez
f79cd70b4a Libellés modifiées dans config 2020-03-01 17:18:59 +01:00
fredtempez
8c7efe9aa8 Merge master 9.2.23 2020-03-01 16:49:07 +01:00
fredtempez
e602d4df4c Merge master 9.2.23 2020-03-01 16:45:41 +01:00
fredtempez
1eb7895d63 [9.2.23] Llibellé 2020-03-01 16:44:49 +01:00
fredtempez
29ef1d5e68 Merge master 9.2.23 2020-03-01 16:43:09 +01:00
fredtempez
575e5f03a1 Merge master 9.2.23 2020-03-01 16:39:57 +01:00
fredtempez
61ae279f6d [9.2.23] sauvegarde auto 2020-03-01 16:36:50 +01:00
Fred Tempez
71057a387a [9.2.23] Mise à jour auto WIP 2020-03-01 16:04:59 +01:00
Fred Tempez
7d1b94f515 [9.2.23] Fix reply to email 2020-02-28 15:00:28 +01:00
Fred Tempez
953f9f06de fix reply to email 2020-02-28 14:58:50 +01:00
Fred Tempez
a49b3d0ef1 Merge branch 'master' into dev10 2020-02-28 14:27:56 +01:00
Fred Tempez
59b643fe63 [9.2.23] Libellé options de tri 2020-02-28 14:27:24 +01:00
Fred Tempez
0ef87983f3 [9.2.23] Galerie: position de l'option de tri des images 2020-02-28 14:26:12 +01:00
Fred Tempez
d548ef117a [9.2.23] Galerie: position de l'option de tri des images 2020-02-28 14:24:46 +01:00
fredtempez
d550401eba merge master 9.2.23 2020-02-27 16:03:26 +01:00
fredtempez
77851208d9 Merge master 9.2.23 2020-02-27 15:54:57 +01:00
fredtempez
e5b7dd441d [9.2.23] Bouton mise à jour en ligne 2020-02-27 15:49:32 +01:00
fredtempez
01f25d28e2 9.2.23 2020-02-26 23:48:45 +01:00
fredtempez
8abcb9f823 [9.2.23] fonction dépréciée et replyto dans form 2020-02-26 23:45:49 +01:00
fredtempez
61d9184d81 [9.2.23] 2020-02-26 23:36:15 +01:00
fredtempez
be0e7cd729 Merge branch 'master' into dev10 2020-02-23 17:51:34 +01:00
fredtempez
2564bad609 changes 2020-02-23 17:51:11 +01:00
fredtempez
70714be2ff [10.0.037.dev] canal de mise à jour 2020-02-23 17:44:44 +01:00
fredtempez
6df8a83677 Merge branch 'master' into dev10 2020-02-23 17:35:07 +01:00
fredtempez
26827bc531 [9.2.22] Optimisation + choix tri pdt création galerie 2020-02-23 17:32:39 +01:00
fredtempez
9cfa9a4e3a [9.2.22] optimisation du code 2020-02-23 12:09:52 +01:00
fredtempez
6bde927945 Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2020-02-23 12:09:09 +01:00
fredtempez
d4ce3526b9 [9.2.22] vignette album optimisation 2020-02-23 12:08:56 +01:00
fredtempez
6db5707da8 [9.2.22] vignette album optimisation 2020-02-23 12:08:14 +01:00
Fred Tempez
a720fe2611 [9.2.22] correction d'une adresse 2020-02-22 23:10:59 +01:00
Fred Tempez
ec5fd877da [9.2.22] Ajustement tri des images 2020-02-22 23:07:12 +01:00
Fred Tempez
8a746b3661 [9.2.22] Tri des images dans la galerie 2020-02-22 22:51:46 +01:00
Fred Tempez
108e0d3fbf [9.22.22] Supprimer les thèmes dans codemirror de tinymce 2020-02-22 22:23:49 +01:00
Fred Tempez
1e39da2b65 [9.2.22] Choix photo album 2020-02-22 22:18:49 +01:00
fredtempez
af371a97e8 [9.2.22] numéro de version du blog 2020-02-22 12:53:14 +01:00
fredtempez
6df2f5c998 [9.2.22] Position des boutons edition dans blog 2020-02-22 12:42:12 +01:00
Fred Tempez
c0a6832074 Merge branch 'master' into dev10 2020-02-20 20:54:09 +01:00
Fred Tempez
ebd1daeea4 Changes 2020-02-20 20:53:33 +01:00
Fred Tempez
8e1afc98ff no proxy cache 2020-02-20 20:16:11 +01:00
Fred Tempez
5827e7a916 Merge branch 'master' into dev10 2020-02-20 14:30:44 +01:00
Fred Tempez
cd041c4ee8 [9.2.22] Codemirror ok mais pb de path 2020-02-20 14:30:23 +01:00
Fred Tempez
09f355f57e Merge branch 'master' into dev10 2020-02-20 11:30:48 +01:00
Fred Tempez
b0e43ed737 [9.2.22] Code mirror modifications en cours 2020-02-20 11:29:27 +01:00
fredtempez
f66f230565 [9.2.22] update channel fix 2020-02-19 09:59:17 +01:00
fredtempez
ee6b176784 [9.2.22] channel update 2020-02-19 09:55:51 +01:00
Fred Tempez
8bc15e54f3 [10.0.036.dev] fix aperçu des polices 2020-02-18 15:28:33 +01:00
Fred Tempez
12b8bf2ca5 [9.2.22] aperçu des polices fix 2020-02-18 15:26:55 +01:00
Fred Tempez
0d15efd316 Merge branch 'master' into dev10 2020-02-18 15:22:48 +01:00
Fred Tempez
01c71be0be [9.2.22] aperçu de la police dans les sélecteurs 2020-02-18 15:20:21 +01:00
Fred Tempez
26063d9b4b [10.0.036.dev] version aperçu police dans select 2020-02-18 15:11:10 +01:00
Fred Tempez
7b67951714 [10.0.036.dev] Aperçu des polices dans les sélecteurs 2020-02-18 15:07:57 +01:00
Fred Tempez
61e22d4831 [10.0.035.dev] Auto update ; génère un backup de data 2020-02-18 11:18:27 +01:00
Fred Tempez
9b9353adbb [10.0.034.dev] annulation dernier commit 2020-02-18 11:05:42 +01:00
Fred Tempez
6be6a39a1a [10.0.034.dev] canal de mise à jour WIP 2020-02-17 18:20:44 +01:00
Fred Tempez
eff8baf506 [10.0.033.dev] compatbilité v9 saveData dummy 2020-02-17 18:10:04 +01:00
fredtempez
87e9cdf546 Merge master 9.2.21 2020-02-14 10:49:24 +01:00
fredtempez
88bf29bfb6 [9.2.21] changes 2020-02-14 10:43:34 +01:00
Fred Tempez
c556552bf0 Merge branch 'dev10' of https://github.com/fredtempez/ZwiiCMS into dev10 2020-02-13 11:12:20 +01:00
Fred Tempez
d02fd09b6c Merge master 2020-02-13 11:11:35 +01:00
Fred Tempez
91007c9515 Merge branch 'master' into dev10 2020-02-13 11:10:18 +01:00
Fred Tempez
b2284caae4 [9.2.21] paramètre icône back to top 2020-02-13 10:48:56 +01:00
fredtempez
92542e8085 merge master 2020-02-11 20:12:51 +01:00
fredtempez
b41d28b0c8 [9.2.21] correction définitive des br dans le footer 2020-02-11 20:10:43 +01:00
Fred Tempez
2aa012479c (9.2.20] petite erreur de syntaxe 2020-02-11 11:09:11 +01:00
Fred Tempez
8f8221c9e0 merge master 9.2.20 2020-02-11 11:08:04 +01:00
Fred Tempez
1a5428c671 Merge branch 'master' into dev10 2020-02-11 11:07:08 +01:00
Fred Tempez
851c8689f5 [9.2.20] mise en page des gabarits dans le footer + erreur dans main.php 2020-02-11 11:05:03 +01:00
fredtempez
37588f7739 [9.2.19] changes 2020-02-10 18:56:40 +01:00
fredtempez
c9b55d87d5 [9.2.19] typo 2020-02-10 18:51:28 +01:00
Fred Tempez
84c35abdbe [10.0.030.dev] restore backup ajustements 2020-02-10 17:04:25 +01:00
Fred Tempez
123b3c4c2f [9.2.19] corrections CSS et parge par défaut (mentions légales) 2020-02-10 16:42:02 +01:00
Fred Tempez
90946cf9f1 [10.0.030.dev] correction CSS + modification config / restore and backup 2020-02-10 16:36:57 +01:00
Fred Tempez
72c2ac151c Merge branch 'master' into dev10 2020-02-10 13:33:14 +01:00
Fred Tempez
c69230c97a [9.2.18] complément de la page des mentions légales 2020-02-10 13:32:33 +01:00
Prof Langues
1032877b50 [10.0.029.dev] suppression de warning lors d el'installation - faviconDark 2020-02-07 09:11:22 +01:00
Fred Tempez
e5a0fa0066 [10.0.028.dev] vocabulaire 2020-02-06 21:11:31 +01:00
Fred Tempez
d42cc357fd [10.0.028.dev] Backup revu et corrigé, reste option dossier data inclus ou pas 2020-02-06 21:04:56 +01:00
Fred Tempez
ca1e2ba5cb [10.0.027.dev] erreur de validation backup restaure 2020-02-06 19:18:01 +01:00
Fred Tempez
4e5f2e015c [10.0.026] Correction dasn config 2020-02-05 18:12:45 +01:00
Fred Tempez
966c2e5172 Merge branch 'master' into dev10 2020-02-05 17:58:03 +01:00
Fred Tempez
f766080bba [9.2.18] Données par défaut site exemple 2020-02-05 17:35:47 +01:00
Fred Tempez
3b3c6b5cdd Merge branch 'master' into dev10 2020-02-05 17:16:18 +01:00
Fred Tempez
e9b5fd9dca [9.2.18] changes 2020-02-05 17:16:02 +01:00
Fred Tempez
a3735b6223 Merge branch 'master' into dev10 2020-02-05 17:14:05 +01:00
Fred Tempez
ae4a7b0df0 [9.2.18] defaultdata user Youtube 2020-02-05 17:12:29 +01:00
Fred Tempez
464460c8cf Merge branch 'master' into dev10 2020-02-05 16:53:04 +01:00
Fred Tempez
e6ce520ea0 [9.2.18] Mentions légales dans le site de test 2020-02-05 16:47:43 +01:00
Fred Tempez
505db421ba Merge branch 'master' into dev10 2020-02-05 15:33:55 +01:00
Fred Tempez
b46a49eb01 [9.2.18] Correction de marges 2020-02-05 15:23:15 +01:00
Fred Tempez
89ba90e741 Merge branch 'master' into dev10 2020-02-04 16:53:17 +01:00
Fred Tempez
050d646a50 [9.2.18] Pied de page - options des mentions légales 2020-02-04 16:51:28 +01:00
Fred Tempez
6c283cebad Merge branch 'master' into dev10 2020-02-04 13:23:24 +01:00
Fred Tempez
de791a977a [9.2.17] Petites corrections 2020-02-04 13:17:38 +01:00
Fred Tempez
d5f15d97a9 Merge branch 'master' into dev10 2020-02-04 10:22:42 +01:00
Fred Tempez
7cc1f3bfef [9.2.18] marge du site footer fixe 2020-02-04 10:17:56 +01:00
Fred Tempez
c22ef52521 [9.2.18] élargir la marge inférieure du site quand le footer est fixe 2020-02-04 09:37:32 +01:00
Fred Tempez
2be54777ff Merge master 2020-02-03 13:03:40 +01:00
Fred Tempez
bf9709a4f2 [9.2.18] Numéro de version correct 2020-02-03 13:02:21 +01:00
Fred Tempez
5938c769db Merge branch 'master' into dev10 2020-02-02 19:18:40 +01:00
Fred Tempez
88c97e9bb1 [9.2.17] changes 2020-02-02 19:17:15 +01:00
Fred Tempez
fde0a2d0a1 Merge branch 'master' into dev10 2020-02-02 19:15:35 +01:00
Fred Tempez
3bb3f992ae [9.2.17] Fixed Body footer option 2020-02-02 19:14:57 +01:00
fredtempez
5c24951ac5 Merge branch 'master' into dev10 2020-02-02 12:10:51 +01:00
fredtempez
054244a2f6 [9.2.17] changes 2020-02-02 12:10:27 +01:00
fredtempez
c645dbe79c Merge branch 'master' into dev10 2020-02-02 12:03:26 +01:00
fredtempez
2641659d91 [9.2.17] conformité p dans span (footer) 2020-02-02 12:02:44 +01:00
fredtempez
88e3ccbd4c Merge branch 'master' into dev10 2020-02-02 11:44:04 +01:00
fredtempez
c6af3cfef9 [9.2.17] changes 2020-02-02 11:42:37 +01:00
fredtempez
17051b35d1 Merge master 2020-02-01 20:52:49 +01:00
fredtempez
7caa81450c [9.2.17] Youtube channel and user 2020-02-01 20:49:35 +01:00
Prof Langues
3e17e26028 Deux comptes youtube WIP 2020-01-31 12:19:13 +01:00
Prof Langues
c6a9fa9f28 Merge branch 'master' into dev10 2020-01-31 11:27:44 +01:00
Prof Langues
09d9ae219c [9.2.17] Body Image responsive 2020-01-31 11:24:00 +01:00
Fred Tempez
35e8542d6e [9.2.17] Petites corrections 2020-01-21 09:14:04 +01:00
Fred Tempez
64fd367086 Dates de version 2020-01-21 08:53:30 +01:00
Fred Tempez
8e691e1231 [10.0.025.dev] petites corrections 2020-01-21 08:52:42 +01:00
Fred Tempez
5c752c993e [10.0.025.dev] Erreurs de déclaration 2020-01-21 08:42:21 +01:00
fredtempez
810772d623 Merge branch 'master' into dev10 2020-01-08 18:00:19 +01:00
fredtempez
7fd49fd33d [9.2.17] fix breadcrumb 2020-01-08 17:58:13 +01:00
fredtempez
5cd2d71ea3 [10.0.024.dev] lazy loading 2020-01-07 10:15:16 +01:00
fredtempez
a06218bdaf Merge branch 'dev10' of https://github.com/fredtempez/ZwiiCMS into dev10 2020-01-02 19:35:19 +01:00
fredtempez
e679ebf1a3 [10.0.023.dev] Favicon switcher 2020-01-02 19:30:23 +01:00
Fred
260b9e13f0
Add files via upload 2020-01-02 18:18:06 +01:00
fredtempez
50aeb22034 merge master 2020-01-01 18:29:09 +01:00
fredtempez
06fbc269d2 [10.0.022] chargement paresseux des images 2020-01-01 18:23:23 +01:00
fredtempez
912d0e9bef [10.0.021.dev] Supprimer des commentaires 2019-12-25 11:17:22 +01:00
fredtempez
7183d0158f [10.0.021.dev] Conversion baseURL ok 2019-12-25 11:09:08 +01:00
fredtempez
f19094ba48 TEST convert URL 2019-12-23 20:58:30 +01:00
fredtempez
5b19187df4 changes 2019-12-23 20:51:02 +01:00
fredtempez
7208d38448 [9.2.16] changes 2019-12-23 20:19:57 +01:00
fredtempez
a42edcbb02 [9.2.16] save dataversion 2019-12-23 17:00:36 +01:00
Fred
679ba8b517
[10.0.020] Test 2019-12-23 10:49:57 +01:00
fredtempez
7eb5f82c67 [10.0.020.dev] function update url WIP 2019-12-22 19:10:16 +01:00
fredtempez
a66f710c75 Validation 2019-12-22 18:51:47 +01:00
fredtempez
d808c316d1 empty line 2019-12-22 18:51:06 +01:00
fredtempez
04b1d8ebcc Merge master 9.2.16 2019-12-22 18:33:58 +01:00
fredtempez
e6b367b1d8 [9.2.16] Changes 2019-12-22 18:31:13 +01:00
fredtempez
b620d710e8 [9.2.16] Stocke la base URL et la met à jour en cas de changement de réécriture 2019-12-22 18:28:57 +01:00
fredtempez
ff060094e0 [9.2.16] export : stocke la réécriture dans la baseurl 2019-12-22 18:11:56 +01:00
Fred Tempez
6a55c99291 [10.0.019.dev] présentation écran backup restore 2019-12-17 16:19:00 +01:00
Fred Tempez
0eacd56612 [10.0.018.dev] préserver comptes import 2019-12-17 16:04:40 +01:00
Fred Tempez
f70d77a25e [10.0.017.dev] importation revue 2019-12-17 10:34:34 +01:00
Fred Tempez
591f74543a Supprimer recursiveDirectoryIterator de config.php 2019-12-17 09:39:12 +01:00
Fred Tempez
867ce6569c [9.2.16] déclaration de variable 2019-12-17 09:34:53 +01:00
Fred Tempez
0c23b2024c [10.0.016.dev] optimisation fonction de conversion baseUrl 2019-12-17 09:23:38 +01:00
Fred Tempez
0a42877ecf merge master changes 2019-12-17 08:14:51 +01:00
Fred Tempez
27a3bdd085 (9.2.16] Optimisation backup manuel 2019-12-17 08:13:53 +01:00
Fred Tempez
89c4c7b3aa Nettoyage notranslate 2019-12-16 17:26:53 +01:00
Fred Tempez
fe5302be14 Fonction backup modifiée 2019-12-16 17:14:20 +01:00
Fred Tempez
432ded6bf6 Modif var backup 2019-12-16 17:13:44 +01:00
Fred Tempez
b3f58afb33 Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2019-12-16 17:13:05 +01:00
Fred Tempez
5c4bdddb21 Fonction backup avec exclusion tmp et backup 2019-12-16 17:12:33 +01:00
Fred Tempez
e87c5c492a Fonction backup avec exclusion tmp et backup 2019-12-16 17:11:40 +01:00
Fred Tempez
e87172682c (10.0.015.dev] 2019-12-16 14:09:46 +01:00
Fred Tempez
6144253853 [10.0.014.dev] backup nouvelle fonction 2019-12-16 13:16:13 +01:00
Fred Tempez
5419b3fa51 indentation 2019-12-16 12:23:25 +01:00
Fred Tempez
1b83c4bb5e Indentation 2019-12-16 12:20:41 +01:00
fredtempez
c307b5ad93 [10.0.013.dev] Déplacement jsondb 2019-12-15 11:30:04 +01:00
fredtempez
4b1a477320 [10.0.113.dev] sécurité dossier data + classes déplacées 2019-12-15 11:14:37 +01:00
fredtempez
6bb842c6a5 [10.0.013.dev] Classes externalisées 2019-12-15 10:47:18 +01:00
fredtempez
0ec33ae02c [10.0.012.dev] favicon et bannière livrés dans linstallation par défaut 2019-12-14 15:04:22 +01:00
fredtempez
ad4397351c Merge branch 'dev10' of https://github.com/fredtempez/ZwiiCMS into dev10 2019-12-14 13:28:08 +01:00
fredtempez
37e2526dd7 [10.0.009.dev] Homepage non sauvegardée 2019-12-14 13:26:19 +01:00
fredtempez
d98e0c67da [10.0.008.dev] fix couleur fond menu + banniere pans install 2019-12-14 13:24:13 +01:00
fredtempez
59c79f71cd [10.0.011.dev] supprimer update v8 2019-12-11 22:53:11 +01:00
fredtempez
623355c555 Libellés 2019-12-11 22:46:07 +01:00
fredtempez
ab26ff2cec (10.0.010.dev] version 2019-12-11 22:42:35 +01:00
fredtempez
933fd1be52 [10.0.010.dev] Libellés + sélection homepageId 2019-12-11 22:42:05 +01:00
fredtempez
f51c04b355 [10.0.009.dev] éviter les erreurs de stockage des v9 2019-12-11 21:56:18 +01:00
fredtempez
ec2be096ec [10.0.008.dev] notification d'import 2019-12-11 20:38:27 +01:00
fredtempez
0c1273e69a changes 2019-12-11 17:06:53 +01:00
fredtempez
9d05780472 changes 2019-12-11 17:06:25 +01:00
fredtempez
8122fcb281 changes 2019-12-11 16:56:46 +01:00
fredtempez
4c95df54ab [9.2.15] Couleur du titre du site dans le menu réduit 2019-12-11 16:16:43 +01:00
fredtempez
8553d91f46 [10.0.007.dev] correction du titre dans le menu réduit 2019-12-11 16:14:47 +01:00
fredtempez
961a1d65b3 [10.0.007.dev) Désactiver une sauvegarde des données forcée 2019-12-11 11:59:10 +01:00
fredtempez
b7c561f461 [10.0.006.dev] 2019-12-10 21:30:31 +01:00
fredtempez
f0f161d50f [10.0.005.dev] fonction update 2019-12-10 21:20:04 +01:00
fredtempez
39cf6dc24b Merge branch 'master' into dev10 2019-12-10 18:27:30 +01:00
fredtempez
ea7e7c51e4 [9.2.15] menu effet classeur dans le niveau 1 2019-12-10 18:27:05 +01:00
fredtempez
e83b5f0db3 Changes 2019-12-10 18:17:32 +01:00
fredtempez
1bcb142d1f Changes 2019-12-10 18:17:00 +01:00
fredtempez
a004ec2396 changes 2019-12-10 18:14:47 +01:00
fredtempez
adf2de3ee9 Changes 2019-12-10 18:13:08 +01:00
fredtempez
afb66956a0 Changes 2019-12-10 18:07:44 +01:00
fredtempez
66afc9e661 [9.2.15] changes 2019-12-10 17:57:10 +01:00
fredtempez
791a7e649d [10.0.004.dev] Merge branch 'master' into dev10 2019-12-10 17:39:36 +01:00
fredtempez
7a02b8524d [9.2.15] correction update + titre dans menu réduit 2019-12-10 17:36:13 +01:00
Fred Tempez
26e219af00 [10.0.003.dev] gestion de l'update 2019-12-10 16:00:08 +01:00
Fred Tempez
7f2f2a4b56 [10.0.003.dev] Procédure d'update 2019-12-10 15:55:29 +01:00
Fred Tempez
ceac534fb7 Merge branch 'master' into dev10 2019-12-10 15:40:23 +01:00
Fred Tempez
a44cbc5fbf [9.2.15] fautes de frappe dans les libellés 2019-12-10 15:38:37 +01:00
Fred Tempez
524226bd3b [10.0.002.dev] merge theme manager 2019-12-10 14:26:59 +01:00
Fred Tempez
98153c269f [10.0.002.dev] merge theme manager 2019-12-10 14:26:16 +01:00
Fred Tempez
19f42ab108 [9.2.15] Gestion des thèmes 2019-12-10 14:25:01 +01:00
Fred Tempez
4a9a63c3a9 [9.2.15] probleme stockage + defaultdata 2019-12-10 13:53:50 +01:00
Fred Tempez
31b1561750 [10.0.001.dev] Intégration gestion données manque l'import 2019-12-10 10:53:31 +01:00
Fred Tempez
72a37677c1 Changes 2019-12-10 08:32:18 +01:00
Fred Tempez
4959a3ea6c Merge branch 'master' into dev10 2019-12-10 08:31:30 +01:00
Fred Tempez
f4a706efae [10] Version 2019-12-10 08:29:22 +01:00
Fred Tempez
65ac9e291b [10.0.000.dev] version 2019-12-10 08:28:47 +01:00
fredtempez
15cc04f073 [9.2.15] CHANGES 2019-12-09 21:37:54 +01:00
fredtempez
6115565520 [9.2.12] améliorationscript accordéon 2019-12-09 20:31:19 +01:00
Fred Tempez
e982814ab7 [9.2.15] accordéon amélioré 2019-12-09 17:13:55 +01:00
fredtempez
37f69c3fcb [9.2.15] Popup notification + modif 2019-12-08 18:40:30 +01:00
fredtempez
b9039fe685 [9.2.15] poup non connecté 2019-12-08 17:11:40 +01:00
fredtempez
00aa34d3cd [9.2.15] num de version 2019-12-08 17:05:04 +01:00
fredtempez
f2c01e7e9f [9.2.15] Affichage d'une page Lity sans la structure du site (manue, bannière, footer) 2019-12-08 16:48:42 +01:00
fredtempez
4504eb8662 [9.2.14] changes 2019-12-06 21:31:48 +01:00
fredtempez
2c95ca6de0 [9.2.14] contrôle d'erreur couleur de fond + réorganisation 2019-12-06 18:51:33 +01:00
fredtempez
69b1dd2bbf [9.2.14] theme site réorganisation 2019-12-06 18:43:21 +01:00
fredtempez
63015b3b6f [9.2.14] Theme header ; masque trop condensé 2019-12-06 18:40:45 +01:00
fredtempez
83e5b100f1 [9.2.14] theme - footer - controle erreur import theme incorrect 2019-12-06 18:04:38 +01:00
fredtempez
0f99ffbbae [9.2.14] Aide sur la transparence du footer 2019-12-06 17:06:28 +01:00
fredtempez
06927b1d13 [9.2.14] Taille de police identiques menu et footer 2019-12-06 17:03:23 +01:00
fredtempez
0a85fbaea4 Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2019-12-06 16:04:36 +01:00
fredtempez
8dc8577244 [9.2.14] mise à jour rfm 2019-12-06 16:04:30 +01:00
fredtempez
1b5abd975d [9.2.13] changes 2019-12-05 19:34:09 +01:00
fredtempez
432b35b364 [9.2.13] changes 2019-12-05 19:32:51 +01:00
fredtempez
fe24f2208b [9.2.13] changes 2019-12-05 19:11:35 +01:00
fredtempez
c26436efc7 [9.2.13] agencement config/ référencement 2019-12-04 17:23:03 +01:00
fredtempez
1596b0d0ef [9.2.13] Form ordre des champs 2019-12-04 12:06:43 +01:00
fredtempez
49f367424b [9.2.13] Form Etiquette en premier 2019-12-04 12:02:55 +01:00
fredtempez
b9bc756ab2 [9.2.13] Réorgnaisation du formulaire v2.2 2019-12-04 12:01:33 +01:00
fredtempez
014e252d0d [9.2.13] form affichage des options des champs 2019-12-04 11:46:23 +01:00
fredtempez
130895b5d9 Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2019-12-04 11:32:06 +01:00
fredtempez
981ccee71c [9.2.13] Libellés form v2.2 2019-12-04 11:31:57 +01:00
fredtempez
00d8550371 [9.2.13] Libellés blog 1.8 2019-12-04 11:31:24 +01:00
Fred Tempez
aa724d146c [9.2.13] changes 2019-12-04 08:12:15 +01:00
fredtempez
72240c810d [9.2.13] format de date dans blog 2019-12-03 18:19:34 +01:00
fredtempez
d26f8a38ba Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2019-12-03 17:56:43 +01:00
fredtempez
7a9afc6301 [9.2.13] trait devant une date dans blog 2019-12-03 17:56:07 +01:00
Fred Tempez
5e0ffe2678 [9.2.13] sendmail require_once 2019-12-03 15:31:00 +01:00
Fred Tempez
7dc5f7242a [9.2.13] position de la fonction de mise à jour des pages pour tinyMce 2019-12-03 14:56:32 +01:00
Fred Tempez
37769a276f [9.2.13] Corrige le codage dans la liste des pages tinymce 2019-12-03 14:49:38 +01:00
Fred Tempez
ff33e8f6ab [9.2.13] Libellé 2019-12-03 10:59:17 +01:00
Fred Tempez
5781f31d70 [9.2.13] Changes 2019-12-03 08:38:34 +01:00
Fred Tempez
1203f9a141 [9.2.13] suppression d'une ligne commentée 2019-12-03 08:20:22 +01:00
Fred Tempez
eeee33879a [9.2.13] format du titre de page dans la liste des pages 2019-12-03 08:08:59 +01:00
Fred Tempez
b950b54ebc [9.2.13] Ouverte dans une poup lity 2019-12-02 13:20:19 +01:00
Fred Tempez
2696720745 Module 1.4 message redirection 2019-12-02 13:19:58 +01:00
Fred Tempez
dcde62917b [9.2.13] Restaurer le module redirection dans la version 1.3 et le core 2019-12-02 12:48:17 +01:00
fredtempez
78722d949a 4 options de redirections 2019-12-01 18:07:58 +01:00
fredtempez
8bd34f7b44 Optimisation 2019-12-01 16:50:17 +01:00
fredtempez
3e0525d2fe Test de redirection 2019-12-01 16:24:38 +01:00
fredtempez
57dd3ea049 [9.2.13] Suppression d'options de barres latérales 2019-12-01 14:51:51 +01:00
fredtempez
14af494557 [9.2.13] Correctif css 2019-12-01 14:50:24 +01:00
fredtempez
b92c42144c [9.2.13] indentation 2019-12-01 11:57:22 +01:00
fredtempez
919bb80018 [9.2.13] fix gestionnaire de fichiers 2019-12-01 11:45:31 +01:00
fredtempez
b144c5a513 Default option 2019-12-01 10:49:03 +01:00
fredtempez
2886fd46b2 [9.2.12] masque thème menu 2019-11-29 16:44:24 +01:00
fredtempez
da2ee4bec7 [9.2.12] change 2019-11-29 16:33:19 +01:00
fredtempez
359961669f [9.2.12] choix par défaut fond page sélectionnée. 2019-11-29 16:16:19 +01:00
fredtempez
e546f91ca5 [9.2.12] Bords arrondis de la page active dans le menu 2019-11-29 16:09:28 +01:00
fredtempez
7f28f87dda Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2019-11-29 15:31:45 +01:00
fredtempez
66891e6389 [9.2.12] Thème - menu - couleur fond page sélectionnée 2019-11-29 15:31:37 +01:00
fredtempez
af0d235d4a [9.2.12] Effet accordéon dans TinyMCE 2019-11-28 14:55:02 +01:00
fredtempez
ae023db6bb changes 2019-11-27 15:47:12 +01:00
fredtempez
fc381a78d3 [9.2.12] Mention du numéro de version 2019-11-27 14:31:26 +01:00
fredtempez
c6306de2e7 [9.2.12] Module form 2.1 2019-11-27 14:28:23 +01:00
fredtempez
fbdfcbfcb2 Module Form v2.1 2019-11-26 19:22:30 +01:00
fredtempez
633d5879fa [9.2.12] Etiquette de version des modules 2019-11-26 19:09:12 +01:00
fredtempez
af449819b1 [9.2.12] changes 2019-11-26 17:22:41 +01:00
Fred Tempez
91f0da64c0 [9.2.12] dimension des images et des médias dans tinymce 2019-11-26 15:17:00 +01:00
Fred Tempez
b2c0f117fe Revert "[9.2.12] Activer la dimension des media + désactiver le preview responsive dans tiny"
This reverts commit 9b3595e40a.
2019-11-26 15:14:11 +01:00
Fred Tempez
8e2e59d305 [9.2.12] Activer la dimension des media + désactiver le preview responsive dans tiny 2019-11-26 15:08:25 +01:00
Fred Tempez
9b3595e40a [9.2.12] Activer la dimension des media + désactiver le preview responsive dans tiny 2019-11-26 15:00:25 +01:00
Fred Tempez
5ad581bf3e [9.2.12] Autoriser tous les éléments dans tinymce 2019-11-26 11:00:19 +01:00
fredtempez
d075fc14c2 changes 2019-11-24 17:54:48 +01:00
fredtempez
09c7f07062 changes 2019-11-24 12:45:05 +01:00
fredtempez
b032ae05d8 [9.2.11] Page d'accueil non désactivable 2019-11-24 12:33:37 +01:00
fredtempez
64934c608d [9.2.11] changes 2019-11-24 10:51:27 +01:00
fredtempez
4aba077397 [9.2.11] Réorganisation masque édition de page 2019-11-24 10:23:41 +01:00
fredtempez
3df45ed42e [9.2.11] iframe responsive 2019-11-23 23:07:12 +01:00
Fred
c459f0a774
Update CHANGES.md 2019-11-23 22:54:23 +01:00
fredtempez
8235622c80 [9.2.11] erreur de variable 2019-11-22 17:42:52 +01:00
fredtempez
65c85a22cd [9.2.11] correction de filtre 2019-11-21 22:50:16 +01:00
fredtempez
7cbeb69bbe [92.211] ajouter une aide 2019-11-21 22:42:08 +01:00
fredtempez
1c5ec9eaae [9.2.11] option de mise à jour automatique 2019-11-21 22:21:46 +01:00
fredtempez
90904c3418 [9.2.11] Option de mise à jour auto 2019-11-21 22:18:42 +01:00
fredtempez
5f46e8c48f [9.2.11] corrections d'erreurs diverses 2019-11-21 19:39:19 +01:00
Fred Tempez
326e124f0a (9.2.10] Licence 2019-11-18 08:53:43 +01:00
fredtempez
52b15ba0d8 [9.2.10] changes 2019-11-16 07:59:47 +01:00
fredtempez
145f1649cb [9.2.10] Erreur dans RFM zip décompression erreur 2019-11-15 22:11:05 +01:00
fredtempez
2f4e5c0d18 [9.2.10] Ajustement réglage bannière 2019-11-14 08:36:06 +01:00
fredtempez
a17d2f9feb [9.2.10] Erreur empêchant la validation des fenêtres TinymCE 2019-11-13 20:27:32 +01:00
fredtempez
8beca81ae4 [9.2.10] hauteur maxi non respectée 2019-11-12 21:46:57 +01:00
fredtempez
818d600dc8 [9.2.10] correctif 2019-11-12 21:36:02 +01:00
fredtempez
0190e4bb6f [9.2.10] Ajustements de marges 2019-11-12 19:01:53 +01:00
fredtempez
6b036d56a1 [9.2.10] Libellés footer 2019-11-12 18:57:41 +01:00
fredtempez
0240b342c7 [9.2.10] Ajustement des marges horizontales 2019-11-12 18:52:16 +01:00
Fred Tempez
4523fa5837 [9.2.10] Changes + gestion des marges dans le footer 2019-11-12 13:24:37 +01:00
fredtempez
36ccffe074 [9.2.10] aperçu footer 2019-11-12 12:05:23 +01:00
Fred Tempez
20463e8728 [9.2.10] Option de marges dans le pied de page hors du site 2019-11-12 08:41:19 +01:00
fredtempez
ad47125c11 [9.2.10] Amélioration bannière responsive 2019-11-11 19:12:19 +01:00
fredtempez
bd65a07b4d [9.2.10] suppression test inutile 2019-11-11 09:00:34 +01:00
fredtempez
88350111a3 [9.2.10] optimisation écriture 2019-11-11 08:57:14 +01:00
fredtempez
f03c7baaa8 [9.2.10] Changes 2019-11-10 21:15:46 +01:00
fredtempez
da00cc651e [9.2.10] masqué et non caché 2019-11-10 21:02:28 +01:00
fredtempez
16b911d489 [9.2.10] Afficher les infos sur l'image et hauteur de la bannière image 2019-11-10 20:55:30 +01:00
fredtempez
8d713b34e4 [9.2.10] Afficher les infos sur l'image et hauteur de la bannière image 2019-11-10 20:12:41 +01:00
fredtempez
f5a3aae819 [9.2.10] Changement d'un nom de clé 2019-11-09 19:03:03 +01:00
fredtempez
d5be2e866c [9.2.10] Update and fix codemiror 2019-11-09 18:48:43 +01:00
fredtempez
3a4c4c2b9a [9.2.10] commentaires 2019-11-09 18:37:15 +01:00
fredtempez
5bd619f95a [9.2.10] Réglages de la bannière 2019-11-09 15:36:14 +01:00
fredtempez
5e16985b31 [9.2.10] Supp filtrage baseUrl 2019-11-08 13:37:56 +01:00
fredtempez
2c300934ca [9.2.10] RGPD supprimer envoi mdp en clair 2019-11-07 12:22:35 +01:00
fredtempez
11e2eb9149 [9.2.10] Pages filles avec une galerie - mise à jour des légendes 2019-11-05 09:36:18 +01:00
fredtempez
8bfd08ffe1 [9.2.10] correction procédure update 2019-11-04 21:46:34 +01:00
fredtempez
c8302f7203 [9.2.10] changes 2019-11-04 21:36:40 +01:00
fredtempez
ef481fc2de [9.2.10] Modification des clés de galerie intégrée au core 2019-11-04 21:27:04 +01:00
fredtempez
b3d1f187c9 [9.2.10] sauvegarde des données update 2019-11-04 12:48:34 +01:00
fredtempez
a004b2edc7 Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2019-11-04 12:37:27 +01:00
fredtempez
4369679db4 Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2019-11-04 12:37:21 +01:00
fredtempez
308d43a94e Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2019-11-04 12:22:44 +01:00
fredtempez
68ac511781 [9.2.10] Gallery module 1.3 structure modifiée pour la v10 2019-11-04 12:22:26 +01:00
Fred
41681855fa
Update CHANGES.md 2019-10-24 11:47:38 +02:00
fredtempez
757c15fc48 [9.2.10] Stocke baseUrl à l'installation pour restauration dans autre dossier 2019-10-24 11:45:26 +02:00
Fred
19e1ae786a
Update CHANGES.md 2019-10-08 09:47:13 +02:00
fredtempez
34756ea08f [9.2.09] Changes 2019-10-07 18:42:05 +02:00
fredtempez
f488259ab7 [9.2.09] core version 2019-10-07 18:39:21 +02:00
fredtempez
318778bb54 Merge 9.2.09 2019-10-07 18:36:49 +02:00
Fred
b5fb1a6a91
[9.2.09] changes 2019-10-07 15:12:24 +02:00
Fred
7fc1693735
[9.2.09] Erreur d'initialisation dans form 2019-10-07 14:57:32 +02:00
Fred
417deac31b
[9.2.09] 2019-10-07 11:52:17 +02:00
Fred
ed0ab2f7ec
[9.2.09] Désactivation de l'aperçu auto lors de la modification du texte personnalisé dans le footer 2019-10-07 11:32:22 +02:00
fredtempez
2d81499f67 [9.2.08] changes 2019-10-02 19:23:36 +02:00
fredtempez
deee0e4951 [9.2.08] bug gabarit paramètre du module 2019-10-02 19:21:11 +02:00
fredtempez
08cd773f8b [9.2.08] modification de l'aide édition des pages 2019-09-27 15:27:16 +02:00
fredtempez
9a4fdf74de [9.2.07] changes 2019-09-26 09:24:44 +02:00
fredtempez
62916a38a4 [9.2.07] renommage des commandes de placement libre 2019-09-26 09:20:02 +02:00
fredtempez
7bffd95812 [9.2.07] Autoriser le positionnement dans la page sur tous les modules sauf redirection 2019-09-24 20:24:52 +02:00
fredtempez
b9c4dfe001 [9.2.07] Nettoyage conditions ex-module code 2019-09-24 18:51:11 +02:00
fredtempez
fb3e467fd6 [9.2.07] balise object responsive 2019-09-23 20:36:41 +02:00
fredtempez
3040166318 [9.2.06] Inversion de lignes dans robots.txt 2019-09-19 09:35:45 +02:00
fredtempez
8de6e2af0a [9.2.06] autres petites corrections 2019-09-18 18:31:40 +02:00
fredtempez
8becd89e18 [9.3.06] petites corrections 2019-09-17 18:22:43 +02:00
fredtempez
23e122f0f2 [9.2.05] petites modifications + change 2019-08-17 18:35:44 +02:00
fredtempez
14d8d6749c [9.2.05] suppression totale de swiper 2019-08-16 09:40:46 +02:00
fredtempez
82fe47c6ce [9.2.04] template tiny supp 2019-08-15 23:28:42 +02:00
fredtempez
5ad1204b3b [9.2.04] Commentaire 2019-08-15 19:44:53 +02:00
fredtempez
1110b8ae54 [9.2.04] changes 2019-08-15 09:10:17 +02:00
fredtempez
f886bff812 [9.2.04] suppression de Swipper 2019-08-13 14:38:16 +02:00
fredtempez
46c67d84c1 gitignore 2019-08-08 21:57:21 +02:00
fredtempez
e506450c7e [9.2.04] htaccess dans temp 2019-08-07 19:16:04 +02:00
fredtempez
1a01099142 [9.2.03] change 2019-08-05 08:07:47 +02:00
fredtempez
0f83ffec8d Encodage 2019-08-04 16:56:22 +02:00
Fred
6752cbc9f1
htaccess modification : ne fonctionne pas dans les sous dossiers 2019-08-04 12:07:27 +02:00
fredtempez
6b05cd1b90 [9.2.03] Llibellés 2019-08-03 21:42:33 +02:00
Fred
76248deccf
[9.2.03] intégration du filtre Facebook 2019-08-02 10:54:43 +02:00
Fred
0e048a3866
Update README.md 2019-08-02 09:23:48 +02:00
Fred
9e51975995
Update README.md 2019-08-02 09:22:37 +02:00
Fred
a197c77134
Update README.md 2019-08-02 09:21:07 +02:00
Fred
4ded870086
Update README.md 2019-08-02 09:20:20 +02:00
Fred
a1f9cfc0a5
Update README.md 2019-08-02 09:19:53 +02:00
Fred
f4bd97bfa8
Update README.md 2019-08-02 09:19:28 +02:00
Fred
df149efed3
Update README.md 2019-08-02 09:16:31 +02:00
Fred
f0733fb532
Update README.md 2019-08-02 09:15:54 +02:00
Fred
e7c13029ce
Update README.md 2019-08-02 09:14:29 +02:00
Fred
aab250c719
Update README.md 2019-08-02 09:12:37 +02:00
fredtempez
7f8fa07923 [9.2.03] gestion des pleines pages d'édition 2019-08-01 23:15:45 +02:00
fredtempez
61758796f9 [9.2.03] retour Include body 2019-08-01 22:26:23 +02:00
fredtempez
47bdbdaead [9.2.03] masquage des menus hors du site dans le theme 2019-07-31 19:45:59 +02:00
fredtempez
32fa56a580 [9.2.03] ok avec main 2019-07-31 17:55:57 +02:00
fredtempez
dfd991cc05 [9.2.03] ok 2019-07-31 17:47:26 +02:00
fredtempez
531a074839 [9.2.03] pagination news 2019-07-31 17:39:33 +02:00
fredtempez
fdd09c0f65 [9.2.03] correction sticky menu 2019-07-28 17:01:46 +02:00
fredtempez
2120ee51f8 [9.2.02] gestion d'erreur lors de l'installation 2019-07-16 18:41:51 +02:00
fredtempez
f22e6715a1 [9.2.01] changes 2019-07-15 18:38:10 +02:00
fredtempez
420121f5e1 |9.2.01] aperçu en direct du texte personnalisé 2019-07-15 18:36:07 +02:00
fredtempez
42e5f393a7 [9.2.01] numéro de version 2019-07-15 18:35:43 +02:00
fredtempez
56bffbcf36 [9.2.01] footer réécriture jquery supp aperçu texte 2019-07-15 18:35:25 +02:00
fredtempez
5c94a30683 [9.2.01] Méthode de positionnement des marges 2019-07-15 12:27:41 +02:00
fredtempez
4538c3dec5 [9.2.01] Marges du pied de page 2019-07-15 11:54:04 +02:00
fredtempez
928a77ec7c [9.2.01] erreur de sauvegarde du thème 2019-07-15 10:32:56 +02:00
fredtempez
515a90477f [9.2.01] Libellé erroné 2019-07-14 15:34:56 +02:00
fredtempez
835b880cf8 update changes 2019-07-12 13:18:05 +02:00
fredtempez
6491aad51c changes 2019-07-12 13:16:32 +02:00
fredtempez
ad8a515d16 [9.2.00] aperçu search dans footer 2019-07-12 10:04:01 +02:00
fredtempez
dc7d5437ac [9.2.00] numéro de version 2019-07-12 09:19:14 +02:00
fredtempez
30cd5bfac1 [9.200] changes 2019-07-12 08:57:25 +02:00
fredtempez
7ef88ac393 Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2019-07-11 08:17:17 +02:00
fredtempez
21d72536c9 [9.2.00] changes 2019-07-11 08:16:53 +02:00
Fred
71fa49c3df
Delete _config.yml 2019-07-11 08:15:39 +02:00
Fred
cd6a59b3fb
Delete launch.json 2019-07-11 08:15:15 +02:00
Fred
94b240a755
Delete extensions.json 2019-07-11 08:15:05 +02:00
fredtempez
fec53c0b38 gitignore 2019-07-11 08:14:29 +02:00
fredtempez
2ba9a1450b gitignore 2019-07-11 08:13:41 +02:00
fredtempez
c9f9de73c9 .gitignore 2019-07-11 08:13:22 +02:00
fredtempez
d1a01109bf [9.2.00] changes and readme 2019-07-11 08:12:00 +02:00
fredtempez
fa93c10be8 merge extrafooter 2019-07-11 08:07:39 +02:00
fredtempez
9475bd989e [9.2.00] version stable 2019-07-10 14:29:09 +02:00
fredtempez
471cc0d8eb [9.2.00] defaultdata settings 2019-07-10 09:19:12 +02:00
fredtempez
b6051bda0d [9.2.00.dev] encodage htaccess 2019-07-08 19:13:49 +02:00
fredtempez
75e26c4369 [9.2.00.dev] erreur index 2019-07-08 19:01:37 +02:00
fredtempez
4f17300d82 [9.2.0.dev] modif include body 2019-07-08 14:55:06 +02:00
fredtempez
90061d42ca [9.2.00.dev] libellés 2019-07-07 19:33:48 +02:00
fredtempez
3c9860e1f7 [9.2.00.dev] Masque configuration header 2019-07-07 18:53:33 +02:00
fredtempez
6aa8456cce [9.2.0.dev] marge du bouton deleteInputFile 2019-07-05 20:21:00 +02:00
fredtempez
389d35af61 [9.2.0.dev] organisation masque header 2019-07-05 19:59:09 +02:00
fredtempez
aa98f00262 [9.2.0.dev] valeurs par défaut 2019-07-05 19:58:40 +02:00
fredtempez
ff463c520e [9.2.00.dev] nettoyage de code 2019-07-05 10:17:31 +02:00
fredtempez
122517bcd6 [9.2.00.dev] changes 2019-07-05 09:58:13 +02:00
fredtempez
5d57ac4332 [9.2.00.dev] serach exclure les barres latérales de la recherche 2019-07-05 00:04:34 +02:00
fredtempez
2a10893ac6 [9.2.00.dev] Dans les lien de TinyMCE choix dans un sous menu du sitemap et de la recherche 2019-07-04 23:52:21 +02:00
fredtempez
3d05a5928b [9.2.00.dev] organisation config.php 2019-07-04 20:46:34 +02:00
fredtempez
f9825f1d11 [9.2.00.dev] organisation de config.php 2019-07-04 20:42:23 +02:00
fredtempez
7c1bce467f [9.2.00.dev] sitemap et search dans les pages Tinymce 2019-07-04 19:54:51 +02:00
fredtempez
0a130fdcc3 [9.2.0.dev] Petites corrections 2019-07-04 12:38:23 +02:00
fredtempez
f0a7765d05 [9.2.0.dev] module search, petites corrections 2019-07-04 12:37:36 +02:00
fredtempez
0868fe52f2 [9.2.00.dev] change 2019-07-03 19:51:33 +02:00
fredtempez
5113cea733 [9.2.00.dev] Incorporation du module de recherche dans le footer 2019-07-03 19:46:53 +02:00
fredtempez
bdf028e343 [9.2.00.dev] module Search 2019-07-03 19:32:38 +02:00
fredtempez
f79c46c200 [9.2.00.dev] cosmétique édition page 2019-06-30 22:03:53 +02:00
Fred
0c1aa520ac
Update CHANGES.md 2019-06-28 09:09:31 +02:00
Fred
4ca88cabe4
Update CHANGES.md 2019-06-28 09:02:16 +02:00
Fred
107e0a4741
[9.1.14] changes 2019-06-28 09:01:48 +02:00
fredtempez
5b6ff9a485 changes 2019-06-27 21:22:12 +02:00
fredtempez
72c65e8cf2 [9.2.00.dev] beautify and correct code 2019-06-27 21:10:50 +02:00
fredtempez
c9461c6857 [9.2.00.dev] réglage des marges du contenu personnalisé 2019-06-27 20:52:30 +02:00
fredtempez
bd62b58c59 [9.2.00.dev] Uniformisation des masques header et footer 2019-06-27 16:21:43 +02:00
fredtempez
cffdb529ef changes 2019-06-27 12:03:28 +02:00
fredtempez
3908d592fe [9.2.00.dev] masque saisie menu + alignement avec contenu 2019-06-27 12:01:16 +02:00
fredtempez
17b0109ab8 [9.2.00.dev] libellés 2019-06-27 11:35:33 +02:00
fredtempez
6882e4bf89 [9.2.00.dev] Contenu readme et blocs dans édition de pages 2019-06-27 11:30:00 +02:00
fredtempez
dcfb429b93 [9.2.00.dev] Libellés 2019-06-26 19:22:27 +02:00
fredtempez
1f1657e6c8 [9.2.00.dev] ajustements de libellés et valeurs par défaut 2019-06-26 15:36:06 +02:00
fredtempez
9d85c980a2 [9.2.00.dev] changes 2019-06-25 22:48:39 +02:00
fredtempez
1e7bf74527 [9.2.00.dev] valeurs par defaut 2019-06-25 22:26:20 +02:00
fredtempez
37e7eaf3ad [9.2.00.dev] organisation edition page 2019-06-25 22:25:59 +02:00
fredtempez
053586947f [9.2.00.dev] libellés 2019-06-25 20:52:32 +02:00
fredtempez
adb8406b8e [9.2.00.dev] mise en page assymétrique 2019-06-25 20:50:54 +02:00
fredtempez
37a2320bb9 [9.2.00.dev] supp option masquage menu horizontal 2019-06-25 19:57:10 +02:00
fredtempez
326d8afef0 [9.2.00.dev] libellé footer 2019-06-25 19:56:26 +02:00
fredtempez
045ac268d4 [9.2.00.dev] footer ok 2019-06-25 19:55:52 +02:00
fredtempez
ee3b0dc8b1 [9.2.0.dev] Choix de la page des mentions légales dans la config 2019-06-24 21:52:24 +02:00
fredtempez
f05922b090 [9.2.0.dev] aperçu des positions du footer 2019-06-24 20:12:41 +02:00
Fred
6ffabd6468
Update README.md 2019-06-24 17:13:23 +02:00
Fred
60093046fa Set theme jekyll-theme-slate 2019-06-24 08:26:12 +02:00
Fred
6f9924b2d7
Delete robots.txt 2019-06-24 08:13:00 +02:00
fredtempez
15c9ac7e5d [9.1.14.dev] footer sur 3 lignes OK 2019-06-23 23:37:12 +02:00
fredtempez
bc66591ccf Merge branch 'extra_footer' of https://github.com/fredtempez/ZwiiCMS into extra_footer 2019-06-23 08:09:20 +02:00
Fred
9a2b62bb5b
[9.1.14] ajoute un espace 2019-06-22 23:43:31 +02:00
fredtempez
d4fb3bf48d [9.1.14] footer sur 3 rangs 2019-06-22 19:44:13 +02:00
fredtempez
f63178c29b [9.1.14] mentions légales dans le core 2019-06-22 19:43:52 +02:00
fredtempez
69ed7060ed [9.1.14] installation par défaut mentions légales 2019-06-22 19:43:33 +02:00
fredtempez
a3e17dfb83 [9.1.14] Page des mentions légales dans le footer (reste à insérer dans le pied de page) 2019-06-22 17:27:49 +02:00
fredtempez
2586da1d53 [9.1.14] Corrections footer 2019-06-22 08:23:09 +02:00
fredtempez
b5edd4ead9 [9.1.14] nettoyage search 2019-06-21 21:31:36 +02:00
fredtempez
bcf4b028da search 2019-06-21 21:17:16 +02:00
fredtempez
f9abf2f5da [9.1.14] retrait module search 2019-06-21 21:10:38 +02:00
fredtempez
104561c8f7 Changes 2019-06-21 21:07:12 +02:00
Fred
05ac12b011
Update search.php 2019-06-21 10:29:27 +02:00
fredtempez
e8f0b25a5f [9.1.13] changes 2019-06-20 20:39:06 +02:00
fredtempez
7d3a84b3b2 [9.1.13] changes.md 2019-06-20 20:36:00 +02:00
fredtempez
210590b0cd [9.1.13] changes.md 2019-06-20 20:35:36 +02:00
fredtempez
2be1cdac5c Merge branch 'master' into extra_footer 2019-06-20 20:27:06 +02:00
fredtempez
9e25104b0e [9.1.13] erreur sitemap blog sans article ! 2019-06-20 20:26:08 +02:00
fredtempez
2358ab291e [9.1.13] erreur suppr imagetag (encore Free ) 2019-06-20 19:01:11 +02:00
fredtempez
528153e13c [9.1.13] erreur supp metaimage 2019-06-20 18:58:49 +02:00
fredtempez
7251101625 [9.1.13] Module de recherche 2019-06-20 15:19:21 +02:00
fredtempez
c7fdb3e997 [9.1.13] footer avec marges ok 2019-06-20 07:51:56 +02:00
fredtempez
f8668168dd [9.1.13] footer.js ok 2019-06-19 21:49:21 +02:00
fredtempez
c5825f7c0a [9.1.13] footer.js stable 2019-06-19 21:42:10 +02:00
fredtempez
5688d78bb4 [9.1.13] jquery du footer en cours de réécriture 2019-06-19 21:37:16 +02:00
fredtempez
130ad549dd [9.1.13] en cours 2019-06-19 09:35:19 +02:00
fredtempez
783bf103eb [9.1.12] erreur css 2019-06-19 03:42:05 +02:00
fredtempez
afc8655e22 [9.1.13] erreur css 2019-06-19 03:41:11 +02:00
fredtempez
19368fc680 [9.1.13] pb alignement horizontal 2019-06-19 03:28:52 +02:00
fredtempez
b1aa2df3d7 [9.1.13] nouveau footer à tester 2019-06-18 23:29:42 +02:00
fredtempez
c164d819e9 [9.1.13.dev1] Nouveau footer WIP 2019-06-18 20:08:04 +02:00
fredtempez
ef04457b2d Vscodium 2019-06-18 20:07:37 +02:00
fredtempez
af97ef8f2d [9.1.12] fix sitemap.xml 2019-06-18 16:25:39 +02:00
fredtempez
59fde383f0 [9.1.12] free image map erreur 2019-06-18 10:13:09 +02:00
fredtempez
50026f9092 [9.1.11] changes 2019-06-16 20:09:27 +02:00
fredtempez
f3dd28c1a9 [9.1.11] changes syntaxe sitemap 2019-06-16 19:44:45 +02:00
fredtempez
cca61d7b8a [9.1.11] petite correction dans le code du sitemap 2019-06-16 17:54:41 +02:00
fredtempez
ba2151cc24 [9.1.10] changes 2019-06-15 19:14:35 +02:00
fredtempez
face9279ee [9.1.10] changes 2019-06-15 18:53:05 +02:00
fredtempez
308992e8ce [9.1.10] Bug robots.txt 2019-06-15 18:27:00 +02:00
fredtempez
9a66fe707d [9.1.10] date de publication des articles et suppression des barres 2019-06-13 14:01:43 +02:00
fredtempez
3e867ad22d [9.1.10] defaultdata 2019-06-12 19:11:53 +02:00
fredtempez
21bb21c751 [9.1.10] Defaultdata 2019-06-12 19:08:10 +02:00
fredtempez
f2e217c7f7 [9.1.10] Ajouter Github 2019-06-12 09:45:42 +02:00
fredtempez
24c8c7ac7e [9.1.10] déplacement include body dans main 2019-06-11 11:54:50 +02:00
fredtempez
0c68f36088 [9.1.10] fix sitemap.xml article brouillon 2019-06-10 16:21:41 +02:00
fredtempez
5d144c0058 [9.1.10] changes 2019-06-10 15:50:42 +02:00
fredtempez
02b5dd4848 [9.1.10] sitemap articles fermés à masquer 2019-06-10 15:48:43 +02:00
fredtempez
3c9dda8f4d [9.1.09] changes 2019-06-09 18:41:34 +02:00
fredtempez
ae84756293 [9.1.09] changes 2019-06-09 18:40:13 +02:00
fredtempez
5c8ec1e41a [9.1.09] sitemap article premier niveau 2019-06-09 18:36:57 +02:00
fredtempez
94ea697b98 [9.1.09] changes 2019-06-09 17:48:42 +02:00
fredtempez
867c1af1b1 [9.1.09] changes + commentaires dans sitemap 2019-06-09 15:41:36 +02:00
fredtempez
15d6243747 [9.1.09] désactivation de l'upload par url 2019-06-09 15:25:41 +02:00
fredtempez
7e3eb1bc00 [9.1.09] Nettoyage du core installation simple 2019-06-09 15:25:13 +02:00
fredtempez
0915c3a2ea [9.1.09] bug module forme et ajout sitemap 2019-06-09 15:24:43 +02:00
fredtempez
edf988a636 [9.1.09] liens dans le sitemap ok 2019-06-09 09:09:27 +02:00
fredtempez
609fc0009e [9.1.09] sitemap revu avec les articles de blog 2019-06-08 22:18:10 +02:00
fredtempez
682b5f72ba [9.1.09] Sitemap corrigé 2019-06-08 21:30:12 +02:00
fredtempez
7e56f15d83 [9.1.09] config du site 2019-06-08 21:29:48 +02:00
fredtempez
a906b4e8d5 [9.1.09] écran de configuration 2019-06-08 20:21:51 +02:00
fredtempez
6b928642d3 Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2019-06-08 20:16:14 +02:00
fredtempez
47ccac17bc [9.1.09] réorgnisation de l'écran de config 2019-06-08 20:15:55 +02:00
fredtempez
c4706113fc [9.1.09] htaccess avec compresson 2019-06-08 20:15:12 +02:00
Fred
c7d8446615
Delete head.inc.html 2019-06-08 13:25:09 +02:00
Fred
4f9308ff3a
Delete body.inc.html 2019-06-08 13:25:02 +02:00
fredtempez
73488251de [9.1.09] Modif écran condif + petites corrections 2019-06-08 13:24:17 +02:00
fredtempez
692401b418 [9.1.09] Sripts head et body dans la config de Zwii 2019-06-07 23:18:44 +02:00
fredtempez
b88b2debd0 gitignore 2019-06-07 20:38:55 +02:00
fredtempez
cb626278b1 [9.1.09] Numéro de version ! 2019-06-06 23:01:04 +02:00
fredtempez
9f3c2eec0c [9.1.09] changes 2019-06-06 22:53:38 +02:00
fredtempez
8bec4b2662 [9.1.09] scripts dans body 2019-06-06 22:47:48 +02:00
fredtempez
d7c240591e [9.1.09] Appel d'un script dans le header 2019-06-06 22:20:25 +02:00
fredtempez
56081acd72 [9.1.09] 2019-06-06 22:08:45 +02:00
fredtempez
d829b4a3fb [9.1.09] 2019-06-06 21:49:43 +02:00
fredtempez
5038d40883 [9.1.08] modif procédure auto 2019-06-04 20:29:42 +02:00
fredtempez
e88bdddbe9 [9.1.08] nettoyage 2019-06-04 14:40:30 +02:00
Fred
1327b572ac
Create .htaccess 2019-06-04 14:37:53 +02:00
fredtempez
725adb59d8 [9.1.08] update TinyMCE PHPMailer jquery 2019-06-03 15:56:24 +02:00
fredtempez
970deacd61 [9.1.08] suppression d'une ligne de test 2019-06-03 13:19:55 +02:00
fredtempez
ef09d21284 [9.1.08] changes 2019-06-03 13:10:21 +02:00
fredtempez
a07b8ce2b8 [9.1.08] réécriture après mise à jour 2019-06-03 13:09:10 +02:00
fredtempez
dd7fd35215 [9.1.08] modif : taille par défaut 2019-06-03 13:08:48 +02:00
fredtempez
0475d4b876 [9.1.08] changes 2019-06-03 10:11:38 +02:00
fredtempez
025fe6d8ee [9.1.08] commentaire dans htaccess 2019-06-03 10:08:17 +02:00
fredtempez
5d5ce25c1f [9.1.08] réécriture d'URL désactivée après mise à jour auto 2019-06-03 10:06:17 +02:00
fredtempez
9edc7280a4 Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2019-06-01 19:08:06 +02:00
fredtempez
46c3a58e8a [9.1.08] modif css 2019-06-01 19:07:54 +02:00
fredtempez
11ea690f7f [9.1.08] modif css 2019-06-01 18:51:08 +02:00
fredtempez
10ba4df582 [9.1.08] validation du code html 2019-06-01 13:07:38 +02:00
fredtempez
1b3f54e49b [9.1.08] validation html 2019-05-31 23:25:31 +02:00
Fred
640dafd9da
Delete sitemap.xml 2019-05-31 12:52:46 +02:00
Fred
2cc021ecad
Delete sitemap.xml.gz 2019-05-31 12:52:36 +02:00
Fred
2bd8a196c9
Delete robots.txt 2019-05-31 12:52:25 +02:00
fredtempez
4ceec4c378 [9.1.08] maxlength 2019-05-31 12:51:22 +02:00
fredtempez
f0d9534dbc [9.1.08] banniere default data 2019-05-31 12:41:48 +02:00
fredtempez
8656c7a6a1 [9.1.08] supprimer maxlength 2019-05-31 12:41:28 +02:00
fredtempez
c16741f259 Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2019-05-30 20:09:01 +02:00
fredtempez
4bca49ec0b [9.1.08] option multiviews dans htaccess 2019-05-30 20:08:04 +02:00
fredtempez
5fd6434bea [9.1.08] option multiviews dans htaccess 2019-05-30 20:03:50 +02:00
fredtempez
0361e1f1a8 [9.1.08] validation html 2019-05-30 19:54:23 +02:00
fredtempez
f2466b6f24 [9.1.08] html validation 2019-05-30 19:53:18 +02:00
Fred
1a92430fd3
Delete zwii_banniere_norvege.jpg 2019-05-29 22:49:50 +02:00
Fred
c8fc72613e
Delete zwii_banniere.png 2019-05-29 22:49:42 +02:00
Fred
b832fc5c6a
Add files via upload 2019-05-29 22:49:21 +02:00
Fred
9b5196e9ae
Delete fichiers 2019-05-29 22:48:38 +02:00
Fred
1320026657
Add files via upload 2019-05-29 22:48:08 +02:00
Fred
f6ed335b6c
Create fichiers 2019-05-29 22:47:47 +02:00
Fred
2cad57b459
Delete banniere 2019-05-29 22:47:17 +02:00
Fred
16b847e0cc
Create banniere 2019-05-29 22:47:06 +02:00
Fred
0c13bed3df
Delete zwii_banniere_norvege.jpg 2019-05-29 22:46:31 +02:00
Fred
74ff0c3772
Delete zwii_banniere.png 2019-05-29 22:46:23 +02:00
fredtempez
bc268b9573 [9.1.08] Nettoyage du css 2019-05-29 22:35:02 +02:00
fredtempez
95e1903f42 [9.1.08] smartphone, taille moins élevée 2019-05-28 11:26:42 +02:00
fredtempez
a62e9f1c67 Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2019-05-28 09:25:21 +02:00
fredtempez
133f4fe7ee [9.2] Merge 9.1.08 2019-05-28 09:14:49 +02:00
fredtempez
d2c14fc232 [9.2] Cosmétique du code 2019-05-28 09:12:34 +02:00
fredtempez
b351d20476 [9.1.08] changes 2019-05-28 09:07:05 +02:00
fredtempez
f3865f5a50 [9.1.08] le core manquant 2019-05-28 09:04:10 +02:00
fredtempez
40933f3121 [9.1.08] Placer des constantes pour les dossiers dir file tmp et backup 2019-05-27 20:35:04 +02:00
fredtempez
0696046446 [9.1.08] petite modification 2019-05-27 19:45:00 +02:00
fredtempez
1fcdb835bc [9.1.08] petits écrans padding section 2019-05-27 19:03:48 +02:00
fredtempez
495c6eff5e [9.1.08] changes 2019-05-27 16:13:06 +02:00
fredtempez
a56244937b Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2019-05-27 16:05:01 +02:00
fredtempez
dcd8edbede |9.1.07] user check 2019-05-27 16:04:22 +02:00
fredtempez
33c414e548 |9.1.08] Ecran de petite taille barre admin 2019-05-27 16:04:07 +02:00
fredtempez
421d09a3f5 [9.1.08] 100% fluide sans marge 2019-05-27 11:09:18 +02:00
fredtempez
230be5ddd2 [9.1.08] 100% fluide pas de marge 2019-05-27 10:47:32 +02:00
fredtempez
81c99763ca [9.1.08] 100% fluide bar également 2019-05-27 10:31:45 +02:00
fredtempez
6b13d53b8e [9.1.08] Theeme 100% sans marge 2019-05-27 10:26:46 +02:00
fredtempez
63ae54e200 [9.1.08] Theme 100% sans marge 2019-05-27 10:26:11 +02:00
fredtempez
ddc20e40ca [9.1.07] Version 2019-05-26 17:40:33 +02:00
fredtempez
35aeb2afdb [9.1.07] changes 2019-05-26 17:38:24 +02:00
fredtempez
ff7edd9b2d [9.1.07] Suppression appels dans mail.php 2019-05-26 17:33:27 +02:00
fredtempez
285d830ca3 [9.1.07] Vérification de saisie création d'un user 2019-05-26 17:07:03 +02:00
fredtempez
b72f18efe7 [9.1.06] Petites corrections 2019-05-26 16:50:24 +02:00
fredtempez
e349924b27 [9.1.06] envoi du mail si mot de passe erroné 2019-05-25 18:38:25 +02:00
fredtempez
0bfedbc983 [9.1.06] Include hread en test 2019-05-25 18:15:01 +02:00
fredtempez
2458682baa [9.1.06] url og image correction 2019-05-25 18:04:59 +02:00
Fred
1e786a7a04
Update .htaccess 2019-05-22 23:49:37 +02:00
fredtempez
f08ab528a6 [9.1.06] dossier tmp créé par défaut 2019-05-22 23:42:24 +02:00
fredtempez
49803b1f94 [9.1.06] script.inc.php appelé dans main 2019-05-22 23:41:00 +02:00
fredtempez
0477fdde87 Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2019-05-22 21:54:10 +02:00
fredtempez
d06d2a026a [9.1.06] Augmenter à 6 le z-index des sous-menus 2019-05-22 21:51:07 +02:00
Fred
2e3346f3d9
Delete sitemap.xml.gz 2019-05-19 21:24:02 +02:00
Fred
4fc07a2cda
Delete sitemap.xml 2019-05-19 21:23:51 +02:00
Fred
fe6585bdbf
Delete robots.txt 2019-05-19 21:23:39 +02:00
fredtempez
92e63bad2f Merge branch 'master' of https://github.com/fredtempez/ZwiiCMS 2019-05-19 21:22:45 +02:00
fredtempez
6b181eb4f0 [9.1.06] version 2019-05-19 21:22:41 +02:00
fredtempez
c1de147bca [9.1.06] nouvel utilisateur : mail envoyé avec erreur mot de passe 2019-05-19 21:21:36 +02:00
fredtempez
4259e5714b [9.1.06] nouvel utilisateur : mail envoyé avec erreur mot de passe 2019-05-19 20:35:20 +02:00
846 changed files with 97088 additions and 36271 deletions

35
.gitignore vendored
View File

@ -1,26 +1,13 @@
# Fichiers temporaires core/class/phpmailer/.DS_Store
site/tmp/*.zip site/.DS_Store
site/tmp/*.gz site/data/*
site/tmp/*
# Sauvegardes
site/backup/* site/backup/*
site/file/*
# Fichiers de données site/i18n/*.json
site/data/*.json .DS_Store
site/data/*.css
# Fichiers uploadés
site/file/source/*
site/file/thumb/*
# Dossiers vides dans GitHub
!.gitkeep
/.git
# PHPStorm
.idea/
# Trucs
.gitignore
core/vendor/tinymce/link_list.json core/vendor/tinymce/link_list.json
robots.txt
sitemap.xml
.gitignore
core/module/config/tool/data.key

View File

@ -1,8 +1,47 @@
# Cache le PHPSESSID de l'url # Active la compression GZIP - option Apache
SetEnv SESSION_USE_TRANS_SID 0 <IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text\.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image\.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</IfModule>
# Active la compression DEFLATE - option Apache
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/shtml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>
# Bloque l'accès à la liste des fichiers # Bloque l'accès à la liste des fichiers
Options -Indexes Options -Indexes
# Attention, surtout ne rien modifier ci-dessous ! # Désactive l'option de substitution automatique
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
# Enlever le slash final des URL
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^ %1 [R=301,L]
# ne pas supprimer la ligne URL rewriting !
# URL rewriting # URL rewriting

1790
CHANGES.md Normal file → Executable file

File diff suppressed because it is too large Load Diff

675
LICENSE
View File

@ -1,674 +1 @@
GNU GENERAL PUBLIC LICENSE Cette œuvre est mise à disposition sous licence Attribution - Pas d'Utilisation Commerciale - Pas de Modification 4.0 International. Pour voir une copie de cette licence, visitez http://creativecommons.org/licenses/by-nc-nd/4.0/ ou écrivez à Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
{one line to give the program's name and a brief idea of what it does.}
Copyright (C) {year} {name of author}
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
{project} Copyright (C) {year} {fullname}
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.

110
LISEZMOI.md Normal file
View File

@ -0,0 +1,110 @@
# ZwiiCMS 13.5.00
Zwii est un CMS sans base de données (flat-file) qui permet de créer et gérer facilement un site web sans aucune connaissance en programmation.
ZwiiCMS a été créé par un développeur de talent, [Rémi Jean](https://remijean.fr/). Il est désormais maintenu par Frédéric Tempez.
[Site](http://zwiicms.fr/) - [Forum](http://forum.zwiicms.com/) - [Version initiale](https://github.com/remijean/ZwiiCMS/) - [GitHub](https://github.com/fredtempez/ZwiiCMS)
## Configuration recommandée
* PHP 7.2 ou plus
* Support de .htaccess
## Licence
Cette œuvre est mise à disposition sous licence Attribution - Pas d'utilisation Commerciale - Pas de Modification 4.0 International.
Pour voir une copie de cette licence, visitez <http://creativecommons.org/licenses/by-nc-nd/4.0/> ou écrivez à Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
## Téléchargement de ZwiiCMS
Pour télécharger la dernière version publiée, rendez-vous :
* sur [la page des mises à jour](https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS/releases)
* ou sur [la page de téléchargement du site](https://zwiicms.fr/telechargement)
## Installation
Décompressez l'archive de Zwii et téléversez son contenu à la racine de votre serveur ou dans un sous-répertoire. C'est tout !
Vous trouverez de plus amples explications, en particulier pour une installation chez Free, dans la rubrique "Téléchargements" du forum.
## Procédures de mise à jour
A l'occasion de l'installation d'une verion majeure, il est recommandé de réaliser une copie de sauvegarde.
### Automatique
* Connectez-vous à votre site.
* Si une mise à jour est disponible, elle vous est proposée dans la barre d'administration.
* Cliquez sur le bouton "Mettre à jour".
### Manuelle
* Sauvegardez l'intégralité de votre site, spécialement le répertoire "site".
* Décompressez la nouvelle version sur votre ordinateur.
* Transférez son contenu sur votre serveur en activant le remplacement des fichiers.
## Arborescence générale
*Légende : [R] Répertoire - [F] Fichier*
```text
[R] core Cœur du système
[R] class Classes
[R] layout Mise en page
[R] module Modules du cœur
[R] vendor Librairies extérieures
[F] core.js.php Cœur javascript
[F] core.php Cœur PHP
[R] module Modules de page
[R] blog Blog
[R] form Gestionnaire de formulaires
[R] gallery Galerie
[R] news Nouvelles
[R] redirection Redirection
[R] site Contenu du site
[R] backup Sauvegardes automatiques
[R] i18N Langues de l'interface de Zwii
[R] data Répertoire des données
[R] fr Dossier localisé
[F] page.json Données des pages
[F] module.json Données des modules de pages
[F] local.json Données du site propres à la langue
[F] .default Indicateur de la langue de site par défaut
[R] content Dossier des contenus de page
[F] accueil.html Exemple contenu de la page d'accueil
[R] font Dossier contenant les fontes installées
[F] font.html Fichier contenant les appels des fontes à charger sur cdnFonts
[F] font.css Fichier contenant la feuille de style liée aux polices de caractères locales
[F] fontes.woff Fichiers locaux des fontes (woff, etc..)
[R] modules Personnalisation des modules ou données propres
[F] admin.css Thème des pages d'administration
[F] admin.json Données de thème des pages d'administration
[F] blacklist.json Journalisation des tentatives de connexion avec des comptes inconnus
[F] config.json Configuration du site
[F] core.json Configuration du noyau
[F] custom.css Feuille de style de la personnalisation avancée
[F] font.json Descripteur des fontes personnalisées
[F] journal.log Journalisation des activités
[F] language.json Langues de l'interface
[F] profil.json Profils des utilisateurs
[F] theme.css Thème du site
[F] theme.json Données du site
[F] user.json Données des utilisateurs
[F] .backup Marqueur de la sauvegarde des fichiers si présent
[R] file Répertoire d'upload du gestionnaire de fichiers
[R] source Ressources diverses
[R] thumb Miniatures des images
[R] tmp Répertoire temporaire
[F] index.php Fichier d'initialisation de ZwiiCMS
[F] robots.txt Filtrage des répertoires accessibles aux robots des moteurs de recherche
[F] sitemap.xml Plan du site
[F] sitemap.xml.gz Version compressée
Le fichiers .htaccess contribuent à la sécurité en filtrant l'accès aux répertoires sensibles.
```

135
README.md
View File

@ -1,72 +1,109 @@
# Zwii 9.1 # ZwiiCMS 13.5.00
Zwii est un CMS sans base de données (Flat-File) qui permet à ses utilisateurs de créer et gérer facilement un site web sans aucune connaissance en programmation. Zwii is a database-less (flat-file) CMS that allows you to easily create and manage a web site without any programming knowledge.
[Site](http://zwiicms.com/) - [Forum](http://forum.zwiicms.com/) - [GitHub version initiale](https://github.com/remijean/ZwiiCMS/) - [GitHub](https://github.com/fredtempez/ZwiiCMS) ZwiiCMS was created by a talented developer, [Rémi Jean](https://remijean.fr/). It is now maintained by Frédéric Tempez.
Zwii a été créé par un développeur de talent, [Rémi Jean](https://remijean.fr/), il est désormais maintenu par la communauté et hébergé sur ce git. [Site](http://zwiicms.fr/) - [Forum](http://forum.zwiicms.com/) - [Initial version](https://github.com/remijean/ZwiiCMS/) - [GitHub](https://github.com/fredtempez/ZwiiCMS)
## Recommended configuration
## Configuration recommandée * PHP 7.2 or higher
* .htaccess support
* PHP 5.6 ou plus ## License
* Support du .htaccess
This work is licensed under the Attribution-Noncommercial-No Derivative Works 4.0 International License.
To view a copy of this license, visit <http://creativecommons.org/licenses/by-nc-nd/4.0/> or write to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
## Downloading ZwiiCMS
To download the latest released version, go to :
* [the Updates page](https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS/releases)
* or at [the site download page](https://zwiicms.fr/download)
## Installation ## Installation
Décompressez l'archive de Zwii sur votre serveur et c'est tout ! Unzip the Zwii archive and upload its contents to the root of your server or to a subdirectory. That's all!
You will find more explanations, in particular for an installation at Free, in the "Downloads" section of the forum.
## Procédure de mise à jour de Zwii ## Update procedures
### Mise à jour automatique When installing a major version, it is recommended to make a backup copy.
* Connectez vous à votre site, ### Automatic
* Allez dans l'interface d'administration,
* Si une mise à jour est disponible, elle vous est proposée,
* Cliquez sur le bouton "Mettre à jour".
### Mise à jour manuelle * Connect to your site.
* If an update is available, it is proposed in the administration bar.
* Click on the "Update" button.
**Note : La réécriture d'URL est automatiquement désactivée après une mise à jour manuelle. À vous de la réactiver depuis l'interface de configuration du site.** ### Manual
* Sauvegardez l'intégralité du dossier ZwiiCMS de votre serveur et notamment le dossier 'site', * Save your entire site, especially the "site" directory.
* Décompressez la nouvelle version sur votre ordinateur dans un autre dossier, * Unzip the new version on your computer.
* Supprimez le dossier 'site' de la version décompressée * Transfer its content to your server by activating the file replacement.
* Transférez la nouvelle version sans le dossier 'site'
En cas de difficulté avec la nouvelle version, il suffira de téléverser la sauvegarde originale. ## General tree structure
### Mise à jour de la version 8 vers la version 9 *Legend: [D] Directory - [FILE] File
Les données du site dans 'site/data' sont désormais stockées dans deux fichiers : core.json et theme.json ````
text
[DIR] core Core of the system
[DIR] class Classes
[DIR] layout Layout
[DIR] module Core modules
[DIR] vendor External libraries
[FILE] core.js.php Javascript core
[FILE] core.php PHP core
Après la copie des fichiers ces deux fichiers sont créés à partir du data.json de la version 8, ce fichier est ensuite renommée en data_imported.json [DIR] module Page modules
[DIR] blog Blog
[DIR] form Form manager
[DIR] gallery Gallery
[DIR] news News
[DIR] redirection Redirection
En cas de retour à une version 8, ce fichier devra être renommé en data.json [DIR] site Site content
[DIR] backup Automatic backups
[DIR] i18N Zwii Interface languages
[DIR] data Data directory
[DIR] en Localized folder
[FILE] page.json Page data
[FILE] module.json Page module data
[FILE] local.json Language-specific site data
[FILE] .default Unique file of default site language
[DIR] content Folder of page contents
[FILE] home.html Sample home page content
[DIR] fonts Folder containing the installed fonts
[FILE] fonts.html File containing the fonts calls to load on cdnFonts
[FILE] fonts.css File containing the style sheet linked to the local fonts
[FILE] fonts.woff Local font files (woff, etc..)
[DIR] modules Customization of modules or own data
[FILE] admin.css Theme of administration pages
[FILE] admin.json Theme data for administration pages
[FILE] blacklist.json Logging of login attempts with unknown accounts
[FILE] config.json Site configuration
[FILE] core.json Core configuration
[FILE] custom.css Advanced customization stylesheet
[FILE] font.json Custom font descriptor
[FILE] journal.log Activities logging
[FILE] language.json Interface languages database
[FILE] profil.json Users profiles database
[FILE] theme.css Site theme
[FILE] theme.json Site database
[FILE] user.json User database
[FILE] .backup Marker for file backup if present
[DIR] file File manager upload directory
[DIR] source Various resources
[DIR] thumb Image thumbnails
[DIR] tmp Temporary directory
## Arborescence générale [FILE] index.php ZwiiCMS initialization file
[FILE] robots.txt Filtering of directories accessible to search engine robots
[FILE] sitemap.xml Sitemap
[FILE] sitemap.xml.gz Compressed version
*Légende : [D] Dossier ; [F] Fichier* The .htaccess files contribute to security by filtering access to sensitive directories.
```text
[D] core Contient le coeur de Zwii
[D] layout Contient les différentes structure de thème
[D] module Contient les modules du coeur
[D] vendor Contient les librairies
[F] core.js.php Coeur JavaScript de Zwii
[F] core.php Coeur PHP de Zwii
[D] module Contient les modules de page
[D] site Contient les données du site
[D] backup Contient les 30 dernière sauvegardes automatiques du fichier data.json
[D] data Contient les fichiers de données
[F] core.json Fichier de données
[F] theme.json Fichier du thème
[F] custom.css Feuille de style de la personnalisation avancée
[F] theme.css Thème stocké dans le fichier data.json compilé en CSS
[D] file Contient les fichiers envoyés sur le serveur depuis le gestionnaire de fichiers
[D] source Contient les fichiers
[D] thumb Contient les miniatures des fichiers de type image
[D] tmp Contient les fichiers temporaire
[F] index.php Fichier d'initialisation de Zwii
```

View File

19
core/class/autoload.php Normal file
View File

@ -0,0 +1,19 @@
<?php
class autoload {
public static function autoloader () {
require_once 'core/core.php';
require_once 'core/class/router.class.php';
require_once 'core/class/helper.class.php';
require_once 'core/class/template.class.php';
require_once 'core/class/layout.class.php';
require_once 'core/class/sitemap/Runtime.class.php';
require_once 'core/class/sitemap/FileSystem.class.php';
require_once 'core/class/sitemap/SitemapGenerator.class.php';
require_once 'core/class/phpmailer/PHPMailer.class.php';
require_once 'core/class/phpmailer/Exception.class.php';
require_once 'core/class/phpmailer/SMTP.class.php';
require_once 'core/class/jsondb/Dot.class.php';
require_once 'core/class/jsondb/JsonDb.class.php';
}
}

729
core/class/helper.class.php Normal file
View File

@ -0,0 +1,729 @@
<?php
class helper
{
/** Statut de la réécriture d'URL (pour éviter de lire le contenu du fichier .htaccess à chaque self::baseUrl()) */
public static $rewriteStatus = null;
/** Filtres personnalisés */
const FILTER_BOOLEAN = 1;
const FILTER_DATETIME = 2; // filtre pour le champ de formulaire A conserver pour la compatibilité
const FILTER_FLOAT = 3;
const FILTER_ID = 4;
const FILTER_INT = 5;
const FILTER_MAIL = 6;
const FILTER_PASSWORD = 7;
const FILTER_STRING_LONG = 8;
const FILTER_STRING_SHORT = 9;
const FILTER_TIMESTAMP = 10; // Saisie d'une date en locatime
const FILTER_URL = 11;
const FILTER_DATE = 12; // filtre pour le champ de formulaire
const FILTER_TIME = 13; // filtre pour le champ de formulair
const FILTER_MONTH = 14; // filtre pour le champ de formulair
const FILTER_YEAR = 16; // filtre pour le champ de formulair
/**
* Traduire le message dans la langue déterminée
*/
public static function translate($text)
{
// La traduction existe déjà dans le core
/*
if (array_key_exists($text, core::$dialog) === false && !empty($text)) {
$dialogues = json_decode(file_get_contents('core/module/install/ressource/i18n/fr_FR.json' ), true);
$data = array_merge($dialogues,[$text => '']);
file_put_contents ('core/module/install/ressource/i18n/fr_FR.json', json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT), LOCK_EX);
}
*/
return (array_key_exists($text, core::$dialog) && !empty(core::$dialog[$text]) ? core::$dialog[$text] : $text);
}
/**
* Formate la date avec le script strftime en UTF8
* Date au format time()
* $format strftime
*/
public static function dateUTF8($format, $date, $locale = 'fr_FR')
{
require_once 'core/class/strftime/php-8.1-strftime.class.php';
return mb_convert_encoding(\PHP81_BC\strftime($format, $date, $locale), 'UTF-8', mb_list_encodings());
}
/**
* Fonction pour assurer la traduction des messages
*/
public static function googleTranslate($to, $text)
{
if (!file_exists('site/i18n/' . $to . '.json')) {
file_put_contents('site/i18n/' . $to . '.json', json_encode([]));
}
if (!empty($text)) {
//Lecture des données en ligne
$data = json_decode(file_get_contents('site/i18n/' . $to . '.json'), true);
// Mode traduction
if ($to !== 'fr_FR') {
$arrayjson = json_decode(file_get_contents('https://clients5.google.com/translate_a/t?client=dict-chrome-ex&sl=auto&tl=' . $to . '&q=' . rawurlencode($text)), true);
$response = $arrayjson[0][0];
// Captation
if ($data !== '') {
if (array_key_exists($text, $data)) {
$data[$text] = $response;
} else {
$data = array_merge($data, [$text => $response]);
}
}
// Mode alimentation des chaines
} else {
// Créer la variable
$data = array_merge($data, [$text => '']);
}
file_put_contents('site/i18n/' . $to . '.json', json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT));
}
}
/**
* Récupérer l'adresse IP sans tenir compte du proxy
* @param integer Niveau d'anonymat 0 aucun, 1 octet à droite, etc..
* @return string IP adress
* Cette fonction est utilisée par user
*/
public static function getIp($anon = 4)
{
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
// Anonymiser l'adresse IP v4
$d = array_slice(explode('.', $ip), 0, $anon);
$d = implode('.', $d);
$j = array_fill(0, 4 - $anon, 'x');
$k = implode('.', $j);
$ip = count($j) == 0 ? $d : $d . '.' . $k;
return $ip;
}
/**
* Fonction pour récupérer le numéro de version en ligne et le catalogue des modules
* @param string $url à récupérer
* @return mixed données récupérées
*/
public static function getUrlContents($url)
{
// Ejecter free.fr
if (strpos(self::baseUrl(), 'free.fr') > 0) {
return false;
}
if (
function_exists('file_get_contents') &&
ini_get('allow_url_fopen')
) {
$url_get_contents_data = @file_get_contents($url); // Masque un warning éventuel
} elseif (function_exists('curl_version')) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
$url_get_contents_data = curl_exec($ch);
curl_close($ch);
} elseif (
function_exists('fopen') &&
function_exists('stream_get_contents') &&
ini_get('allow_url_fopen')
) {
$handle = fopen($url, "r");
$url_get_contents_data = stream_get_contents($handle);
} else {
$url_get_contents_data = false;
}
return $url_get_contents_data;
}
/**
* Retourne les valeurs d'une colonne du tableau de données
* @param array $array Tableau cible
* @param string $column Colonne à extraire
* @param string $sort Type de tri à appliquer au tableau (SORT_ASC, SORT_DESC, ou null)
* @return array
*/
public static function arraycolumn($array, $column, $sort = null)
{
$newArray = [];
if (empty($array) === false) {
$newArray = array_map(function ($element) use ($column) {
return $element[$column];
}, $array);
switch ($sort) {
case 'SORT_ASC':
asort($newArray);
break;
case 'SORT_DESC':
arsort($newArray);
break;
}
}
return $newArray;
}
/**
* Compatibilité avec les anciens modules
*/
public static function arrayCollumn($array, $column, $sort = null)
{
return (helper::arrayColumn($array, $column, $sort));
}
/**
* Génère un backup des données de site
* @param string $folder dossier de sauvegarde
* @param array $exclude dossier exclus
* @return string nom du fichier de sauvegarde
*/
public static function autoBackup($folder, $filter = ['backup', 'tmp'])
{
// Creation du ZIP
$baseName = str_replace('/', '', helper::baseUrl(false, false));
$baseName = empty($baseName) ? 'ZwiiCMS' : $baseName;
$fileName = $baseName . '-backup-' . date('Y-m-d-H-i-s', time()) . '.zip';
$zip = new ZipArchive();
$zip->open($folder . $fileName, ZipArchive::CREATE | ZipArchive::OVERWRITE);
$directory = 'site/';
//$filter = array('backup','tmp','file');
$files = new RecursiveIteratorIterator(
new RecursiveCallbackFilterIterator(
new RecursiveDirectoryIterator(
$directory,
RecursiveDirectoryIterator::SKIP_DOTS
),
function ($fileInfo, $key, $iterator) use ($filter) {
return $fileInfo->isFile() || !in_array($fileInfo->getBaseName(), $filter);
}
)
);
foreach ($files as $name => $file) {
if (!$file->isDir()) {
$filePath = $file->getRealPath();
$relativePath = substr($filePath, strlen(realpath($directory)) + 1);
$zip->addFile($filePath, $relativePath);
}
}
$zip->close();
return ($fileName);
}
/**
* Retourne la liste des modules installés dans un tableau composé
* du nom réel
* du numéro de version
*/
public static function getModules()
{
$modules = array();
$dirs = array_diff(scandir('module'), array('..', '.'));
foreach ($dirs as $key => $value) {
// Dossier non vide
if (file_exists('module/' . $value . '/' . $value . '.php')) {
// Lire les constantes en gérant les erreurs de nom de classe
try {
$class_reflex = new \ReflectionClass($value);
$class_constants = $class_reflex->getConstants();
// Constante REALNAME
if (array_key_exists('REALNAME', $class_constants)) {
$realName = $value::REALNAME;
} else {
$realName = ucfirst($value);
}
// Constante VERSION
if (array_key_exists('VERSION', $class_constants)) {
$version = $value::VERSION;
} else {
$version = '0.0';
}
// Constante UPDATE
if (array_key_exists('UPDATE', $class_constants)) {
$update = $value::UPDATE;
} else {
$update = '0.0';
}
// Constante DELETE
if (array_key_exists('DELETE', $class_constants)) {
$delete = $value::DELETE;
} else {
$delete = true;
}
// Constante DATADIRECTORY
if (array_key_exists('DATADIRECTORY', $class_constants)) {
$dataDirectory = $value::DATADIRECTORY;
} else {
$dataDirectory = '';
}
// Affection
$modules[$value] = [
'name' => $value,
'realName' => $realName,
'version' => $version,
'update' => $update,
'delete' => $delete,
'dataDirectory' => $dataDirectory
];
} catch (Exception $e) {
// on ne fait rien
}
}
}
return ($modules);
}
/**
* Retourne true si le protocole est en TLS
* @return bool
*/
public static function isHttps()
{
if (
(empty($_SERVER['HTTPS']) === false and $_SERVER['HTTPS'] !== 'off')
or $_SERVER['SERVER_PORT'] === 443
) {
return true;
} else {
return false;
}
}
/**
* Retourne l'URL de base du site
* @param bool $queryString Affiche ou non le point d'interrogation
* @param bool $host Affiche ou non l'host
* @return string
*/
public static function baseUrl($queryString = true, $host = true)
{
// Protocole
$protocol = helper::isHttps() === true ? 'https://' : 'http://';
// Host
if ($host) {
$host = $protocol . $_SERVER['HTTP_HOST'];
}
// Pathinfo
$pathInfo = pathinfo($_SERVER['PHP_SELF']);
// Querystring
if ($queryString and helper::checkRewrite() === false) {
$queryString = '?';
} else {
$queryString = '';
}
return $host . rtrim($pathInfo['dirname'], ' ' . DIRECTORY_SEPARATOR) . '/' . $queryString;
}
/**
* Check le statut de l'URL rewriting
* @return bool
*/
public static function checkRewrite()
{
// N'interroge que le serveur Apache
if (strpos($_SERVER["SERVER_SOFTWARE"], 'Apache') > 0) {
self::$rewriteStatus = false;
} else {
// Ouvre et scinde le fichier .htaccess
$htaccess = explode('# URL rewriting', file_get_contents('.htaccess'));
// Retourne un boolean en fonction du contenu de la partie réservée à l'URL rewriting
self::$rewriteStatus = (strpos($htaccess[1], 'RewriteEngine on') !== false);
}
return self::$rewriteStatus;
}
/**
* Renvoie le numéro de version de Zwii est en ligne
* @return string
*/
public static function getOnlineVersion($channel)
{
return (helper::getUrlContents(common::ZWII_UPDATE_URL . $channel . '/version'));
}
/**
* Check si une nouvelle version de Zwii est disponible
* @return bool
*/
public static function checkNewVersion($channel)
{
$version = helper::getOnlineVersion($channel);
$update = false;
if (!empty($version)) {
$update = version_compare(common::ZWII_VERSION, $version) == -1;
}
return $update;
}
/**
* Génère des variations d'une couleur
* @param string $rgba Code rgba de la couleur
* @return array
*/
public static function colorVariants($rgba)
{
preg_match('#\(+(.*)\)+#', $rgba, $matches);
$rgba = explode(', ', $matches[1]);
return [
'normal' => 'rgba(' . $rgba[0] . ',' . $rgba[1] . ',' . $rgba[2] . ',' . $rgba[3] . ')',
'darken' => 'rgba(' . max(0, $rgba[0] - 15) . ',' . max(0, $rgba[1] - 15) . ',' . max(0, $rgba[2] - 15) . ',' . $rgba[3] . ')',
'veryDarken' => 'rgba(' . max(0, $rgba[0] - 20) . ',' . max(0, $rgba[1] - 20) . ',' . max(0, $rgba[2] - 20) . ',' . $rgba[3] . ')',
'text' => self::relativeLuminanceW3C($rgba) > .22 ? "#222" : "#DDD",
'rgb' => 'rgb(' . $rgba[0] . ',' . $rgba[1] . ',' . $rgba[2] . ')',
'invert' => 'rgba (' .
($rgba[0] < 128 ? 255 : 0) . ',' .
($rgba[1] < 128 ? 255 : 0) . ',' .
($rgba[1] < 128 ? 255 : 0) . ',' .
($rgba[0] < 128 ? 255 : 0) . ')'
];
}
/**
* Supprime un cookie
* @param string $cookieKey Clé du cookie à supprimer
*/
public static function deleteCookie($cookieKey)
{
setcookie($cookieKey, '', time() - 3600, helper::baseUrl(false, false), '', false, true);
unset($_COOKIE[$cookieKey]);
}
/**
* Filtre une chaîne en fonction d'un tableau de données
* @param string $text Chaîne à filtrer
* @param int $filter Type de filtre à appliquer
* @return string
*/
public static function filter($text, $filter)
{
$text = is_null($text) ? $text : trim($text);
switch ($filter) {
case self::FILTER_BOOLEAN:
$text = (bool) $text;
break;
case self::FILTER_DATETIME:
$timezone = new DateTimeZone(core::$timezone);
$date = new DateTime($text);
$date->setTimezone($timezone);
$text = (int) $date->format('U');
break;
case self::FILTER_FLOAT:
$text = str_replace(',', '.', $text); // Remplacer les virgules par des points
$text = filter_var($text, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
$text = (float) $text;
break;
case self::FILTER_ID:
$text = mb_strtolower($text, 'UTF-8');
$text = strip_tags(
str_replace(
explode(',', 'á,à,â,ä,ã,å,ç,é,è,ê,ë,í,ì,î,ï,ñ,ó,ò,ô,ö,õ,ú,ù,û,ü,ý,ÿ,\',", '),
explode(',', 'a,a,a,a,a,a,c,e,e,e,e,i,i,i,i,n,o,o,o,o,o,u,u,u,u,y,y,-,-,-'),
$text
)
);
$text = preg_replace('/([^a-z0-9-])/', '', $text);
// Supprime les emoji
$text = preg_replace('/[[:^print:]]/', '', $text);
// Supprime les tirets en fin de chaine (emoji en fin de nom)
$text = rtrim($text, '-');
// Cas où un identifiant est vide
if (empty($text)) {
$text = uniqid('');
}
// Un ID ne peut pas être un entier, pour éviter les conflits avec le système de pagination
if (intval($text) !== 0) {
$text = '_' . $text;
}
break;
case self::FILTER_INT:
$text = (int) filter_var($text, FILTER_SANITIZE_NUMBER_INT);
break;
case self::FILTER_MAIL:
$text = filter_var($text, FILTER_SANITIZE_EMAIL);
break;
case self::FILTER_PASSWORD:
$text = password_hash($text, PASSWORD_BCRYPT);
break;
case self::FILTER_STRING_LONG:
$text = mb_substr(filter_var($text, FILTER_SANITIZE_FULL_SPECIAL_CHARS), 0, 500000);
break;
case self::FILTER_STRING_SHORT:
$text = mb_substr(filter_var($text, FILTER_SANITIZE_FULL_SPECIAL_CHARS), 0, 500);
break;
case self::FILTER_TIMESTAMP:
$text = date('Y-m-d H:i:s', $text);
break;
case self::FILTER_URL:
$text = filter_var($text, FILTER_SANITIZE_URL);
break;
case self::FILTER_DATE:
$text = date('Y-m-d', $text);
break;
case self::FILTER_TIME:
$text = date('H:i', $text);
}
return $text;
}
/**
* Incrémente une clé en fonction des clés ou des valeurs d'un tableau
* @param mixed $key Clé à incrémenter
* @param array $array Tableau à vérifier
* @return string
*/
public static function increment($key, $array = [])
{
// Pas besoin d'incrémenter si la clef n'existe pas
if ($array === []) {
return $key;
}
// Incrémente la clef
else {
// Si la clef est numérique elle est incrémentée
if (is_numeric($key)) {
$newKey = $key;
while (array_key_exists($newKey, $array) or in_array($newKey, $array)) {
$newKey++;
}
}
// Sinon l'incrémentation est ajoutée après la clef
else {
$i = 2;
$newKey = $key;
while (array_key_exists($newKey, $array) or in_array($newKey, $array)) {
$newKey = $key . '-' . $i;
$i++;
}
}
return $newKey;
}
}
/**
* Minimise du css
* @param string $css Css à minimiser
* @return string
*/
public static function minifyCss($css)
{
// Supprime les commentaires
$css = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $css);
// Supprime les tabulations, espaces, nouvelles lignes, etc...
$css = str_replace(["\r\n", "\r", "\n", "\t", ' ', ' ', ' '], '', $css);
$css = preg_replace(['(( )+{)', '({( )+)'], '{', $css);
$css = preg_replace(['(( )+})', '(}( )+)', '(;( )*})'], '}', $css);
$css = preg_replace(['(;( )+)', '(( )+;)'], ';', $css);
// Convertir les codes entités
$css = htmlspecialchars_decode($css);
// Supprime les balises HTML
$css = strip_tags($css);
// Retourne le css minifié
return $css;
}
/**
* Minimise du js
* @param string $js Js à minimiser
* @return string
*/
public static function minifyJs($js)
{
// Supprime les commentaires
$js = preg_replace('/\\/\\*[^*]*\\*+([^\\/][^*]*\\*+)*\\/|\s*(?<![\:\=])\/\/.*/', '', $js);
// Supprime les tabulations, espaces, nouvelles lignes, etc...
$js = str_replace(["\r\n", "\r", "\t", "\n", ' ', ' ', ' '], '', $js);
$js = preg_replace(['(( )+\))', '(\)( )+)'], ')', $js);
// Retourne le js minifié
return $js;
}
/**
* Crée un système de pagination (retourne un tableau contenant les informations sur la pagination (first, last, pages))
* @param array $array Tableau de donnée à utiliser
* @param string $url URL à utiliser, la dernière partie doit correspondre au numéro de page, par défaut utiliser $this->getUrl()
* @param string $item pagination nombre d'éléments par page
* @param null|int $sufix Suffixe de l'url
* @return array
*/
public static function pagination($array, $url, $item, $suffix = null)
{
// Scinde l'url
$url = explode('/', $url);
// Url de pagination
$urlPagination = is_numeric($url[count($url) - 1]) ? array_pop($url) : 1;
// Url de la page courante
$urlCurrent = implode('/', $url);
// Nombre d'éléments à afficher
$nbElements = count($array);
// Nombre de page
$nbPage = ceil($nbElements / $item);
// Page courante
$currentPage = is_numeric($urlPagination) ? self::filter($urlPagination, self::FILTER_INT) : 1;
// Premier élément de la page
$firstElement = ($currentPage - 1) * $item;
// Dernier élément de la page
$lastElement = $firstElement + $item;
$lastElement = ($lastElement > $nbElements) ? $nbElements : $lastElement;
// Mise en forme de la liste des pages
$pages = '';
if ($nbPage > 1) {
for ($i = 1; $i <= $nbPage; $i++) {
$disabled = ($i === $currentPage) ? ' class="disabled"' : false;
$pages .= '<a href="' . helper::baseUrl() . $urlCurrent . '/' . $i . $suffix . '"' . $disabled . '>' . $i . '</a>';
}
$pages = '<div class="pagination">' . $pages . '</div>';
}
// Retourne un tableau contenant les informations sur la pagination
return [
'first' => $firstElement,
'last' => $lastElement,
'pages' => $pages
];
}
/**
* Calcul de la luminance relative d'une couleur
*/
public static function relativeLuminanceW3C($rgba)
{
// Conversion en sRGB
$RsRGB = $rgba[0] / 255;
$GsRGB = $rgba[1] / 255;
$BsRGB = $rgba[2] / 255;
// Ajout de la transparence
$RsRGBA = $rgba[3] * $RsRGB + (1 - $rgba[3]);
$GsRGBA = $rgba[3] * $GsRGB + (1 - $rgba[3]);
$BsRGBA = $rgba[3] * $BsRGB + (1 - $rgba[3]);
// Calcul de la luminance
$R = ($RsRGBA <= .03928) ? $RsRGBA / 12.92 : pow(($RsRGBA + .055) / 1.055, 2.4);
$G = ($GsRGBA <= .03928) ? $GsRGBA / 12.92 : pow(($GsRGBA + .055) / 1.055, 2.4);
$B = ($BsRGBA <= .03928) ? $BsRGBA / 12.92 : pow(($BsRGBA + .055) / 1.055, 2.4);
return .2126 * $R + .7152 * $G + .0722 * $B;
}
/**
* Retourne les attributs d'une balise au bon format
* @param array $array Liste des attributs ($key => $value)
* @param array $exclude Clés à ignorer ($key)
* @return string
*/
public static function sprintAttributes(array $array = [], array $exclude = [])
{
$exclude = array_merge(
[
'before',
'classWrapper',
'help',
'label'
],
$exclude
);
$attributes = [];
foreach ($array as $key => $value) {
if (($value or $value === 0) and in_array($key, $exclude) === false) {
// Désactive le message de modifications non enregistrées pour le champ
if ($key === 'noDirty') {
$attributes[] = 'data-no-dirty';
}
// Disabled
// Readonly
elseif (in_array($key, ['disabled', 'readonly'])) {
$attributes[] = sprintf('%s', $key);
}
// Autres
else {
$attributes[] = sprintf('%s="%s"', $key, $value);
}
}
}
return implode(' ', $attributes);
}
/**
* Retourne un segment de chaîne sans couper de mot
* @param string $text Texte à scinder
* @param int $start (voir substr de PHP pour fonctionnement)
* @param int $length (voir substr de PHP pour fonctionnement)
* @return string
*/
public static function subword($text, $start, $length)
{
$text = trim($text);
// Vérifier si la longueur du texte sans les balises dépasse la longueur souhaitée
if (mb_strlen(strip_tags($text)) > $length) {
// Utiliser mb_substr pour couper le texte
$text = mb_substr($text, $start, $length);
// S'assurer que le texte ne se termine pas au milieu d'un mot
$lastSpace = mb_strrpos($text, ' ');
if ($lastSpace !== false) {
$text = mb_substr($text, 0, $lastSpace);
}
// Fermer les balises HTML ouvertes
$dom = new DOMDocument();
@$dom->loadHTML('<div>' . $text . '</div>', LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$text = $dom->saveHTML();
// Retirer la balise de conteneur ajoutée
$text = preg_replace('~^<div>(.*)</div>$~s', '$1', $text);
// Ajouter des points de suspension si le texte a été coupé
$text .= '...';
}
return $text;
}
/**
* Cryptage
* @param string $key la clé d'encryptage
* @param string $string la chaine à coder
* @return string
*/
public static function encrypt($string, $key)
{
$encrypted = openssl_encrypt($string, "AES-256-CBC", $key, 0, substr(md5($key), 0, 16));
return base64_encode($encrypted);
}
/**
* Décryptage
* @param string $key la clé d'encryptage
* @param string $string la chaine à décoder
* @return string
*/
public static function decrypt($string, $key)
{
$decrypted = openssl_decrypt(base64_decode($string), "AES-256-CBC", $key, 0, substr(md5($key), 0, 16));
return $decrypted;
}
}

View File

@ -0,0 +1,477 @@
<?php
namespace Prowebcraft;
use ArrayAccess;
/**
* Dot Notation
*
* This class provides dot notation access to arrays, so it's easy to handle
* multidimensional data in a clean way.
*/
class Dot implements \ArrayAccess, \Iterator, \Countable
{
/** @var array Data */
protected $data = [];
/**
* Constructor
*
* @param array|null $data Data
*/
public function __construct(array $data = null)
{
if (is_array($data)) {
$this->data = $data;
}
}
/**
* Get value of path, default value if path doesn't exist or all data
*
* @param array $array Source Array
* @param mixed|null $key Path
* @param mixed|null $default Default value
* @return mixed Value of path
*/
public static function getValue($array, $key, $default = null)
{
if (is_string($key)) {
// Iterate path
$keys = explode('.', $key);
foreach ($keys as $key) {
if (!isset($array[$key])) {
return $default;
}
$array = &$array[$key];
}
// Get value
return $array;
} elseif (is_null($key)) {
// Get all data
return $array;
}
return null;
}
/**
* Set value or array of values to path
*
* @param array $array Target array with data
* @param mixed $key Path or array of paths and values
* @param mixed|null $value Value to set if path is not an array
*/
public static function setValue(&$array, $key, $value)
{
if (is_string($key)) {
// Iterate path
$keys = explode('.', $key);
foreach ($keys as $key) {
if (!isset($array[$key]) || !is_array($array[$key])) {
$array[$key] = [];
}
$array = &$array[$key];
}
// Set value to path
$array = $value;
} elseif (is_array($key)) {
// Iterate array of paths and values
foreach ($key as $k => $v) {
self::setValue($array, $k, $v);
}
}
}
/**
* Add value or array of values to path
*
* @param array $array Target array with data
* @param mixed $key Path or array of paths and values
* @param mixed|null $value Value to set if path is not an array
* @param boolean $pop Helper to pop out last key if value is an array
*/
public static function addValue(&$array, $key, $value = null, $pop = false)
{
if (is_array($key)) {
// Iterate array of paths and values
foreach ($key as $k => $v) {
self::addValue($array, $k, $v);
}
} else {
// Iterate path
$keys = explode('.', (string)$key);
if ($pop === true) {
array_pop($keys);
}
foreach ($keys as $key) {
if (!isset($array[$key]) || !is_array($array[$key])) {
$array[$key] = [];
}
$array = &$array[$key];
}
// Add value to path
$array[] = $value;
}
}
/**
* Delete path or array of paths
*
* @param array $array Target array with data
* @param mixed $key Path or array of paths to delete
*/
public static function deleteValue(&$array, $key)
{
if (is_string($key)) {
// Iterate path
$keys = explode('.', $key);
$last = array_pop($keys);
foreach ($keys as $key) {
if (!isset($array[$key])) {
return;
}
$array = &$array[$key];
}
if (isset($array[$last])) {
// Detele path
unset($array[$last]);
}
} elseif (is_array($key)) {
// Iterate array of paths
foreach ($key as $k) {
self::deleteValue($array, $k);
}
}
}
/**
* Get value of path, default value if path doesn't exist or all data
*
* @param mixed|null $key Path
* @param mixed|null $default Default value
* @return mixed Value of path
*/
public function get($key, $default = null, $asObject = false)
{
$value = self::getValue($this->data, $key, $default);
if ($asObject && is_array($value)) {
return new self($value);
}
return $value;
}
/**
* Set value or array of values to path
*
* @param mixed $key Path or array of paths and values
* @param mixed|null $value Value to set if path is not an array
* @return $this
*/
public function set($key, $value = null)
{
self::setValue($this->data, $key, $value);
return $this;
}
/**
* Add value or array of values to path
*
* @param mixed $key Path or array of paths and values
* @param mixed|null $value Value to set if path is not an array
* @param boolean $pop Helper to pop out last key if value is an array
* @return $this
*/
public function add($key, $value = null, $pop = false)
{
self::addValue($this->data, $key, $value);
return $this;
}
/**
* Check if path exists
*
* @param string $key Path
* @return boolean
*/
public function has($key)
{
$keys = explode('.', (string)$key);
$data = &$this->data;
foreach ($keys as $key) {
if (!isset($data[$key])) {
return false;
}
$data = &$data[$key];
}
return true;
}
/**
* Delete path or array of paths
*
* @param mixed $key Path or array of paths to delete
* @return $this
*/
public function delete($key)
{
self::deleteValue($this->data, $key);
return $this;
}
/**
* Increase numeric value
*
* @param string $key
* @param float $number
* @return float
*/
public function plus(string $key, float $number): float
{
$newAmount = $this->get($key, 0) + $number;
$this->set($key, $newAmount);
return $newAmount;
}
/**
* Reduce numeric value
*
* @param string $key
* @param float $number
* @return float
*/
public function minus(string $key, float $number): float
{
$newAmount = $this->get($key, 0) - $number;
$this->set($key, $newAmount);
return $newAmount;
}
/**
* Delete all data, data from path or array of paths and
* optionally format path if it doesn't exist
*
* @param mixed|null $key Path or array of paths to clean
* @param boolean $format Format option
*/
public function clear($key = null, $format = false)
{
if (is_string($key)) {
// Iterate path
$keys = explode('.', $key);
$data = &$this->data;
foreach ($keys as $key) {
if (!isset($data[$key]) || !is_array($data[$key])) {
if ($format === true) {
$data[$key] = [];
} else {
return;
}
}
$data = &$data[$key];
}
// Clear path
$data = [];
} elseif (is_array($key)) {
// Iterate array
foreach ($key as $k) {
$this->clear($k, $format);
}
} elseif (is_null($key)) {
// Clear all data
$this->data = [];
}
}
/**
* Set data
*
* @param array $data
*/
public function setData(array $data)
{
$this->data = $data;
}
/**
* Set data as a reference
*
* @param array $data
*/
public function setDataAsRef(array &$data)
{
$this->data = &$data;
}
/**
* @inheritDoc
*/
public function offsetSet($offset, $value): void
{
$this->set($offset, $value);
}
/**
* @inheritDoc
*/
public function offsetExists($offset): bool
{
return $this->has($offset);
}
/**
* @inheritDoc
*/
public function offsetGet($offset): mixed
{
return $this->get($offset);
}
/**
* @inheritDoc
*/
public function offsetUnset($offset): void
{
$this->delete($offset);
}
/**
* Magic methods
*/
public function __set($key, $value = null)
{
$this->set($key, $value);
}
public function __get($key)
{
return $this->get($key);
}
public function __isset($key)
{
return $this->has($key);
}
public function __unset($key)
{
$this->delete($key);
}
/**
* Check for emptiness
*
* @return bool
*/
public function isEmpty(): bool
{
return !(bool)count($this->data);
}
/**
* Return all data as array
*
* @return array
*/
public function toArray(): array
{
return $this->data;
}
/**
* Return as json string
*
* @return false|string
*/
public function toJson()
{
return json_encode($this->data, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);
}
/**
* @return string
*/
public function __toString(): string
{
return $this->toJson();
}
/**
* @return array
*/
public function __toArray(): array
{
return $this->toArray();
}
/**
* Return the current element
* @link https://php.net/manual/en/iterator.current.php
* @return mixed Can return any type.
* @since 5.0.0
*/
public function current(): mixed
{
return current($this->data);
}
/**
* Move forward to next element
* @link https://php.net/manual/en/iterator.next.php
* @return void Any returned value is ignored.
* @since 5.0.0
*/
public function next(): void
{
next($this->data);
}
/**
* Return the key of the current element
* @link https://php.net/manual/en/iterator.key.php
* @return mixed scalar on success, or null on failure.
* @since 5.0.0
*/
public function key(): mixed
{
return key($this->data);
}
/**
* Checks if current position is valid
* @link https://php.net/manual/en/iterator.valid.php
* @return bool The return value will be casted to boolean and then evaluated.
* Returns true on success or false on failure.
* @since 5.0.0
*/
public function valid(): bool
{
$key = key($this->data);
return ($key !== NULL && $key !== FALSE);
}
/**
* Rewind the Iterator to the first element
* @link https://php.net/manual/en/iterator.rewind.php
* @return void Any returned value is ignored.
* @since 5.0.0
*/
public function rewind(): void
{
reset($this->data);
}
/**
* @inheritDoc
*/
public function count(): int
{
return count($this->data);
}
}

View File

@ -0,0 +1,191 @@
<?php
/**
* Created by PhpStorm.
* User: Andrey Mistulov
* Company: Aristos
* Date: 14.03.2017
* Time: 15:25
*/
namespace Prowebcraft;
/**
* Class Data
* @package Aristos
*/
class JsonDb extends \Prowebcraft\Dot
{
protected $db = '';
protected $data = null;
protected $config = [];
// Tentative d'encodage après échec
const MAX_JSON_ENCODE_ATTEMPTS = 5;
// Tentative d'écriture après échec
const MAX_FILE_WRITE_ATTEMPTS = 5;
// Délais entre deux tentaives
const RETRY_DELAY_SECONDS = 1;
public function __construct($config = [])
{
$this->config = array_merge([
'name' => 'data.json',
'backup' => false,
'dir' => getcwd()
], $config);
$this->loadData();
parent::__construct();
}
/**
* Reload data from file
* @return $this
*/
public function reload()
{
$this->loadData(true);
return $this;
}
/**
* Set value or array of values to path
*
* @param mixed $key Path or array of paths and values
* @param mixed|null $value Value to set if path is not an array
* @param bool $save Save data to database
* @return $this
*/
public function set($key, $value = null, $save = true)
{
parent::set($key, $value);
if ($save)
$this->save();
return $this;
}
/**
* Add value or array of values to path
*
* @param mixed $key Path or array of paths and values
* @param mixed|null $value Value to set if path is not an array
* @param boolean $pop Helper to pop out last key if value is an array
* @param bool $save Save data to database
* @return $this
*/
public function add($key, $value = null, $pop = false, $save = true)
{
parent::add($key, $value, $pop);
if ($save)
$this->save();
return $this;
}
/**
* Delete path or array of paths
*
* @param mixed $key Path or array of paths to delete
* @param bool $save Save data to database
* @return $thisurn $this
*/
public function delete($key, $save = true)
{
parent::delete($key);
if ($save)
$this->save();
return $this;
}
/**
* Delete all data, data from path or array of paths and
* optionally format path if it doesn't exist
*
* @param mixed|null $key Path or array of paths to clean
* @param boolean $format Format option
* @param bool $save Save data to database
* @return $this
*/
public function clear($key = null, $format = false, $save = true)
{
parent::clear($key, $format);
if ($save)
$this->save();
return $this;
}
/**
* Local database upload
* @param bool $reload Reboot data?
* @return array|mixed|null
*/
protected function loadData($reload = false)
{
if ($this->data === null || $reload) {
$this->db = $this->config['dir'] . $this->config['name'];
if (!file_exists($this->db)) {
return null; // Rebuild database manage by CMS
} else {
if ($this->config['backup']) {
try {
copy($this->config['dir'] . DIRECTORY_SEPARATOR . $this->config['name'], $this->config['dir'] . DIRECTORY_SEPARATOR . $this->config['name'] . '.backup');
} catch (\Exception $e) {
error_log('Erreur de chargement : ' . $e);
exit('Erreur de chargement : ' . $e);
}
}
}
$this->data = json_decode(file_get_contents($this->db), true);
if (!$this->data === null) {
throw new \InvalidArgumentException('Database file ' . $this->db
. ' contains invalid json object. Please validate or remove file');
}
}
return $this->data;
}
/**
* Save database
*/
public function save()
{
// Encode les données au format JSON avec les options spécifiées
//$encoded_data = json_encode($this->data, JSON_UNESCAPED_UNICODE | JSON_FORCE_OBJECT | JSON_PRETTY_PRINT);
$encoded_data = json_encode($this->data, JSON_UNESCAPED_UNICODE | JSON_FORCE_OBJECT);
// Vérifie la longueur de la chaîne JSON encodée
$encoded_length = strlen($encoded_data);
// Initialise le compteur de tentatives
$attempt = 0;
// Tente d'encoder les données en JSON et de les sauvegarder jusqu'à 5 fois en cas d'échec
while ($attempt < 5) {
// Essaye d'écrire les données encodées dans le fichier de base de données
$write_result = file_put_contents($this->db, $encoded_data, LOCK_EX); // Les utilisateurs multiples obtiennent un verrou
//$now = \DateTime::createFromFormat('U.u', microtime(true));
//file_put_contents("tmplog.txt", '[JsonDb][' . $now->format('H:i:s.u') . ']--' . $this->db . "\r\n", FILE_APPEND);
// Vérifie si l'écriture a réussi
if ($write_result === $encoded_length) {
// Sort de la boucle si l'écriture a réussi
break;
}
// Incrémente le compteur de tentatives
$attempt++;
// Attente
sleep(1);
}
// Vérifie si l'écriture a échoué même après plusieurs tentatives
if ($write_result !== $encoded_length) {
// Enregistre un message d'erreur dans le journal des erreurs
error_log('Erreur d\'écriture, les données n\'ont pas été sauvegardées.');
// Affiche un message d'erreur et termine le script
exit('Erreur d\'écriture, les données n\'ont pas été sauvegardées.');
}
}
}

View File

@ -0,0 +1,19 @@
Copyright (c) 2016-2017 Andrey Mistulov
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

269
core/class/jsondb/README.md Normal file
View File

@ -0,0 +1,269 @@
# Dot - PHP dot notation array access
Based on [adbario/php-dot-notation](https://github.com/adbario/php-dot-notation) package
Easy access to multidimensional arrays with dot notation.
With dot notation, your code is cleaner and handling deeper arrays is super easy.
This class implements PHP's ArrayAccess class, so Dot object can also be used the same way as normal arrays with additional dot notation.
With Dot you can change this:
```php
echo $data['info']['home']['address'];
```
to this:
```php
echo $data->get('info.home.address');
```
or even this:
```php
echo $data['info.home.address'];
```
## Installation
Via composer:
```
composer require adbario/php-dot-notation
```
Or just copy the class file Dot.php and handle namespace yourself.
#### With [Composer](https://getcomposer.org/):
```
composer require adbario/php-dot-notation
```
#### Manual installation:
1. Download the latest release
2. Extract the files into your project
3. require_once '/path/to/php-dot-notation/src/Dot.php';
## Usage
This array will be used as a reference on this guide:
```php
$array = [
'user' => [
'firstname' => 'John',
'lastname' => 'Smith'
],
'info' => [
'kids' => [
0 => 'Laura',
1 => 'Chris',
2 => 'Little Johnny'
],
'home' => [
'address' => 'Rocky Road 3'
]
]
];
```
### Create a Dot object
To start with an empty array, just create a new Dot object:
```php
$data = new \Adbar\Dot;
```
If you have an array already available, inject it to the Dot object:
```php
$data = new \Adbar\Dot($array);
```
Set an array after creating the Dot object:
```php
$data->setArray($array);
```
Set an array as a reference, and all changes will be made directly to the original array:
```php
$data->setReference($array);
```
### Set a value
Set i.e. a phone number in the 'home' array:
```php
$data->set('info.home.tel', '09-123-456-789');
// Array style
$data['info.home.tel'] = '09-123-456-789';
```
Set multiple values at once:
```php
$data->set([
'user.haircolor' => 'blue',
'info.home.address' => 'Private Lane 1'
]);
```
If the value already exists, Dot will override it with a new value.
### Get a value
```php
echo $data->get('info.home.address');
// Default value if the path doesn't exist
echo $data->get('info.home.country', 'some default value');
// Array style
echo $data['info.home.address'];
```
Get all the stored values:
```php
$values = $data->all();
``
Get a value from a path and remove it:
```php
$address = $data->pull('home.address');
```
Get all the stored values and remove them:
```php
$values = $data->pull();
```
### Add a value
```php
$data->add('info.kids', 'Amy');
```
Multiple values at once:
```php
$data->add('info.kids', [
'Ben', 'Claire'
]);
```
### Check if a value exists
```php
if ($data->has('info.home.address')) {
// Do something...
}
// Array style
if (isset($data['info.home.address'])) {
// Do something...
}
```
### Delete a value
```php
$data->delete('info.home.address');
// Array style
unset($data['info.home.address']);
```
Multiple values at once:
```php
$data->delete([
'user.lastname', 'info.home.address'
]);
```
### Clear values
Delete all the values from a path:
```php
$data->clear('info.home');
```
Clear multiple paths at once:
```php
$data->clear([
'user', 'info.home'
]);
```
Clear all data:
```php
$data->clear();
```
### Sort the values
You can sort the values of a given path or all the stored values.
Sort the values of a path:
```php
$kids = $data->sort('info.kids');
// Sort recursively
$info = $data->sort('info');
```
Sort all the values
```php
$sorted = $data->sort();
// Sort recursively
$sorted = $data->sort();
```
### Magic methods
Magic methods can be used to handle single level data (without dot notation). These examples are not using the same data array as examples above.
Set a value:
```php
$data->name = 'John';
```
Get a value:
```php
echo $data->name;
```
Check if a value exists:
```php
if (isset($data->name)) {
// Do something...
}
```
Delete a value:
```php
unset($data->name);
```
## License
[MIT license](LICENSE.md)

1359
core/class/layout.class.php Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,3 @@
# Bloque l'accès à la librairie
Order deny,allow
Deny from all

View File

@ -1,4 +1,5 @@
<?php <?php
/** /**
* PHPMailer Exception class. * PHPMailer Exception class.
* PHP Version 5.5. * PHP Version 5.5.
@ -9,7 +10,7 @@
* @author Jim Jagielski (jimjag) <jimjag@gmail.com> * @author Jim Jagielski (jimjag) <jimjag@gmail.com>
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net> * @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
* @author Brent R. Matzelle (original founder) * @author Brent R. Matzelle (original founder)
* @copyright 2012 - 2017 Marcus Bointon * @copyright 2012 - 2020 Marcus Bointon
* @copyright 2010 - 2012 Jim Jagielski * @copyright 2010 - 2012 Jim Jagielski
* @copyright 2004 - 2009 Andy Prevost * @copyright 2004 - 2009 Andy Prevost
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
@ -34,6 +35,6 @@ class Exception extends \Exception
*/ */
public function errorMessage() public function errorMessage()
{ {
return '<strong>' . htmlspecialchars($this->getMessage()) . "</strong><br />\n"; return '<strong>' . htmlspecialchars($this->getMessage(), ENT_COMPAT | ENT_HTML401) . "</strong><br />\n";
} }
} }

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,28 @@
<?php
/**
* German PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP-Fehler: Authentifizierung fehlgeschlagen.';
$PHPMAILER_LANG['connect_host'] = 'SMTP-Fehler: Konnte keine Verbindung zum SMTP-Host herstellen.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP-Fehler: Daten werden nicht akzeptiert.';
$PHPMAILER_LANG['empty_message'] = 'E-Mail-Inhalt ist leer.';
$PHPMAILER_LANG['encoding'] = 'Unbekannte Kodierung: ';
$PHPMAILER_LANG['execute'] = 'Konnte folgenden Befehl nicht ausführen: ';
$PHPMAILER_LANG['file_access'] = 'Zugriff auf folgende Datei fehlgeschlagen: ';
$PHPMAILER_LANG['file_open'] = 'Dateifehler: Konnte folgende Datei nicht öffnen: ';
$PHPMAILER_LANG['from_failed'] = 'Die folgende Absenderadresse ist nicht korrekt: ';
$PHPMAILER_LANG['instantiate'] = 'Mail-Funktion konnte nicht initialisiert werden.';
$PHPMAILER_LANG['invalid_address'] = 'Die Adresse ist ungültig: ';
$PHPMAILER_LANG['invalid_hostentry'] = 'Ungültiger Hosteintrag: ';
$PHPMAILER_LANG['invalid_host'] = 'Ungültiger Host: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer wird nicht unterstützt.';
$PHPMAILER_LANG['provide_address'] = 'Bitte geben Sie mindestens eine Empfängeradresse an.';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP-Fehler: Die folgenden Empfänger sind nicht korrekt: ';
$PHPMAILER_LANG['signing'] = 'Fehler beim Signieren: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'Verbindung zum SMTP-Server fehlgeschlagen.';
$PHPMAILER_LANG['smtp_error'] = 'Fehler vom SMTP-Server: ';
$PHPMAILER_LANG['variable_set'] = 'Kann Variable nicht setzen oder zurücksetzen: ';
$PHPMAILER_LANG['extension_missing'] = 'Fehlende Erweiterung: ';

View File

@ -0,0 +1,33 @@
<?php
/**
* Greek PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
*/
$PHPMAILER_LANG['authenticate'] = 'Σφάλμα SMTP: Αδυναμία πιστοποίησης.';
$PHPMAILER_LANG['buggy_php'] = 'Η έκδοση PHP που χρησιμοποιείτε παρουσιάζει σφάλμα που μπορεί να έχει ως αποτέλεσμα κατεστραμένα μηνύματα. Για να το διορθώσετε, αλλάξτε τον τρόπο αποστολής σε SMTP, απενεργοποιήστε την επιλογή mail.add_x_header στο αρχείο php.ini, αλλάξτε λειτουργικό σε MacOS ή Linux ή αναβαθμίστε την PHP σε έκδοση 7.0.17+ ή 7.1.3+.';
$PHPMAILER_LANG['connect_host'] = 'Σφάλμα SMTP: Αδυναμία σύνδεσης με τον φιλοξενητή SMTP.';
$PHPMAILER_LANG['data_not_accepted'] = 'Σφάλμα SMTP: Μη αποδεκτά δεδομένα.';
$PHPMAILER_LANG['empty_message'] = 'Η ηλεκτρονική επιστολή δεν έχει περιεχόμενο.';
$PHPMAILER_LANG['encoding'] = 'Άγνωστη μορφή κωδικοποίησης: ';
$PHPMAILER_LANG['execute'] = 'Αδυναμία εκτέλεσης: ';
$PHPMAILER_LANG['extension_missing'] = 'Απουσία επέκτασης: ';
$PHPMAILER_LANG['file_access'] = 'Αδυναμία πρόσβασης στο αρχείο: ';
$PHPMAILER_LANG['file_open'] = 'Σφάλμα Αρχείου: Αδυναμία ανοίγματος αρχείου: ';
$PHPMAILER_LANG['from_failed'] = 'Η ακόλουθη διεύθυνση αποστολέα δεν είναι σωστή: ';
$PHPMAILER_LANG['instantiate'] = 'Αδυναμία εκκίνησης συνάρτησης Mail.';
$PHPMAILER_LANG['invalid_address'] = 'Μη έγκυρη διεύθυνση: ';
$PHPMAILER_LANG['invalid_header'] = 'Μη έγκυρο όνομα κεφαλίδας ή τιμή';
$PHPMAILER_LANG['invalid_hostentry'] = 'Μη έγκυρη εισαγωγή φιλοξενητή: ';
$PHPMAILER_LANG['invalid_host'] = 'Μη έγκυρος φιλοξενητής: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer δεν υποστηρίζεται.';
$PHPMAILER_LANG['provide_address'] = 'Δώστε τουλάχιστον μια ηλεκτρονική διεύθυνση παραλήπτη.';
$PHPMAILER_LANG['recipients_failed'] = 'Σφάλμα SMTP: Οι παρακάτω διευθύνσεις παραλήπτη δεν είναι έγκυρες: ';
$PHPMAILER_LANG['signing'] = 'Σφάλμα υπογραφής: ';
$PHPMAILER_LANG['smtp_code'] = 'Κώδικάς SMTP: ';
$PHPMAILER_LANG['smtp_code_ex'] = 'Πρόσθετες πληροφορίες SMTP: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'Αποτυχία σύνδεσης SMTP.';
$PHPMAILER_LANG['smtp_detail'] = 'Λεπτομέρεια: ';
$PHPMAILER_LANG['smtp_error'] = 'Σφάλμα με τον διακομιστή SMTP: ';
$PHPMAILER_LANG['variable_set'] = 'Αδυναμία ορισμού ή επαναφοράς μεταβλητής: ';

View File

@ -0,0 +1,31 @@
<?php
/**
* Spanish PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Matt Sturdy <matt.sturdy@gmail.com>
* @author Crystopher Glodzienski Cardoso <crystopher.glodzienski@gmail.com>
*/
$PHPMAILER_LANG['authenticate'] = 'Error SMTP: Imposible autentificar.';
$PHPMAILER_LANG['connect_host'] = 'Error SMTP: Imposible conectar al servidor SMTP.';
$PHPMAILER_LANG['data_not_accepted'] = 'Error SMTP: Datos no aceptados.';
$PHPMAILER_LANG['empty_message'] = 'El cuerpo del mensaje está vacío.';
$PHPMAILER_LANG['encoding'] = 'Codificación desconocida: ';
$PHPMAILER_LANG['execute'] = 'Imposible ejecutar: ';
$PHPMAILER_LANG['file_access'] = 'Imposible acceder al archivo: ';
$PHPMAILER_LANG['file_open'] = 'Error de Archivo: Imposible abrir el archivo: ';
$PHPMAILER_LANG['from_failed'] = 'La(s) siguiente(s) direcciones de remitente fallaron: ';
$PHPMAILER_LANG['instantiate'] = 'Imposible crear una instancia de la función Mail.';
$PHPMAILER_LANG['invalid_address'] = 'Imposible enviar: dirección de email inválido: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer no está soportado.';
$PHPMAILER_LANG['provide_address'] = 'Debe proporcionar al menos una dirección de email de destino.';
$PHPMAILER_LANG['recipients_failed'] = 'Error SMTP: Los siguientes destinos fallaron: ';
$PHPMAILER_LANG['signing'] = 'Error al firmar: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() falló.';
$PHPMAILER_LANG['smtp_error'] = 'Error del servidor SMTP: ';
$PHPMAILER_LANG['variable_set'] = 'No se pudo configurar la variable: ';
$PHPMAILER_LANG['extension_missing'] = 'Extensión faltante: ';
$PHPMAILER_LANG['smtp_code'] = 'Código del servidor SMTP: ';
$PHPMAILER_LANG['smtp_code_ex'] = 'Información adicional del servidor SMTP: ';
$PHPMAILER_LANG['invalid_header'] = 'Nombre o valor de encabezado no válido';

View File

@ -0,0 +1,38 @@
<?php
/**
* French PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* Some French punctuation requires a thin non-breaking space (U+202F) character before it,
* for example before a colon or exclamation mark.
* There is one of these characters between these quotes: ""
* @see http://unicode.org/udhr/n/notes_fra.html
*/
$PHPMAILER_LANG['authenticate'] = 'Erreur SMTP: échec de lauthentification.';
$PHPMAILER_LANG['buggy_php'] = 'Votre version de PHP est affectée par un bug qui peut entraîner des messages corrompus. Pour résoudre ce problème, passez à lenvoi par SMTP, désactivez loption mail.add_x_header dans le fichier php.ini, passez à MacOS ou Linux, ou passez PHP à la version 7.0.17+ ou 7.1.3+.';
$PHPMAILER_LANG['connect_host'] = 'Erreur SMTP: impossible de se connecter au serveur SMTP.';
$PHPMAILER_LANG['data_not_accepted'] = 'Erreur SMTP: données incorrectes.';
$PHPMAILER_LANG['empty_message'] = 'Corps du message vide.';
$PHPMAILER_LANG['encoding'] = 'Encodage inconnu: ';
$PHPMAILER_LANG['execute'] = 'Impossible de lancer lexécution: ';
$PHPMAILER_LANG['extension_missing'] = 'Extension manquante: ';
$PHPMAILER_LANG['file_access'] = 'Impossible daccéder au fichier: ';
$PHPMAILER_LANG['file_open'] = 'Ouverture du fichier impossible: ';
$PHPMAILER_LANG['from_failed'] = 'Ladresse dexpéditeur suivante a échoué: ';
$PHPMAILER_LANG['instantiate'] = 'Impossible dinstancier la fonction mail.';
$PHPMAILER_LANG['invalid_address'] = 'Adresse courriel non valide: ';
$PHPMAILER_LANG['invalid_header'] = 'Nom ou valeur de len-tête non valide';
$PHPMAILER_LANG['invalid_hostentry'] = 'Entrée dhôte non valide: ';
$PHPMAILER_LANG['invalid_host'] = 'Hôte non valide: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' client de messagerie non supporté.';
$PHPMAILER_LANG['provide_address'] = 'Vous devez fournir au moins une adresse de destinataire.';
$PHPMAILER_LANG['recipients_failed'] = 'Erreur SMTP:les destinataires suivants ont échoué: ';
$PHPMAILER_LANG['signing'] = 'Erreur de signature: ';
$PHPMAILER_LANG['smtp_code'] = 'Code SMTP: ';
$PHPMAILER_LANG['smtp_code_ex'] = 'Informations supplémentaires SMTP: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'La fonction SMTP connect() a échouée.';
$PHPMAILER_LANG['smtp_detail'] = 'Détails: ';
$PHPMAILER_LANG['smtp_error'] = 'Erreur du serveur SMTP: ';
$PHPMAILER_LANG['variable_set'] = 'Impossible dinitialiser ou de réinitialiser une variable: ';
$PHPMAILER_LANG['extension_missing'] = 'Extension manquante: ';

View File

@ -0,0 +1,28 @@
<?php
/**
* Italian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Ilias Bartolini <brain79@inwind.it>
* @author Stefano Sabatini <sabas88@gmail.com>
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP Error: Impossibile autenticarsi.';
$PHPMAILER_LANG['connect_host'] = 'SMTP Error: Impossibile connettersi all\'host SMTP.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Error: Dati non accettati dal server.';
$PHPMAILER_LANG['empty_message'] = 'Il corpo del messaggio è vuoto';
$PHPMAILER_LANG['encoding'] = 'Codifica dei caratteri sconosciuta: ';
$PHPMAILER_LANG['execute'] = 'Impossibile eseguire l\'operazione: ';
$PHPMAILER_LANG['file_access'] = 'Impossibile accedere al file: ';
$PHPMAILER_LANG['file_open'] = 'File Error: Impossibile aprire il file: ';
$PHPMAILER_LANG['from_failed'] = 'I seguenti indirizzi mittenti hanno generato errore: ';
$PHPMAILER_LANG['instantiate'] = 'Impossibile istanziare la funzione mail';
$PHPMAILER_LANG['invalid_address'] = 'Impossibile inviare, l\'indirizzo email non è valido: ';
$PHPMAILER_LANG['provide_address'] = 'Deve essere fornito almeno un indirizzo ricevente';
$PHPMAILER_LANG['mailer_not_supported'] = 'Mailer non supportato';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP Error: I seguenti indirizzi destinatari hanno generato un errore: ';
$PHPMAILER_LANG['signing'] = 'Errore nella firma: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() fallita.';
$PHPMAILER_LANG['smtp_error'] = 'Errore del server SMTP: ';
$PHPMAILER_LANG['variable_set'] = 'Impossibile impostare o resettare la variabile: ';
$PHPMAILER_LANG['extension_missing'] = 'Estensione mancante: ';

View File

@ -0,0 +1,27 @@
<?php
/**
* Portuguese (European) PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Jonadabe <jonadabe@hotmail.com>
*/
$PHPMAILER_LANG['authenticate'] = 'Erro do SMTP: Não foi possível realizar a autenticação.';
$PHPMAILER_LANG['connect_host'] = 'Erro do SMTP: Não foi possível realizar ligação com o servidor SMTP.';
$PHPMAILER_LANG['data_not_accepted'] = 'Erro do SMTP: Os dados foram rejeitados.';
$PHPMAILER_LANG['empty_message'] = 'A mensagem no e-mail está vazia.';
$PHPMAILER_LANG['encoding'] = 'Codificação desconhecida: ';
$PHPMAILER_LANG['execute'] = 'Não foi possível executar: ';
$PHPMAILER_LANG['file_access'] = 'Não foi possível aceder o ficheiro: ';
$PHPMAILER_LANG['file_open'] = 'Abertura do ficheiro: Não foi possível abrir o ficheiro: ';
$PHPMAILER_LANG['from_failed'] = 'Ocorreram falhas nos endereços dos seguintes remententes: ';
$PHPMAILER_LANG['instantiate'] = 'Não foi possível iniciar uma instância da função mail.';
$PHPMAILER_LANG['invalid_address'] = 'Não foi enviado nenhum e-mail para o endereço de e-mail inválido: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer não é suportado.';
$PHPMAILER_LANG['provide_address'] = 'Tem de fornecer pelo menos um endereço como destinatário do e-mail.';
$PHPMAILER_LANG['recipients_failed'] = 'Erro do SMTP: O endereço do seguinte destinatário falhou: ';
$PHPMAILER_LANG['signing'] = 'Erro ao assinar: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() falhou.';
$PHPMAILER_LANG['smtp_error'] = 'Erro de servidor SMTP: ';
$PHPMAILER_LANG['variable_set'] = 'Não foi possível definir ou redefinir a variável: ';
$PHPMAILER_LANG['extension_missing'] = 'Extensão em falta: ';

View File

@ -0,0 +1,31 @@
<?php
/**
* Turkish PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Elçin Özel
* @author Can Yılmaz
* @author Mehmet Benlioğlu
* @author @yasinaydin
* @author Ogün Karakuş
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP Hatası: Oturum açılamadı.';
$PHPMAILER_LANG['connect_host'] = 'SMTP Hatası: SMTP sunucusuna bağlanılamadı.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Hatası: Veri kabul edilmedi.';
$PHPMAILER_LANG['empty_message'] = 'Mesajın içeriği boş';
$PHPMAILER_LANG['encoding'] = 'Bilinmeyen karakter kodlama: ';
$PHPMAILER_LANG['execute'] = 'Çalıştırılamadı: ';
$PHPMAILER_LANG['file_access'] = 'Dosyaya erişilemedi: ';
$PHPMAILER_LANG['file_open'] = 'Dosya Hatası: Dosya açılamadı: ';
$PHPMAILER_LANG['from_failed'] = 'Belirtilen adreslere gönderme başarısız: ';
$PHPMAILER_LANG['instantiate'] = 'Örnek e-posta fonksiyonu oluşturulamadı.';
$PHPMAILER_LANG['invalid_address'] = 'Geçersiz e-posta adresi: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' e-posta kütüphanesi desteklenmiyor.';
$PHPMAILER_LANG['provide_address'] = 'En az bir alıcı e-posta adresi belirtmelisiniz.';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP Hatası: Belirtilen alıcılara ulaşılamadı: ';
$PHPMAILER_LANG['signing'] = 'İmzalama hatası: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP connect() fonksiyonu başarısız.';
$PHPMAILER_LANG['smtp_error'] = 'SMTP sunucu hatası: ';
$PHPMAILER_LANG['variable_set'] = 'Değişken ayarlanamadı ya da sıfırlanamadı: ';
$PHPMAILER_LANG['extension_missing'] = 'Eklenti bulunamadı: ';

898
core/class/router.class.php Normal file
View File

@ -0,0 +1,898 @@
<?php
class core extends common
{
/**
* Constructeur du coeur
*/
public function __construct()
{
parent::__construct();
// Token CSRF
if (empty($_SESSION['csrf'])) {
$_SESSION['csrf'] = bin2hex(openssl_random_pseudo_bytes(64));
}
// Fuseau horaire
common::$timezone = $this->getData(['config', 'timezone']); // Utile pour transmettre le timezone à la classe helper
date_default_timezone_set(common::$timezone);
// Supprime les fichiers temporaires
$lastClearTmp = mktime(0, 0, 0);
if ($lastClearTmp > $this->getData(['core', 'lastClearTmp']) + 86400) {
$iterator = new DirectoryIterator(common::TEMP_DIR);
foreach ($iterator as $fileInfos) {
if (
$fileInfos->isFile() &&
$fileInfos->getBasename() !== '.htaccess' &&
$fileInfos->getBasename() !== '.gitkeep'
) {
@unlink($fileInfos->getPathname());
}
}
// Date de la dernière suppression
$this->setData(['core', 'lastClearTmp', $lastClearTmp]);
}
// Backup automatique des données
$lastBackup = mktime(0, 0, 0);
if (
$this->getData(['config', 'autoBackup'])
and $lastBackup > $this->getData(['core', 'lastBackup']) + 86400
and $this->getData(['user']) // Pas de backup pendant l'installation
) {
// Copie des fichier de données
helper::autoBackup(common::BACKUP_DIR, ['backup', 'tmp', 'file']);
// Date du dernier backup
$this->setData(['core', 'lastBackup', $lastBackup]);
// Supprime les backups de plus de 30 jours
$iterator = new DirectoryIterator(common::BACKUP_DIR);
foreach ($iterator as $fileInfos) {
if (
$fileInfos->isFile()
and $fileInfos->getBasename() !== '.htaccess'
and $fileInfos->getMTime() + (86400 * 30) < time()
) {
@unlink($fileInfos->getPathname());
}
}
}
// Crée le fichier de personnalisation avancée
if (file_exists(common::DATA_DIR . 'custom.css') === false) {
$this->secure_file_put_contents(common::DATA_DIR . 'custom.css', file_get_contents('core/module/theme/resource/custom.css'));
chmod(common::DATA_DIR . 'custom.css', 0755);
}
// Crée le fichier de personnalisation
if (file_exists(common::DATA_DIR . 'theme.css') === false) {
$this->secure_file_put_contents(common::DATA_DIR . 'theme.css', '');
chmod(common::DATA_DIR . 'theme.css', 0755);
}
// Crée le fichier de personnalisation de l'administration
if (file_exists(common::DATA_DIR . 'admin.css') === false) {
$this->secure_file_put_contents(common::DATA_DIR . 'admin.css', '');
chmod(common::DATA_DIR . 'admin.css', 0755);
}
// Check la version rafraichissement du theme
$cssVersion = preg_split('/\*+/', file_get_contents(common::DATA_DIR . 'theme.css'));
if (empty($cssVersion[1]) or $cssVersion[1] !== md5(json_encode($this->getData(['theme'])))) {
// Version
$css = '/*' . md5(json_encode($this->getData(['theme']))) . '*/';
/**
* Import des polices de caractères
* A partir du CDN
* ou dans le dossier site/file/source/fonts
* ou pas du tout si fonte webSafe
*/
// Fonts disponibles
$fontsAvailable['files'] = $this->getData(['font', 'files']);
$fontsAvailable['imported'] = $this->getData(['font', 'imported']);
$fontsAvailable['websafe'] = common::$fontsWebSafe;
// Fontes installées
$fonts = [
$this->getData(['theme', 'text', 'font']),
$this->getData(['theme', 'title', 'font']),
$this->getData(['theme', 'header', 'font']),
$this->getData(['theme', 'menu', 'font']),
$this->getData(['theme', 'footer', 'font'])
];
// Suppression des polices identiques
$fonts = array_unique($fonts);
/**
* Charge les fontes
*/
foreach ($fonts as $fontId) {
foreach (['websafe', 'imported', 'files'] as $typeFont) {
if (isset($fontsAvailable[$typeFont][$fontId])) {
$fonts[$fontId] = $fontsAvailable[$typeFont][$fontId]['font-family'];
}
}
}
// Fond du body
$colors = helper::colorVariants($this->getData(['theme', 'body', 'backgroundColor']));
// Body
$css .= 'body{font-family:' . $fonts[$this->getData(['theme', 'text', 'font'])] . ';}';
if ($themeBodyImage = $this->getData(['theme', 'body', 'image'])) {
// Image dans html pour éviter les déformations.
$css .= 'html {background-image:url("../file/source/' . $themeBodyImage . '");background-position:' . $this->getData(['theme', 'body', 'imagePosition']) . ';background-attachment:' . $this->getData(['theme', 'body', 'imageAttachment']) . ';background-size:' . $this->getData(['theme', 'body', 'imageSize']) . ';background-repeat:' . $this->getData(['theme', 'body', 'imageRepeat']) . '}';
// Couleur du body transparente
$css .= 'body {background-color: rgba(0,0,0,0)}';
} else {
// Pas d'image couleur du body
$css .= 'html {background-color:' . $colors['normal'] . ';}';
}
// Icône BacktoTop
$css .= '#backToTop {background-color:' . $this->getData(['theme', 'body', 'toTopbackgroundColor']) . ';color:' . $this->getData(['theme', 'body', 'toTopColor']) . ';}';
// Site
$colors = helper::colorVariants($this->getData(['theme', 'text', 'linkColor']));
$css .= 'a{color:' . $colors['normal'] . '}';
// Couleurs de site dans TinyMCe
$css .= 'div.mce-edit-area {font-family:' . $fonts[$this->getData(['theme', 'text', 'font'])] . ';}';
// Site dans TinyMCE
$css .= '.editorWysiwyg, .editorWysiwygComment {background-color:' . $this->getData(['theme', 'site', 'backgroundColor']) . ';}';
$css .= 'span.mce-text{background-color: unset !important;}';
$css .= 'body,.row > div{font-size:' . $this->getData(['theme', 'text', 'fontSize']) . '}';
$css .= 'body{color:' . $this->getData(['theme', 'text', 'textColor']) . '}';
$css .= 'select,input[type=password],input[type=email],input[type=text],input[type=date],input[type=time],input[type=week],input[type=month],input[type=datetime-local],.inputFile,select,textarea{color:' . $this->getData(['theme', 'text', 'textColor']) . ';background-color:' . $this->getData(['theme', 'site', 'backgroundColor']) . ';}';
// spécifiques au module de blog
$css .= '.blogDate {color:' . $this->getData(['theme', 'text', 'textColor']) . ';}.blogPicture img{border:1px solid ' . $this->getData(['theme', 'text', 'textColor']) . '; box-shadow: 1px 1px 5px ' . $this->getData(['theme', 'text', 'textColor']) . ';}';
// Couleur fixée dans admin.css
$css .= '.container {max-width:' . $this->getData(['theme', 'site', 'width']) . '}';
$margin = $this->getData(['theme', 'site', 'margin']) ? '0' : '20px';
// Marge supplémentaire lorsque le pied de page est fixe
if (
$this->getData(['theme', 'footer', 'fixed']) === true &&
$this->getData(['theme', 'footer', 'position']) === 'body'
) {
$marginBottomLarge = ((str_replace('px', '', $this->getData(['theme', 'footer', 'height'])) * 2) + 31) . 'px';
$marginBottomSmall = ((str_replace('px', '', $this->getData(['theme', 'footer', 'height'])) * 2) + 93) . 'px';
} else {
$marginBottomSmall = $margin;
$marginBottomLarge = $margin;
}
$css .= $this->getData(['theme', 'site', 'width']) === '100%'
? '@media (min-width: 769px) {#site{margin:0 auto ' . $marginBottomLarge . ' 0 !important;}}@media (max-width: 768px) {#site{margin:0 auto ' . $marginBottomSmall . ' 0 !important;}}#site.light{margin:5% auto !important;} body{margin:0 auto !important;} #bar{margin:0 auto !important;} body > header{margin:0 auto !important;} body > nav {margin: 0 auto !important;} body > footer {margin:0 auto !important;}'
: '@media (min-width: 769px) {#site{margin: ' . $margin . ' auto ' . $marginBottomLarge . ' auto !important;}}@media (max-width: 768px) {#site{margin: ' . $margin . ' auto ' . $marginBottomSmall . ' auto !important;}}#site.light{margin: 5% auto !important;} body{margin:0px 10px;} #bar{margin: 0 -10px;} body > header{margin: 0 -10px;} body > nav {margin: 0 -10px;} body > footer {margin: 0 -10px;} ';
$css .= $this->getData(['theme', 'site', 'width']) === '750px'
? '.button, button{font-size:0.8em;}'
: '';
$css .= '#site{background-color:' . $this->getData(['theme', 'site', 'backgroundColor']) . ';border-radius:' . $this->getData(['theme', 'site', 'radius']) . ';box-shadow:' . $this->getData(['theme', 'site', 'shadow']) . ' #212223;}';
$colors = helper::colorVariants($this->getData(['theme', 'button', 'backgroundColor']));
$css .= '.speechBubble,.button,.button:hover,button[type=submit],.pagination a,.pagination a:hover,input[type=checkbox]:checked + label:before,input[type=radio]:checked + label:before,.helpContent{background-color:' . $colors['normal'] . ';color:' . $colors['text'] . '}';
$css .= '.helpButton span{color:' . $colors['normal'] . '}';
$css .= 'input[type=text]:hover,input[type=date]:hover,input[type=time]:hover,input[type=week]:hover,input[type=month]:hover,input[type=datetime-local]:hover,input[type=password]:hover,.inputFile:hover,select:hover,textarea:hover{border-color:' . $colors['normal'] . '}';
$css .= '.speechBubble:before{border-color:' . $colors['normal'] . ' transparent transparent transparent}';
$css .= '.button:hover,button[type=submit]:hover,.pagination a:hover,input[type=checkbox]:not(:active):checked:hover + label:before,input[type=checkbox]:active + label:before,input[type=radio]:checked:hover + label:before,input[type=radio]:not(:checked):active + label:before{background-color:' . $colors['darken'] . '}';
$css .= '.helpButton span:hover{color:' . $colors['darken'] . '}';
$css .= '.button:active,button[type=submit]:active,.pagination a:active{background-color:' . $colors['veryDarken'] . '}';
$colors = helper::colorVariants($this->getData(['theme', 'title', 'textColor']));
$css .= 'h1,h2,h3,h4,h5,h6,h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color:' . $colors['normal'] . ';font-family:' . $fonts[$this->getData(['theme', 'title', 'font'])] . ';font-weight:' . $this->getData(['theme', 'title', 'fontWeight']) . ';text-transform:' . $this->getData(['theme', 'title', 'textTransform']) . '}';
$css .= 'h1 a:hover,h2 a:hover,h3 a:hover,h4 a:hover,h5 a:hover,h6 a:hover{color:' . $colors['darken'] . '}';
// Les blocs
$colors = helper::colorVariants($this->getData(['theme', 'block', 'backgroundColor']));
$css .= '.block {border: 1px solid ' . $this->getdata(['theme', 'block', 'borderColor']) . ';}.block h4 {background-color:' . $colors['normal'] . ';color:' . $colors['text'] . ';}';
// Bannière
// Eléments communs
if ($this->getData(['theme', 'header', 'margin'])) {
if ($this->getData(['theme', 'menu', 'position']) === 'site-first') {
$css .= 'header{margin:0 20px}';
} else {
$css .= 'header{margin:20px 20px 0 20px}';
}
}
$colors = helper::colorVariants($this->getData(['theme', 'header', 'backgroundColor']));
$css .= 'header{background-color:' . $colors['normal'] . ';}';
// Bannière de type papier peint
if ($this->getData(['theme', 'header', 'feature']) === 'wallpaper') {
$css .= 'header{background-size:' . $this->getData(['theme', 'header', 'imageContainer']) . '}';
$css .= 'header{background-color:' . $colors['normal'];
// Valeur de hauteur traditionnelle
$css .= ';height:' . $this->getData(['theme', 'header', 'height']) . ';line-height:' . $this->getData(['theme', 'header', 'height']);
$css .= ';text-align:' . $this->getData(['theme', 'header', 'textAlign']) . '}';
if ($themeHeaderImage = $this->getData(['theme', 'header', 'image'])) {
$css .= 'header{background-image:url("../file/source/' . $themeHeaderImage . '");background-position:' . $this->getData(['theme', 'header', 'imagePosition']) . ';background-repeat:' . $this->getData(['theme', 'header', 'imageRepeat']) . '}';
}
$colors = helper::colorVariants($this->getData(['theme', 'header', 'textColor']));
$css .= 'header span{color:' . $colors['normal'] . ';font-family:' . $fonts[$this->getData(['theme', 'header', 'font'])] . ';font-weight:' . $this->getData(['theme', 'header', 'fontWeight']) . ';font-size:' . $this->getData(['theme', 'header', 'fontSize']) . ';text-transform:' . $this->getData(['theme', 'header', 'textTransform']) . '}';
}
// Bannière au Contenu HTML
if ($this->getData(['theme', 'header', 'feature']) === 'feature') {
// Hauteur de la taille du contenu perso
$css .= 'header {height:' . $this->getData(['theme', 'header', 'height']) . '; min-height:' . $this->getData(['theme', 'header', 'height']) . ';overflow: hidden;}';
}
// Menu
$colors = helper::colorVariants($this->getData(['theme', 'menu', 'backgroundColor']));
$css .= 'nav,nav.navMain a{background-color:' . $colors['normal'] . '}';
$css .= 'nav a,#toggle span,nav a:hover{color:' . $this->getData(['theme', 'menu', 'textColor']) . '}';
$css .= 'nav a:hover{background-color:' . $colors['darken'] . '}';
$css .= 'nav a.active{color:' . $this->getData(['theme', 'menu', 'activeTextColor']) . ';}';
if ($this->getData(['theme', 'menu', 'activeColorAuto']) === true) {
$css .= 'nav a.active{background-color:' . $colors['veryDarken'] . '}';
} else {
$css .= 'nav a.active{background-color:' . $this->getData(['theme', 'menu', 'activeColor']) . '}';
}
$css .= 'nav #burgerText{color:' . $colors['text'] . '}';
// Sous menu
$colors = helper::colorVariants($this->getData(['theme', 'menu', 'backgroundColorSub']));
$css .= 'nav .navSub a{background-color:' . $colors['normal'] . '}';
$css .= 'nav .navMain a.active {border-radius:' . $this->getData(['theme', 'menu', 'radius']) . '}';
$css .= '#menu{text-align:' . $this->getData(['theme', 'menu', 'textAlign']) . '}';
if ($this->getData(['theme', 'menu', 'margin'])) {
if (
$this->getData(['theme', 'menu', 'position']) === 'site-first'
or $this->getData(['theme', 'menu', 'position']) === 'site-second'
) {
$css .= 'nav{padding:10px 10px 0 10px;}';
} else {
$css .= 'nav{padding:0 10px}';
}
} else {
$css .= 'nav{margin:0}';
}
if (
$this->getData(['theme', 'menu', 'position']) === 'top'
) {
$css .= 'nav{padding:0 10px;}';
}
$css .= '#toggle span,#menu a{padding:' . $this->getData(['theme', 'menu', 'height']) . ';font-family:' . $fonts[$this->getData(['theme', 'menu', 'font'])] . ';font-weight:' . $this->getData(['theme', 'menu', 'fontWeight']) . ';font-size:' . $this->getData(['theme', 'menu', 'fontSize']) . ';text-transform:' . $this->getData(['theme', 'menu', 'textTransform']) . '}';
// Pied de page
$colors = helper::colorVariants($this->getData(['theme', 'footer', 'backgroundColor']));
if ($this->getData(['theme', 'footer', 'margin'])) {
$css .= 'footer{padding:0 20px;}';
} else {
$css .= 'footer{padding:0}';
}
$css .= 'footer span, #footerText > p {color:' . $this->getData(['theme', 'footer', 'textColor']) . ';font-family:' . $fonts[$this->getData(['theme', 'footer', 'font'])] . ';font-weight:' . $this->getData(['theme', 'footer', 'fontWeight']) . ';font-size:' . $this->getData(['theme', 'footer', 'fontSize']) . ';text-transform:' . $this->getData(['theme', 'footer', 'textTransform']) . '}';
$css .= 'footer {background-color:' . $colors['normal'] . ';color:' . $this->getData(['theme', 'footer', 'textColor']) . '}';
//$css .= 'footer a{color:' . $this->getData(['theme', 'footer', 'textColor']) . '}';
$css .= 'footer #footersite > div {margin:' . $this->getData(['theme', 'footer', 'height']) . ' 0}';
$css .= 'footer #footerbody > div {margin:' . $this->getData(['theme', 'footer', 'height']) . ' 0}';
$css .= '@media (max-width: 768px) {footer #footerbody > div { padding: 2px }}';
$css .= '#footerSocials{text-align:' . $this->getData(['theme', 'footer', 'socialsAlign']) . '}';
$css .= '#footerText > p {text-align:' . $this->getData(['theme', 'footer', 'textAlign']) . '}';
$css .= '#footerCopyright{text-align:' . $this->getData(['theme', 'footer', 'copyrightAlign']) . '}';
// Enregistre la personnalisation
$this->secure_file_put_contents(common::DATA_DIR . 'theme.css', $css);
// Effacer le cache pour tenir compte de la couleur de fond TinyMCE
header("Expires: Tue, 01 Jan 2000 00:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
}
// Check la version rafraichissement du theme admin
$cssVersion = preg_split('/\*+/', file_get_contents(common::DATA_DIR . 'admin.css'));
if (empty($cssVersion[1]) or $cssVersion[1] !== md5(json_encode($this->getData(['admin'])))) {
// Version
$css = '/*' . md5(json_encode($this->getData(['admin']))) . '*/';
// Fonts disponibles
$fontsAvailable['files'] = $this->getData(['font', 'files']);
$fontsAvailable['imported'] = $this->getData(['font', 'imported']);
$fontsAvailable['websafe'] = common::$fontsWebSafe;
/**
* Import des polices de caractères
* A partir du CDN ou dans le dossier site/file/source/fonts
*/
$fonts = [
$this->getData(['admin', 'fontText']),
$this->getData(['admin', 'fontTitle']),
];
// Suppression des polices identiques
$fonts = array_unique($fonts);
/**
* Charge les fontes
*/
foreach ($fonts as $fontId) {
foreach (['websafe', 'imported', 'files'] as $typeFont) {
if (isset($fontsAvailable[$typeFont][$fontId])) {
$fonts[$fontId] = $fontsAvailable[$typeFont][$fontId]['font-family'];
}
}
}
// Thème Administration
$colors = helper::colorVariants($this->getData(['admin', 'backgroundColor']));
$css .= '#site{background-color:' . $colors['normal'] . ';}';
$css .= 'p, div, label, select, input, table, span {font-family:' . $fonts[$this->getData(['admin', 'fontText'])] . '}';
$css .= 'body,.row > div {font-size:' . $this->getData(['admin', 'fontSize']) . '}';
$css .= 'body h1, h2, h3, h4 a, h5, h6 {font-family:' . $fonts[$this->getData(['admin', 'fontTitle'])] . ';color:' . $this->getData(['admin', 'colorTitle']) . ';}';
$css .= '.container {max-width:' . $this->getData(['admin', 'width']) . '}';
$margin = $this->getData(['theme', 'site', 'margin']) ? '0' : '20px';
// Marge supplémentaire lorsque le pied de page est fixe
if (
$this->getData(['theme', 'footer', 'fixed']) === true &&
$this->getData(['theme', 'footer', 'position']) === 'body'
) {
$marginBottomLarge = ((str_replace('px', '', $this->getData(['theme', 'footer', 'height'])) * 2) + 31) . 'px';
$marginBottomSmall = ((str_replace('px', '', $this->getData(['theme', 'footer', 'height'])) * 2) + 93) . 'px';
} else {
$marginBottomSmall = $margin;
$marginBottomLarge = $margin;
}
$css .= $this->getData(['admin', 'width']) === '100%'
? '@media (min-width: 769px) {#site{margin:0 auto ' . $marginBottomLarge . ' 0 !important;}}@media (max-width: 768px) {#site{margin:0 auto ' . $marginBottomSmall . ' 0 !important;}}#site.light{margin:5% auto !important;} body{margin:0 auto !important;} #bar{margin:0 auto !important;} body > header{margin:0 auto !important;} body > nav {margin: 0 auto !important;} body > footer {margin:0 auto !important;}'
: '@media (min-width: 769px) {#site{margin: ' . $margin . ' auto ' . $marginBottomLarge . ' auto !important;}}@media (max-width: 768px) {#site{margin: ' . $margin . ' auto ' . $marginBottomSmall . ' auto !important;}}#site.light{margin: 5% auto !important;} body{margin:0px 10px;} #bar{margin: 0 -10px;} body > header{margin: 0 -10px;} body > nav {margin: 0 -10px;} body > footer {margin: 0 -10px;} ';
$css .= $this->getData(['admin', 'width']) === '750px'
? '.button, button{font-size:0.8em;}'
: '';
// TinyMCE
$colors = helper::colorVariants($this->getData(['admin', 'colorText']));
$css .= 'body:not(.editorWysiwyg), body:not(editorWysiwygComment),span .zwiico-help {color:' . $colors['normal'] . ';}';
$css .= 'table thead tr, table thead tr .zwiico-help{ background-color:' . $colors['normal'] . '; color:' . $colors['text'] . ';}';
$css .= 'table thead th { color:' . $colors['text'] . ';}';
$colors = helper::colorVariants($this->getData(['admin', 'backgroundColorButton']));
$css .= 'input[type=checkbox]:checked + label::before,.speechBubble{background-color:' . $colors['normal'] . ';color:' . $colors['text'] . ';}';
$css .= '.speechBubble::before {border-color:' . $colors['normal'] . ' transparent transparent transparent;}';
$css .= '.button {background-color:' . $colors['normal'] . ';color:' . $colors['text'] . ';}.button:hover {background-color:' . $colors['darken'] . ';color:' . $colors['text'] . ';}.button:active {background-color:' . $colors['veryDarken'] . ';color:' . $colors['text'] . ';}';
$colors = helper::colorVariants($this->getData(['admin', 'backgroundColorButtonGrey']));
$css .= '.button.buttonGrey {background-color: ' . $colors['normal'] . ';color: ' . $colors['text'] . ';}.button.buttonGrey:hover {background-color:' . $colors['darken'] . ';color:' . $colors['text'] . ';}.button.buttonGrey:active {background-color:' . $colors['veryDarken'] . ';color:' . $colors['text'] . ';}';
$colors = helper::colorVariants($this->getData(['admin', 'backgroundColorButtonRed']));
$css .= '.button.buttonRed {background-color: ' . $colors['normal'] . ';color: ' . $colors['text'] . ';}.button.buttonRed:hover {background-color:' . $colors['darken'] . ';color:' . $colors['text'] . ';}.button.buttonRed:active {background-color:' . $colors['veryDarken'] . ';color:' . $colors['text'] . ';}';
$colors = helper::colorVariants($this->getData(['admin', 'backgroundColorButtonHelp']));
$css .= '.button.buttonHelp {background-color: ' . $colors['normal'] . ';color: ' . $colors['text'] . ';}.button.buttonHelp:hover {background-color:' . $colors['darken'] . ';color:' . $colors['text'] . ';}.button.buttonHelp:active {background-color:' . $colors['veryDarken'] . ';color:' . $colors['text'] . ';}';
$colors = helper::colorVariants($this->getData(['admin', 'backgroundColorButtonGreen']));
$css .= '.button.buttonGreen, button[type=submit] {background-color: ' . $colors['normal'] . ';color: ' . $colors['text'] . ';}.button.buttonGreen:hover, button[type=submit]:hover {background-color: ' . $colors['darken'] . ';color: ' . $colors['text'] . ';}.button.buttonGreen:active, button[type=submit]:active {background-color: ' . $colors['darken'] . ';color: ' . $colors['text'] . ';}';
$colors = helper::colorVariants($this->getData(['admin', 'backgroundBlockColor']));
$css .= '.buttonTab, .block {border: 1px solid ' . $this->getData(['admin', 'borderBlockColor']) . ';}.buttonTab, .block h4 {background-color: ' . $colors['normal'] . ';color:' . $colors['text'] . ';}';
$css .= 'table tr,input[type=email],input[type=date],input[type=time],input[type=month],input[type=week],input[type=datetime-local],input[type=text],input[type=password],select:not(#barSelectLanguage),select:not(#barSelectPage),textarea:not(.editorWysiwyg), textarea:not(.editorWysiwygComment),.inputFile{background-color: ' . $colors['normal'] . ';color:' . $colors['text'] . ';border: 1px solid ' . $this->getData(['admin', 'borderBlockColor']) . ';}';
// Bordure du contour TinyMCE
$css .= '.mce-tinymce{border: 1px solid ' . $this->getData(['admin', 'borderBlockColor']) . '!important;}';
// Enregistre la personnalisation
$this->secure_file_put_contents(common::DATA_DIR . 'admin.css', $css);
}
}
/**
* Auto-chargement des classes
* @param string $className Nom de la classe à charger
*/
public static function autoload($className)
{
$classPath = strtolower($className) . '/' . strtolower($className) . '.php';
// Module du coeur
if (is_readable('core/module/' . $classPath)) {
require 'core/module/' . $classPath;
}
// Module
elseif (is_readable(common::MODULE_DIR . $classPath)) {
require common::MODULE_DIR . $classPath;
}
// Librairie
elseif (is_readable('core/vendor/' . $classPath)) {
require 'core/vendor/' . $classPath;
}
}
/**
* Routage des modules
*/
public function router()
{
$layout = new layout($this);
// Installation
if (
$this->getData(['user']) === []
and $this->getUrl(0) !== 'install'
) {
http_response_code(302);
header('Location:' . helper::baseUrl() . 'install');
exit();
}
// Journalisation
$this->saveLog();
// Force la déconnexion des membres bannis ou d'une seconde session
if (
$this->isConnected() === true
and ($this->getUser('group') === common::GROUP_BANNED
or ($_SESSION['csrf'] !== $this->getData(['user', $this->getUser('id'), 'accessCsrf'])
and $this->getData(['config', 'connect', 'autoDisconnect']) === true)
)
) {
$user = new user;
$user->logout();
}
// Mode maintenance
if (
$this->getData(['config', 'maintenance'])
and in_array($this->getUrl(0), ['maintenance', 'user']) === false
and $this->getUrl(1) !== 'login'
and ($this->isConnected() === false
or ($this->isConnected() === true
and $this->getUser('group') < common::GROUP_ADMIN
)
)
) {
// Déconnexion
$user = new user;
$user->logout();
// Redirection
http_response_code(302);
header('Location:' . helper::baseUrl() . 'maintenance');
exit();
}
// Check l'accès à la page
$access = null;
if ($this->getData(['page', $this->getUrl(0)]) !== null) {
if (
$this->getData(['page', $this->getUrl(0), 'group']) === common::GROUP_VISITOR
or ($this->isConnected() === true
// and $this->getUser('group') >= $this->getData(['page', $this->getUrl(0), 'group'])
// Modification qui tient compte du profil de la page
and ($this->getUser('group') * 10 + $this->getUser('profil')) >= ($this->getData(['page', $this->getUrl(0), 'group']) * 10 + $this->getData(['page', $this->getUrl(0), 'profil']))
)
) {
$access = true;
} else {
if ($this->getUrl(0) === $this->getData(['locale', 'homePageId'])) {
$access = 'login';
} else {
$access = false;
}
}
// Empêcher l'accès aux pages désactivées par URL directe
if (
($this->getData(['page', $this->getUrl(0), 'disable']) === true
and $this->isConnected() === false
) or ($this->getData(['page', $this->getUrl(0), 'disable']) === true
and $this->isConnected() === true
and $this->getUser('group') < common::GROUP_EDITOR
)
) {
$access = false;
}
// Lève une erreur si l'url est celle d'une page avec des éléments surnuméraires https://www.site.fr/page/truc
if (
array_key_exists($this->getUrl(0), $this->getData(['page']))
and $this->getUrl(1)
and $this->getData(['page', $this->getUrl(0), 'moduleId']) === ''
) {
$access = false;
}
}
/**
* Contrôle si la page demandée est en édition ou accès à la gestion du site
* conditions de blocage :
* - Les deux utilisateurs qui accèdent à la même page sont différents
* - les URLS sont identiques
* - Une partie de l'URL fait partie de la liste de filtrage (édition d'un module etc..)
* - L'édition est ouverte depuis un temps dépassé, on considère que la page est restée ouverte et qu'elle ne sera pas validée
*/
$accessInfo['userName'] = '';
$accessInfo['pageId'] = '';
if ($this->getData(['user'])) {
foreach ($this->getData(['user']) as $userId => $userIds) {
if (!is_null($this->getData(['user', $userId, 'accessUrl']))) {
$t = explode('/', $this->getData(['user', $userId, 'accessUrl']));
}
if (
$this->getUser('id') &&
$userId !== $this->getUser('id') &&
$this->getData(['user', $userId, 'accessUrl']) === $this->getUrl() &&
array_intersect($t, common::$concurrentAccess) &&
//array_intersect($t, common::$accessExclude) !== false &&
time() < $this->getData(['user', $userId, 'accessTimer']) + common::ACCESS_TIMER
) {
$access = false;
$accessInfo['userName'] = $this->getData(['user', $userId, 'lastname']) . ' ' . $this->getData(['user', $userId, 'firstname']);
$accessInfo['pageId'] = end($t);
}
}
}
// Accès concurrent stocke la page visitée
if (
$this->isConnected() === true
&& $this->getUser('id')
&& !$this->isPost()
) {
$this->setData(['user', $this->getUser('id'), 'accessUrl', $this->getUrl()], false);
$this->setData(['user', $this->getUser('id'), 'accessTimer', time()]);
}
// Breadcrumb
$title = $this->getData(['page', $this->getUrl(0), 'title']);
if (
!empty($this->getData(['page', $this->getUrl(0), 'parentPageId'])) &&
$this->getData(['page', $this->getUrl(0), 'breadCrumb'])
) {
$title = '<a href="' . helper::baseUrl() .
$this->getData(['page', $this->getUrl(0), 'parentPageId']) .
'">' .
ucfirst($this->getData(['page', $this->getData(['page', $this->getUrl(0), 'parentPageId']), 'title'])) .
'</a> &#8250; ' .
$this->getData(['page', $this->getUrl(0), 'title']);
}
// Importe le style de la page principale
$inlineStyle[] = $this->getData(['page', $this->getUrl(0), 'css']) === null ? '' : $this->getData(['page', $this->getUrl(0), 'css']);
// Importe le script de la page principale
$inlineScript[] = $this->getData(['page', $this->getUrl(0), 'js']) === null ? '' : $this->getData(['page', $this->getUrl(0), 'js']);
// Importe le contenu, le CSS et le script des barres
$contentRight = $this->getData(['page', $this->getUrl(0), 'barRight']) ? $this->getPage($this->getData(['page', $this->getUrl(0), 'barRight']), common::$siteContent) : '';
$inlineStyle[] = $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barRight']), 'css']) === null ? '' : $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barRight']), 'css']);
$inlineScript[] = $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barRight']), 'js']) === null ? '' : $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barRight']), 'js']);
$contentLeft = $this->getData(['page', $this->getUrl(0), 'barLeft']) ? $this->getPage($this->getData(['page', $this->getUrl(0), 'barLeft']), common::$siteContent) : '';
$inlineStyle[] = $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barLeft']), 'css']) === null ? '' : $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barLeft']), 'css']);
$inlineScript[] = $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barLeft']), 'js']) === null ? '' : $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barLeft']), 'js']);
// Importe la page simple sans module ou avec un module inexistant
if (
$this->getData(['page', $this->getUrl(0)]) !== null
and ($this->getData(['page', $this->getUrl(0), 'moduleId']) === ''
or !class_exists($this->getData(['page', $this->getUrl(0), 'moduleId']))
)
and $access
) {
// Importe le CSS de la page principale
$this->addOutput([
'title' => $title,
'content' => $this->getPage($this->getUrl(0), common::$siteContent),
'metaDescription' => $this->getData(['page', $this->getUrl(0), 'metaDescription']),
'metaTitle' => $this->getData(['page', $this->getUrl(0), 'metaTitle']),
'typeMenu' => $this->getData(['page', $this->getUrl(0), 'typeMenu']),
'iconUrl' => $this->getData(['page', $this->getUrl(0), 'iconUrl']),
'disable' => $this->getData(['page', $this->getUrl(0), 'disable']),
'contentRight' => $contentRight,
'contentLeft' => $contentLeft,
'inlineStyle' => $inlineStyle,
'inlineScript' => $inlineScript,
]);
}
// Importe le module
else {
// Id du module, et valeurs en sortie de la page s'il s'agit d'un module de page
if ($access and $this->getData(['page', $this->getUrl(0), 'moduleId'])) {
$moduleId = $this->getData(['page', $this->getUrl(0), 'moduleId']);
// Construit un meta absent
$metaDescription = $this->getData(['page', $this->getUrl(0), 'moduleId']) === 'blog' && !empty($this->getUrl(1)) && in_array($this->getUrl(1), $this->getData(['module']))
? strip_tags(substr($this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'content']), 0, 159))
: $this->getData(['page', $this->getUrl(0), 'metaDescription']);
// Importe le CSS de la page principale
$pageContent = $this->getPage($this->getUrl(0), common::$siteContent);
$this->addOutput([
'title' => $title,
// Meta description = 160 premiers caractères de l'article
'content' => $pageContent,
'metaDescription' => $metaDescription,
'metaTitle' => $this->getData(['page', $this->getUrl(0), 'metaTitle']),
'typeMenu' => $this->getData(['page', $this->getUrl(0), 'typeMenu']),
'iconUrl' => $this->getData(['page', $this->getUrl(0), 'iconUrl']),
'disable' => $this->getData(['page', $this->getUrl(0), 'disable']),
'contentRight' => $contentRight,
'contentLeft' => $contentLeft,
'inlineStyle' => $inlineStyle,
'inlineScript' => $inlineScript,
]);
} else {
$moduleId = $this->getUrl(0);
$pageContent = '';
}
// Check l'existence du module
if (class_exists($moduleId)) {
/** @var common $module */
$module = new $moduleId;
// Check l'existence de l'action
$action = '';
$ignore = true;
if (!is_null($this->getUrl(1))) {
foreach (explode('-', $this->getUrl(1)) as $actionPart) {
if ($ignore) {
$action .= $actionPart;
$ignore = false;
} else {
$action .= ucfirst($actionPart);
}
}
}
$action = array_key_exists($action, $module::$actions) ? $action : 'index';
if (array_key_exists($action, $module::$actions)) {
$module->$action();
$output = $module->output;
// Check le groupe de l'utilisateur
if (
($module::$actions[$action] === common::GROUP_VISITOR
or ($this->isConnected() === true
and $this->getUser('group') >= $module::$actions[$action]
and $this->getUser('permission', $moduleId, $action)
)
)
and $output['access'] === true
) {
// Enregistrement du contenu de la méthode POST lorsqu'une notice est présente
if (common::$inputNotices) {
foreach ($_POST as $postId => $postValue) {
if (is_array($postValue)) {
foreach ($postValue as $subPostId => $subPostValue) {
common::$inputBefore[$postId . '_' . $subPostId] = $subPostValue;
}
} else {
common::$inputBefore[$postId] = $postValue;
}
}
}
// Sinon traitement des données de sortie qui requiert qu'aucune notice ne soit présente
else {
// Notification
if ($output['notification']) {
if ($output['state'] === true) {
$notification = 'ZWII_NOTIFICATION_SUCCESS';
} elseif ($output['state'] === false) {
$notification = 'ZWII_NOTIFICATION_ERROR';
} else {
$notification = 'ZWII_NOTIFICATION_OTHER';
}
$_SESSION[$notification] = $output['notification'];
}
// Redirection
if ($output['redirect']) {
http_response_code(301);
header('Location:' . $output['redirect']);
exit();
}
}
// Données en sortie applicables même lorsqu'une notice est présente
// Affichage
if ($output['display']) {
$this->addOutput([
'display' => $output['display']
]);
}
// Contenu brut
if ($output['content']) {
$this->addOutput([
'content' => $output['content']
]);
}
// Contenu par vue
elseif ($output['view']) {
// Chemin en fonction d'un module du coeur ou d'un module
$modulePath = in_array($moduleId, common::$coreModuleIds) ? 'core/' : '';
// CSS
$stylePath = $modulePath . common::MODULE_DIR . $moduleId . '/view/' . $output['view'] . '/' . $output['view'] . '.css';
if (file_exists($stylePath)) {
$this->addOutput([
'style' => file_get_contents($stylePath)
]);
}
if ($output['style']) {
$this->addOutput([
'style' => file_get_contents($output['style'])
]);
}
// JS
$scriptPath = $modulePath . common::MODULE_DIR . $moduleId . '/view/' . $output['view'] . '/' . $output['view'] . '.js.php';
if (file_exists($scriptPath)) {
ob_start();
include $scriptPath;
$this->addOutput([
'script' => ob_get_clean()
]);
}
// Vue
$viewPath = $modulePath . common::MODULE_DIR . $moduleId . '/view/' . $output['view'] . '/' . $output['view'] . '.php';
if (file_exists($viewPath)) {
ob_start();
include $viewPath;
$modpos = $this->getData(['page', $this->getUrl(0), 'modulePosition']);
if ($modpos === 'top') {
$this->addOutput([
'content' => ob_get_clean() . ($output['showPageContent'] ? $pageContent : '')
]);
} elseif ($modpos === 'free' && strstr($pageContent, '[MODULE]')) {
if (strstr($pageContent, '[MODULE]', true) === false) {
$begin = strstr($pageContent, '[]', true);
} else {
$begin = strstr($pageContent, '[MODULE]', true);
}
if (strstr($pageContent, '[MODULE]') === false) {
$end = strstr($pageContent, '[]');
} else {
$end = strstr($pageContent, '[MODULE]');
}
$cut = 8;
$end = substr($end, -strlen($end) + $cut);
$this->addOutput([
'content' => ($output['showPageContent'] ? $begin : '') . ob_get_clean() . ($output['showPageContent'] ? $end : '')
]);
} else {
$this->addOutput([
'content' => ($output['showPageContent'] ? $pageContent : '') . ob_get_clean()
]);
}
}
}
// Librairies
if ($output['vendor'] !== $this->output['vendor']) {
$this->addOutput([
'vendor' => array_merge($this->output['vendor'], $output['vendor'])
]);
}
if ($output['title'] !== null) {
$this->addOutput([
'title' => $output['title']
]);
}
// Affiche le bouton d'édition de la page dans la barre de membre
if ($output['showBarEditButton']) {
$this->addOutput([
'showBarEditButton' => $output['showBarEditButton']
]);
}
}
// Erreur 403
else {
$access = false;
}
}
}
}
// Erreurs
if ($access === 'login') {
http_response_code(302);
header('Location:' . helper::baseUrl() . 'user/login/');
exit();
}
if ($access === false) {
http_response_code(403);
if ($accessInfo['userName']) {
$this->addOutput([
'title' => 'Accès verrouillé',
'content' => template::speech('<p>' . sprintf(helper::translate('La page %s est ouverte par l\'utilisateur %s</p><p><a style="color:inherit" href="javascript:history.back()">%s</a></p>'), $accessInfo['pageId'], $accessInfo['userName'], helper::translate('Retour')))
]);
} else {
if (
$this->getData(['locale', 'page403']) !== 'none'
and $this->getData(['page', $this->getData(['locale', 'page403'])])
) {
header('Location:' . helper::baseUrl() . $this->getData(['locale', 'page403']));
} else {
$this->addOutput([
'title' => 'Accès interdit',
'content' => template::speech('<p>' . helper::translate('Vous n\'êtes pas autorisé à consulter cette page (erreur 403)') . '</p><p><a style="color:inherit" href="javascript:history.back()">' . helper::translate('Retour') . '</a></p>')
]);
}
}
} elseif ($this->output['content'] === '') {
http_response_code(404);
// Pour éviter une 404, bascule dans l'espace correct si la page existe dans cette langue.
// Parcourir les espaces
foreach (common::$languages as $langId => $value) {
;
if (
// l'espace existe
is_dir(common::DATA_DIR . $langId) &&
file_exists(common::DATA_DIR . $langId . '/page.json')
) {
// Lire les données des pages
$pagesId = json_decode(file_get_contents(common::DATA_DIR . $langId . '/page.json'), true);
if (
// La page existe
is_array($pagesId['page']) &&
array_key_exists($this->getUrl(0), $pagesId['page'])
) {
// Basculer
$_SESSION['ZWII_SITE_CONTENT'] = $langId;
header('Refresh:0; url=' . helper::baseUrl() . $this->getUrl());
exit();
}
}
}
if (
$this->getData(['locale', 'page404']) !== 'none'
and $this->getData(['page', $this->getData(['locale', 'page404'])])
) {
header('Location:' . helper::baseUrl() . $this->getData(['locale', 'page404']));
} else {
$this->addOutput([
'title' => 'Page indisponible',
'content' => template::speech('<p>' . helper::translate('La page demandée n\'existe pas ou est introuvable (erreur 404)') . '</p><p><a style="color:inherit" href="javascript:history.back()">' . helper::translate('Retour') . '</a></p>')
]);
}
}
// Mise en forme des métas
if ($this->output['metaTitle'] === '') {
if ($this->output['title']) {
$this->addOutput([
'metaTitle' => strip_tags($this->output['title']) . ' - ' . $this->getData(['locale', 'title'])
]);
} else {
$this->addOutput([
'metaTitle' => $this->getData(['locale', 'title'])
]);
}
}
if ($this->output['metaDescription'] === '') {
$this->addOutput([
'metaDescription' => $this->getData(['locale', 'metaDescription'])
]);
}
switch ($this->output['display']) {
// Layout brut
case common::DISPLAY_RAW:
echo $this->output['content'];
break;
// Layout vide
case common::DISPLAY_LAYOUT_BLANK:
require 'core/layout/blank.php';
break;
// Affichage en JSON
case common::DISPLAY_JSON:
header('Content-Type: application/json');
echo json_encode($this->output['content']);
break;
// RSS feed
case common::DISPLAY_RSS:
header('Content-type: application/rss+xml; charset=UTF-8');
echo $this->output['content'];
break;
// Layout allégé
case common::DISPLAY_LAYOUT_LIGHT:
ob_start();
require 'core/layout/light.php';
$content = ob_get_clean();
// Convertit la chaîne en UTF-8 pour conserver les caractères accentués
$content = mb_convert_encoding($content, 'UTF-8', 'UTF-8');
// Supprime les espaces, les sauts de ligne, les tabulations et autres caractères inutiles
$content = preg_replace('/[\t ]+/u', ' ', $content);
echo $content;
break;
// Layout principal
case common::DISPLAY_LAYOUT_MAIN:
ob_start();
require 'core/layout/main.php';
$content = ob_get_clean();
// Convertit la chaîne en UTF-8 pour conserver les caractères accentués
$content = mb_convert_encoding($content, 'UTF-8', 'UTF-8');
// Supprime les espaces, les sauts de ligne, les tabulations et autres caractères inutiles
$content = preg_replace('/[\t ]+/u', ' ', $content);
echo $content;
break;
}
}
}

View File

@ -0,0 +1,36 @@
<?php
namespace Icamys\SitemapGenerator;
class FileSystem
{
public function file_get_contents($filepath)
{
return file_get_contents($filepath);
}
public function file_put_contents($filepath, $content, $flags = 0)
{
return file_put_contents($filepath, $content, $flags);
}
public function file_exists($filepath)
{
return file_exists($filepath);
}
public function rename($oldname, $newname)
{
return rename($oldname, $newname);
}
public function copy($source, $destination)
{
return copy($source, $destination);
}
public function unlink($filepath)
{
return unlink($filepath);
}
}

View File

@ -0,0 +1,36 @@
<?php
namespace Icamys\SitemapGenerator;
class Runtime
{
public function extension_loaded($extname)
{
return extension_loaded($extname);
}
public function is_writable($filepath)
{
return is_writable($filepath);
}
public function curl_init($url)
{
return curl_init($url);
}
public function curl_setopt($handle, $option, $value)
{
return curl_setopt($handle, $option, $value);
}
public function curl_exec($handle)
{
return curl_exec($handle);
}
public function curl_getinfo($handle, $option = null)
{
return curl_getinfo($handle, $option);
}
}

View File

@ -0,0 +1,715 @@
<?php
namespace Icamys\SitemapGenerator;
use BadMethodCallException;
use DateTime;
use Icamys\SitemapGenerator\Extensions\GoogleVideoExtension;
use InvalidArgumentException;
use OutOfRangeException;
use RuntimeException;
use XMLWriter;
/**
* Class SitemapGenerator
* @package Icamys\SitemapGenerator
*/
class SitemapGenerator
{
/**
* Max size of a sitemap according to spec.
* @see https://www.sitemaps.org/protocol.html
*/
private const MAX_FILE_SIZE = 52428800;
/**
* Max number of urls per sitemap according to spec.
* @see https://www.sitemaps.org/protocol.html
*/
private const MAX_URLS_PER_SITEMAP = 50000;
/**
* Max number of sitemaps per index file according to spec.
* @see http://www.sitemaps.org/protocol.html
*/
private const MAX_SITEMAPS_PER_INDEX = 50000;
/**
* Total max number of URLs.
*/
private const TOTAL_MAX_URLS = self::MAX_URLS_PER_SITEMAP * self::MAX_SITEMAPS_PER_INDEX;
/**
* Max url length according to spec.
* @see https://www.sitemaps.org/protocol.html#xmlTagDefinitions
*/
private const MAX_URL_LEN = 2048;
/**
* Robots file name
* @var string
* @access public
*/
private $robotsFileName = "robots.txt";
/**
* Name of sitemap file
* @var string
* @access public
*/
private $sitemapFileName = "sitemap.xml";
/**
* Name of sitemap index file
* @var string
* @access public
*/
private $sitemapIndexFileName = "sitemap-index.xml";
/**
* Quantity of URLs per single sitemap file.
* If Your links are very long, sitemap file can be bigger than 10MB,
* in this case use smaller value.
* @var int
* @access public
*/
private $maxUrlsPerSitemap = self::MAX_URLS_PER_SITEMAP;
/**
* If true, two sitemap files (.xml and .xml.gz) will be created and added to robots.txt.
* If true, .gz file will be submitted to search engines.
* If quantity of URLs will be bigger than 50.000, option will be ignored,
* all sitemap files except sitemap index will be compressed.
* @var bool
* @access public
*/
private $isCompressionEnabled = false;
/**
* URL to Your site.
* Script will use it to send sitemaps to search engines.
* @var string
* @access private
*/
private $baseURL;
/**
* Base path. Relative to script location.
* Use this if Your sitemap and robots files should be stored in other
* directory then script.
* @var string
* @access private
*/
private $basePath;
/**
* Version of this class
* @var string
* @access private
*/
private $classVersion = "4.3.1";
/**
* Search engines URLs
* @var array of strings
* @access private
*/
private $searchEngines = [
[
"http://search.yahooapis.com/SiteExplorerService/V1/updateNotification?appid=USERID&url=",
"http://search.yahooapis.com/SiteExplorerService/V1/ping?sitemap=",
],
"http://www.google.com/ping?sitemap=",
"http://submissions.ask.com/ping?sitemap=",
"http://www.bing.com/ping?sitemap=",
"http://www.webmaster.yandex.ru/ping?sitemap=",
];
/**
* Array with urls
* @var array
* @access private
*/
private $urls;
/**
* Lines for robots.txt file that are written if file does not exist
* @var array
*/
private $sampleRobotsLines = [
"User-agent: *",
"Disallow: /",
"User-agent: Googlebot",
"Allow: /",
"User-agent: bingbot",
"Allow: /",
"User-agent: Slurp",
"Allow: /",
"User-agent: DuckDuckBot",
"Allow: /",
"User-agent: Baiduspider",
"Allow: /"
];
/**
* @var array list of valid changefreq values according to the spec
*/
private $validChangefreqValues = [
'always',
'hourly',
'daily',
'weekly',
'monthly',
'yearly',
'never',
];
/**
* @var float[] list of valid priority values according to the spec
*/
private $validPriorities = [
0.0,
0.1,
0.2,
0.3,
0.4,
0.5,
0.6,
0.7,
0.8,
0.9,
1.0,
];
/**
* @var FileSystem object used to communicate with file system
*/
private $fs;
/**
* @var Runtime object used to communicate with runtime
*/
private $runtime;
/**
* @var XMLWriter Used for writing xml to files
*/
private $xmlWriter;
/**
* @var string
*/
private $flushedSitemapFilenameFormat;
/**
* @var int
*/
private $flushedSitemapSize = 0;
/**
* @var int
*/
private $flushedSitemapCounter = 0;
/**
* @var array
*/
private $flushedSitemaps = [];
/**
* @var bool
*/
private $isSitemapStarted = false;
/**
* @var int
*/
private $totalUrlCount = 0;
/**
* @var int
*/
private $urlsetClosingTagLen = 10; // strlen("</urlset>\n")
private $sitemapUrlCount = 0;
private $generatedFiles = [];
/**
* @param string $baseURL You site URL
* @param string $basePath Relative path where sitemap and robots should be stored.
* @param FileSystem|null $fs
* @param Runtime|null $runtime
*/
public function __construct(string $baseURL, string $basePath = "", FileSystem $fs = null, Runtime $runtime = null)
{
$this->urls = [];
$this->baseURL = rtrim($baseURL, '/');
if ($fs === null) {
$this->fs = new FileSystem();
} else {
$this->fs = $fs;
}
if ($runtime === null) {
$this->runtime = new Runtime();
} else {
$this->runtime = $runtime;
}
if ($this->runtime->is_writable($basePath) === false) {
throw new InvalidArgumentException(
sprintf('the provided basePath (%s) should be a writable directory,', $basePath) .
' please check its existence and permissions'
);
}
if (strlen($basePath) > 0 && substr($basePath, -1) != DIRECTORY_SEPARATOR) {
$basePath = $basePath . DIRECTORY_SEPARATOR;
}
$this->basePath = $basePath;
$this->xmlWriter = $this->createXmlWriter();
$this->flushedSitemapFilenameFormat = sprintf("sm-%%d-%d.xml", time());
}
private function createXmlWriter(): XMLWriter
{
$w = new XMLWriter();
$w->openMemory();
$w->setIndent(true);
return $w;
}
/**
* @param string $filename
* @return SitemapGenerator
*/
public function setSitemapFilename(string $filename = ''): SitemapGenerator
{
if (strlen($filename) === 0) {
throw new InvalidArgumentException('sitemap filename should not be empty');
}
if (pathinfo($filename, PATHINFO_EXTENSION) !== 'xml') {
throw new InvalidArgumentException('sitemap filename should have *.xml extension');
}
$this->sitemapFileName = $filename;
return $this;
}
/**
* @param string $filename
* @return $this
*/
public function setSitemapIndexFilename(string $filename = ''): SitemapGenerator
{
if (strlen($filename) === 0) {
throw new InvalidArgumentException('filename should not be empty');
}
$this->sitemapIndexFileName = $filename;
return $this;
}
/**
* @param string $filename
* @return $this
*/
public function setRobotsFileName(string $filename): SitemapGenerator
{
if (strlen($filename) === 0) {
throw new InvalidArgumentException('filename should not be empty');
}
$this->robotsFileName = $filename;
return $this;
}
/**
* @param int $value
* @return $this
*/
public function setMaxUrlsPerSitemap(int $value): SitemapGenerator
{
if ($value < 1 || self::MAX_URLS_PER_SITEMAP < $value) {
throw new OutOfRangeException(
sprintf('value %d is out of range 1-%d', $value, self::MAX_URLS_PER_SITEMAP)
);
}
$this->maxUrlsPerSitemap = $value;
return $this;
}
public function enableCompression(): SitemapGenerator
{
$this->isCompressionEnabled = true;
return $this;
}
public function disableCompression(): SitemapGenerator
{
$this->isCompressionEnabled = false;
return $this;
}
public function isCompressionEnabled(): bool
{
return $this->isCompressionEnabled;
}
public function validate(
string $path,
DateTime $lastModified = null,
string $changeFrequency = null,
float $priority = null,
array $alternates = null,
array $extensions = [])
{
if (!(1 <= mb_strlen($path) && mb_strlen($path) <= self::MAX_URL_LEN)) {
throw new InvalidArgumentException(
sprintf("The urlPath argument length must be between 1 and %d.", self::MAX_URL_LEN)
);
}
if ($changeFrequency !== null && !in_array($changeFrequency, $this->validChangefreqValues)) {
throw new InvalidArgumentException(
'The change frequency argument should be one of: %s' . implode(',', $this->validChangefreqValues)
);
}
if ($priority !== null && !in_array($priority, $this->validPriorities)) {
throw new InvalidArgumentException("Priority argument should be a float number in the range [0.0..1.0]");
}
if ($extensions !== null && isset($extensions['google_video'])) {
GoogleVideoExtension::validate($this->baseURL . $path, $extensions['google_video']);
}
}
/**
* Add url components.
* Instead of storing all urls in the memory, the generator will flush sets of added urls
* to the temporary files created on your disk.
* The file format is 'sm-{index}-{timestamp}.xml'
* @param string $path
* @param DateTime|null $lastModified
* @param string|null $changeFrequency
* @param float|null $priority
* @param array|null $alternates
* @param array $extensions
* @return $this
*/
public function addURL(
string $path,
DateTime $lastModified = null,
string $changeFrequency = null,
float $priority = null,
array $alternates = null,
array $extensions = []
): SitemapGenerator
{
$this->validate($path, $lastModified, $changeFrequency, $priority, $alternates, $extensions);
if ($this->totalUrlCount >= self::TOTAL_MAX_URLS) {
throw new OutOfRangeException(
sprintf("Max url limit reached (%d)", self::TOTAL_MAX_URLS)
);
}
if ($this->isSitemapStarted === false) {
$this->writeSitemapStart();
}
$this->writeSitemapUrl($this->baseURL . $path, $lastModified, $changeFrequency, $priority, $alternates, $extensions);
if ($this->totalUrlCount % 1000 === 0 || $this->sitemapUrlCount >= $this->maxUrlsPerSitemap) {
$this->flushWriter();
}
if ($this->sitemapUrlCount === $this->maxUrlsPerSitemap) {
$this->writeSitemapEnd();
}
return $this;
}
private function writeSitemapStart()
{
$this->xmlWriter->startDocument("1.0", "UTF-8");
$this->xmlWriter->writeComment(sprintf('generator-class="%s"', get_class($this)));
$this->xmlWriter->writeComment(sprintf('generator-version="%s"', $this->classVersion));
$this->xmlWriter->writeComment(sprintf('generated-on="%s"', date('c')));
$this->xmlWriter->startElement('urlset');
$this->xmlWriter->writeAttribute('xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9');
$this->xmlWriter->writeAttribute('xmlns:xhtml', 'http://www.w3.org/1999/xhtml');
$this->xmlWriter->writeAttribute('xmlns:video', 'http://www.google.com/schemas/sitemap-video/1.1');
$this->xmlWriter->writeAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
$this->xmlWriter->writeAttribute('xsi:schemaLocation', 'http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd');
$this->isSitemapStarted = true;
}
private function writeSitemapUrl($loc, $lastModified, $changeFrequency, $priority, $alternates, $extensions)
{
$this->xmlWriter->startElement('url');
$this->xmlWriter->writeElement('loc', htmlspecialchars($loc, ENT_QUOTES));
if ($lastModified !== null) {
$this->xmlWriter->writeElement('lastmod', $lastModified->format(DateTime::ATOM));
}
if ($changeFrequency !== null) {
$this->xmlWriter->writeElement('changefreq', $changeFrequency);
}
if ($priority !== null) {
$this->xmlWriter->writeElement('priority', number_format($priority, 1, ".", ""));
}
if (is_array($alternates) && count($alternates) > 0) {
foreach ($alternates as $alternate) {
if (is_array($alternate) && isset($alternate['hreflang']) && isset($alternate['href'])) {
$this->xmlWriter->startElement('xhtml:link');
$this->xmlWriter->writeAttribute('rel', 'alternate');
$this->xmlWriter->writeAttribute('hreflang', $alternate['hreflang']);
$this->xmlWriter->writeAttribute('href', $alternate['href']);
$this->xmlWriter->endElement();
}
}
}
foreach ($extensions as $extName => $extFields) {
if ($extName === 'google_video') {
GoogleVideoExtension::writeVideoTag($this->xmlWriter, $loc, $extFields);
}
}
$this->xmlWriter->endElement(); // url
$this->sitemapUrlCount++;
$this->totalUrlCount++;
}
private function flushWriter()
{
$targetSitemapFilepath = $this->basePath . sprintf($this->flushedSitemapFilenameFormat, $this->flushedSitemapCounter);
$flushedString = $this->xmlWriter->outputMemory(true);
$flushedStringLen = mb_strlen($flushedString);
if ($flushedStringLen === 0) {
return;
}
$this->flushedSitemapSize += $flushedStringLen;
if ($this->flushedSitemapSize > self::MAX_FILE_SIZE - $this->urlsetClosingTagLen) {
$this->writeSitemapEnd();
$this->writeSitemapStart();
}
$this->fs->file_put_contents($targetSitemapFilepath, $flushedString, FILE_APPEND);
}
private function writeSitemapEnd()
{
$targetSitemapFilepath = $this->basePath . sprintf($this->flushedSitemapFilenameFormat, $this->flushedSitemapCounter);
$this->xmlWriter->endElement(); // urlset
$this->xmlWriter->endDocument();
$this->fs->file_put_contents($targetSitemapFilepath, $this->xmlWriter->flush(true), FILE_APPEND);
$this->isSitemapStarted = false;
$this->flushedSitemaps[] = $targetSitemapFilepath;
$this->flushedSitemapCounter++;
$this->sitemapUrlCount = 0;
}
/**
* Flush all stored urls from memory to the disk and close all necessary tags.
*/
public function flush()
{
$this->flushWriter();
if ($this->isSitemapStarted) {
$this->writeSitemapEnd();
}
}
/**
* Move flushed files to their final location. Compress if necessary.
*/
public function finalize()
{
$this->generatedFiles = [];
if (count($this->flushedSitemaps) === 1) {
$targetSitemapFilename = $this->sitemapFileName;
if ($this->isCompressionEnabled) {
$targetSitemapFilename .= '.gz';
}
$targetSitemapFilepath = $this->basePath . $targetSitemapFilename;
if ($this->isCompressionEnabled) {
$this->fs->copy($this->flushedSitemaps[0], 'compress.zlib://' . $targetSitemapFilepath);
$this->fs->unlink($this->flushedSitemaps[0]);
} else {
$this->fs->rename($this->flushedSitemaps[0], $targetSitemapFilepath);
}
$this->generatedFiles['sitemaps_location'] = [$targetSitemapFilepath];
$this->generatedFiles['sitemaps_index_url'] = $this->baseURL . '/' . $targetSitemapFilename;
} else if (count($this->flushedSitemaps) > 1) {
$ext = '.' . pathinfo($this->sitemapFileName, PATHINFO_EXTENSION);
$targetExt = $ext;
if ($this->isCompressionEnabled) {
$targetExt .= '.gz';
}
$sitemapsUrls = [];
$targetSitemapFilepaths = [];
foreach ($this->flushedSitemaps as $i => $flushedSitemap) {
$targetSitemapFilename = str_replace($ext, ($i + 1) . $targetExt, $this->sitemapFileName);
$targetSitemapFilepath = $this->basePath . $targetSitemapFilename;
if ($this->isCompressionEnabled) {
$this->fs->copy($flushedSitemap, 'compress.zlib://' . $targetSitemapFilepath);
$this->fs->unlink($flushedSitemap);
} else {
$this->fs->rename($flushedSitemap, $targetSitemapFilepath);
}
$sitemapsUrls[] = htmlspecialchars($this->baseURL . '/' . $targetSitemapFilename, ENT_QUOTES);
$targetSitemapFilepaths[] = $targetSitemapFilepath;
}
$targetSitemapIndexFilepath = $this->basePath . $this->sitemapIndexFileName;
$this->createSitemapIndex($sitemapsUrls, $targetSitemapIndexFilepath);
$this->generatedFiles['sitemaps_location'] = $targetSitemapFilepaths;
$this->generatedFiles['sitemaps_index_location'] = $targetSitemapIndexFilepath;
$this->generatedFiles['sitemaps_index_url'] = $this->baseURL . '/' . $this->sitemapIndexFileName;
} else {
throw new RuntimeException('failed to finalize, please add urls and flush first');
}
}
private function createSitemapIndex($sitemapsUrls, $sitemapIndexFileName)
{
$this->xmlWriter->flush(true);
$this->writeSitemapIndexStart();
foreach ($sitemapsUrls as $sitemapsUrl) {
$this->writeSitemapIndexUrl($sitemapsUrl);
}
$this->writeSitemapIndexEnd();
$this->fs->file_put_contents(
$sitemapIndexFileName,
$this->xmlWriter->flush(true),
FILE_APPEND
);
}
private function writeSitemapIndexStart()
{
$this->xmlWriter->startDocument("1.0", "UTF-8");
$this->xmlWriter->writeComment(sprintf('generator-class="%s"', get_class($this)));
$this->xmlWriter->writeComment(sprintf('generator-version="%s"', $this->classVersion));
$this->xmlWriter->writeComment(sprintf('generated-on="%s"', date('c')));
$this->xmlWriter->startElement('sitemapindex');
$this->xmlWriter->writeAttribute('xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9');
$this->xmlWriter->writeAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
$this->xmlWriter->writeAttribute('xsi:schemaLocation', 'http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd');
}
private function writeSitemapIndexUrl($url)
{
$this->xmlWriter->startElement('sitemap');
$this->xmlWriter->writeElement('loc', htmlspecialchars($url, ENT_QUOTES));
$this->xmlWriter->writeElement('lastmod', date('c'));
$this->xmlWriter->endElement(); // sitemap
}
private function writeSitemapIndexEnd()
{
$this->xmlWriter->endElement(); // sitemapindex
$this->xmlWriter->endDocument();
}
/**
* @return array Array of previously generated files
*/
public function getGeneratedFiles(): array
{
return $this->generatedFiles;
}
/**
* Will inform search engines about newly created sitemaps.
* Google, Ask, Bing and Yahoo will be noticed.
* If You don't pass yahooAppId, Yahoo still will be informed,
* but this method can be used once per day. If You will do this often,
* message that limit was exceeded will be returned from Yahoo.
* @param string $yahooAppId Your site Yahoo appid.
* @return array of messages and http codes from each search engine
* @access public
* @throws BadMethodCallException
*/
public function submitSitemap($yahooAppId = null): array
{
if (count($this->generatedFiles) === 0) {
throw new BadMethodCallException("To update robots.txt, call finalize() first.");
}
if (!$this->runtime->extension_loaded('curl')) {
throw new BadMethodCallException("cURL extension is needed to do submission.");
}
$searchEngines = $this->searchEngines;
$searchEngines[0] = isset($yahooAppId) ?
str_replace("USERID", $yahooAppId, $searchEngines[0][0]) :
$searchEngines[0][1];
$result = [];
for ($i = 0; $i < count($searchEngines); $i++) {
$submitUrl = $searchEngines[$i] . htmlspecialchars($this->generatedFiles['sitemaps_index_url'], ENT_QUOTES);
$submitSite = $this->runtime->curl_init($submitUrl);
$this->runtime->curl_setopt($submitSite, CURLOPT_RETURNTRANSFER, true);
$responseContent = $this->runtime->curl_exec($submitSite);
$response = $this->runtime->curl_getinfo($submitSite);
$submitSiteShort = array_reverse(explode(".", parse_url($searchEngines[$i], PHP_URL_HOST)));
$result[] = [
"site" => $submitSiteShort[1] . "." . $submitSiteShort[0],
"fullsite" => $submitUrl,
"http_code" => $response['http_code'],
"message" => str_replace("\n", " ", strip_tags($responseContent)),
];
}
return $result;
}
/**
* Adds sitemap url to robots.txt file located in basePath.
* If robots.txt file exists,
* the function will append sitemap url to file.
* If robots.txt does not exist,
* the function will create new robots.txt file with sample content and sitemap url.
* @access public
* @throws BadMethodCallException
* @throws RuntimeException
*/
public function updateRobots(): SitemapGenerator
{
if (count($this->generatedFiles) === 0) {
throw new BadMethodCallException("To update robots.txt, call finalize() first.");
}
$robotsFilePath = $this->basePath . $this->robotsFileName;
$robotsFileContent = $this->createNewRobotsContentFromFile($robotsFilePath);
$this->fs->file_put_contents($robotsFilePath, $robotsFileContent);
return $this;
}
/**
* @param $filepath
* @return string
*/
private function createNewRobotsContentFromFile($filepath): string
{
if ($this->fs->file_exists($filepath)) {
$robotsFileContent = "";
$robotsFile = explode(PHP_EOL, $this->fs->file_get_contents($filepath));
foreach ($robotsFile as $key => $value) {
if (substr($value, 0, 8) == 'Sitemap:') {
unset($robotsFile[$key]);
} else {
$robotsFileContent .= $value . PHP_EOL;
}
}
} else {
$robotsFileContent = $this->getSampleRobotsContent();
}
$robotsFileContent .= "Sitemap: {$this->generatedFiles['sitemaps_index_url']}";
return $robotsFileContent;
}
/**
* @return string
* @access private
*/
private function getSampleRobotsContent(): string
{
return implode(PHP_EOL, $this->sampleRobotsLines) . PHP_EOL;
}
}

View File

@ -0,0 +1,217 @@
<?php
namespace PHP81_BC;
use DateTime;
use DateTimeZone;
use DateTimeInterface;
use Exception;
use IntlDateFormatter;
use IntlGregorianCalendar;
use InvalidArgumentException;
/**
* Locale-formatted PHP81_BC\PHP81_BC\strftime using IntlDateFormatter (PHP 8.1 compatible)
* This provides a cross-platform alternative to PHP81_BC\PHP81_BC\strftime() for when it will be removed from PHP.
* Note that output can be slightly different between libc sprintf and this function as it is using ICU.
*
* Usage:
* use function \PHP81_BC\PHP81_BC\PHP81_BC\strftime;
* echo PHP81_BC\PHP81_BC\strftime('%A %e %B %Y %X', new \DateTime('2021-09-28 00:00:00'), 'fr_FR');
*
* Original use:
* \setlocale(LC_TIME, 'fr_FR.UTF-8');
* echo \PHP81_BC\PHP81_BC\strftime('%A %e %B %Y %X', strtotime('2021-09-28 00:00:00'));
*
* @param string $format Date format
* @param integer|string|DateTime $timestamp Timestamp
* @return string
* @author BohwaZ <https://bohwaz.net/>
*/
function strftime (string $format, $timestamp = null, ?string $locale = null) : string {
if (!($timestamp instanceof DateTimeInterface)) {
$timestamp = is_int($timestamp) ? '@' . $timestamp : (string) $timestamp;
try {
$timestamp = new DateTime($timestamp);
} catch (Exception $e) {
throw new InvalidArgumentException('$timestamp argument is neither a valid UNIX timestamp, a valid date-time string or a DateTime object.', 0, $e);
}
}
$timestamp->setTimezone(new DateTimeZone(date_default_timezone_get()));
if (empty($locale)) {
// get current locale
$locale = setlocale(LC_TIME, '0');
}
// remove trailing part not supported by ext-intl locale
$locale = preg_replace('/[^\w-].*$/', '', $locale);
$intl_formats = [
'%a' => 'EEE', // An abbreviated textual representation of the day Sun through Sat
'%A' => 'EEEE', // A full textual representation of the day Sunday through Saturday
'%b' => 'MMM', // Abbreviated month name, based on the locale Jan through Dec
'%B' => 'MMMM', // Full month name, based on the locale January through December
'%h' => 'MMM', // Abbreviated month name, based on the locale (an alias of %b) Jan through Dec
];
$intl_formatter = function (DateTimeInterface $timestamp, string $format) use ($intl_formats, $locale) {
$tz = $timestamp->getTimezone();
$date_type = IntlDateFormatter::FULL;
$time_type = IntlDateFormatter::FULL;
$pattern = '';
switch ($format) {
// %c = Preferred date and time stamp based on locale
// Example: Tue Feb 5 00:45:10 2009 for February 5, 2009 at 12:45:10 AM
case '%c':
$date_type = IntlDateFormatter::LONG;
$time_type = IntlDateFormatter::SHORT;
break;
// %x = Preferred date representation based on locale, without the time
// Example: 02/05/09 for February 5, 2009
case '%x':
$date_type = IntlDateFormatter::SHORT;
$time_type = IntlDateFormatter::NONE;
break;
// Localized time format
case '%X':
$date_type = IntlDateFormatter::NONE;
$time_type = IntlDateFormatter::MEDIUM;
break;
default:
$pattern = $intl_formats[$format];
}
// In October 1582, the Gregorian calendar replaced the Julian in much of Europe, and
// the 4th October was followed by the 15th October.
// ICU (including IntlDateFormattter) interprets and formats dates based on this cutover.
// Posix (including PHP81_BC\PHP81_BC\strftime) and timelib (including DateTimeImmutable) instead use
// a "proleptic Gregorian calendar" - they pretend the Gregorian calendar has existed forever.
// This leads to the same instants in time, as expressed in Unix time, having different representations
// in formatted strings.
// To adjust for this, a custom calendar can be supplied with a cutover date arbitrarily far in the past.
$calendar = IntlGregorianCalendar::createInstance();
$calendar->setGregorianChange(PHP_INT_MIN);
return (new IntlDateFormatter($locale, $date_type, $time_type, $tz, $calendar, $pattern))->format($timestamp);
};
// Same order as https://www.php.net/manual/en/function.PHP81_BC\PHP81_BC\strftime.php
$translation_table = [
// Day
'%a' => $intl_formatter,
'%A' => $intl_formatter,
'%d' => 'd',
'%e' => function ($timestamp) {
return sprintf('% 2u', $timestamp->format('j'));
},
'%j' => function ($timestamp) {
// Day number in year, 001 to 366
return sprintf('%03d', $timestamp->format('z')+1);
},
'%u' => 'N',
'%w' => 'w',
// Week
'%U' => function ($timestamp) {
// Number of weeks between date and first Sunday of year
$day = new DateTime(sprintf('%d-01 Sunday', $timestamp->format('Y')));
return sprintf('%02u', 1 + ($timestamp->format('z') - $day->format('z')) / 7);
},
'%V' => 'W',
'%W' => function ($timestamp) {
// Number of weeks between date and first Monday of year
$day = new DateTime(sprintf('%d-01 Monday', $timestamp->format('Y')));
return sprintf('%02u', 1 + ($timestamp->format('z') - $day->format('z')) / 7);
},
// Month
'%b' => $intl_formatter,
'%B' => $intl_formatter,
'%h' => $intl_formatter,
'%m' => 'm',
// Year
'%C' => function ($timestamp) {
// Century (-1): 19 for 20th century
return floor($timestamp->format('Y') / 100);
},
'%g' => function ($timestamp) {
return substr($timestamp->format('o'), -2);
},
'%G' => 'o',
'%y' => 'y',
'%Y' => 'Y',
// Time
'%H' => 'H',
'%k' => function ($timestamp) {
return sprintf('% 2u', $timestamp->format('G'));
},
'%I' => 'h',
'%l' => function ($timestamp) {
return sprintf('% 2u', $timestamp->format('g'));
},
'%M' => 'i',
'%p' => 'A', // AM PM (this is reversed on purpose!)
'%P' => 'a', // am pm
'%r' => 'h:i:s A', // %I:%M:%S %p
'%R' => 'H:i', // %H:%M
'%S' => 's',
'%T' => 'H:i:s', // %H:%M:%S
'%X' => $intl_formatter, // Preferred time representation based on locale, without the date
// Timezone
'%z' => 'O',
'%Z' => 'T',
// Time and Date Stamps
'%c' => $intl_formatter,
'%D' => 'm/d/Y',
'%F' => 'Y-m-d',
'%s' => 'U',
'%x' => $intl_formatter,
];
$out = preg_replace_callback('/(?<!%)%([_#-]?)([a-zA-Z])/', function ($match) use ($translation_table, $timestamp) {
$prefix = $match[1];
$char = $match[2];
$pattern = '%'.$char;
if ($pattern == '%n') {
return "\n";
} elseif ($pattern == '%t') {
return "\t";
}
if (!isset($translation_table[$pattern])) {
throw new InvalidArgumentException(sprintf('Format "%s" is unknown in time format', $pattern));
}
$replace = $translation_table[$pattern];
if (is_string($replace)) {
$result = $timestamp->format($replace);
} else {
$result = $replace($timestamp, $pattern);
}
switch ($prefix) {
case '_':
// replace leading zeros with spaces but keep last char if also zero
return preg_replace('/\G0(?=.)/', ' ', $result);
case '#':
case '-':
// remove leading zeros but keep last char if also zero
return preg_replace('/^0+(?=.)/', '', $result);
}
return $result;
}, $format);
$out = str_replace('%%', '%', $out);
return $out;
}

View File

@ -0,0 +1,991 @@
<?php
class template
{
/**
* Crée un bouton
* @param string $nameId Nom et id du champ
* @param array $attributes Attributs ($key => $value)
* @return string
*/
public static function button($nameId, array $attributes = [])
{
// Attributs par défaut
$attributes = array_merge([
'class' => '',
'disabled' => false,
'href' => 'javascript:void(0);',
'ico' => '',
'id' => $nameId,
'name' => $nameId,
'target' => '',
'uniqueSubmission' => false,
'value' => 'Bouton',
'help' => ''
], $attributes);
// Traduction de l'aide et de l'étiquette
$attributes['value'] = helper::translate($attributes['value']);
$attributes['help'] = helper::translate($attributes['help']);
// Retourne le html
return sprintf(
'<a %s class="button %s %s %s" %s>%s</a>',
helper::sprintAttributes($attributes, ['class', 'disabled', 'ico', 'value']),
$attributes['disabled'] ? 'disabled' : '',
$attributes['class'],
$attributes['uniqueSubmission'] ? 'uniqueSubmission' : '',
$attributes['help'] ? ' title="' . $attributes['help'] . '" ' : '',
($attributes['ico'] ? template::ico($attributes['ico'], ['margin' => 'right']) : '') . $attributes['value']
);
}
/**
* Crée un champ captcha
* @param string $nameId Nom et id du champ
* @param array $attributes Attributs ($key => $value)
* @return string
*/
public static function captcha($nameId, array $attributes = [])
{
// Attributs par défaut
$attributes = array_merge([
'class' => '',
'classWrapper' => '',
'help' => '',
'id' => $nameId,
'name' => $nameId,
'value' => '',
'limit' => false, // captcha simple
'type' => 'alpha' // num(érique) ou alpha(bétique)
], $attributes);
// Traduction de l'aide et de l'étiquette
// $attributes['value'] = helper::translate($attributes['value']);
$attributes['help'] = helper::translate($attributes['help']);
// Captcha quatre opérations
// Limite addition et soustraction selon le type de captcha
$numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20];
$letters = ['u', 't', 's', 'r', 'q', 'p', 'o', 'n', 'm', 'l', 'k', 'j', 'i', 'h', 'g', 'f', 'e', 'd', 'c', 'b', 'a'];
$limit = $attributes['limit'] ? count($letters) - 1 : 10;
// Tirage de l'opération
mt_srand();
// Captcha simple limité à l'addition
$operator = $attributes['limit'] ? mt_rand(1, 4) : 1;
// Limite si multiplication ou division
if ($operator > 2) {
$limit = 10;
}
// Tirage des nombres
mt_srand();
$firstNumber = mt_rand(1, $limit);
mt_srand();
$secondNumber = mt_rand(1, $limit);
// Permutation si addition ou soustraction
if (($operator < 3) and ($firstNumber < $secondNumber)) {
$temp = $firstNumber;
$firstNumber = $secondNumber;
$secondNumber = $temp;
}
// Icône de l'opérateur et calcul du résultat
switch ($operator) {
case 1:
$operator = template::ico('plus', ['fontSize' => '2em;']);
$result = $firstNumber + $secondNumber;
break;
case 2:
$operator = template::ico('minus', ['fontSize' => '2em;']);
$result = $firstNumber - $secondNumber;
break;
case 3:
$operator = template::ico('cancel', ['fontSize' => '2em;']);
$result = $firstNumber * $secondNumber;
break;
case 4:
$operator = template::ico('divide', ['fontSize' => '2em;']);
$limit2 = [10, 10, 6, 5, 4, 3, 2, 2, 2, 2];
for ($i = 1; $i <= $firstNumber; $i++) {
$limit = $limit2[$i - 1];
}
mt_srand();
$secondNumber = mt_rand(1, $limit);
$firstNumber = $firstNumber * $secondNumber;
$result = $firstNumber / $secondNumber;
break;
}
// Hashage du résultat
$result = password_hash($result, PASSWORD_BCRYPT);
// Codage des valeurs de l'opération
$firstLetter = uniqid();
$secondLetter = uniqid();
// Masquage image source pour éviter un décodage
copy('core/vendor/zwiico/png/' . $attributes['type'] . '/' . $letters[$firstNumber] . '.png', 'site/tmp/' . $firstLetter . '.png');
copy('core/vendor/zwiico/png/' . $attributes['type'] . '/' . $letters[$secondNumber] . '.png', 'site/tmp/' . $secondLetter . '.png');
// Début du wrapper
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="captcha inputWrapper ' . $attributes['classWrapper'] . '">';
// Label
$html .= self::label(
$attributes['id'],
'<img class="captcha' . ucFirst($attributes['type']) . '" src="' . helper::baseUrl(false) . 'site/tmp/' . $firstLetter . '.png" />&nbsp;<strong>' . $operator . '</strong>&nbsp;<img class="captcha' . ucFirst($attributes['type']) . '" src="' . helper::baseUrl(false) . 'site/tmp/' . $secondLetter . '.png" />' . template::ico('eq', ['fontSize' => '2em;']),
[
'help' => $attributes['help']
]
);
// Notice
$notice = '';
if (array_key_exists($attributes['id'], common::$inputNotices)) {
$notice = common::$inputNotices[$attributes['id']];
$attributes['class'] .= ' notice';
}
$html .= self::notice($attributes['id'], $notice);
// captcha
$html .= sprintf(
'<input type="text" %s>',
helper::sprintAttributes($attributes)
);
// Champ résultat codé
$html .= self::hidden($attributes['id'] . 'Result', [
'value' => $result,
'before' => false
]);
// Fin du wrapper
$html .= '</div>';
// Retourne le html
return $html;
}
/**
* Crée une case à cocher à sélection multiple
* @param string $nameId Nom et id du champ
* @param string $value Valeur de la case à cocher
* @param string $label Label de la case à cocher
* @param array $attributes Attributs ($key => $value)
* @return string
*/
public static function checkbox($nameId, $value, $label, array $attributes = [])
{
// Attributs par défaut
$attributes = array_merge([
'before' => true,
'checked' => '',
'class' => '',
'classWrapper' => '',
'disabled' => false,
'help' => '',
'id' => $nameId,
'name' => $nameId
], $attributes);
// Traduction de l'aide et de l'étiquette
$label = helper::translate($label);
$attributes['help'] = helper::translate($attributes['help']);
// Sauvegarde des données en cas d'erreur
if ($attributes['before'] and array_key_exists($attributes['id'], common::$inputBefore)) {
$attributes['checked'] = (bool) common::$inputBefore[$attributes['id']];
}
// Début du wrapper
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="inputWrapper ' . $attributes['classWrapper'] . '">';
// Notice
$notice = '';
if (array_key_exists($attributes['id'], common::$inputNotices)) {
$notice = common::$inputNotices[$attributes['id']];
$attributes['class'] .= ' notice';
}
$html .= self::notice($attributes['id'], $notice);
// Case à cocher
$html .= sprintf(
'<input type="checkbox" value="%s" %s>',
$value,
helper::sprintAttributes($attributes)
);
// Label
$html .= self::label($attributes['id'], '<span>' . $label . '</span>', [
'help' => $attributes['help']
]);
// Fin du wrapper
$html .= '</div>';
// Retourne le html
return $html;
}
/**
* Crée un champ date
* @param string $nameId Nom et id du champ
* @param array $attributes Attributs ($key => $value)
* @param string type date seule ; time heure seule ; datetime-local (jour et heure)
* @return string
*/
public static function date($nameId, array $attributes = [])
{
// Attributs par défaut
$attributes = array_merge([
'autocomplete' => 'on',
'before' => true,
'class' => '',
'classWrapper' => '',
'noDirty' => false,
'disabled' => false,
'help' => '',
'id' => $nameId,
'label' => '',
'name' => $nameId,
'placeholder' => '',
'readonly' => false,
'value' => '',
'type' => 'date',
], $attributes);
// Traduction de l'aide et de l'étiquette
$attributes['label'] = helper::translate($attributes['label']);
$attributes['help'] = helper::translate($attributes['help']);
//$attributes['placeholder'] = helper::translate($attributes['placeholder']);
// Filtre selon le type
switch ($attributes['type']) {
case 'datetime-local':
$filter = helper::FILTER_TIMESTAMP;
break;
case 'date':
$filter = helper::FILTER_DATE; // Pour générer une valeur uniquement sur la date
break;
case 'time':
$filter = helper::FILTER_TIME; // Pour générer une valeur uniquement sur l'heure
break;
default:
$filter = null; // pas de filtre pour month and year
break;
}
// Sauvegarde des données en cas d'erreur
if ($attributes['before'] and array_key_exists($attributes['id'], common::$inputBefore)) {
$attributes['value'] = common::$inputBefore[$attributes['id']];
} else {
$attributes['value'] = ($attributes['value'] ? helper::filter($attributes['value'], $filter) : '');
}
// Début du wrapper
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="inputWrapper ' . $attributes['classWrapper'] . '">';
// Label
if ($attributes['label']) {
$html .= self::label($attributes['id'], $attributes['label'], [
'help' => $attributes['help']
]);
}
// Notice
$notice = '';
if (array_key_exists($attributes['id'], common::$inputNotices)) {
$notice = common::$inputNotices[$attributes['id']];
$attributes['class'] .= ' notice';
}
$html .= self::notice($attributes['id'], $notice);
// Date visible
$html .= '<div class="inputDateManagerWrapper">';
$html .= sprintf(
'<input type="' . $attributes['type'] . '" class="datepicker %s" value="%s" %s>',
$attributes['class'],
$attributes['value'],
helper::sprintAttributes($attributes, ['class', 'value'])
);
$html .= '</div>';
// Fin du wrapper
$html .= '</div>';
// Retourne le html
return $html;
}
/**
* Crée un champ d'upload de fichier
* @param string $nameId Nom et id du champ
* @param array $attributes Attributs ($key => $value)
* @return string
*/
public static function file($nameId, array $attributes = [])
{
// Attributs par défaut
$attributes = array_merge([
'before' => true,
'class' => '',
'classWrapper' => '',
'noDirty' => false,
'disabled' => false,
'extensions' => '',
'help' => '',
'id' => $nameId,
'label' => '',
'maxlength' => '500',
'name' => $nameId,
'type' => 2,
'value' => '',
'folder' => '',
'language' => 'fr_FR'
], $attributes);
// Traduction de l'aide et de l'étiquette
$attributes['value'] = helper::translate($attributes['value']);
$attributes['help'] = helper::translate($attributes['help']);
// Sauvegarde des données en cas d'erreur
if ($attributes['before'] and array_key_exists($attributes['id'], common::$inputBefore)) {
$attributes['value'] = common::$inputBefore[$attributes['id']];
}
// Début du wrapper
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="inputWrapper ' . $attributes['classWrapper'] . '">';
// Notice
$notice = '';
if (array_key_exists($attributes['id'], common::$inputNotices)) {
$notice = common::$inputNotices[$attributes['id']];
$attributes['class'] .= ' notice';
}
$html .= self::notice($attributes['id'], $notice);
// Label
if ($attributes['label']) {
$html .= self::label($attributes['id'], $attributes['label'], [
'help' => $attributes['help']
]);
}
// Champ caché contenant l'url de la page
$html .= self::hidden($attributes['id'], [
'class' => 'inputFileHidden',
'disabled' => $attributes['disabled'],
'maxlength' => $attributes['maxlength'],
'value' => $attributes['value']
]);
// Champ d'upload
$html .= '<div class="inputFileManagerWrapper">';
$html .= sprintf(
'<a
href="' .
helper::baseUrl(false) . 'core/vendor/filemanager/dialog.php' .
'?relative_url=1' .
'&lang=' . $attributes['language'] .
'&field_id=' . $attributes['id'] .
'&type=' . $attributes['type'] .
'&akey=' . md5_file(core::DATA_DIR . 'core.json') .
// Ajoute le nom du dossier si la variable est passée
(!empty($attributes['folder']) ? '&fldr=' . $attributes['folder'] : '') .
($attributes['extensions'] ? '&extensions=' . $attributes['extensions'] : '')
. '"
class="inputFile %s %s"
%s
data-lity
>
' . self::ico('upload-cloud', ['margin' => 'right']) . '
<span class="inputFileLabel"></span>
</a>',
$attributes['class'],
$attributes['disabled'] ? 'disabled' : '',
helper::sprintAttributes($attributes, ['class', 'extensions', 'type', 'maxlength'])
);
$html .= self::button($attributes['id'] . 'Delete', [
'class' => 'inputFileDelete',
'value' => self::ico('cancel')
]);
$html .= '</div>';
// Fin du wrapper
$html .= '</div>';
// Retourne le html
return $html;
}
/**
* Ferme un formulaire
* @return string
*/
public static function formClose()
{
return '</form>';
}
/**
* Ouvre un formulaire protégé par CSRF
* @param string $id Id du formulaire
* @return string
*/
public static function formOpen($id)
{
// Ouverture formulaire
$html = '<form id="' . $id . '" method="post">';
// Stock le token CSRF
$html .= self::hidden('csrf', [
'value' => htmlentities($_SESSION['csrf'], ENT_QUOTES | ENT_HTML5, 'UTF-8')
]);
// Retourne le html
return $html;
}
/**
* Crée une aide qui s'affiche au survole
* @param string $text Texte de l'aide
* @return string
*/
public static function help($text)
{
return '<span class="helpButton" data-tippy-content="' . $text . '">' . self::ico('help') . '<!----></span>';
}
/**
* Crée un champ caché
* @param string $nameId Nom et id du champ
* @param array $attributes Attributs ($key => $value)
* @return string
*/
public static function hidden($nameId, array $attributes = [])
{
// Attributs par défaut
$attributes = array_merge([
'before' => true,
'class' => '',
'noDirty' => false,
'id' => $nameId,
//'maxlength' => '500',
'name' => $nameId,
'value' => ''
], $attributes);
// Sauvegarde des données en cas d'erreur
if ($attributes['before'] and array_key_exists($attributes['id'], common::$inputBefore)) {
$attributes['value'] = common::$inputBefore[$attributes['id']];
}
// Texte
$html = sprintf('<input type="hidden" %s>', helper::sprintAttributes($attributes, ['before']));
// Retourne le html
return $html;
}
/**
* Crée un icône
* @Array :
* @param string $ico Classe de l'icône
* @param string $margin Ajoute un margin autour de l'icône (choix : left, right, all)
* @param bool $animate Ajoute une animation à l'icône
* @param string $fontSize Taille de la police
* @param string $href lien vers une url
* @param string $help popup d'aide
* @param string $id de l'élement
* @return string
*/
// public static function ico($ico, $margin = '', $animate = false, $fontSize = '1em') {
public static function ico($ico, array $attributes = [])
{
// Attributs par défaut
$attributes = array_merge([
'margin' => '',
'animate' => false,
'fontSize' => '1em',
'href' => '',
'attr' => '',
'help' => '',
'id' => '',
], $attributes);
// Traduction de l'aide
$attributes['help'] = helper::translate($attributes['help']);
// Contenu de l'icône
$alt = $attributes['help'] ? $attributes['help'] : $ico;
$item = $attributes['href'] ? '<a id="' . $attributes['id'] . '" data-tippy-content="' . $attributes['help'] . '" alt="' . $alt . '" href="' . $attributes['href'] . '" ' . $attributes['attr'] . ' >' : '';
$item .= '<span class="zwiico-' . $ico . ($attributes['margin'] ? ' zwiico-margin-' . $attributes['margin'] : '') . ($attributes['animate'] ? ' animate-spin' : '') . '" style="font-size:' . $attributes['fontSize'] . '"><!----></span>';
$item .= ($attributes['href']) ? '</a>' : '';
return $item;
}
/**
* Crée un drapeau du site courante
* @param string $langId Id de la langue à affiche ou selected pour la langue courante
* @param string size en pixels ou en rem
* @return string
*/
public static function flag($langId, $size = 'auto')
{
$lang = 'fr_FR';
switch ($langId) {
case '':
break;
case array_key_exists($langId, core::$languages):
$lang = $langId;
break;
case 'selected':
if (isset($_SESSION['ZWII_SITE_CONTENT'])) {
$lang = $_SESSION['ZWII_SITE_CONTENT'];
} else {
$lang = 'fr_FR';
}
}
return '<img class="flag" src="' . helper::baseUrl(false) . 'core/vendor/i18n/png/' . $lang . '.png"
width="' . $size . '"
height="' . $size . '"
title="' . $lang . '"
alt="(' . $lang . ')"/>';
}
/**
* Crée un label
* @param string $for For du label
* @param array $attributes Attributs ($key => $value)
* @param string $text Texte du label
* @return string
*/
public static function label($for, $text, array $attributes = [])
{
// Attributs par défaut
$attributes = array_merge([
'class' => '',
'for' => $for,
'help' => ''
], $attributes);
// Traduction de l'aide et de l'étiquette
$text = helper::translate($text);
$attributes['help'] = helper::translate($attributes['help']);
if (
get_called_class() !== 'template'
) {
$attributes['help'] = helper::translate($attributes['help']);
}
if ($attributes['help'] !== '') {
$text = $text . self::help($attributes['help']);
}
// Retourne le html
return sprintf(
'<label %s>%s</label>',
helper::sprintAttributes($attributes),
$text
);
}
/**
* Crée un champ mail
* @param string $nameId Nom et id du champ
* @param array $attributes Attributs ($key => $value)
* @return string
*/
public static function mail($nameId, array $attributes = [])
{
// Attributs par défaut
$attributes = array_merge([
'autocomplete' => 'on',
'before' => true,
'class' => '',
'classWrapper' => '',
'noDirty' => false,
'disabled' => false,
'help' => '',
'id' => $nameId,
'label' => '',
//'maxlength' => '500',
'name' => $nameId,
'placeholder' => '',
'readonly' => false,
'value' => ''
], $attributes);
// Traduction de l'aide et de l'étiquette
$attributes['label'] = helper::translate($attributes['label']);
$attributes['help'] = helper::translate($attributes['help']);
//$attributes['placeholder'] = helper::translate($attributes['placeholder']);
// Sauvegarde des données en cas d'erreur
if ($attributes['before'] and array_key_exists($attributes['id'], common::$inputBefore)) {
$attributes['value'] = common::$inputBefore[$attributes['id']];
}
// Début du wrapper
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="inputWrapper ' . $attributes['classWrapper'] . '">';
// Label
if ($attributes['label']) {
$html .= self::label($attributes['id'], $attributes['label'], [
'help' => $attributes['help']
]);
}
// Notice
$notice = '';
if (array_key_exists($attributes['id'], common::$inputNotices)) {
$notice = common::$inputNotices[$attributes['id']];
$attributes['class'] .= ' notice';
}
$html .= self::notice($attributes['id'], $notice);
// Texte
$html .= sprintf(
'<input type="email" %s>',
helper::sprintAttributes($attributes)
);
// Fin du wrapper
$html .= '</div>';
// Retourne le html
return $html;
}
/**
* Crée une notice
* @param string $id Id du champ
* @param string $notice Notice
* @return string
*/
public static function notice($id, $notice)
{
return ' <span id="' . $id . 'Notice" class="notice ' . ($notice ? '' : 'displayNone') . '">' . $notice . '</span>';
}
/**
* Crée un champ mot de passe
* @param string $nameId Nom et id du champ
* @param array $attributes Attributs ($key => $value)
* @return string
*/
public static function password($nameId, array $attributes = [])
{
// Attributs par défaut
$attributes = array_merge([
'autocomplete' => 'on',
'class' => '',
'classWrapper' => '',
'noDirty' => false,
'disabled' => false,
'help' => '',
'id' => $nameId,
'label' => '',
//'maxlength' => '500',
'name' => $nameId,
'placeholder' => '',
'readonly' => false
], $attributes);
// Traduction de l'aide et de l'étiquette
$attributes['label'] = helper::translate($attributes['label']);
//$attributes['placeholder'] = helper::translate($attributes['placeholder']);
$attributes['help'] = helper::translate($attributes['help']);
// Début du wrapper
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="inputWrapper ' . $attributes['classWrapper'] . '">';
// Label
if ($attributes['label']) {
$html .= self::label($attributes['id'], $attributes['label'], [
'help' => $attributes['help']
]);
}
// Notice
$notice = '';
if (array_key_exists($attributes['id'], common::$inputNotices)) {
$notice = common::$inputNotices[$attributes['id']];
$attributes['class'] .= ' notice';
}
$html .= self::notice($attributes['id'], $notice);
// Mot de passe
$html .= sprintf(
'<input type="password" %s>',
helper::sprintAttributes($attributes)
);
// Fin du wrapper
$html .= '</div>';
// Retourne le html
return $html;
}
/**
* Crée un champ sélection
* @param string $nameId Nom et id du champ
* @param array $options Liste des options du champ de sélection ($value => $text)
* @param array $attributes Attributs ($key => $value)
* @return string
*/
public static function select($nameId, array $options, array $attributes = [])
{
// Attributs par défaut
$attributes = array_merge([
'before' => true,
'class' => '',
'classWrapper' => '',
'noDirty' => false,
'disabled' => false,
'help' => '',
'id' => $nameId,
'label' => '',
'name' => $nameId,
'selected' => '',
'font' => [],
'multiple' => ''
], $attributes);
// Traduction de l'aide et de l'étiquette
$attributes['label'] = helper::translate($attributes['label']);
$attributes['help'] = helper::translate($attributes['help']);
// Stocker les fontes et remettre à zéro le tableau des fontes transmis pour éviter une erreur de sprintAttributes
if (empty($attributes['font']) === false) {
$fonts = $attributes['font'];
$attributes['font'] = [];
}
// Sauvegarde des données en cas d'erreur
if ($attributes['before'] and array_key_exists($attributes['id'], common::$inputBefore)) {
$attributes['selected'] = common::$inputBefore[$attributes['id']];
}
// Début du wrapper
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="inputWrapper ' . $attributes['classWrapper'] . '">';
// Label
if ($attributes['label']) {
$html .= self::label($attributes['id'], $attributes['label'], [
'help' => $attributes['help']
]);
}
// Notice
$notice = '';
if (array_key_exists($attributes['id'], common::$inputNotices)) {
$notice = common::$inputNotices[$attributes['id']];
$attributes['class'] .= ' notice';
}
$html .= self::notice($attributes['id'], $notice);
// Attribut multiple
if ($attributes['multiple'] === true) {
echo "ppp";
$attributes['multiple'] = 'multiple';
}
// Début sélection
$html .= sprintf(
'<select %s>',
helper::sprintAttributes($attributes)
);
foreach ($options as $value => $text) {
// Select des liste de fontes
$html .= isset($fonts) ? sprintf(
'<option value="%s"%s style="font-family: %s;">%s</option>',
$value,
$attributes['selected'] == $value ? ' selected' : '', // Double == pour ignorer le type de variable car $_POST change les types en string
$fonts[$value],
$text
// Select standard
) : sprintf(
'<option value="%s"%s>%s</option>',
$value,
$attributes['selected'] == $value ? ' selected' : '', // Double == pour ignorer le type de variable car $_POST change les types en string
helper::translate($text)
);
}
// Fin sélection
$html .= '</select>';
// Fin du wrapper
$html .= '</div>';
// Retourne le html
return $html;
}
/**
* Crée une bulle de dialogue
* @param string $text Texte de la bulle
* @return string
*/
public static function speech($text)
{
return '<div class="speech"><div class="speechBubble">' . helper::translate($text) . '</div>' . template::ico('mimi speechMimi', ['fontSize' => '7em']) . '</div>';
}
/**
* Crée un bouton validation
* @param string $nameId Nom & id du bouton validation
* @param array $attributes Attributs ($key => $value)
* @return string
*/
public static function submit($nameId, array $attributes = [])
{
// Attributs par défaut
$attributes = array_merge([
'class' => '',
'disabled' => false,
'ico' => 'check',
'id' => $nameId,
'name' => $nameId,
'uniqueSubmission' => false, //true avant 9.1.08
'value' => 'Enregistrer'
], $attributes);
// Traduction de l'aide et de l'étiquette
$attributes['value'] = helper::translate($attributes['value']);
// Retourne le html
return sprintf(
'<button type="submit" class="%s%s" %s>%s</button>',
$attributes['class'],
$attributes['uniqueSubmission'] ? 'uniqueSubmission' : '',
helper::sprintAttributes($attributes, ['class', 'ico', 'value']),
($attributes['ico'] ? template::ico($attributes['ico'], ['margin' => 'right']) : '') . $attributes['value']
);
}
/**
* Crée un tableau
* @param array $cols Cols des colonnes (format: [col colonne1, col colonne2, etc])
* @param array $body Contenu (format: [[contenu1, contenu2, etc], [contenu1, contenu2, etc]])
* @param array $head Entêtes (format : [[titre colonne1, titre colonne2, etc])
* @param array $rowsId Id pour la numérotation des rows (format : [id colonne1, id colonne2, etc])
* @param array $attributes Attributs ($key => $value)
* @return string
*/
public static function table(array $cols = [], array $body = [], array $head = [], array $attributes = [], array $rowsId = [])
{
// Attributs par défaut
$attributes = array_merge([
'class' => '',
'classWrapper' => '',
'id' => ''
], $attributes);
// Traduction de l'aide et de l'étiquette
foreach ($head as $value) {
$head[array_search($value, $head)] = helper::translate($value);
}
// Début du wrapper
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="tableWrapper ' . $attributes['classWrapper'] . '">';
// Début tableau
$html .= '<table id="' . $attributes['id'] . '" class="table ' . $attributes['class'] . '">';
// Entêtes
if ($head) {
// Début des entêtes
$html .= '<thead>';
$html .= '<tr class="nodrag">';
$i = 0;
foreach ($head as $th) {
$html .= '<th class="col' . $cols[$i++] . '">' . $th . '</th>';
}
// Fin des entêtes
$html .= '</tr>';
$html .= '</thead>';
}
// Pas de tableau d'Id transmis, générer une numérotation
if (empty($rowsId)) {
$rowsId = range(0, count($body));
}
// Début contenu
$j = 0;
foreach ($body as $tr) {
// Id de ligne pour les tableaux drag and drop
$html .= '<tr id="' . $rowsId[$j++] . '">';
$i = 0;
foreach ($tr as $td) {
$html .= '<td class="col' . $cols[$i++] . '">' . $td . '</td>';
}
$html .= '</tr>';
}
// Fin contenu
$html .= '</tbody>';
// Fin tableau
$html .= '</table>';
// Fin container
$html .= '</div>';
// Retourne le html
return $html;
}
/**
* Crée un champ texte court
* @param string $nameId Nom et id du champ
* @param array $attributes Attributs ($key => $value)
* @return string
*/
public static function text($nameId, array $attributes = [])
{
// Attributs par défaut
$attributes = array_merge([
'autocomplete' => 'on',
'before' => true,
'class' => '',
'classWrapper' => '',
'noDirty' => false,
'disabled' => false,
'help' => '',
'id' => $nameId,
'label' => '',
//'maxlength' => '500',
'name' => $nameId,
'placeholder' => '',
'readonly' => false,
'value' => '',
'type' => 'text'
], $attributes);
// Traduction de l'aide et de l'étiquette
$attributes['label'] = helper::translate($attributes['label']);
$attributes['help'] = helper::translate($attributes['help']);
//$attributes['placeholder'] = helper::translate($attributes['placeholder']);
// Sauvegarde des données en cas d'erreur
if ($attributes['before'] and array_key_exists($attributes['id'], common::$inputBefore)) {
$attributes['value'] = common::$inputBefore[$attributes['id']];
}
// Début du wrapper
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="inputWrapper ' . $attributes['classWrapper'] . '">';
// Label
if ($attributes['label']) {
$html .= self::label($attributes['id'], $attributes['label'], [
'help' => $attributes['help']
]);
}
// Notice
$notice = '';
if (array_key_exists($attributes['id'], common::$inputNotices)) {
$notice = common::$inputNotices[$attributes['id']];
$attributes['class'] .= ' notice';
}
$html .= self::notice($attributes['id'], $notice);
// Texte
$html .= sprintf(
'<input type="' . $attributes['type'] . '" %s>',
helper::sprintAttributes($attributes)
);
// Fin du wrapper
$html .= '</div>';
// Retourne le html
return $html;
}
/**
* Crée un champ texte long
* @param string $nameId Nom et id du champ
* @param array $attributes Attributs ($key => $value)
* @return string
*/
public static function textarea($nameId, array $attributes = [])
{
// Attributs par défaut
$attributes = array_merge([
'before' => true,
'class' => '', // editorWysiwyg et editor possible pour utiliser un éditeur (il faut également instancier les librairies)
'classWrapper' => '',
'disabled' => false,
'noDirty' => false,
'help' => '',
'id' => $nameId,
'label' => '',
//'maxlength' => '500',
'name' => $nameId,
'readonly' => false,
'value' => ''
], $attributes);
// Traduction de l'aide et de l'étiquette
$attributes['label'] = helper::translate($attributes['label']);
$attributes['help'] = helper::translate($attributes['help']);
// Sauvegarde des données en cas d'erreur
if ($attributes['before'] and array_key_exists($attributes['id'], common::$inputBefore)) {
$attributes['value'] = common::$inputBefore[$attributes['id']];
}
// Début du wrapper
$html = '<div id="' . $attributes['id'] . 'Wrapper" class="inputWrapper ' . $attributes['classWrapper'] . '">';
// Label
if ($attributes['label']) {
$html .= self::label($attributes['id'], $attributes['label'], [
'help' => $attributes['help']
]);
}
// Notice
$notice = '';
if (array_key_exists($attributes['id'], common::$inputNotices)) {
$notice = common::$inputNotices[$attributes['id']];
$attributes['class'] .= ' notice';
}
$html .= self::notice($attributes['id'], $notice);
// Texte long
$html .= sprintf(
'<textarea %s>%s</textarea>',
helper::sprintAttributes($attributes, ['value']),
$attributes['value']
);
// Fin du wrapper
$html .= '</div>';
// Retourne le html
return $html;
}
}

397
core/core.js.php Executable file → Normal file
View File

@ -1,13 +1,14 @@
/** /**
* This file is part of Zwii. * This file is part of Zwii.
*
* For full copyright and license information, please see the LICENSE * For full copyright and license information, please see the LICENSE
* file that was distributed with this source code. * file that was distributed with this source code.
* *
* @author Rémi Jean <remi.jean@outlook.com> * @author Rémi Jean <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean * @copyright Copyright (C) 2008-2018, Rémi Jean
* @license GNU General Public License, version 3 * @author Frédéric Tempez <frederic.tempez@outlook.com>
* @link http://zwiicms.com/ * @copyright Copyright (C) 2018-2024, Frédéric Tempez
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
* @link http://zwiicms.fr/
*/ */
var core = {}; var core = {};
@ -15,8 +16,8 @@ var core = {};
/** /**
* Crée un message d'alerte * Crée un message d'alerte
*/ */
core.alert = function(text) { core.alert = function (text) {
var lightbox = lity(function($) { var lightbox = lity(function ($) {
return $("<div>") return $("<div>")
.addClass("lightbox") .addClass("lightbox")
.append( .append(
@ -27,15 +28,15 @@ core.alert = function(text) {
$("<a>") $("<a>")
.addClass("button") .addClass("button")
.text("Ok") .text("Ok")
.on("click", function() { .on("click", function () {
lightbox.close(); lightbox.close();
}) })
) )
) )
}(jQuery)); }(jQuery));
// Validation de la lightbox avec le bouton entrée // Validation de la lightbox avec le bouton entrée
$(document).on("keyup", function(event) { $(document).on("keyup", function (event) {
if(event.keyCode === 13) { if (event.keyCode === 13) {
lightbox.close(); lightbox.close();
} }
}); });
@ -45,22 +46,22 @@ core.alert = function(text) {
/** /**
* Génère des variations d'une couleur * Génère des variations d'une couleur
*/ */
core.colorVariants = function(rgba) { core.colorVariants = function (rgba) {
rgba = rgba.match(/\(+(.*)\)/); rgba = rgba.match(/\(+(.*)\)/);
rgba = rgba[1].split(", "); rgba = rgba[1].split(", ");
return { return {
"normal": "rgba(" + rgba[0] + "," + rgba[1] + "," + rgba[2] + "," + rgba[3] + ")", "normal": "rgba(" + rgba[0] + "," + rgba[1] + "," + rgba[2] + "," + rgba[3] + ")",
"darken": "rgba(" + Math.max(0, rgba[0] - 15) + "," + Math.max(0, rgba[1] - 15) + "," + Math.max(0, rgba[2] - 15) + "," + rgba[3] + ")", "darken": "rgba(" + Math.max(0, rgba[0] - 15) + "," + Math.max(0, rgba[1] - 15) + "," + Math.max(0, rgba[2] - 15) + "," + rgba[3] + ")",
"veryDarken": "rgba(" + Math.max(0, rgba[0] - 20) + "," + Math.max(0, rgba[1] - 20) + "," + Math.max(0, rgba[2] - 20) + "," + rgba[3] + ")", "veryDarken": "rgba(" + Math.max(0, rgba[0] - 20) + "," + Math.max(0, rgba[1] - 20) + "," + Math.max(0, rgba[2] - 20) + "," + rgba[3] + ")",
"text": core.relativeLuminanceW3C(rgba) > .22 ? "inherit" : "white" "text": core.relativeLuminanceW3C(rgba) > .22 ? "#222" : "#DDD"
}; };
}; };
/** /**
* Crée un message de confirmation * Crée un message de confirmation
*/ */
core.confirm = function(text, yesCallback, noCallback) { core.confirm = function (text, yesCallback, noCallback) {
var lightbox = lity(function($) { var lightbox = lity(function ($) {
return $("<div>") return $("<div>")
.addClass("lightbox") .addClass("lightbox")
.append( .append(
@ -70,21 +71,21 @@ core.confirm = function(text, yesCallback, noCallback) {
.append( .append(
$("<a>") $("<a>")
.addClass("button grey") .addClass("button grey")
.text("Non") .text("<?php echo helper::translate('Non');?>")
.on("click", function() { .on("click", function () {
lightbox.options('button', true); lightbox.options('button', true);
lightbox.close(); lightbox.close();
if(typeof noCallback !== "undefined") { if (typeof noCallback !== "undefined") {
noCallback(); noCallback();
} }
}), }),
$("<a>") $("<a>")
.addClass("button") .addClass("button")
.text("Oui") .text("<?php echo helper::translate('Oui');?>")
.on("click", function() { .on("click", function () {
lightbox.options('button', true); lightbox.options('button', true);
lightbox.close(); lightbox.close();
if(typeof yesCallback !== "undefined") { if (typeof yesCallback !== "undefined") {
yesCallback(); yesCallback();
} }
}) })
@ -93,19 +94,19 @@ core.confirm = function(text, yesCallback, noCallback) {
}(jQuery)); }(jQuery));
// Callback lors d'un clic sur le fond et sur la croix de fermeture // Callback lors d'un clic sur le fond et sur la croix de fermeture
lightbox.options('button', false); lightbox.options('button', false);
$(document).on('lity:close', function(event, instance) { $(document).on('lity:close', function (event, instance) {
if( if (
instance.options('button') === false instance.options('button') === false &&
&& typeof noCallback !== "undefined" typeof noCallback !== "undefined"
) { ) {
noCallback(); noCallback();
} }
}); });
// Validation de la lightbox avec le bouton entrée // Validation de la lightbox avec le bouton entrée
$(document).on("keyup", function(event) { $(document).on("keyup", function (event) {
if(event.keyCode === 13) { if (event.keyCode === 13) {
lightbox.close(); lightbox.close();
if(typeof yesCallback !== "undefined") { if (typeof yesCallback !== "undefined") {
yesCallback(); yesCallback();
} }
} }
@ -116,7 +117,7 @@ core.confirm = function(text, yesCallback, noCallback) {
/** /**
* Scripts à exécuter en dernier * Scripts à exécuter en dernier
*/ */
core.end = function() { core.end = function () {
/** /**
* Modifications non enregistrées du formulaire * Modifications non enregistrées du formulaire
*/ */
@ -126,23 +127,24 @@ core.end = function() {
// - Les champs avec data-no-dirty // - Les champs avec data-no-dirty
var inputsDOM = formDOM.find("input:not([data-no-dirty]), select:not([data-no-dirty]), textarea:not(.editorWysiwyg):not([data-no-dirty])"); var inputsDOM = formDOM.find("input:not([data-no-dirty]), select:not([data-no-dirty]), textarea:not(.editorWysiwyg):not([data-no-dirty])");
var inputSerialize = inputsDOM.serialize(); var inputSerialize = inputsDOM.serialize();
$(window).on("beforeunload", function() { $(window).on("beforeunload", function () {
if(inputsDOM.serialize() !== inputSerialize) { if (inputsDOM.serialize() !== inputSerialize) {
return "Les modifications que vous avez apportées ne seront peut-être pas enregistrées."; message = "<?php echo helper::translate('Les modifications que vous avez apportées ne seront peut-être pas enregistrées.');?>";
return message;
} }
}); });
formDOM.submit(function() { formDOM.submit(function () {
$(window).off("beforeunload"); $(window).off("beforeunload");
}); });
}; };
$(function() { $(function () {
core.end(); core.end();
}); });
/** /**
* Ajoute une notice * Ajoute une notice
*/ */
core.noticeAdd = function(id, notice) { core.noticeAdd = function (id, notice) {
$("#" + id + "Notice").text(notice).removeClass("displayNone"); $("#" + id + "Notice").text(notice).removeClass("displayNone");
$("#" + id).addClass("notice"); $("#" + id).addClass("notice");
}; };
@ -150,7 +152,7 @@ core.noticeAdd = function(id, notice) {
/** /**
* Supprime une notice * Supprime une notice
*/ */
core.noticeRemove = function(id) { core.noticeRemove = function (id) {
$("#" + id + "Notice").text("").addClass("displayNone"); $("#" + id + "Notice").text("").addClass("displayNone");
$("#" + id).removeClass("notice"); $("#" + id).removeClass("notice");
}; };
@ -158,22 +160,23 @@ core.noticeRemove = function(id) {
/** /**
* Scripts à exécuter en premier * Scripts à exécuter en premier
*/ */
core.start = function() { core.start = function () {
/** /**
* Remonter en haut au clic sur le bouton * Remonter en haut au clic sur le bouton
*/ */
var backToTopDOM = $("#backToTop"); var backToTopDOM = $("#backToTop");
backToTopDOM.on("click", function() { backToTopDOM.on("click", function () {
$("body, html").animate({scrollTop: 0}, "400"); $("body, html").animate({
scrollTop: 0
}, "400");
}); });
/** /**
* Affiche / Cache le bouton pour remonter en haut * Affiche / Cache le bouton pour remonter en haut
*/ */
$(window).on("scroll", function() { $(window).on("scroll", function () {
if($(this).scrollTop() > 200) { if ($(this).scrollTop() > 200) {
backToTopDOM.fadeIn(); backToTopDOM.fadeIn();
} } else {
else {
backToTopDOM.fadeOut(); backToTopDOM.fadeOut();
} }
}); });
@ -182,109 +185,130 @@ core.start = function() {
*/ */
var notificationTimer; var notificationTimer;
$("#notification") $("#notification")
.on("mouseenter", function() { .on("mouseenter", function () {
clearTimeout(notificationTimer); clearTimeout(notificationTimer);
$("#notificationProgress") $("#notificationProgress")
.stop() .stop()
.width("100%"); .width("100%");
}) })
.on("mouseleave", function() { .on("mouseleave", function () {
// Disparition de la notification // Disparition de la notification
notificationTimer = setTimeout(function() { notificationTimer = setTimeout(function () {
$("#notification").fadeOut(); $("#notification").fadeOut();
}, 2000); }, 3000);
// Barre de progression // Barre de progression
$("#notificationProgress").animate({ $("#notificationProgress").animate({
"width": "0%" "width": "0%"
}, 2000, "linear"); }, 3000, "linear");
}) })
.trigger("mouseleave"); .trigger("mouseleave");
$("#notificationClose").on("click", function() { $("#notificationClose").on("click", function () {
clearTimeout(notificationTimer); clearTimeout(notificationTimer);
$("#notification").fadeOut(); $("#notification").fadeOut();
$("#notificationProgress").stop(); $("#notificationProgress").stop();
}); });
/**
* Traitement du formulaire cookies
*/
$("#cookieForm").submit(function (event) {
// Variables des cookies
var getUrl = window.location;
var domain = "domain=" + getUrl.hostname + ";";
var basePath = getUrl.pathname.substring(0, getUrl.pathname.lastIndexOf('/') + 1);
var path = "path=" + basePath + ";";
var e = new Date();
e.setFullYear(e.getFullYear() + 1);
var expires = "expires=" + e.toUTCString() + ";";
// Stocke le cookie d'acceptation
document.cookie = "ZWII_COOKIE_CONSENT=true; samesite=lax; " + domain + path + expires;
});
/**
* Fermeture de la popup des cookies
*/
$("#cookieConsent .cookieClose").on("click", function () {
$('#cookieConsent').addClass("displayNone");
});
/**
* Commande de gestion des cookies dans le footer
*/
$("#footerLinkCookie").on("click", function () {
$("#cookieConsent").removeClass("displayNone");
});
/** /**
* Affiche / Cache le menu en mode responsive * Affiche / Cache le menu en mode responsive
*/ */
var menuDOM = $("#menu"); var menuDOM = $("#menu");
$("#toggle").on("click", function() { $("#toggle").on("click", function () {
menuDOM.slideToggle(); menuDOM.slideToggle();
}); });
$(window).on("resize", function() { $(window).on("resize", function () {
if($(window).width() > 768) { if ($(window).width() > 768) {
menuDOM.css("display", ""); menuDOM.css("display", "");
} }
}); });
/**
* Message sur l'utilisation des cookies
*/
if(<?php echo json_encode($this->getData(['config', 'cookieConsent'])); ?>) {
if(document.cookie.indexOf("ZWII_COOKIE_CONSENT") === -1) {
$("body").append(
$("<div>").attr("id", "cookieConsent").append(
$("<span>").text("En poursuivant votre navigation sur ce site, vous acceptez l'utilisation de cookies."),
$("<span>")
.attr("id", "cookieConsentConfirm")
.text("OK")
.on("click", function() {
// Créé le cookie d'acceptation
var expires = new Date();
expires.setFullYear(expires.getFullYear() + 1);
expires = "expires=" + expires.toUTCString();
document.cookie = "ZWII_COOKIE_CONSENT=true;" + expires;
// Ferme le message
$(this).parents("#cookieConsent").fadeOut();
})
)
);
}
}
/** /**
* Choix de page dans la barre de membre * Choix de page dans la barre de membre
*/ */
$("#barSelectPage").on("change", function() { $("#barSelectPage").on("change", function () {
var pageUrl = $(this).val(); var pageUrl = $(this).val();
if(pageUrl) { if (pageUrl) {
$(location).attr("href", pageUrl); $(location).attr("href", pageUrl);
} }
}); });
/** /**
* Champs d'upload de fichiers * Champs d'upload de fichiers
*/ */
// Mise à jour de l'affichage des champs d'upload // Mise à jour de l'affichage des champs d'upload
$(".inputFileHidden").on("change", function() { $(".inputFileHidden").on("change", function () {
var inputFileHiddenDOM = $(this); var inputFileHiddenDOM = $(this);
var fileName = inputFileHiddenDOM.val(); var fileName = inputFileHiddenDOM.val();
if(fileName === "") { if (fileName === "") {
fileName = "Choisissez un fichier"; //fileName = "Sélectionner un fichier";
$(".inputFileDelete").addClass("disabled"); fileName = "<?php echo helper::translate('Sélectionner un fichier');?>";
} $(inputFileHiddenDOM).addClass("disabled");
else { } else {
$(".inputFileDelete").removeClass("disabled"); $(inputFileHiddenDOM).removeClass("disabled");
} }
inputFileHiddenDOM.parent().find(".inputFileLabel").text(fileName); inputFileHiddenDOM.parent().find(".inputFileLabel").text(fileName);
}).trigger("change"); }).trigger("change");
// Suppression du fichier contenu dans le champ // Suppression du fichier contenu dans le champ
$(".inputFileDelete").on("click", function() { $(".inputFileDelete").on("click", function () {
$(this).parents(".inputWrapper").find(".inputFileHidden").val("").trigger("change"); $(this).parents(".inputWrapper").find(".inputFileHidden").val("").trigger("change");
}); });
// Suppression de la date contenu dans le champ
$(".inputDateDelete").on("click", function () {
$(this).parents(".inputWrapper").find(".datepicker").val("").trigger("change");
});
// Confirmation de mise à jour // Confirmation de mise à jour
$("#barUpdate").on("click", function() { $("#barUpdate").on("click", function () {
return core.confirm("Effectuer la mise à jour ?", function() { message = "<?php echo helper::translate('Mise à jour') . ' ?';?>";
return core.confirm(message, function () {
$(location).attr("href", $("#barUpdate").attr("href")); $(location).attr("href", $("#barUpdate").attr("href"));
}); });
}); });
// Confirmation de déconnexion // Confirmation de déconnexion
$("#barLogout").on("click", function() { $("#barLogout").on("click", function () {
return core.confirm("Se déconnecter ?", function() { message = "<?php echo helper::translate('Se déconnecter') . ' ?';?>";
return core.confirm(message, function () {
$(location).attr("href", $("#barLogout").attr("href")); $(location).attr("href", $("#barLogout").attr("href"));
}); });
}); });
/** /**
* Bloque la multi-soumission des boutons * Bloque la multi-soumission des boutons
*/ */
$("form").on("submit", function() { $("form").on("submit", function () {
$(this).find(".uniqueSubmission") $(this).find(".uniqueSubmission")
.addClass("disabled") .addClass("disabled")
.prop("disabled", true) .prop("disabled", true)
@ -296,65 +320,83 @@ core.start = function() {
/** /**
* Check adresse email * Check adresse email
*/ */
$("[type=email]").on("change", function() { $("[type=email]").on("change", function () {
var _this = $(this); var _this = $(this);
var pattern = /^([a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+(\.[a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+)*|"((([ \t]*\r\n)?[ \t]+)?([\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*(([ \t]*\r\n)?[ \t]+)?")@(([a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.)+([a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.?$/i; var pattern = /^([a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+(\.[a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+)*|"((([ \t]*\r\n)?[ \t]+)?([\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*(([ \t]*\r\n)?[ \t]+)?")@(([a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.)+([a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.?$/i;
if(pattern.test(_this.val())) { if (pattern.test(_this.val())) {
core.noticeRemove(_this.attr("id")); core.noticeRemove(_this.attr("id"));
} } else {
else { message = "<?php echo helper::translate('Format incorrect');?>";
core.noticeAdd(_this.attr("id"), "Format incorrect"); core.noticeAdd(_this.attr("id"), message);
} }
}); });
/** /**
* Iframes et vidéos responsives * Iframes et vidéos responsives
*/ */
var elementDOM = $("iframe, video, embed"); var elementDOM = $("iframe, video, embed, object");
// Calcul du ratio et suppression de la hauteur / largeur des iframes // Calcul du ratio et suppression de la hauteur / largeur des iframes
elementDOM.each(function() { elementDOM.each(function () {
var _this = $(this); var _this = $(this);
_this _this
.data("ratio", _this.height() / _this.width()) .data("ratio", _this.height() / _this.width())
.data("maxwidth", _this.width())
.removeAttr("width height"); .removeAttr("width height");
}); });
// Prend la largeur du parent et détermine la hauteur à l'aide du ratio lors du resize de la fenêtre // Prend la largeur du parent et détermine la hauteur à l'aide du ratio lors du resize de la fenêtre
$(window).on("resize", function() { $(window).on("resize", function () {
elementDOM.each(function() { elementDOM.each(function () {
var _this = $(this); var _this = $(this);
var width = _this.parent().first().width(); var width = _this.parent().first().width();
if (width > _this.data("maxwidth")) {
width = _this.data("maxwidth");
}
_this _this
.width(width) .width(width)
.height(width * _this.data("ratio")); .height(width * _this.data("ratio"));
}); });
}).trigger("resize"); }).trigger("resize");
// Ajouter l'attribut data-lity afin de faire la liaison avec lity /*
//$("a[rel='data-lity']").attr("data-lity",""); * Header responsive
*/
// Ajouter la classe Gallery afin de faire la liaison avec simplelightbox $(window).on("resize", function () {
//$("a[rel='gallery']").addClass("gallery",""); var responsive = "<?php echo $this->getdata(['theme','header','imageContainer']);?>";
if (responsive === "cover" || responsive === "contain") {
var widthpx = "<?php echo $this->getdata(['theme','site','width']);?>";
var width = widthpx.substr(0, widthpx.length - 2);
var heightpx = "<?php echo $this->getdata(['theme','header','height']);?>";
var height = heightpx.substr(0, heightpx.length - 2);
var ratio = width / height;
if (($(window).width() / ratio) <= height) {
$("header").height($(window).width() / ratio);
}
}
}).trigger("resize");
// Appel dans init.js
// $('.gallery').simpleLightbox();
}; };
core.start(); core.start();
/** /**
* Confirmation de suppression * Confirmation de suppression
*/ */
$("#pageDelete").on("click", function() { $("#pageDelete").on("click", function () {
var _this = $(this); var _this = $(this);
return core.confirm("Êtes-vous sûr de vouloir supprimer cette page ?", function() { message = "<?php echo helper::translate('Confirmez-vous la suppression de cette page ?');?>";
return core.confirm(message, function () {
$(location).attr("href", _this.attr("href")); $(location).attr("href", _this.attr("href"));
}); });
}); });
/** /**
* Calcul de la luminance relative d'une couleur * Calcul de la luminance relative d'une couleur
*/ */
core.relativeLuminanceW3C = function(rgba) { core.relativeLuminanceW3C = function (rgba) {
// Conversion en sRGB // Conversion en sRGB
var RsRGB = rgba[0] / 255; var RsRGB = rgba[0] / 255;
var GsRGB = rgba[1] / 255; var GsRGB = rgba[1] / 255;
@ -369,3 +411,144 @@ core.relativeLuminanceW3C = function(rgba) {
var B = (BsRGBA <= .03928) ? BsRGBA / 12.92 : Math.pow((BsRGBA + .055) / 1.055, 2.4); var B = (BsRGBA <= .03928) ? BsRGBA / 12.92 : Math.pow((BsRGBA + .055) / 1.055, 2.4);
return .2126 * R + .7152 * G + .0722 * B; return .2126 * R + .7152 * G + .0722 * B;
}; };
// Fonctions
function setCookie(name, value, days) {
var expires = "";
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toUTCString();
}
document.cookie = name + "=" + (value || "") + expires + "; path=/; samesite=lax";
}
function getCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') c = c.substring(1, c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
}
return null;
}
// Define function to capitalize the first letter of a string
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
$(document).ready(function () {
/**
* Affiche le sous-menu quand il est sticky
*/
$("nav").mouseenter(function () {
$("#navfixedlogout .navSub").css({
'pointer-events': 'auto'
});
$("#navfixedconnected .navSub").css({
'pointer-events': 'auto'
});
});
$("nav").mouseleave(function () {
$("#navfixedlogout .navSub").css({
'pointer-events': 'none'
});
$("#navfixedconnected .navSub").css({
'pointer-events': 'none'
});
});
/**
* Chargement paresseux des images et des iframes
*/
$("img").attr("loading", "lazy");
/**
* Effet accordéon
*/
$('.accordion').each(function (e) {
// on stocke l'accordéon dans une variable locale
var accordion = $(this);
// on récupère la valeur data-speed si elle existe
var toggleSpeed = accordion.attr('data-speed') || 100;
// fonction pour afficher un élément
function open(item, speed) {
// on récupère tous les éléments, on enlève l'élément actif de ce résultat, et on les cache
accordion.find('.accordion-item').not(item).removeClass('active')
.find('.accordion-content').slideUp(speed);
// on affiche l'élément actif
item.addClass('active')
.find('.accordion-content').slideDown(speed);
}
function close(item, speed) {
accordion.find('.accordion-item').removeClass('active')
.find('.accordion-content').slideUp(speed);
}
// on initialise l'accordéon, sans animation
open(accordion.find('.active:first'), 0);
// au clic sur un titre...
accordion.on('click', '.accordion-title', function (ev) {
ev.preventDefault();
// Masquer l'élément déjà actif
if ($(this).closest('.accordion-item').hasClass('active')) {
close($(this).closest('.accordion-item'), toggleSpeed);
} else {
// ...on lance l'affichage de l'élément, avec animation
open($(this).closest('.accordion-item'), toggleSpeed);
}
});
});
/**
* Icône du Menu Burger
*/
$("#toggle").click(function () {
var changeIcon = $('#toggle').children("span");
if ($(changeIcon).hasClass('zwiico-menu')) {
$(changeIcon).removeClass('zwiico-menu').addClass('zwiico-cancel');
} else {
$(changeIcon).addClass('zwiico-menu');
};
});
/**
* Remove ID Facebook from URL
*/
if (/^\?fbclid=/.test(location.search)) {
location.replace(location.href.replace(/\?fbclid.+/, ""));
};
/**
* Sélection d'une langue du site
*/
$("select#barSelectLanguage").on("change", function () {
// La langue courante ne déclenche pas de chargement
var langSelected = $(this).val();
var langSelected = langSelected.split("/");
// Lit le cookie de langue
var langSession = "<?php echo isset($_SESSION['ZWII_SITE_CONTENT']) ? $_SESSION['ZWII_SITE_CONTENT'] : '';?>";
// Découpe l'URL pour exclure le changement de page avec le thème
var url = window.location;
var currentUrl = url.href.split("/");
// Change si différent, corrige le problème avec le thème et le rechargement de la langue.
if ((currentUrl !== "?theme" ||
currentUrl !== "theme") &&
langSelected[6] !== langSession
) {
//$(location).attr("href", langUrl);
var select = document.getElementById("barSelectLanguage");
var selectedOption = select.options[select.selectedIndex];
if (selectedOption.value !== "") {
window.location = selectedOption.value; }
}
});
});

File diff suppressed because it is too large Load Diff

56
core/include/checkup.php Normal file
View File

@ -0,0 +1,56 @@
<?php
/**
* Vérification de la version de PHP
*/
if(version_compare(PHP_VERSION, '7.2.0', '<') ) {
exit('PHP 7.2+ mini requis - PHP 7.2+ mini required');
}
if ( version_compare(PHP_VERSION, '8.3.999', '>') ) {
exit('PHP 8.3 pas encore supporté, installez PHP 7.n ou PHP 8.1.n - PHP 8.3 not yet supported, install PHP 7.n or PHP 8.1.n');
}
/**
* Check les modules installés
*/
$e = [
'gd',
'json',
'date',
'mbstring',
'zip',
'intl',
'exif',
'Phar',
'fileinfo',
'session'
];
$m = get_loaded_extensions();
$b = false;
foreach ($e as $k => $v) {
if (array_search($v,$m) === false) {
$b = true;
echo '<pre><p>Module PHP : ' . $v . ' manquant - Module PHP ' . $v . ' missing.</p></pre>';
}
}
if ($b)
exit('<pre><p>ZwiiCMS ne peut pas démarrer ; activez les extensions requises dans PHP.ini- ZwiiCMS cannot start, enabled PHP missing extensions into PHP.ini</p></pre>');
/**
* Contrôle les htacess
*/
$d = [
'',
'site/data/',
'site/backup/',
'site/tmp/',
// 'site/i18n/', pas contrôler pour éviter les pbs de mise à jour
];
foreach ($d as $key) {
if (file_exists($key . '.htaccess') === false)
exit('<pre>ZwiiCMS ne peut pas démarrer, le fichier ' .$key . '.htaccess est manquant.<br />ZwiiCMS cannot start, file ' . $key . '.htaccess is missing.</pre>' );
}

View File

@ -0,0 +1,52 @@
<?php
/**
* Mise à jour avant v12
* */
if (file_exists('site/data/core.json')) {
$core = json_decode(file_get_contents('site/data/core.json'), true);
$version = $core['core']['dataVersion'];
// Avant version 12.0.00
if (
$version < 12000
) {
// Correspondance pour les dossiers de langue à convertir
$languages = [
'fr' => 'fr_FR',
'en' => 'en_EN',
'pt' => 'pt_PT'
];
// Convertit les dossiers vers la nouvelle structure
foreach ($languages as $key => $value) {
if (
is_dir('site/data/' . $key) &&
!is_dir('site/data/' . $value)
) {
$end = rename('site/data/' . $key, 'site/data/' . $value);
}
}
sleep(1);
}
// Renomme les bases de données
if (
$version < 12400
) {
// Renommage les fichiers de données au pluriel
$t = [
'site/data/languages.json' => 'site/data/language.json',
'site/data/fonts.json' => 'site/data/font.json'
];
foreach ($t as $k => $v) {
if (file_exists($k)) {
$d = file_get_contents($k);
$d = str_replace('"' . basename($k, '.json') . '"' , '"' . basename($v, '.json') . '"', $d);
file_put_contents($v, $d);
unlink($k);
}
}
}
}

1118
core/include/update.inc.php Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,13 +1,14 @@
/** /**
* This file is part of Zwii. * This file is part of Zwii.
*
* For full copyright and license information, please see the LICENSE * For full copyright and license information, please see the LICENSE
* file that was distributed with this source code. * file that was distributed with this source code.
* *
* @author Rémi Jean <remi.jean@outlook.com> * @author Rémi Jean <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean * @copyright Copyright (C) 2008-2018, Rémi Jean
* @license GNU General Public License, version 3 * @author Frédéric Tempez <frederic.tempez@outlook.com>
* @link http://zwiicms.com/ * @copyright Copyright (C) 2018-2024, Frédéric Tempez
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
* @link http://zwiicms.fr/
*/ */
/** /**

17
core/layout/blank.php Executable file → Normal file
View File

@ -1,8 +1,8 @@
<?php $layout = new layout($this); ?>
<!DOCTYPE html> <!DOCTYPE html>
<html prefix="og: http://ogp.me/ns#" lang="fr"> <html prefix="og: http://ogp.me/ns#" lang="<?php echo substr(self::$siteContent, 0, 2); ?>">
<head> <head>
<meta charset="utf-8"> <meta charset="UTF-8">
<meta http-equiv="content-type" content="text/html;">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<?php $layout->showMetaTitle(); ?> <?php $layout->showMetaTitle(); ?>
<?php $layout->showMetaDescription(); ?> <?php $layout->showMetaDescription(); ?>
@ -10,12 +10,17 @@
<?php $layout->showMetaImage(); ?> <?php $layout->showMetaImage(); ?>
<?php $layout->showFavicon(); ?> <?php $layout->showFavicon(); ?>
<?php $layout->showVendor(); ?> <?php $layout->showVendor(); ?>
<?php $layout->showStyle(); ?>
<?php $layout->showFonts(); ?>
<?php if (file_exists(self::DATA_DIR . 'font/font.css')): ?>
<link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>font/font.css?<?php echo md5_file(self::DATA_DIR . 'font/font.css'); ?>">
<?php endif; ?>
<link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/common.css"> <link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/common.css">
<link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/blank.css"> <link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/blank.css">
<link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>site/data/theme.css?<?php echo md5_file('site/data/theme.css'); ?>"> <link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>theme.css?<?php echo md5_file(self::DATA_DIR.'theme.css'); ?>">
<link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>site/data/custom.css?<?php echo md5_file('site/data/custom.css'); ?>"></head> <link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>custom.css?<?php echo md5_file(self::DATA_DIR.'custom.css'); ?>">
</head>
<body> <body>
<?php $layout->showStyle(); ?>
<?php $layout->showContent(); ?> <?php $layout->showContent(); ?>
<?php $layout->showScript(); ?> <?php $layout->showScript(); ?>
</body> </body>

File diff suppressed because it is too large Load Diff

View File

@ -1,13 +1,14 @@
/** /**
* This file is part of Zwii. * This file is part of Zwii.
*
* For full copyright and license information, please see the LICENSE * For full copyright and license information, please see the LICENSE
* file that was distributed with this source code. * file that was distributed with this source code.
* *
* @author Rémi Jean <remi.jean@outlook.com> * @author Rémi Jean <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean * @copyright Copyright (C) 2008-2018, Rémi Jean
* @license GNU General Public License, version 3 * @author Frédéric Tempez <frederic.tempez@outlook.com>
* @link http://zwiicms.com/ * @copyright Copyright (C) 2018-2024, Frédéric Tempez
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
* @link http://zwiicms.fr/
*/ */
/** /**
@ -17,4 +18,16 @@
/* Site */ /* Site */
#site { #site {
max-width: 600px !important; max-width: 600px !important;
border-radius: 5px !important;
}
#site > section:not(.message),
input[type='password'], input[type='text']
{
background-color: rgba(255, 255, 255, 1) !important;
color: rgba(33, 34, 35, 1) !important;
}
section {
min-height: 0px;
} }

18
core/layout/light.php Executable file → Normal file
View File

@ -1,8 +1,8 @@
<?php $layout = new layout($this); ?>
<!DOCTYPE html> <!DOCTYPE html>
<html prefix="og: http://ogp.me/ns#" lang="fr"> <html prefix="og: http://ogp.me/ns#" lang="<?php echo substr(self::$siteContent, 0, 2); ?>">
<head> <head>
<meta charset="utf-8"> <meta charset="UTF-8">
<meta http-equiv="content-type" content="text/html;">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<?php $layout->showMetaTitle(); ?> <?php $layout->showMetaTitle(); ?>
<?php $layout->showMetaDescription(); ?> <?php $layout->showMetaDescription(); ?>
@ -10,15 +10,19 @@
<?php $layout->showMetaImage(); ?> <?php $layout->showMetaImage(); ?>
<?php $layout->showFavicon(); ?> <?php $layout->showFavicon(); ?>
<?php $layout->showVendor(); ?> <?php $layout->showVendor(); ?>
<?php $layout->showStyle(); ?>
<?php $layout->showFonts(); ?>
<?php if (file_exists(self::DATA_DIR . 'font/font.css')): ?>
<link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>font/font.css?<?php echo md5_file(self::DATA_DIR . 'font/font.css'); ?>">
<?php endif; ?>
<link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/common.css"> <link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/common.css">
<link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/light.css"> <link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/light.css">
<link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>site/data/theme.css?<?php echo md5_file('site/data/theme.css'); ?>"> <link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>theme.css?<?php echo md5_file(self::DATA_DIR.'theme.css'); ?>">
<link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>site/data/custom.css?<?php echo md5_file('site/data/custom.css'); ?>"> <link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>custom.css?<?php echo md5_file(self::DATA_DIR.'custom.css'); ?>">
</head> </head>
<body> <body>
<?php $layout->showStyle(); ?>
<?php $layout->showNotification(); ?> <?php $layout->showNotification(); ?>
<div id="site" class="container"> <div id="site" class="container light">
<section><?php $layout->showContent(); ?></section> <section><?php $layout->showContent(); ?></section>
</div> </div>
<?php $layout->showScript(); ?> <?php $layout->showScript(); ?>

22
core/layout/mail.php Executable file → Normal file
View File

@ -1,7 +1,8 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml" lang="<?php echo substr(self::$siteContent, 0, 2);?>">
<head> <head>
<meta charset="utf-8"> <meta charset="UTF-8">
<meta http-equiv="content-type" content="text/html;">
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="x-apple-disable-message-reformatting"> <meta name="x-apple-disable-message-reformatting">
@ -71,7 +72,7 @@
<div style="display:none;font-size:1px;line-height:1px;max-height:0px;max-width:0px;opacity:0;overflow:hidden;mso-hide:all;font-family: sans-serif;"> <div style="display:none;font-size:1px;line-height:1px;max-height:0px;max-width:0px;opacity:0;overflow:hidden;mso-hide:all;font-family: sans-serif;">
<?php echo $subject; ?> <?php echo $subject; ?>
</div> </div>
<div style="max-width: 500px; margin: auto;" class="email-container"> <div style="max-width: 500px; margin: auto; margin-top: 30px; border: #aaa 1px solid;" class="email-container">
<!--[if mso]> <!--[if mso]>
<table role="presentation" cellspacing="0" cellpadding="0" border="0" width="500" align="center"> <table role="presentation" cellspacing="0" cellpadding="0" border="0" width="500" align="center">
<tr> <tr>
@ -83,7 +84,7 @@
<table role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%"> <table role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%">
<tr> <tr>
<td style="border-bottom: 1px solid #EBEEF2; padding: 20px; font-family: 'Open Sans', sans-serif; font-size: 19px; line-height: 24px; text-align: center; color: #212223;"> <td style="border-bottom: 1px solid #EBEEF2; padding: 20px; font-family: 'Open Sans', sans-serif; font-size: 19px; line-height: 24px; text-align: center; color: #212223;">
<?php echo $this->getData(['config', 'title']); ?> <?php echo $this->getData(['locale', 'title']); ?>
</td> </td>
</tr> </tr>
</table> </table>
@ -109,7 +110,18 @@
<table role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%"> <table role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%">
<tr> <tr>
<td style="border-top: 1px solid #EBEEF2; padding: 20px; text-align: center; font-family: 'Open Sans', sans-serif; font-size: 12px; line-height: 17px; color: #212223;"> <td style="border-top: 1px solid #EBEEF2; padding: 20px; text-align: center; font-family: 'Open Sans', sans-serif; font-size: 12px; line-height: 17px; color: #212223;">
<a href="<?php echo helper::baseUrl(false); ?>" target="_blank"><?php echo $this->getData(['config', 'title']); ?></a> <a href="<?php echo helper::baseUrl(false); ?>" target="_blank">
<?php
if($this->getData(['module', $this->getUrl(0), 'config', 'signature' ]) === 'logo' && is_file( 'site/file/source/'. $this->getData(['module', $this->getUrl(0), 'config', 'logoUrl' ]))){
$imageFile = helper::baseUrl(false).'site/file/source/'. $this->getData(['module', $this->getUrl(0), 'config', 'logoUrl' ]) ;
$imageBase64 = base64_encode(file_get_contents($imageFile));
?><img src=" data:image/<?php echo pathinfo($imageFile, PATHINFO_EXTENSION); ?>;base64,<?php echo $imageBase64; ?>" border="0" width="<?php echo $this->getData(['module', $this->getUrl(0), 'config', 'logoWidth']) ?>%" >
<?php
}
else{
echo $this->getData(['locale', 'title']);
} ?>
</a>
</td> </td>
</tr> </tr>
</table> </table>

396
core/layout/main.php Executable file → Normal file
View File

@ -1,8 +1,11 @@
<?php $layout = new layout($this); ?>
<!DOCTYPE html> <!DOCTYPE html>
<html prefix="og: http://ogp.me/ns#" lang="fr"> <html prefix="og: http://ogp.me/ns#" lang="<?php echo substr(self::$siteContent, 0, 2); ?>">
<head> <head>
<meta charset="utf-8"> <meta charset="UTF-8">
<meta http-equiv="content-type" content="text/html;">
<meta meta="description=" content="ZwiiCMS le CMS multilingue sans base de données">
<meta name="generator" content="ZiiCMS https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<?php $layout->showMetaTitle(); ?> <?php $layout->showMetaTitle(); ?>
<?php $layout->showMetaDescription(); ?> <?php $layout->showMetaDescription(); ?>
@ -10,296 +13,205 @@
<?php $layout->showMetaImage(); ?> <?php $layout->showMetaImage(); ?>
<?php $layout->showFavicon(); ?> <?php $layout->showFavicon(); ?>
<?php $layout->showVendor(); ?> <?php $layout->showVendor(); ?>
<?php $layout->showAnalytics(); ?> <?php $layout->showFonts(); ?>
<link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/common.css"> <?php if (file_exists(self::DATA_DIR . 'font/font.css')): ?>
<link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>site/data/theme.css?<?php echo md5_file('site/data/theme.css'); ?>"> <link rel="stylesheet" href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>font/font.css?<?php echo md5_file(self::DATA_DIR . 'font/font.css'); ?>">
<link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>site/data/custom.css?<?php echo md5_file('site/data/custom.css'); ?>"> <?php endif; ?>
<link rel="stylesheet"
href="<?php echo helper::baseUrl(false); ?>core/layout/common.css?<?php echo md5_file('core/layout/common.css'); ?>">
<link rel="stylesheet"
href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>theme.css?<?php echo md5_file(self::DATA_DIR . 'theme.css'); ?>">
<link rel="stylesheet"
href="<?php echo helper::baseUrl(false) . self::DATA_DIR; ?>custom.css?<?php echo md5_file(self::DATA_DIR . 'custom.css'); ?>">
<!-- Détection RSS -->
<?php if (
($this->getData(['page', $this->getUrl(0), 'moduleId']) === 'blog'
or $this->getData(['page', $this->getUrl(0), 'moduleId']) === 'news')
and $this->getData(['module', $this->getUrl(0), 'config', 'feeds']) === TRUE
): ?>
<link rel="alternate" type="application/rss+xml"
href="'<?php echo helper::baseUrl() . $this->getUrl(0) . '/rss'; ?>" title="fLUX rss">
<?php endif; ?>
<?php $layout->showStyle(); ?>
<?php $layout->showInlineStyle(); ?>
<!-- Script perso dans le header -->
<?php if (file_exists(self::DATA_DIR . 'head.inc.html')) {
include(self::DATA_DIR . 'head.inc.html');
} ?>
</head> </head>
<body> <body>
<?php $layout->showStyle(); ?> <!-- Barre d'administration -->
<?php $layout->showBar(); ?> <?php if ($this->getUser('group') > self::GROUP_MEMBER): ?>
<?php $layout->showNotification(); ?> <?php $layout->showBar(); ?>
<?php if($this->getData(['theme', 'menu', 'position']) === 'body-first' || $this->getData(['theme', 'menu', 'position']) === 'top' ): ?> <?php endif; ?>
<!-- Notifications -->
<?php $layout->showNotification(); ?>
<!-- Menu dans le fond du site avant la bannière --> <!-- Menu dans le fond du site avant la bannière -->
<nav <?php if ($this->getData(['theme', 'menu', 'position']) === 'body-first' || $this->getData(['theme', 'menu', 'position']) === 'top'): ?>
<!-- Détermine si le menu est fixe en haut de page lorsque l'utilisateur n'est pas connecté -->
<?php <?php
// Détermine si le menu est fixe en haut de page lorsque l'utilisateur n'est pas connecté if (
// $this->getData(['theme', 'menu', 'position']) === 'top'
if($this->getData(['theme', 'menu', 'position']) === 'top' && and $this->getData(['theme', 'menu', 'fixed']) === true
$this->getData(['theme', 'menu', 'fixed']) === true) { and $this->isConnected() === true
if ($this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD')) and $this->getUser('group') > self::GROUP_MEMBER
{echo 'id="navfixedlogout"';} ) {
elseif ($this->getUrl(0) !== 'theme') echo '<nav id="navfixedconnected" >';
{echo 'id="navfixedconnected"';} } else {
echo '<nav id="navfixedlogout" >';
} }
?> ?>
> <!-- Menu Burger -->
<div id="toggle"><?php echo template::ico('menu'); ?></div> <div id="toggle">
<div id="menu" class=" <?php echo $this->getData(['theme', 'menu', 'burgerContent']) === 'title' ? '<div id="burgerText">' . $this->getData(['locale', 'title']) . '</div>' : ''; ?>
<?php if($this->getData(['theme', 'menu', 'position']) === 'top'){echo 'container-large';}else{echo'container';} <?php echo $this->getData(['theme', 'menu', 'burgerContent']) === 'logo' ? '<div id="burgerLogo"><img src="' . helper::baseUrl(false) . self::FILE_DIR . 'source/' . $this->getData(['theme', 'menu', 'burgerLogo']) . '"></div>' : ''; ?>
?>"> <?php echo template::ico('menu', ['fontSize' => '2em']); ?>
<?php $layout->showMenu(); ?>
</div> </div>
</nav> <!-- fin du menu burger -->
<?php endif; ?>
<?php if($this->getData(['theme', 'header', 'position']) === 'body'): ?>
<!-- Bannière dans le fond du site -->
<header>
<?php <?php
if ($this->getData(['theme','header','linkHome'])){ $menuClass = $this->getData(['theme', 'menu', 'position']) === 'top' ? 'class="container-large"' : 'class="container"';
echo "<a href='" . helper::baseUrl(false) . "'>" ;} ?> $menuClass = $this->getData(['theme', 'menu', 'wide']) === 'none' ? 'class="container-large"' : 'class="container"';
<?php if( ?>
<div id="menu" <?php echo $menuClass; ?>>
<?php $layout->showMenu(); ?>
</div> <!--fin menu -->
</nav>
<?php endif; ?>
<!-- Bannière dans le fond du site -->
<?php if ($this->getData(['theme', 'header', 'position']) === 'body'): ?>
<?php echo ($this->getData(['theme', 'header', 'linkHomePage']) && $this->getData(['theme', 'header', 'feature']) === 'wallpaper') ? '<a href="' . helper::baseUrl(false) . '">' : ''; ?>
<?php
$headerClass = $this->getData(['theme', 'header', 'position']) === 'hide' ? 'displayNone' : '';
$headerClass .= $this->getData(['theme', 'header', 'tinyHidden']) ? ' bannerDisplay ' : '';
$headerClass .= $this->getData(['theme', 'header', 'wide']) === 'none' ? '' : 'container';
?>
<header <?php echo empty($headerClass) ? '' : 'class="' . $headerClass . '"'; ?>>
<?php if ($this->getData(['theme', 'header', 'feature']) === 'wallpaper'): ?>
<?php if (
$this->getData(['theme', 'header', 'textHide']) === false $this->getData(['theme', 'header', 'textHide']) === false
// Affiche toujours le titre de la bannière pour l'édition du thème // Affiche toujours le titre de la bannière pour l'édition du thème
OR ($this->getUrl(0) === 'theme' AND $this->getUrl(1) === 'header') or ($this->getUrl(0) === 'theme' and $this->getUrl(1) === 'header')
): ?> ): ?>
<div class="container"> <span id="themeHeaderTitle">
<span><?php echo $this->getData(['config', 'title']); ?></span> <?php echo $this->getData(['locale', 'title']); ?>
</span>
<?php else: ?>
<span id="themeHeaderTitle">&nbsp;</span>
<?php endif; ?>
<?php else: ?>
<div id="featureContent">
<?php echo $this->getData(['theme', 'header', 'featureContent']); ?>
</div> </div>
<?php endif; ?> <?php endif; ?>
<?php
if ($this->getData(['theme','header','linkHome'])){echo "</a>";}
?>
</header> </header>
<?php endif; ?> <?php echo ($this->getData(['theme', 'header', 'linkHomePage']) && $this->getData(['theme', 'header', 'feature']) === 'wallpaper') ? '</a>' : ''; ?>
<?php endif; ?>
<?php if($this->getData(['theme', 'menu', 'position']) === 'body-second'): ?>
<!-- Menu dans le fond du site après la bannière --> <!-- Menu dans le fond du site après la bannière -->
<?php if ($this->getData(['theme', 'menu', 'position']) === 'body-second'): ?>
<nav> <nav>
<div id="toggle"><?php echo template::ico('menu'); ?></div> <!-- Menu burger -->
<div id="menu" class="container"> <div id="toggle">
<?php echo $this->getData(['theme', 'menu', 'burgerContent']) === 'title' ? '<div id="burgerText">' . $this->getData(['locale', 'title']) . '</div>' : ''; ?>
<?php echo $this->getData(['theme', 'menu', 'burgerContent']) === 'logo' ? '<div id="burgerLogo"><img src="' . helper::baseUrl(false) . self::FILE_DIR . 'source/' . $this->getData(['theme', 'menu', 'burgerLogo']) . '"></div>' : ''; ?>
<?php echo template::ico('menu', ['fontSize' => '2em']); ?>
</div>
<!-- fin du menu burger -->
<?php
$menuClass = $this->getData(['theme', 'menu', 'wide']) === 'none' ? 'class="container-large"' : 'class="container"';
?>
<div id="menu" <?php echo $menuClass; ?>>
<?php $layout->showMenu(); ?> <?php $layout->showMenu(); ?>
</div> </div>
</nav> </nav>
<?php endif; ?> <?php endif; ?>
<!-- Site --> <!-- Site -->
<div id="site" class="container"> <div id="site" class="container">
<?php if($this->getData(['theme', 'menu', 'position']) === 'site-first'): ?> <?php if ($this->getData(['theme', 'menu', 'position']) === 'site-first'): ?>
<!-- Menu dans le site avant la bannière --> <!-- Menu dans le site avant la bannière -->
<nav> <nav>
<div id="toggle"><?php echo template::ico('menu'); ?></div> <div id="toggle">
<?php echo $this->getData(['theme', 'menu', 'burgerContent']) === 'title' ? '<div id="burgerText">' . $this->getData(['locale', 'title']) . '</div>' : ''; ?>
<?php echo $this->getData(['theme', 'menu', 'burgerContent']) === 'logo' ? '<div id="burgerLogo"><img src="' . helper::baseUrl(false) . self::FILE_DIR . 'source/' . $this->getData(['theme', 'menu', 'burgerLogo']) . '"></div>' : ''; ?>
<?php echo template::ico('menu', ['fontSize' => '2em']); ?>
</div>
<div id="menu" class="container"> <div id="menu" class="container">
<?php $layout->showMenu(); ?> <?php $layout->showMenu(); ?>
</div> </div>
</nav> </nav>
<?php endif; ?> <?php endif; ?>
<?php if( <?php if (
$this->getData(['theme', 'header', 'position']) === 'site' $this->getData(['theme', 'header', 'position']) === 'site'
// Affiche toujours la bannière pour l'édition du thème // Affiche toujours la bannière pour l'édition du thème
OR ( or ($this->getData(['theme', 'header', 'position']) === 'hide'
$this->getData(['theme', 'header', 'position']) === 'hide' and $this->getUrl(0) === 'theme'
AND $this->getUrl(0) === 'theme'
) )
): ?> ): ?>
<!-- Bannière dans le site --> <!-- Bannière dans le site -->
<?php echo ($this->getData(['theme', 'header', 'linkHomePage']) && $this->getData(['theme', 'header', 'feature']) === 'wallpaper') ? '<a href="' . helper::baseUrl(false) . '">' : ''; ?>
<?php <?php
if ($this->getData(['theme','header','linkHome'])){ $headerClass = $this->getData(['theme', 'header', 'position']) === 'hide' ? 'displayNone' : '';
echo "<a href='" . helper::baseUrl(false) . "'>" ;} ?> $headerClass .= $this->getData(['theme', 'header', 'tinyHidden']) ? ' bannerDisplay ' : '';
<header <?php if($this->getData(['theme', 'header', 'position']) === 'hide'): ?>class="displayNone"<?php endif; ?>> ?>
<?php if( <header <?php echo empty($headerClass) ? '' : 'class="' . $headerClass . '"'; ?>>
<?php if ($this->getData(['theme', 'header', 'feature']) === 'wallpaper'): ?>
<?php if (
$this->getData(['theme', 'header', 'textHide']) === false $this->getData(['theme', 'header', 'textHide']) === false
// Affiche toujours le titre de la bannière pour l'édition du thème // Affiche toujours le titre de la bannière pour l'édition du thème
OR ($this->getUrl(0) === 'theme' AND $this->getUrl(1) === 'header') or ($this->getUrl(0) === 'theme' and $this->getUrl(1) === 'header')
): ?> ): ?>
<div class="container"> <span id="themeHeaderTitle">
<span><?php echo $this->getData(['config', 'title']); ?></span> <?php echo $this->getData(['locale', 'title']); ?>
</div> </span>
<?php else: ?>
<span id="themeHeaderTitle">&nbsp;</span>
<?php endif; ?>
<?php else: ?>
<div id="featureContent">
<?php echo $this->getData(['theme', 'header', 'featureContent']); ?>
</diV>
<?php endif; ?> <?php endif; ?>
</header> </header>
<?php <?php echo ($this->getData(['theme', 'header', 'linkHomePage']) && $this->getData(['theme', 'header', 'feature']) === 'wallpaper') ? '</a>' : ''; ?>
if ($this->getData(['theme','header','linkHome'])){echo "</a>";} ?>
<?php endif; ?> <?php endif; ?>
<?php if( <?php if (
$this->getData(['theme', 'menu', 'position']) === 'site-second' || $this->getData(['theme', 'menu', 'position']) === 'site-second' ||
$this->getData(['theme', 'menu', 'position']) === 'site' $this->getData(['theme', 'menu', 'position']) === 'site'
// Affiche toujours le menu pour l'édition du thème // Affiche toujours le menu pour l'édition du thème
OR ( or ($this->getData(['theme', 'menu', 'position']) === 'hide'
$this->getData(['theme', 'menu', 'position']) === 'hide' and $this->getUrl(0) === 'theme'
AND $this->getUrl(0) === 'theme'
) )
): ?> ): ?>
<!-- Menu dans le site après la bannière --> <!-- Menu dans le site après la bannière -->
<nav <?php if($this->getData(['theme', 'menu', 'position']) === 'hide'): ?>class="displayNone"<?php endif; ?>> <nav <?php if ($this->getData(['theme', 'menu', 'position']) === 'hide'): ?>class="displayNone" <?php endif; ?>>
<div id="toggle"><?php echo template::ico('menu'); ?></div> <div id="toggle">
<?php echo $this->getData(['theme', 'menu', 'burgerContent']) === 'title' ? '<div id="burgerText">' . $this->getData(['locale', 'title']) . '</div>' : ''; ?>
<?php echo $this->getData(['theme', 'menu', 'burgerContent']) === 'logo' ? '<div id="burgerLogo"><img src="' . helper::baseUrl(false) . self::FILE_DIR . 'source/' . $this->getData(['theme', 'menu', 'burgerLogo']) . '"></div>' : ''; ?>
<?php echo template::ico('menu', ['fontSize' => '2em']); ?>
</div>
<div id="menu" class="container"> <div id="menu" class="container">
<?php $layout->showMenu(); ?> <?php $layout->showMenu(); ?>
</div> </div>
</nav> </nav>
<?php endif; ?> <?php endif; ?>
<!-- Corps de page --> <!-- Corps de page -->
<section> <?php $layout->showMain(); ?>
<?php
// Gabarit :
// Récupérer la config de la page courante
$blocks = explode('-',$this->getData(['page',$this->getUrl(0),'block']));
// recherche si la seconde URL fait référence à un article pour appliquer les barres
$blogItem = false;
if (is_array ($this->getdata(['module',$this->getData(['page', $this->getUrl(0), 'moduleId'])]))) {
$blogItem = array_key_exists($this->getUrl(1),$this->getdata(['module',$this->getData(['page', $this->getUrl(0), 'moduleId'])]));
}
// Initialiser
$blockleft=$blockright="";
switch (sizeof($blocks)) {
case 1 : // une colonne
$content = 'col'. $blocks[0] ;
break;
case 2 : // 2 blocks
if ($blocks[0] < $blocks[1]) { // détermine la position de la colonne
$blockleft = 'col'. $blocks[0];
$content = 'col'. $blocks[1] ;
} else {
$content = 'col' . $blocks[0];
$blockright = 'col' . $blocks[1];
}
break;
case 3 : // 3 blocks
$blockleft = 'col' . $blocks[0];
$content = 'col' . $blocks[1];
$blockright = 'col' . $blocks[2];
}
// Page pleine pour la configuration des modules et l'édition des pages sauf l'affichae d'un article de blog
if ((sizeof($blocks) === 1 ||
!empty($this->getUrl(1))) &&
$blogItem === false
) { // Pleine page en mode configuration
$layout->showContent();
} else {
?>
<div class="row siteContainer">
<?php
if ($blockleft !== "") :?>
<div class="<?php echo $blockleft; ?>" id="contentLeft">
<?php $layout->showBarContentLeft(); ?>
</div>
<?php endif; ?>
<div class="<?php echo $content; ?>
" id="contentSite"><?php $layout->showContent(); ?>
</div>
<?php
if ($blockright !== "") :?>
<div class="<?php echo $blockright; ?>" id="contentRight">
<?php $layout->showBarContentRight(); ?>
</div>
<?php endif; ?>
</div>
<?php } ?>
</section>
<!-- footer --> <!-- footer -->
<?php if( <?php $layout->showFooter(); ?>
$this->getData(['theme', 'footer', 'position']) === 'site' <!-- Fin du site -->
// Affiche toujours le pied de page pour l'édition du thème <?php echo $this->getData(['theme', 'footer', 'position']) === 'site' ? '</div>' : ''; ?>
OR ( <!-- Lien remonter en haut -->
$this->getData(['theme', 'footer', 'position']) === 'hide' <div id="backToTop">
AND $this->getUrl(0) === 'theme' <?php echo template::ico('up'); ?>
)
): ?>
<!-- Pied de page dans le site -->
<footer <?php if($this->getData(['theme', 'footer', 'position']) === 'hide'): ?>class="displayNone"<?php endif; ?>>
<div class="container">
<div class="row" id="footersite">
<div class="col4" id="footersiteLeft"> <!-- bloc gauche -->
<?php
if($this->getData(['theme', 'footer', 'textPosition']) === 'left') {
$layout->showFooterText();}
?>
<?php
if($this->getData(['theme', 'footer', 'socialsPosition']) === 'left') {
$layout->showSocials(); }
?>
<?php
if($this->getData(['theme', 'footer', 'copyrightPosition']) === 'left') {
$layout->showCopyright(); }
?>
</div> </div>
<div class="col4" id="footersiteCenter"> <!-- bloc central --> <!-- Affichage du consentement aux cookies-->
<?php <?php $layout->showCookies(); ?>
if($this->getData(['theme', 'footer', 'textPosition']) === 'center') { <!-- Les scripts -->
$layout->showFooterText(); } <?php $layout->showScript(); ?>
?> <!-- Script perso dans body -->
<?php <?php if (file_exists(self::DATA_DIR . 'body.inc.html')) {
if($this->getData(['theme', 'footer', 'socialsPosition']) === 'center') { include(self::DATA_DIR . 'body.inc.html');
$layout->showSocials(); } } ?>
?>
<?php
if($this->getData(['theme', 'footer', 'copyrightPosition']) === 'center') {
$layout->showCopyright(); }
?>
</div>
<div class="col4" id="footersiteRight"> <!-- bloc droite -->
<?php
if($this->getData(['theme', 'footer', 'textPosition']) === 'right') {
$layout->showFooterText(); }
?>
<?php
if($this->getData(['theme', 'footer', 'socialsPosition']) === 'right') {
$layout->showSocials(); }
?>
<?php
if($this->getData(['theme', 'footer', 'copyrightPosition']) === 'right') {
$layout->showCopyright(); }
?>
</div>
</div>
</div>
</footer>
<?php endif; ?>
</div>
<?php if($this->getData(['theme', 'footer', 'position']) === 'body'): ?>
<!-- Pied de page dans le fond du site -->
<footer>
<div class="container-large">
<div class="row" id="footerbody">
<div class="col4" id="footerbodyLeft"> <!-- bloc gauche -->
<?php
if($this->getData(['theme', 'footer', 'textPosition']) === 'left') {
$layout->showFooterText(); }
?>
<?php
if($this->getData(['theme', 'footer', 'socialsPosition']) === 'left') {
$layout->showSocials(); }
?>
<?php
if($this->getData(['theme', 'footer', 'copyrightPosition']) === 'left') {
$layout->showCopyright(); }
?>
</div>
<div class="col4" id="footerbodyCenter"> <!-- bloc central -->
<?php
if($this->getData(['theme', 'footer', 'textPosition']) === 'center') {
$layout->showFooterText(); }
?>
<?php
if($this->getData(['theme', 'footer', 'socialsPosition']) === 'center') {
$layout->showSocials(); }
?>
<?php
if($this->getData(['theme', 'footer', 'copyrightPosition']) === 'center') {
$layout->showCopyright(); }
?>
</div>
<div class="col4" id="footerbodyRight"> <!-- bloc droite -->
<?php
if($this->getData(['theme', 'footer', 'textPosition']) === 'right') {
$layout->showFooterText(); }
?>
<?php
if($this->getData(['theme', 'footer', 'socialsPosition']) === 'right') {
$layout->showSocials(); }
?>
<?php
if($this->getData(['theme', 'footer', 'copyrightPosition']) === 'right') {
$layout->showCopyright();}
?>
</div>
</div>
</div>
</footer>
<?php endif; ?>
<!-- Lien remonter en haut -->
<div id="backToTop"><?php echo template::ico('up'); ?></div>
<?php $layout->showScript();?>
</body> </body>
</html> </html>

855
core/module/config/config.php Executable file → Normal file
View File

@ -8,18 +8,30 @@
* *
* @author Rémi Jean <remi.jean@outlook.com> * @author Rémi Jean <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean * @copyright Copyright (C) 2008-2018, Rémi Jean
* @license GNU General Public License, version 3 * @author Frédéric Tempez <frederic.tempez@outlook.com>
* @link http://zwiicms.com/ * @copyright Copyright (C) 2018-2024, Frédéric Tempez
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
* @link http://zwiicms.fr/
*/ */
class config extends common { class config extends common
{
public static $actions = [ public static $actions = [
'backup' => self::GROUP_ADMIN, 'backup' => self::GROUP_ADMIN,
'copyBackups' => self::GROUP_ADMIN,
'delBackups' => self::GROUP_ADMIN,
'configMetaImage' => self::GROUP_ADMIN, 'configMetaImage' => self::GROUP_ADMIN,
'generateFiles' => self::GROUP_ADMIN, 'sitemap' => self::GROUP_ADMIN,
'updateRobots' => self::GROUP_ADMIN, 'index' => self::GROUP_ADMIN,
'index' => self::GROUP_ADMIN 'restore' => self::GROUP_ADMIN,
'updateBaseUrl' => self::GROUP_ADMIN,
'script' => self::GROUP_ADMIN,
'logReset' => self::GROUP_ADMIN,
'logDownload' => self::GROUP_ADMIN,
'blacklistReset' => self::GROUP_ADMIN,
'blacklistDownload' => self::GROUP_ADMIN,
'register' => self::GROUP_ADMIN,
]; ];
public static $timezones = [ public static $timezones = [
@ -137,226 +149,795 @@ class config extends common {
'Pacific/Fiji' => '(GMT+12:00) Fiji', 'Pacific/Fiji' => '(GMT+12:00) Fiji',
'Asia/Kamchatka' => '(GMT+12:00) Kamchatka' 'Asia/Kamchatka' => '(GMT+12:00) Kamchatka'
]; ];
// Nombre d'objets par page // Type de proxy
public static $ItemsList = [ public static $proxyType = [
5 => '5 articles', 'tcp://' => 'TCP',
10 => '10 articles', 'http://' => 'HTTP'
15 => '15 articles', ];
20 => '20 articles' // Authentification SMTP
public static $SMTPauth = [
true => 'Oui',
false => 'Non'
];
// Encryptation SMTP
public static $SMTPEnc = [
'' => 'Aucune',
'tls' => 'START TLS',
'ssl' => 'SSL/TLS'
];
// Sécurité de la connexion - tentative max avant blocage
public static $connectAttempt = [
999 => 'Sécurité désactivée',
3 => '3 tentatives',
5 => '5 tentatives',
10 => '10 tentatives'
];
// Sécurité de la connexion - durée du blocage
public static $connectTimeout = [
0 => 'Sécurité désactivée',
300 => '5 minutes',
600 => '10 minutes',
900 => '15 minutes'
];
// Anonymisation des IP du journal
public static $anonIP = [
4 => 'Non tronquée',
3 => 'Niveau 1 (192.168.12.x)',
2 => 'Niveau 2 (192.168.x.x)',
1 => 'Niveau 3 (192.x.x.x)',
];
public static $captchaTypes = [
'num' => 'Chiffres',
'alpha' => 'Lettres'
];
public static $updateDelay = [
86400 => '1',
172800 => '2',
345600 => '4',
604800 => '7',
1209600 => '14',
]; ];
// Langue traduite courante
public static $i18nSite = 'fr_FR';
public function generateFiles() { // Variable pour construire la liste des pages du site
// Mettre à jour le site map public static $onlineVersion = '';
$successSitemap=$this->createSitemap('all'); public static $updateButtonText = 'Réinstaller';
public static $imageOpenGraph = [];
/**
* Génére les fichiers pour les crawlers
* Sitemap compressé et non compressé
* Robots.txt
*/
public function sitemap()
{
// La page n'existe pas
if (
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true
) {
// Valeurs en sortie
$this->addOutput([
'access' => false
]);
} else {
// Mettre à jour le site map
$successSitemap = $this->updateSitemap();
// Creer un fichier robots.txt
$successRobots=$this->updateRobots();
if ( $successSitemap === true &&
$successRobots >= 100) {
$success = true;
} else {
$success = false;
}
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'notification' => ($successSitemap === true && $successRobots >= 100) ? 'Création réussie' : 'Echec d\'écriture',
'redirect' => helper::baseUrl() . 'config', 'redirect' => helper::baseUrl() . 'config',
'state' => ($successSitemap === true && $successRobots >=100) ? true : false 'notification' => $successSitemap ? helper::translate('La carte du site a été mise à jour') : helper::translate('Echec de l\'écriture, vérifiez les permissions'),
'state' => $successSitemap
]); ]);
} }
/** }
* Met à jour un fichier robots.txt lors du changement de réécriture
*/
public function updateRobots() {
// Créer le fichier robot si absent
if (!file_exists('robots.txt')) {
$this->createRobots();
}
// backup
rename ('robots.txt','robots.bak');
$fileold = fopen('robots.bak','r');
$filenew = fopen('robots.txt','w');
while(!feof($fileold)) {
$data = fgets($fileold);
if (strpos($data,'sitemap.xml') == 0) {
fwrite($filenew, $data);
} else {
fwrite($filenew, 'Sitemap: ' . helper::baseUrl() . 'sitemap.xml' . PHP_EOL);
fwrite($filenew, 'Sitemap: ' . helper::baseUrl() . 'sitemap.xml.gz' . PHP_EOL);
fwrite($filenew, '# ZWII CONFIG ---------' . PHP_EOL);
break;
}
}
fclose($fileold);
unlink('robots.bak');
return(fclose($filenew));
}
/** /**
* Sauvegarde des données * Sauvegarde des données
*/ */
public function backup() { public function backup()
{
// Soumission du formulaire
if (
$this->getUser('permission', __CLASS__, __FUNCTION__) === true &&
$this->isPost()
) {
// Creation du ZIP // Creation du ZIP
$fileName = date('Y-m-d-h-i-s', time()) . '.zip'; $filter = $this->getInput('configBackupOption', helper::FILTER_BOOLEAN) === true ? ['backup', 'tmp'] : ['backup', 'tmp', 'file'];
$zip = new ZipArchive(); $fileName = helper::autoBackup(self::TEMP_DIR, $filter);
if($zip->open('site/tmp/' . $fileName, ZipArchive::CREATE) === TRUE){ // Créer le répertoire manquant
foreach(configHelper::scanDir('site/') as $file) { if (!is_dir(self::FILE_DIR . 'source/backup')) {
$zip->addFile($file); mkdir(self::FILE_DIR . 'source/backup', 0755);
} }
} // Copie dans les fichiers
$zip->close(); $success = copy(self::TEMP_DIR . $fileName, self::FILE_DIR . 'source/backup/' . $fileName);
// Téléchargement du ZIP // Détruire le temporaire
header('Content-Transfer-Encoding: binary'); unlink(self::TEMP_DIR . $fileName);
header('Content-Disposition: attachment; filename="' . $fileName . '"');
header('Content-Length: ' . filesize('site/tmp/' . $fileName));
readfile('site/tmp/' . $fileName);
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'display' => self::DISPLAY_RAW 'display' => self::DISPLAY_JSON,
'content' => json_encode($success)
]); ]);
unlink('site/tmp/' . $fileName); } else {
// Valeurs en sortie
$this->addOutput([
'title' => helper::translate('Sauvegarder'),
'view' => 'backup'
]);
}
} }
/** /**
* Réalise une copie d'écran du site * Réalise une copie d'écran du site
* https://www.codexworld.com/capture-screenshot-website-url-php-google-api/
*/ */
public function configMetaImage() { public function configMetaImage()
{
// fonction désactivée pour un site local // fonction désactivée pour un site local
if ( strpos(helper::baseUrl(false),'localhost') > 0 OR strpos(helper::baseUrl(false),'127.0.0.1') > 0) { if (strpos(helper::baseUrl(false), 'localhost') > 0 or strpos(helper::baseUrl(false), '127.0.0.1') > 0) {
$site = 'https://zwiicms.com/'; } else { $site = 'https://zwiicms.fr/';
$site = helper::baseUrl(false); } } else {
$site = helper::baseUrl(false);
}
$googlePagespeedData = file_get_contents('https://www.googleapis.com/pagespeedonline/v2/runPagespeed?url='. $site .'&screenshot=true'); // Clé de l'API
$googlePagespeedData = json_decode($googlePagespeedData, true); $token = $this->getData(['config', 'seo', 'keyApi']);
$screenshot = $googlePagespeedData['screenshot']['data'];
$screenshot = str_replace(array('_','-'),array('/','+'),$screenshot); // Succès de l'opération par défaut
$data = 'data:image/jpeg;base64,'.$screenshot; $success = false;
$data = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $data)); $data = false;
file_put_contents( 'site/file/source/screenshot.png',$data);
// lire l'API si le token est fourni
if (!empty($token)) {
// Tente de connecter 5 fois l'API
for ($i = 0; $i < 5; $i++) {
$data = helper::getUrlContents('https://shot.screenshotapi.net/screenshot?token=' . $token . '&url=' . $site . '&width=1200&height=627&output=json&file_type=jpeg&no_cookie_banners=true&wait_for_event=load');
if ($data !== false) {
break;
}
}
}
// Traitement des données reçues valides.
if (!empty($token) && $data !== false) {
$data = json_decode($data, true);
$img = $data['screenshot'];
// Effacer l'image et la miniature png
if (file_exists(self::FILE_DIR . 'thumb/screenshot.jpg')) {
unlink(self::FILE_DIR . 'thumb/screenshot.jpg');
}
if (file_exists(self::FILE_DIR . 'source/screenshot.jpg')) {
unlink(self::FILE_DIR . 'source/screenshot.jpg');
}
$success = copy($img, self::FILE_DIR . 'source/screenshot.jpg');
}
$notification = empty($token)
? 'La clé de l\'API ne peut pas être vide'
: ($success === false ? 'Service en ligne inaccessible' : 'Capture d\'écran générée avec succès');
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'notification' => 'Image tag réinitialisée',
'redirect' => helper::baseUrl() . 'config', 'redirect' => helper::baseUrl() . 'config',
'state' => true 'notification' => helper::translate($notification),
'state' => ($success === false or empty($token)) ? false : true
]); ]);
} }
/**
* Procédure d'importation
*/
public function restore()
{
// Soumission du formulaire
if (
$this->getUser('permission', __CLASS__, __FUNCTION__) === true &&
$this->isPost()
) {
$success = false;
if ($this->getInput('configRestoreImportFile', null, true)) {
$fileZip = $this->getInput('configRestoreImportFile');
$file_parts = pathinfo($fileZip);
// Validité du nom du fichier sélectionné
if ($file_parts['extension'] !== 'zip') {
// Valeurs en sortie erreur
$this->addOutput([
'title' => helper::translate('Restaurer'),
'view' => 'restore',
'notification' => helper::translate('Archive invalide'),
'state' => false
]);
}
// Ouverture de l'archive
$zip = new ZipArchive();
if ($zip->open(self::FILE_DIR . 'source/' . $fileZip) === FALSE) {
// Valeurs en sortie erreur
$this->addOutput([
'title' => helper::translate('Restaurer'),
'view' => 'restore',
'notification' => helper::translate('Archive invalide'),
'state' => false
]);
}
// Extraction de l'archive dans un dossier temporaire
$tmpDir = uniqid(8);
$success = $zip->extractTo(self::TEMP_DIR . $tmpDir);
// Version de l'archive
$data = json_decode(file_get_contents(self::TEMP_DIR . $tmpDir . '/data/core.json'), true);
$dataVersion = $data['core']['dataVersion'];
// Version non prises en charge <9 ou erreur d'extraction
if (intval(substr($dataVersion, 0, 1)) <= 9 or !$success) {
// Valeurs en sortie erreur
$this->addOutput([
'title' => helper::translate('Restaurer'),
'view' => 'restore',
'notification' => helper::translate('Archive invalide'),
'state' => false
]);
}
// Fermer le zip
$zip->close();
// Option active, préservation des utilisateurs
if ($this->getInput('configRestoreImportUser', helper::FILTER_BOOLEAN) === true) {
$users = $this->getData(['user']);
}
// Copie dans le dossier /site/data
$success = $this->copyDir(self::TEMP_DIR . $tmpDir, 'site/');
$this->deleteDir(self::TEMP_DIR . $tmpDir);
// Restaurer les users originaux d'une v10 si option cochée
if (
$this->getInput('configRestoreImportUser', helper::FILTER_BOOLEAN) === true
) {
$this->setData(['user', $users]);
}
}
// Message de notification
$notification = $success === true ? 'Restauration effectuée avec succès' : 'Erreur inconnue';
$redirect = $this->getInput('configRestoreImportUser', helper::FILTER_BOOLEAN) === true ? helper::baseUrl() . 'config/restore' : helper::baseUrl() . 'user/login/';
// Valeurs en sortie erreur
$this->addOutput([
'redirect' => $redirect,
'notification' => helper::translate($notification),
'state' => $success
]);
}
// Valeurs en sortie
$this->addOutput([
'title' => helper::translate('Restaurer'),
'view' => 'restore'
]);
}
/** /**
* Configuration * Configuration
*/ */
public function index() { public function index()
{
// Soumission du formulaire // Soumission du formulaire
if($this->isPost()) { if (
$this->getUser('permission', __CLASS__, __FUNCTION__) === true &&
$this->isPost()
) {
// Basculement en mise à jour auto, remise à 0 du compteur
if (
$this->getData(['config', 'autoUpdate']) === false &&
$this->getInput('configAutoUpdate', helper::FILTER_BOOLEAN) === true
) {
$this->setData(['core', 'lastAutoUpdate', 0]);
}
// Sauvegarder la configuration
$this->setData([ $this->setData([
'config', 'config',
[ [
'analyticsId' => $this->getInput('configAnalyticsId'), 'favicon' => $this->getInput('configFavicon'),
'faviconDark' => $this->getInput('configFaviconDark'),
'timezone' => $this->getInput('configTimezone', helper::FILTER_STRING_SHORT, true),
'autoUpdate' => $this->getInput('configAutoUpdate', helper::FILTER_BOOLEAN),
'autoUpdateHtaccess' => $this->getInput('configAutoUpdateHtaccess', helper::FILTER_BOOLEAN),
'autoBackup' => $this->getInput('configAutoBackup', helper::FILTER_BOOLEAN), 'autoBackup' => $this->getInput('configAutoBackup', helper::FILTER_BOOLEAN),
'maintenance' => $this->getInput('configMaintenance', helper::FILTER_BOOLEAN), 'maintenance' => $this->getInput('configMaintenance', helper::FILTER_BOOLEAN),
'cookieConsent' => $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN), 'cookieConsent' => $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN),
'favicon' => $this->getInput('configFavicon'), 'proxyType' => $this->getInput('configProxyType'),
'homePageId' => $this->getInput('configHomePageId', helper::FILTER_ID, true), 'proxyUrl' => $this->getInput('configProxyUrl'),
'metaDescription' => $this->getInput('configMetaDescription', helper::FILTER_STRING_LONG, true), 'proxyPort' => $this->getInput('configProxyPort', helper::FILTER_INT),
'autoUpdateDelay' => $this->getInput('configAutoUpdateDelay', helper::FILTER_INT),
'social' => [ 'social' => [
'facebookId' => $this->getInput('configSocialFacebookId'), 'facebookId' => $this->getInput('socialFacebookId'),
'linkedinId' => $this->getInput('configSocialLinkedinId'), 'linkedinId' => $this->getInput('socialLinkedinId'),
'instagramId' => $this->getInput('configSocialInstagramId'), 'instagramId' => $this->getInput('socialInstagramId'),
'pinterestId' => $this->getInput('configSocialPinterestId'), 'pinterestId' => $this->getInput('socialPinterestId'),
'twitterId' => $this->getInput('configSocialTwitterId'), 'twitterId' => $this->getInput('socialTwitterId'),
'youtubeId' => $this->getInput('configSocialYoutubeId') 'youtubeId' => $this->getInput('socialYoutubeId'),
'youtubeUserId' => $this->getInput('socialYoutubeUserId'),
'githubId' => $this->getInput('socialGithubId'),
'redditId' => $this->getInput('socialRedditId'),
'twitchId' => $this->getInput('socialTwitchId'),
'vimeoId' => $this->getInput('socialVimeoId'),
'steamId' => $this->getInput('socialSteamId'),
], ],
'timezone' => $this->getInput('configTimezone', helper::FILTER_STRING_SHORT, true), 'smtp' => [
'title' => $this->getInput('configTitle', helper::FILTER_STRING_SHORT, true), 'enable' => $this->getInput('smtpEnable', helper::FILTER_BOOLEAN),
'itemsperPage' => $this->getInput('itemsperPage', helper::FILTER_INT,true) 'host' => $this->getInput('smtpHost', helper::FILTER_STRING_SHORT),
'port' => $this->getInput('smtpPort', helper::FILTER_INT),
'auth' => $this->getInput('smtpAuth', helper::FILTER_BOOLEAN),
'secure' => $this->getInput('smtpSecure', helper::FILTER_STRING_SHORT),
'username' => $this->getInput('smtpUsername', helper::FILTER_STRING_SHORT),
'password' => helper::encrypt($this->getInput('smtpPassword', helper::FILTER_STRING_SHORT), $this->getInput('smtpHost', helper::FILTER_STRING_SHORT)),
'from' => $this->getInput('smtpFrom', helper::FILTER_MAIL, true),
],
'seo' => [
'robots' => $this->getInput('seoRobots', helper::FILTER_BOOLEAN),
'openGraphImage' => $this->getInput('seoOpenGraphImage', helper::FILTER_STRING_SHORT),
],
'connect' => [
'attempt' => $this->getInput('connectAttempt', helper::FILTER_INT),
'timeout' => $this->getInput('connectTimeout', helper::FILTER_INT),
'log' => $this->getInput('connectLog', helper::FILTER_BOOLEAN),
'anonymousIp' => $this->getInput('connectAnonymousIp', helper::FILTER_INT),
'captcha' => $this->getInput('connectCaptcha', helper::FILTER_BOOLEAN),
'captchaStrong' => $this->getInput('connectCaptchaStrong', helper::FILTER_BOOLEAN),
'autoDisconnect' => $this->getInput('connectAutoDisconnect', helper::FILTER_BOOLEAN),
'captchaType' => $this->getInput('connectCaptchaType'),
'showPassword' => $this->getInput('connectShowPassword', helper::FILTER_BOOLEAN),
'redirectLogin' => $this->getInput('connectRedirectLogin', helper::FILTER_BOOLEAN)
]
] ]
]); ]);
if(self::$inputNotices === []) {
// Efface les fichiers de backup lorsque l'option est désactivée
if ($this->getInput('configFileBackup', helper::FILTER_BOOLEAN) === false) {
$path = realpath('site/data');
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $filename) {
if (strpos($filename, 'backup.json')) {
unlink($filename);
}
}
if (file_exists('site/data/.backup'))
unlink('site/data/.backup');
} else {
touch('site/data/.backup');
}
// Notice
if (self::$inputNotices === []) {
// Active la réécriture d'URL // Active la réécriture d'URL
$rewrite = $this->getInput('rewrite', helper::FILTER_BOOLEAN); $rewrite = $this->getInput('configRewrite', helper::FILTER_BOOLEAN);
if( if (
$rewrite $rewrite
AND helper::checkRewrite() === false and helper::checkRewrite() === false
) { ) {
// Ajout des lignes dans le .htaccess // Ajout des lignes dans le .htaccess
file_put_contents( $fileContent = file_get_contents('.htaccess');
'.htaccess', $rewriteData =
PHP_EOL . '# URL rewriting' . PHP_EOL .
'<ifModule mod_rewrite.c>' . PHP_EOL . '<IfModule mod_rewrite.c>' . PHP_EOL .
"\tRewriteEngine on" . PHP_EOL . "\tRewriteEngine on" . PHP_EOL .
"\tRewriteBase " . helper::baseUrl(false, false) . PHP_EOL . "\tRewriteBase " . helper::baseUrl(false, false) . PHP_EOL .
"\tRewriteCond %{REQUEST_FILENAME} !-f" . PHP_EOL . "\tRewriteCond %{REQUEST_FILENAME} !-f" . PHP_EOL .
"\tRewriteCond %{REQUEST_FILENAME} !-d" . PHP_EOL . "\tRewriteCond %{REQUEST_FILENAME} !-d" . PHP_EOL .
"\tRewriteRule ^(.*)$ index.php?$1 [L]" . PHP_EOL . "\tRewriteRule ^(.*)$ index.php?$1 [L]" . PHP_EOL .
'</ifModule>', '</IfModule>' . PHP_EOL .
FILE_APPEND '# URL rewriting';
$fileContent = str_replace('# URL rewriting', $rewriteData, $fileContent);
$this->secure_file_put_contents(
'.htaccess',
$fileContent
); );
// Change le statut de la réécriture d'URL (pour le helper::baseUrl() de la redirection) // Change le statut de la réécriture d'URL (pour le helper::baseUrl() de la redirection)
helper::$rewriteStatus = true; helper::$rewriteStatus = true;
} }
// Désactive la réécriture d'URL // Désactive la réécriture d'URL
elseif( elseif (
$rewrite === false $rewrite === false
AND helper::checkRewrite() and helper::checkRewrite()
) { ) {
// Suppression des lignes dans le .htaccess // Suppression des lignes dans le .htaccess
$htaccess = explode('# URL rewriting', file_get_contents('.htaccess')); $fileContent = file_get_contents('.htaccess');
file_put_contents('.htaccess', $htaccess[0] . '# URL rewriting'); $fileContent = explode('# URL rewriting', $fileContent);
$fileContent = $fileContent[0] . '# URL rewriting' . $fileContent[2];
$this->secure_file_put_contents(
'.htaccess',
$fileContent
);
// Change le statut de la réécriture d'URL (pour le helper::baseUrl() de la redirection) // Change le statut de la réécriture d'URL (pour le helper::baseUrl() de la redirection)
helper::$rewriteStatus = false; helper::$rewriteStatus = false;
} }
} }
// Générer robots.txt et sitemap // Générer robots.txt et sitemap
$this->generateFiles(); $this->siteMap();
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'redirect' => helper::baseUrl() . $this->getUrl(), 'title' => helper::translate('Configuration'),
'notification' => 'Modifications enregistrées', 'view' => 'index',
'notification' => helper::translate('Modifications enregistrées'),
'state' => true 'state' => true
]); ]);
} }
// Initialisation du screen
if (!file_exists('site/file/source/screenshot.png')) { // Activation du bouton de mise à jour
$this->configMetaImage(); if (
} helper::checkNewVersion(common::ZWII_UPDATE_CHANNEL)
&& $this->getData(['core', 'updateAvailable']) === false
&& $this->getData(['config', 'autoUpdate'])
) {
$this->setData(['core', 'updateAvailable', true]);
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'title' => 'Configuration', 'redirect' => helper::baseUrl() . 'config',
]);
}
// Variable de version
if (helper::checkNewVersion(common::ZWII_UPDATE_CHANNEL)) {
self::$updateButtonText = helper::translate('Mise à jour');
}
// Sélecteur de délais, compléter avec la traduction en jours
foreach (self::$updateDelay as $key => $value) {
self::$updateDelay[$key] = $key === 86400 ? $value . ' ' . helper::translate('jour') : $value . ' ' . helper::translate('jours');
}
// Paramètres de l'image OpenGraph
$imagePath = self::FILE_DIR . 'source/' . $this->getData(['config', 'seo', 'openGraphImage']);
// Par défaut
self::$imageOpenGraph['type'] = '';
self::$imageOpenGraph['size'] = '';
self::$imageOpenGraph['wide'] = '';
self::$imageOpenGraph['height'] = '';
self::$imageOpenGraph['ratio'] = 0;
if (
$this->getData(['config', 'seo', 'openGraphImage'])
&& file_exists($imagePath)
) {
// Infos sur l'image Open Graph
$typeMime = exif_imagetype($imagePath);
switch ($typeMime) {
case IMAGETYPE_JPEG:
$typeMime = 'jpeg';
break;
case IMAGETYPE_PNG:
$typeMime = 'png';
break;
default:
$typeMime = image_type_to_mime_type($typeMime);
}
self::$imageOpenGraph['type'] = $typeMime;
$imageSize = getimagesize($imagePath);
self::$imageOpenGraph['wide'] = $imageSize[0];
self::$imageOpenGraph['height'] = $imageSize[1];
self::$imageOpenGraph['ratio'] = self::$imageOpenGraph['wide'] / self::$imageOpenGraph['height'];
self::$imageOpenGraph['size'] = filesize($imagePath);
$tailleEnOctets = filesize($imagePath);
if ($tailleEnOctets >= 1024 * 1024) {
// Si la taille est supérieure ou égale à 1 Mo, afficher en mégaoctets
self::$imageOpenGraph['size'] = round($tailleEnOctets / (1024 * 1024), 2) . ' Mo';
} else {
// Sinon, afficher en kilooctets
self::$imageOpenGraph['size'] = round($tailleEnOctets / 1024, 2) . ' Ko';
}
}
// Valeurs en sortie
$this->addOutput([
'title' => helper::translate('Configuration'),
'view' => 'index' 'view' => 'index'
]); ]);
} }
}
class configHelper extends helper { public function script()
{
// Soumission du formulaire
if (
$this->getUser('permission', __CLASS__, __FUNCTION__) === true &&
$this->isPost()
) {
// Ecrire les fichiers de script
if ($this->geturl(2) === 'head') {
$this->secure_file_put_contents(self::DATA_DIR . 'head.inc.html', $this->getInput('configScriptHead', null));
}
if ($this->geturl(2) === 'body') {
$this->secure_file_put_contents(self::DATA_DIR . 'body.inc.html', $this->getInput('configScriptBody', null));
}
// Valeurs en sortie
$this->addOutput([
'title' => helper::translate('Éditeur de script dans ' . ucfirst($this->geturl(2))),
'vendor' => [
'codemirror'
],
'view' => 'script',
'state' => true
]);
}
// Valeurs en sortie
$this->addOutput([
'title' => sprintf(helper::translate('Éditeur de script %s'), ucfirst($this->geturl(2))),
'vendor' => [
'codemirror'
],
'view' => 'script'
]);
}
/** /**
* Scan le contenu d'un dossier et de ses sous-dossiers * Vider le fichier de log
* @param string $dir Dossier à scanner
* @return array
*/ */
public static function scanDir($dir) {
$dirContent = []; public function logReset()
$iterator = new DirectoryIterator($dir); {
foreach($iterator as $fileInfos) { // Action interdite
if(in_array($fileInfos->getFilename(), ['.', '..', 'backup'])) { if (
continue; $this->getUser('permission', __CLASS__, __FUNCTION__) !== true
} ) {
elseif($fileInfos->isDir()) { // Valeurs en sortie
$dirContent = array_merge($dirContent, self::scanDir($fileInfos->getPathname())); $this->addOutput([
} 'access' => false
else { ]);
$dirContent[] = $fileInfos->getPathname(); } else {
if (file_exists(self::DATA_DIR . 'journal.log')) {
unlink(self::DATA_DIR . 'journal.log');
// Créer les en-têtes des journaux
$d = 'Date;Heure;IP;Id;Action' . PHP_EOL;
$this->secure_file_put_contents(self::DATA_DIR . 'journal.log', $d);
// Valeurs en sortie
$this->addOutput([
'title' => helper::translate('Configuration'),
'view' => 'index',
'notification' => helper::translate('Journal réinitialisé avec succès'),
'state' => true
]);
} else {
// Valeurs en sortie
$this->addOutput([
'title' => helper::translate('Configuration'),
'view' => 'index',
'notification' => helper::translate('Aucun journal à effacer'),
'state' => false
]);
} }
} }
return $dirContent;
} }
/**
* Télécharger le fichier de log
*/
public function logDownload()
{
// Action interdite
if (
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true
) {
// Valeurs en sortie
$this->addOutput([
'access' => false
]);
} else {
$fileName = self::DATA_DIR . 'journal.log';
if (file_exists($fileName)) {
ob_start();
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $fileName . '"');
header('Content-Length: ' . filesize($fileName));
ob_clean();
ob_end_flush();
readfile($fileName);
exit();
} else {
// Valeurs en sortie
$this->addOutput([
'title' => helper::translate('Configuration'),
'view' => 'index',
'notification' => helper::translate('Aucun fichier journal à télécharger'),
'state' => false
]);
}
}
}
/**
* Tableau des IP blacklistés
*/
public function blacklistDownload()
{
// Action interdite
if (
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true
) {
// Valeurs en sortie
$this->addOutput([
'access' => false
]);
} else {
ob_start();
$fileName = self::TEMP_DIR . 'blacklist.log';
$d = 'Date dernière tentative;Heure dernière tentative;Id;Adresse IP;Nombre d\'échecs' . PHP_EOL;
$this->secure_file_put_contents($fileName, $d);
if (file_exists($fileName)) {
$d = $this->getData(['blacklist']);
$data = '';
foreach ($d as $key => $item) {
$data .= helper::dateUTF8('%Y %m %d', $item['lastFail'], self::$i18nUI) . ' - ' . helper::dateUTF8('%H:%M', time(), self::$i18nUI);
$data .= $key . ';' . $item['ip'] . ';' . $item['connectFail'] . PHP_EOL;
}
$this->secure_file_put_contents($fileName, $data, FILE_APPEND);
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: binary');
header('Content-Disposition: attachment; filename="' . $fileName . '"');
header('Content-Length: ' . filesize($fileName));
ob_clean();
ob_end_flush();
readfile($fileName);
unlink(self::TEMP_DIR . 'blacklist.log');
exit();
} else {
// Valeurs en sortie
$this->addOutput([
'title' => helper::translate('Configuration'),
'view' => 'index',
'notification' => helper::translate('Aucune liste noire à télécharger'),
'state' => false
]);
}
}
}
/**
* Réinitialiser les ip blacklistées
*/
public function blacklistReset()
{
// Action interdite
if (
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true
) {
// Valeurs en sortie
$this->addOutput([
'access' => false
]);
} else {
if (file_exists(self::DATA_DIR . 'blacklist.json')) {
$this->setData(['blacklist', []]);
// Valeurs en sortie
$this->addOutput([
'title' => helper::translate('Configuration'),
'view' => 'index',
'notification' => helper::translate('Liste noire réinitialisée avec succès'),
'state' => true
]);
} else {
// Valeurs en sortie
$this->addOutput([
'title' => helper::translate('Configuration'),
'view' => 'index',
'notification' => helper::translate('Aucune liste noire à effacer'),
'state' => false
]);
}
}
}
/**
* Récupération des backups auto dans le gestionnaire de fichiers
*/
public function copyBackups()
{
// Action interdite
if (
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true
) {
// Valeurs en sortie
$this->addOutput([
'access' => false
]);
} else {
$success = $this->copyDir(self::BACKUP_DIR, self::FILE_DIR . 'source/backup');
// Valeurs en sortie
$this->addOutput([
'title' => helper::translate('Configuration'),
'view' => 'index',
'notification' => $success ? helper::translate('Copie terminée avec succès') : helper::translate('Copie terminée avec des erreurs'),
'state' => $success
]);
}
}
/**
* Vider le dosser des sauvegardes automatisées
*/
public function delBackups()
{
// Action interdite
if (
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true
) {
// Valeurs en sortie
$this->addOutput([
'access' => false
]);
} else {
$path = realpath(self::BACKUP_DIR);
$success = $fail = 0;
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $filename) {
if (strpos($filename, '.zip')) {
$r = unlink($filename);
$success = $r === true ? $success + 1 : $success;
$fail = $r === false ? $fail + 1 : $fail;
}
}
// Valeurs en sortie
$this->addOutput([
'title' => helper::translate('Configuration'),
'view' => 'index',
'notification' => $success . helper::translate('Fichiers effacés') . ' - ' . helper::translate('Échecs') . ': ' . $fail,
'state' => true
]);
}
}
/**
* Fonction pour vérifier la présence du module de réécriture
* @return bool
*/
public function isModRewriteEnabled()
{
// Check if Apache and mod_rewrite is loaded
if (function_exists('apache_get_modules')) {
$modules = apache_get_modules();
return in_array('mod_rewrite', $modules);
} else {
// Fallback if not using Apache or unable to detect modules
return getenv('HTTP_MOD_REWRITE') == 'On' || getenv('REDIRECT_STATUS') == '200';
}
}
/**
* Stocke la variable dans les paramètres de l'utilisateur pour activer la tab à sa prochaine visite
* @return never
*/
public function register(): void
{
$this->setData([
'user',
$this->getUser('id'),
'view',
[
'config' => $this->getUrl(2),
'page' => $this->getData(['user', $this->getUser('id'), 'view', 'page']),
]
]);
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'config/' . $this->getUrl(2),
]);
}
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

View File

@ -0,0 +1,4 @@
<Files "data.key">
Order Allow,Deny
Deny from all
</Files>

View File

@ -0,0 +1,47 @@
<?php
/*
Ce script PHP est conçu pour être appelé via une requête HTTP GET avec une clé spécifique pour déclencher la création d'une archive ZIP de sauvegarde.
Exemple d'appel dans une URL :
http://example.com/chemin/vers/autobackup.php?key=your_secret_key
La clé doit être fournie en tant que paramètre "key" dans l'URL et correspondre à celle stockée dans le fichier "data.key" pour que la création de l'archive soit autorisée. Si la clé est valide, le script parcourt le répertoire spécifié et ajoute les fichiers à l'archive ZIP. Si la clé est invalide ou absente, le script affiche un message d'erreur et termine son exécution.
*/
// Vérification de la clé
if (isset ($_GET['key'])) {
$key = $_GET['key'];
$storedKey = file_get_contents('data.key');
if ($key !== $storedKey) {
http_response_code(401);
exit();
}
// Création du ZIP
$filter = ['backup', 'tmp'];
$fileName = date('Y-m-d-H-i-s', time()) . '-rolling-backup.zip';
$zip = new ZipArchive();
$zip->open('../../../../site/backup/' . $fileName, ZipArchive::CREATE | ZipArchive::OVERWRITE);
$directory = '../../../../site';
$files = new RecursiveIteratorIterator(
new RecursiveCallbackFilterIterator(
new RecursiveDirectoryIterator(
$directory,
RecursiveDirectoryIterator::SKIP_DOTS
),
function ($fileInfo, $key, $iterator) use ($filter) {
return $fileInfo->isFile() || !in_array($fileInfo->getBaseName(), $filter);
}
)
);
foreach ($files as $name => $file) {
if (!$file->isDir()) {
$filePath = $file->getRealPath();
$relativePath = substr($filePath, strlen(realpath($directory)) + 1);
$zip->addFile($filePath, $relativePath);
}
}
$zip->close();
http_response_code(201);
}

View File

@ -0,0 +1,49 @@
<?php
/*
Ce script PHP est conçu pour supprimer les fichiers ayant l'extension 'tar.gz' dans un répertoire de sauvegarde si leur dernière modification remonte à un certain nombre de jours spécifié via une requête HTTP GET.
Exemple d'appel dans une URL avec le nombre de jours spécifié :
http://example.com/chemin/vers/script.php?days=7&key=your_secret_key
Le script vérifie également la présence et la validité d'une clé spécifique pour déclencher son exécution. La clé doit être fournie en tant que paramètre "key" dans l'URL et correspondre à celle stockée dans le fichier "data.key" pour que la suppression des fichiers soit autorisée. Si la clé est invalide ou absente, le script affiche un message d'erreur et termine son exécution.
*/
// Vérification de la clé
if (isset ($_GET['key'])) {
// Récupération de la clé fournie en GET
$key = $_GET['key'];
// Récupération de la clé stockée dans le fichier data.key
$storedKey = file_get_contents('data.key');
// Vérification de correspondance entre les clés
if ($key !== $storedKey) {
http_response_code(401);
exit();
}
// Récupère le nombre de jours à partir de la variable GET 'days'
$days = isset ($_GET['days']) ? (int) $_GET['days'] : 1; // Par défaut à 1 si non spécifié
// Chemin vers le répertoire contenant les fichiers
$directory = '../../../../site/backup/'; // Remplacez par le chemin réel
// Convertit le nombre de jours en secondes
$timeLimit = strtotime("-$days days");
// Crée un nouvel objet DirectoryIterator
foreach (new DirectoryIterator($directory) as $file) {
// Vérifie si l'élément courant est un fichier et a l'extension 'tar.gz'
if ($file->isFile() && $file->getExtension() === 'tar.gz') {
// Vérifie si le fichier a été modifié avant la limite de temps
if ($file->getMTime() < $timeLimit) {
// Supprime le fichier
unlink($file->getRealPath());
}
}
}
// Si la clé est manquante, affiche un message d'erreur et arrête l'exécution du script
http_response_code(201);
}

View File

@ -0,0 +1,18 @@
/**
* 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/
*/
/** NE PAS EFFACER
* admin.css
*/

View File

@ -0,0 +1,12 @@
/**
* 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 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/
*/
$(document).ready((function(){$("#configBackupForm").submit((function(e){e.preventDefault();var url="<?php echo helper::baseUrl() . $this->getUrl(0); ?>/backup",message_success="<?php echo helper::translate('Sauvegarde générée avec succès'); ?>",message_error="<?php echo helper::translate('Erreur : sauvegarde non générée !'); ?>",message_title="<?php echo helper::translate('Sauvegarder'); ?>";$.ajax({type:"POST",url:url,data:$("form").serialize(),success:function(data){$("body, .button").css("cursor","default"),core.alert(message_success)},error:function(data){$("body, .button").css("cursor","default"),core.alert(message_error)},complete:function(){$("#configBackupSubmit").removeClass("disabled").prop("disabled",!1),$("#configBackupSubmit").removeClass("uniqueSubmission").prop("uniqueSubmission",!1),$("#configBackupSubmit span").removeClass("zwiico-spin animate-spin"),$("#configBackupSubmit span").addClass("zwiico-check zwiico-margin-right").text(message_title)}})})),$("#configBackupSubmit").on("click",(function(){if($("input[name=configBackupOption]").is(":checked")){var message_warning="<?php echo helper::translate('La sauvegarde des fichiers peut prendre du temps. Continuer ?'); ?>";return core.confirm(message_warning,(function(){$("body, .button").css("cursor","wait"),$("form#configBackupForm").submit()}))}}))}));

View File

@ -0,0 +1,36 @@
<?php echo template::formOpen('configBackupForm'); ?>
<div class="row">
<div class="col1">
<?php echo template::button('configBackupBack', [
'class' => 'buttonGrey',
'href' => helper::baseUrl() . 'config',
'value' => template::ico('left')
]); ?>
</div>
<div class="col2 offset9">
<?php echo template::submit('configBackupSubmit', [
'value' => 'Sauvegarder',
'uniqueSubmission' => true
]); ?>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4><?php echo helper::translate('Paramètres de la sauvegarde'); ?>
</h4>
<div class="row">
<div class="col12">
<?php echo template::checkbox('configBackupOption', true, 'Inclure le contenu du gestionnaire de fichiers', [
'checked' => true,
'help' => 'Si le contenu du gestionnaire de fichiers est très volumineux, mieux vaut une copie par FTP.'
]); ?>
</div>
<div class="col12">
<em>L'archive est générée dans <a href="<?php echo helper::baseUrl(false); ?>core/vendor/filemanager/dialog.php?fldr=backup&type=0&akey=<?php echo md5_file(self::DATA_DIR . 'core.json'); ?>&lang=<?php echo $this->getData(['user', $this->getUser('id'), 'language']);?>" data-lity>le dossier Backup</a> du gestionnaire de fichiers.</em>
</div>
</div>
</div>
</div>
</div>
<?php echo template::formClose(); ?>

View File

@ -0,0 +1,134 @@
<div id="connectContainer" class="tabContent">
<div class="row">
<div class="col12">
<div class="block">
<h4><?php echo helper::translate('Sécurité de la connexion'); ?>
<!--<span id="specialeHelpButton" class="helpDisplayButton">
<a href="https://doc.zwiicms.fr/connexion" target="_blank" title="Cliquer pour consulter l'aide en ligne">
<?php // echo template::ico('help', ['margin' => 'left']); ?>
</a>
</span>-->
</h4>
<div class="row">
<div class="col4">
<?php echo template::checkbox('connectShowPassword', true, 'Dévoiler le mot de passe', [
'checked' => $this->getData(['config', 'connect', 'showPassword']),
'help' => 'Le survol d\'une icône de l\'écran de connexion affiche temporairement le mot de passe.'
]); ?>
</div>
<div class="col4">
<?php echo template::checkbox('connectAutoDisconnect', true, 'Déconnexion automatique', [
'checked' => $this->getData(['config', 'connect', 'autoDisconnect']),
'help' => 'Déconnecte les sessions ouvertes précédemment sur d\'autres navigateurs ou terminaux. Activation recommandée.'
]); ?>
</div>
<div class="col4">
<?php echo template::checkbox('connectRedirectLogin', true, 'Redirection vers la connexion', [
'checked' => $this->getData(['config', 'connect', 'redirectLogin']),
'help' => 'Cette redirection ne concerne que les pages d\'administration du site.'
]); ?>
</div>
</div>
<div class="row">
<div class="col3">
<?php echo template::select('connectAttempt', $module::$connectAttempt, [
'label' => 'Limitation des tentatives',
'selected' => $this->getData(['config', 'connect', 'attempt'])
]); ?>
</div>
<div class="col3">
<?php echo template::select('connectTimeout', $module::$connectTimeout, [
'label' => 'Blocage après échecs',
'selected' => $this->getData(['config', 'connect', 'timeout'])
]); ?>
</div>
<div class="col3 verticalAlignBottom">
<label id="helpBlacklist"><?php echo helper::translate('Liste noire'); ?>
<?php echo template::help(
'La liste noire énumère les tentatives de connexion à partir de comptes inexistants. Sont stockés : la date, l\'heure, le nom du compte et l\'IP.
Après le nombre de tentatives autorisées, l\'IP et le compte sont bloqués.'
);
?>
</label>
<?php echo template::button('ConnectBlackListDownload', [
'href' => helper::baseUrl() . 'config/blacklistDownload',
'value' => 'Télécharger la liste',
'ico' => 'download'
]); ?>
</div>
<div class="col3 verticalAlignBottom">
<?php echo template::button('CnnectBlackListReset', [
'class' => 'buttonRed',
'href' => helper::baseUrl() . 'config/blacklistReset',
'value' => 'Réinitialiser la liste',
'ico' => 'trash'
]); ?>
</div>
</div>
<div class="row">
<div class="col3">
<?php echo template::checkbox('connectCaptcha', true, 'Captcha à la connexion', [
'checked' => $this->getData(['config', 'connect', 'captcha'])
]); ?>
</div>
<div class="col3">
<?php echo template::checkbox('connectCaptchaStrong', true, 'Captcha complexe', [
'checked' => $this->getData(['config', 'connect', 'captchaStrong']),
'help' => 'Option recommandée pour sécuriser la connexion. S\'applique à tous les captchas du site. Le captcha simple se limite à une addition de nombres de 0 à 10. Le captcha complexe utilise quatre opérations de nombres de 0 à 20. Activation recommandée.'
]); ?>
</div>
<div class="col3">
<?php echo template::select('connectCaptchaType', $module::$captchaTypes, [
'label' => 'Type de captcha',
'selected' => $this->getData(['config', 'connect', 'captchaType'])
]); ?>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4><?php echo helper::translate('Journalisation'); ?>
<!--<span id="specialeHelpButton" class="helpDisplayButton">
<a href="https://doc.zwiicms.fr/journalisation" target="_blank" title="Cliquer pour consulter l'aide en ligne">
<?php // echo template::ico('help', ['margin' => 'left']); ?>
</a>
</span>
-->
</h4>
<div class="row">
<div class="col3">
<?php echo template::checkbox('connectLog', true, 'Activer la journalisation', [
'checked' => $this->getData(['config', 'connect', 'log'])
]); ?>
</div>
<div class="col3">
<?php echo template::select('connectAnonymousIp', $module::$anonIP, [
'label' => 'Anonymat des adresses IP',
'selected' => $this->getData(['config', 'connect', 'anonymousIp']),
'help' => 'La règlementation française impose un anonymat de niveau 2'
]); ?>
</div>
<div class="col3 verticalAlignBottom">
<?php echo template::button('ConfigLogDownload', [
'href' => helper::baseUrl() . 'config/logDownload',
'value' => 'Télécharger le journal',
'ico' => 'download'
]); ?>
</div>
<div class="col3 verticalAlignBottom">
<?php echo template::button('ConnectLogReset', [
'class' => 'buttonRed',
'href' => helper::baseUrl() . 'config/logReset',
'value' => 'Réinitialiser le journal',
'ico' => 'trash'
]); ?>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,67 @@
/**
* 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/
*/
/** NE PAS EFFACER
* admin.css
*/
#setupContainer {
display: block;
}
.buttonNotice {
border: 2px solid red !important;
border-radius: 2px;
}
/* Style the tab */
.tab {
margin-top: 1.8em;
overflow: hidden;
text-align: center;
}
.tab~.tabContent {
margin-top: -10px;
}
.buttonTab {
display: inline-block;
transition: 0.3s;
border-radius: 10px 10px 0px 0px;
width: 160px;
margin: 0 1px;
}
.buttonTab:hover {
filter: saturate(200%);
}
.activeButton {
background-color: #00BFFF;
}
.greenInfo, .redInfo {
font-weight: bold;
}
.greenInfo {
color: green;
}
.redInfo {
color: red;
}

View File

@ -0,0 +1,287 @@
/**
* 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 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/
*/
$(document).ready(function () {
/**
* Confirmation de suppression
*/
$("#configBackupDelButton").on("click", function () {
var _this = $(this);
var message_warning = "<?php echo helper::translate('Supprimer toutes les sauvegardes automatiques ?'); ?>";
return core.confirm(message_warning, function () {
$(location).attr("href", _this.attr("href"));
});
});
// Positionnement inital des options
//-----------------------------------------------------------------------------------------------------
/**
* Afficher et masquer options smtp
*/
if ($("input[name=smtpEnable]").is(':checked')) {
$("#smtpParam").addClass("disabled");
$("#smtpParam").slideDown();
} else {
$("#smtpParam").removeClass("disabled");
$("#smtpParam").slideUp();
}
/**
* Afficher et masquer options Auth
*/
if ($("select[name=smtpAuth]").val() == true) {
$("#smtpAuthParam").addClass("disabled");
$("#smtpAuthParam").slideDown();
} else {
$("#smtpAuthParam").removeClass("disabled");
$("#smtpAuthParam").slideUp();
}
/**
* Afficher et masquer les options de captcha
*/
if ($("input[name=connectCaptcha]").is(':checked')) {
$("#connectCaptchaStrongWrapper").addClass("disabled");
$("#connectCaptchaStrongWrapper").slideDown();
$("#connectCaptchaTypeWrapper").addClass("disabled");
$("#connectCaptchaTypeWrapper").slideDown();
} else {
$("#connectCaptchaStrongWrapper").removeClass("disabled");
$("#connectCaptchaStrongWrapper").slideUp();
$("#connectCaptchaTypeWrapper").removeClass("disabled");
$("#connectCaptchaTypeWrapper").slideUp();
$("#connectCaptchaStrong").prop("checked", false);
}
var configLayout = "<?php echo $this->getData(['user', $this->getUser('id'), 'view', 'config']);?>";
// Non défini, valeur par défaut
if (configLayout == "") {
configLayout = "setup";
}
$("#socialContainer").hide();
$("#connectContainer").hide();
$("#networkContainer").hide();
$("#setupContainer").hide();
$("#" + configLayout + "Container").show();
$("#config" + capitalizeFirstLetter(configLayout) + "Button").addClass("activeButton");
// Gestion des événements
//---------------------------------------------------------------------------------------------------------------------
/**
* Afficher et masquer options smtp
*/
$("input[name=smtpEnable]").on("change", function () {
if ($("input[name=smtpEnable]").is(':checked')) {
$("#smtpParam").addClass("disabled");
$("#smtpParam").slideDown();
} else {
$("#smtpParam").removeClass("disabled");
$("#smtpParam").slideUp();
}
});
/**
* Afficher et masquer options Auth
*/
$("select[name=smtpAuth]").on("change", function () {
if ($("select[name=smtpAuth]").val() == true) {
$("#smtpAuthParam").addClass("disabled");
$("#smtpAuthParam").slideDown();
} else {
$("#smtpAuthParam").removeClass("disabled");
$("#smtpAuthParam").slideUp();
}
});
/**
* Options de blocage de connexions
* Contrôle la cohérence des sélections et interdit une seule valeur Aucune
*/
$("select[name=connectAttempt]").on("change", function () {
if ($("select[name=connectAttempt]").val() === "999") {
$("select[name=connectTimeout]").val(0);
} else {
if ($("select[name=connectTimeout]").val() === "0") {
$("select[name=connectTimeout]").val(300);
}
}
});
$("select[name=connectTimeout]").on("change", function () {
if ($("select[name=connectTimeout]").val() === "0") {
$("select[name=connectAttempt]").val(999);
} else {
if ($("select[name=connectAttempt]").val() === "999") {
$("select[name=connectAttempt]").val(3);
}
}
});
/**
* Captcha strong si captcha sélectionné
*/
$("input[name=connectCaptcha]").on("change", function () {
if ($("input[name=connectCaptcha]").is(':checked')) {
$("#connectCaptchaStrongWrapper").addClass("disabled");
$("#connectCaptchaStrongWrapper").slideDown();
$("#connectCaptchaTypeWrapper").addClass("disabled");
$("#connectCaptchaTypeWrapper").slideDown();
} else {
$("#connectCaptchaStrongWrapper").removeClass("disabled");
$("#connectCaptchaStrongWrapper").slideUp();
$("#connectCaptchaTypeWrapper").removeClass("disabled");
$("#connectCaptchaTypeWrapper").slideUp();
$("#connectCaptchaStrong").prop("checked", false);
}
});
/**
* Sélection de la page de configuration à afficher
*/
$("#configSetupButton").on("click", function () {
$("#socialContainer").hide();
$("#connectContainer").hide();
$("#networkContainer").hide();
$("#setupContainer").show();
$("#configSetupButton").addClass("activeButton");
$("#configSocialButton").removeClass("activeButton");
$("#configConnectButton").removeClass("activeButton");
$("#configNetworkButton").removeClass("activeButton");
});
$("#configSocialButton").on("click", function () {
$("#connectContainer").hide();
$("#setupContainer").hide();
$("#networkContainer").hide();
$("#socialContainer").show();
$("#configSetupButton").removeClass("activeButton");
$("#configSocialButton").addClass("activeButton");
$("#configConnectButton").removeClass("activeButton");
$("#configNetworkButton").removeClass("activeButton");
});
$("#configConnectButton").on("click", function () {
$("#setupContainer").hide();
$("#socialContainer").hide();
$("#networkContainer").hide();
$("#connectContainer").show();
$("#configSetupButton").removeClass("activeButton");
$("#configSocialButton").removeClass("activeButton");
$("#configConnectButton").addClass("activeButton");
$("#configNetworkButton").removeClass("activeButton");
});
$("#configNetworkButton").on("click", function () {
$("#setupContainer").hide();
$("#socialContainer").hide();
$("#connectContainer").hide();
$("#networkContainer").show();
$("#configSetupButton").removeClass("activeButton");
$("#configSocialButton").removeClass("activeButton");
$("#configConnectButton").removeClass("activeButton");
$("#configNetworkButton").addClass("activeButton");
});
/**
* Aspect de la souris
*/
$("#socialMetaImage, #socialSiteMap, #configBackupCopyButton").click(function (event) {
$('body, .button').css('cursor', 'wait');
});
// Mise en évidence des erreurs de saisie dans les boutons de sélection
var containers = ["setup", "social", "connect", "network"];
$.each(containers, function (index, value) {
var a = $("div#" + value + "Container").find("input.notice").not(".displayNone");
if (a.length > 0) {
$("#config" + capitalizeFirstLetter(value) + "Button").addClass("buttonNotice");
} else {
$("#config" + capitalizeFirstLetter(value) + "Button").removeClass("buttonNotice");
}
});
// Contrôle l'image Open Screen Graph
// Type d'image
$("span#screenType").each(function(){
var text = $(this).text();
if (text.includes("jpg") || text.includes("jpeg") || text.includes("png")) {
$(this).css("color", "green");
} else {
$(this).css("color", "red");
}
});
// La largeur
$("span#screenWide").each(function(){
var screenId = parseInt($(this).text());
if (screenId >= 1200) {
$(this).css("color", "green");
} else {
$(this).css("color", "red");
}
});
// La hauteur
$("span#screenHeight").each(function(){
var screenId = parseInt($(this).text());
if (screenId >= 630) {
$(this).css("color", "green");
} else {
$(this).css("color", "red");
}
});
// Le ratio
$('span#screenRatio').each(function(){
var ratio = parseFloat($(this).text());
if (ratio >= 1.90 && ratio <= 1.92) {
$(this).css("color", "green");
$("#screenFract").css("color", "green");
} else {
$(this).css("color", "red");
$("#screenFract").css("color", "red");
}
});
// Le poids
$('span#screenWeight').each(function(index){
var weight = parseFloat($(this).text());
var fileType = $('span#screenType').eq(index).text();
if ((fileType === "jpg" || fileType === "jpeg") && weight < 5000000) {
$(this).css("color", "green");
} else {
$(this).css("color", "red");
}
});
$('span#screenWeight').each(function(index){
var weight = parseFloat($(this).text());
var fileType = $('span#screenType').eq(index).text();
if (fileType === "png" && weight <= 1000000) {
$(this).css("color", "green");
} else {
$(this).css("color", "red");
}
});
});
// Define function to capitalize the first letter of a string
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}

232
core/module/config/view/index/index.php Executable file → Normal file
View File

@ -1,213 +1,49 @@
<?php echo template::formOpen('configForm'); ?> <?php echo template::formOpen('configForm'); ?>
<div class="row"> <div class="row">
<div class="col2"> <div class="col1">
<?php echo template::button('configBack', [ <?php echo template::button('configBack', [
'class' => 'buttonGrey', 'class' => 'buttonGrey',
'href' => helper::baseUrl(false), 'href' => helper::baseUrl(false),
'ico' => 'home', 'value' => template::ico('home')
'value' => 'Accueil'
]); ?> ]); ?>
</div> </div>
<div class="col2 offset8"> <div class="col2 offset7">
<?php echo template::submit('configSubmit'); ?> <?php echo template::button('configLocaleButton', [
'value' => 'Identité',
'href' => helper::baseUrl() . 'language/site'
]); ?>
</div> </div>
<div class="col2">
<?php echo template::submit('Submit'); ?>
</div> </div>
<div class="row"> </div>
<div class="col6">
<div class="block">
<h4>Informations générales</h4>
<?php echo template::select('configHomePageId', helper::arrayCollumn($this->getData(['page']), 'title', 'SORT_ASC'), [ <div class="tab">
'label' => 'Page d\'accueil', <?php echo template::button('configSetupButton', [
'selected' => $this->getData(['config', 'homePageId']) 'value' => 'Configuration',
'class' => 'buttonTab',
//'href' => helper::baseUrl() . 'config/register/setup'
]); ?>
<?php echo template::button('configSocialButton', [
'value' => 'Référencement',
'class' => 'buttonTab',
//'href' => helper::baseUrl() . 'config/register/social'
]); ?> ]); ?>
<?php echo template::text('configTitle', [ <?php echo template::button('configConnectButton', [
'label' => 'Titre du site', 'value' => 'Connexion',
'value' => $this->getData(['config', 'title']), 'class' => 'buttonTab',
'help' => 'Il apparaît dans la barre de titre et les partages sur les réseaux sociaux.' //'href' => helper::baseUrl() . 'config/register/connect'
]); ?> ]); ?>
<?php echo template::textarea('configMetaDescription', [ <?php echo template::button('configNetworkButton', [
'label' => 'Description du site', 'value' => 'Réseau',
'value' => $this->getData(['config', 'metaDescription']), 'class' => 'buttonTab',
'help' => 'Elle apparaît dans les partages sur les réseaux sociaux.' //'href' => helper::baseUrl() . 'config/register/network'
]); ?> ]); ?>
</div> </div>
<div class="block">
<h4>Options avancées</h4>
<?php echo template::file('configFavicon', [
'type' => 1,
'help' => 'Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.',
'label' => 'Favicon',
'value' => $this->getData(['config', 'favicon'])
]); ?>
<?php echo template::text('configAnalyticsId', [
'help' => 'Saisissez l\'ID de suivi.',
'label' => 'Google Analytics',
'placeholder' => 'UA-XXXXXXXX-X',
'value' => $this->getData(['config', 'analyticsId'])
]); ?>
<?php echo template::checkbox('configCookieConsent', true, 'Message de consentement pour l\'utilisation des cookies', [
'checked' => $this->getData(['config', 'cookieConsent'])
]); ?>
<?php echo template::checkbox('rewrite', true, 'Réécriture d\'URL', [
'checked' => helper::checkRewrite(),
'help' => 'Vérifiez d\'abord que votre serveur l\'autorise : ce n\'est pas le cas chez Free.'
]); ?>
<?php echo template::select('itemsperPage', $module::$ItemsList, [
'label' => 'Articles par page ("Blog" et "News")',
'selected' => $this->getData(['config', 'itemsperPage'])
]); ?>
</div>
<div class="block">
<h4>Copie d'écran OpenGraph</h4>
<div class="row">
<div class="col8 offset2">
<img src='<?php echo helper::baseUrl(false) . 'site/file/source/screenshot.png';?>' />
</div>
</div>
<div class="row">
<div class="col10 offset1">
<?php echo template::button('configMetaImage', [
'href' => helper::baseUrl() . 'config/configMetaImage',
'value' => 'Rafraîchir la capture d\'écran'
]); ?>
</div>
</div>
<p>Cette capture d'écran est nécessaire aux partages sur les réseaux sociaux. Elle est régénérée lorsque le fichier "screenshot.png" est effacé du gestionnaire de fichiers.</p>
</div>
</div>
<div class="col6">
<div class="block">
<h4>Réseaux sociaux</h4>
<div class="row">
<div class="col6">
<?php echo template::text('configSocialFacebookId', [
'help' => 'Saisissez votre ID : https://www.facebook.com/[ID].',
'label' => 'Facebook',
'value' => $this->getData(['config', 'social', 'facebookId'])
]); ?>
</div>
<div class="col6">
<?php echo template::text('configSocialInstagramId', [
'help' => 'Saisissez votre ID : https://www.instagram.com/[ID].',
'label' => 'Instagram',
'value' => $this->getData(['config', 'social', 'instagramId'])
]); ?>
</div>
</div>
<div class="row">
<div class="col6"> <?php include('core/module/config/view/setup/setup.php') ?>
<?php echo template::text('configSocialYoutubeId', [ <?php include('core/module/config/view/social/social.php') ?>
'help' => 'Saisissez votre ID : https://www.youtube.com/channel/[ID].', <?php include('core/module/config/view/connect/connect.php') ?>
'label' => 'Youtube', <?php include('core/module/config/view/network/network.php') ?>
'value' => $this->getData(['config', 'social', 'youtubeId'])
]); ?>
</div>
<div class="col6">
<?php echo template::text('configSocialTwitterId', [
'help' => 'Saisissez votre ID : https://twitter.com/[ID].',
'label' => 'Twitter',
'value' => $this->getData(['config', 'social', 'twitterId'])
]); ?>
</div>
</div>
<div class="row">
<div class="col6">
<?php echo template::text('configSocialPinterestId', [
'help' => 'Saisissez votre ID : https://pinterest.com/[ID].',
'label' => 'Pinterest',
'value' => $this->getData(['config', 'social', 'pinterestId'])
]); ?>
</div>
<div class="col6">
<?php echo template::text('configSocialLinkedinId', [
'help' => 'Saisissez votre ID Linkedin : https://fr.linkedin.com/in/[CETTE PARTIE].',
'label' => 'Linkedin',
'value' => $this->getData(['config', 'social', 'linkedinId'])
]); ?>
</div>
</div>
</div>
<div class="block">
<h4>Système</h4>
<div class="row">
<div class="col6">
<?php echo template::text('configVersion', [
'label' => 'ZwiiCMS',
'readonly' => true,
'value' => common::ZWII_VERSION
]); ?>
</div>
<div class="col6">
<?php echo template::text('moduleRedirectionVersion', [
'label' => 'Module "Redirection"',
'readonly' => true,
'value' => redirection::REDIRECTION_VERSION
]); ?>
</div>
</div>
<div class="row">
<div class="col6">
<?php echo template::text('moduleFormVersion', [
'label' => 'Module "Form"',
'readonly' => true,
'value' => form::FORM_VERSION
]); ?>
</div>
<div class="col6">
<?php echo template::text('moduleGalleryVersion', [
'label' => 'Module "Gallery"',
'readonly' => true,
'value' => gallery::GALLERY_VERSION
]); ?>
</div>
</div>
<div class="row">
<div class="col6">
<?php echo template::text('moduleNewsVersion', [
'label' => 'Module "News"',
'readonly' => true,
'value' => news::NEWS_VERSION
]); ?>
</div>
<div class="col6">
<?php echo template::text('moduleBlogVersion', [
'label' => 'Module "Blog"',
'readonly' => true,
'value' => blog::BLOG_VERSION
]); ?>
</div>
</div>
<?php echo template::select('configTimezone', $module::$timezones, [
'label' => 'Fuseau horaire',
'selected' => $this->getData(['config', 'timezone'])
]); ?>
<?php echo template::checkbox('configMaintenance', true, 'Site en maintenance', [
'checked' => $this->getData(['config', 'maintenance'])
]); ?>
<?php echo template::checkbox('configAutoBackup', true, 'Sauvegarde automatique', [
'checked' => $this->getData(['config', 'autoBackup']),
'help' => 'Le fichier de données est copié quotidiennement dans le dossier \'site/backup\'. La sauvegarde est conservée pendant 30 jours.'
]); ?>
<div class="row">
<div class="col10 offset1">
<?php echo template::button('configExport', [
'href' => helper::baseUrl() . 'config/backup',
'value' => 'Exporter une copie du site<br>(données, thème et fichiers)'
]); ?>
</div>
</div>
<div class="row">
<div class="col10 offset1">
<?php echo template::button('configSiteMap', [
'href' => helper::baseUrl() . 'config/generateFiles',
'value' => 'Générer sitemap.xml et robots.txt'
]); ?>
</div>
</div>
</div>
</div>
</div>
<?php echo template::formClose(); ?> <?php echo template::formClose(); ?>

View File

@ -0,0 +1,115 @@
<div id="networkContainer" class="tabContent">
<div class="row">
<div class="col12">
<div class="block">
<h4>
<?php echo helper::translate('Paramètres'); ?>
<!--<span id="specialeHelpButton" class="helpDisplayButton">
<a href="https://doc.zwiicms.fr/reseau" target="_blank" title="Cliquer pour consulter l'aide en ligne">
<?php //echo template::ico('help', ['margin' => 'left']); ?>
</a>
</span>-->
</h4>
<div class="row">
<div class="col2">
<?php echo template::select('configProxyType', $module::$proxyType, [
'label' => 'Type de proxy',
'selected' => $this->getData(['config', 'proxyType'])
]); ?>
</div>
<div class="col8">
<?php echo template::text('configProxyUrl', [
'label' => 'Adresse du proxy',
'placeholder' => 'cache.proxy.fr',
'value' => $this->getData(['config', 'proxyUrl'])
]); ?>
</div>
<div class="col2">
<?php echo template::text('configProxyPort', [
'label' => 'Port du proxy',
'placeholder' => '6060',
'value' => $this->getData(['config', 'proxyPort'])
]); ?>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4>
<?php echo helper::translate('SMTP'); ?>
<!--<span id="specialeHelpButton" class="helpDisplayButton">
<a href="https://doc.zwiicms.fr/smtp" target="_blank" title="Cliquer pour consulter l'aide en ligne">
<?php //echo template::ico('help', ['margin' => 'left']); ?>
</a>
</span>-->
</h4>
<div class="row">
<div class="col6">
<?php echo template::text('smtpFrom', [
'label' => 'Expéditeur',
'placeholder' => 'no-reply@host',
'value' => $this->getData(['config', 'smtp', 'from']),
]); ?>
</div>
<div class="row">
<div class="col12">
<?php echo template::checkbox('smtpEnable', true, 'SMTP personnalisé', [
'checked' => $this->getData(['config', 'smtp', 'enable']),
'help' => 'Paramètres à utiliser lorsque votre hébergeur ne propose pas la fonctionnalité d\'envoi de mail.'
]); ?>
</div>
</div>
<div id="smtpParam">
<div class="row">
<div class="col8">
<?php echo template::text('smtpHost', [
'label' => 'Adresse SMTP',
'placeholder' => 'smtp.fr',
'value' => $this->getData(['config', 'smtp', 'host'])
]); ?>
</div>
<div class="col2">
<?php echo template::text('smtpPort', [
'label' => 'Port SMTP',
'placeholder' => '589',
'value' => $this->getData(['config', 'smtp', 'port'])
]); ?>
</div>
<div class="col2">
<?php echo template::select('smtpAuth', $module::$SMTPauth, [
'label' => 'Authentification',
'selected' => $this->getData(['config', 'smtp', 'auth'])
]); ?>
</div>
</div>
<div id="smtpAuthParam">
<div class="row">
<div class="col5">
<?php echo template::text('smtpUsername', [
'label' => 'Nom utilisateur',
'value' => $this->getData(['config', 'smtp', 'username'])
]); ?>
</div>
<div class="col5">
<?php echo template::password('smtpPassword', [
'label' => 'Mot de passe',
'autocomplete' => 'off',
'value' => $this->getData(['config', 'smtp', 'password'])
]); ?>
</div>
<div class="col2">
<?php echo template::select('smtpSecure', $module::$SMTPEnc, [
'label' => 'Sécurité',
'selected' => $this->getData(['config', 'smtp', 'secure'])
]); ?>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,18 @@
/**
* 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/
*/
/** NE PAS EFFACER
* admin.css
*/

View File

@ -0,0 +1,12 @@
/**
* 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 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/
*/
$(document).ready((function(){$("#configRestoreSubmit").click((function(event){$("body, .button").css("cursor","wait")}))}));

View File

@ -0,0 +1,43 @@
<?php echo template::formOpen('configRestoreForm'); ?>
<div class="row">
<div class="col1">
<?php echo template::button('configRestoreBack', [
'class' => 'buttonGrey',
'href' => helper::baseUrl() . 'config',
'value' => template::ico('left')
]); ?>
</div>
<div class="col2 offset9">
<?php echo template::submit('configRestoreSubmit', [
'value' => 'Restaurer',
'uniqueSubmission' => true,
]); ?>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4>
<?php echo helper::translate('Archive à restaurer'); ?>
</h4>
<div class="row">
<div class="col10 offset1">
<div class="row">
<?php echo template::file('configRestoreImportFile', [
'label' => 'Sélectionnez une archive au format ZIP',
'language' => $this->getData(['user', $this->getUser('id'), 'language']),
'type' => 2,
'help' => 'L\'archive a été déposée dans le gestionnaire de fichiers. Les archives inférieures à la version 9 ne sont pas acceptées.'
]); ?>
</div>
<div class="row">
<?php echo template::checkbox('configRestoreImportUser', true, 'Préserver les comptes des utilisateurs déjà installés', [
'checked' => true
]); ?>
</div>
</div>
</div>
</div>
</div>
</div>
<?php echo template::formClose(); ?>

View File

@ -0,0 +1,18 @@
/**
* 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/
*/
/** NE PAS EFFACER
* admin.css
*/

View File

@ -0,0 +1,37 @@
<?php echo template::formOpen('configScript'); ?>
<div class="row">
<div class="col1">
<?php echo template::button('configManageBack', [
'class' => 'buttonGrey',
'href' => helper::baseUrl() . 'config',
'value' => template::ico('left')
]); ?>
</div>
<div class="col2 offset9">
<?php echo template::submit('configManageSubmit', [
'value' => 'Valider',
'ico' => 'check'
]); ?>
</div>
</div>
<?php if ($this->geturl(2) === 'head') : ?>
<div class="row">
<div class="col12">
<?php echo template::textarea('configScriptHead', [
'value' => file_exists(self::DATA_DIR . 'head.inc.html') ? file_get_contents(self::DATA_DIR . 'head.inc.html') : '',
'class' => 'editor'
]); ?>
</div>
</div>
<?php endif ?>
<?php if ($this->geturl(2) === 'body') : ?>
<div class="row">
<div class="col12">
<?php echo template::textarea('configScriptBody', [
'value' => file_exists(self::DATA_DIR . 'body.inc.html') ? file_get_contents(self::DATA_DIR . 'body.inc.html') : '',
'class' => 'editor'
]); ?>
</div>
</div>
<?php endif ?>
<?php echo template::formClose(); ?>

View File

@ -0,0 +1,199 @@
<div id="setupContainer" class="tabContent">
<div class="row">
<div class="col12">
<div class="block">
<h4><?php echo helper::translate('Paramètres'); ?>
</h4>
<div class="row">
<div class="col4">
<?php echo template::file('configFavicon', [
'type' => 1,
'language' => $this->getData(['user', $this->getUser('id'), 'language']),
'help' => 'Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.',
'label' => 'Favicon',
'value' => $this->getData(['config', 'favicon']),
'folder' => $this->getData(['config', 'favicon']) ? dirname($this->getData(['config', 'favicon'])) : ''
]); ?>
</div>
<div class="col4">
<?php echo template::file('configFaviconDark', [
'type' => 1,
'language' => $this->getData(['user', $this->getUser('id'), 'language']),
'help' => 'Sélectionnez une icône adaptée à un thème sombre.<br>Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.',
'label' => 'Favicon thème sombre',
'value' => $this->getData(['config', 'faviconDark']),
'folder' => $this->getData(['config', 'faviconDark']) ? dirname($this->getData(['config', 'faviconDark'])) : ''
]); ?>
</div>
<div class="col4">
<?php echo template::select('configTimezone', $module::$timezones, [
'label' => 'Fuseau horaire',
'selected' => $this->getData(['config', 'timezone']),
'help' => 'Le fuseau horaire est utile au bon référencement'
]); ?>
</div>
</div>
<div class="row">
<div class="col6">
<?php echo template::checkbox('configCookieConsent', true, 'Message de consentement aux cookies', [
'checked' => $this->getData(['config', 'cookieConsent']),
'help' => 'Activation obligatoire selon les lois françaises sauf si vous utilisez votre propre système de consentement.'
]); ?>
</div>
<div class="col6">
<?php echo template::checkbox('configRewrite', true, 'Apache URL intelligentes', [
'checked' => helper::checkRewrite(),
'help' => 'Supprime le point d\'interrogation dans les URL, l\'option est indisponible avec les autres serveurs Web',
'disabled' => stripos($_SERVER["SERVER_SOFTWARE"], 'Apache') === false and $module->isModRewriteEnabled()
]); ?>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4><?php echo helper::translate('Mise à jour automatisée'); ?>
</h4>
<div class="row">
<div class="col6">
<?php echo template::checkbox('configAutoUpdate', true, 'Rechercher une mise à jour en ligne', [
'checked' => $this->getData(['config', 'autoUpdate']),
'help' => 'La vérification est quotidienne. Option désactivée si la configuration du serveur ne le permet pas.',
'disabled' => empty(helper::getOnlineVersion(common::ZWII_UPDATE_CHANNEL))
]); ?>
</div>
<div class="col6">
<?php echo template::checkbox('configAutoUpdateHtaccess', true, 'Préserver le fichier htaccess racine', [
'checked' => $this->getData(['config', 'autoUpdateHtaccess']),
'help' => 'Lors d\'une mise à jour automatique, conserve le fichier htaccess de la racine du site.',
'disabled' => empty(helper::getOnlineVersion(common::ZWII_UPDATE_CHANNEL))
]); ?>
</div>
</div>
<div class="row">
<div class="col3">
<?php echo template::select('configAutoUpdateDelay', $module::$updateDelay, [
'label' => 'Fréquence de recherche',
'selected' => $this->getData(['config', 'autoUpdateDelay']),
]); ?>
</div>
<div class="col3 offset1 verticalAlignBottom">
<pre>Version installée : <strong><?php echo common::ZWII_VERSION; ?></strong></pre>
<pre>Version en ligne : <strong><?php echo helper::getOnlineVersion(common::ZWII_UPDATE_CHANNEL); ?></strong></pre>
</div>
<div class="col3 offset2 verticalAlignBottom">
<?php echo template::button('configUpdateForced', [
'ico' => 'download-cloud',
'href' => helper::baseUrl() . 'install/update',
'value' => $module::$updateButtonText,
'class' => 'buttonRed',
]); ?>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4><?php echo helper::translate('Maintenance'); ?>
</h4>
<div class="row">
<div class="col6">
<?php echo template::checkbox('configAutoBackup', true, 'Sauvegarde automatique quotidienne du site', [
'checked' => $this->getData(['config', 'autoBackup']),
'help' => 'Une archive du dossier /site/data est conservée pendant 30 jours. Activation recommandée'
]); ?>
</div>
<div class="col6">
<?php echo template::checkbox('configMaintenance', true, 'Site en maintenance', [
'checked' => $this->getData(['config', 'maintenance'])
]); ?>
</div>
</div>
<div class="row">
<div class="col4 offset1">
<?php echo template::button('configBackupButton', [
'href' => helper::baseUrl() . 'config/backup',
'value' => 'Sauvegarder les données du site',
'ico' => 'download-cloud'
]); ?>
</div>
<div class="col4 offset1">
<?php echo template::button('configRestoreButton', [
'href' => helper::baseUrl() . 'config/restore',
'value' => 'Restaurer les données du site',
'ico' => 'upload-cloud'
]); ?>
</div>
</div>
<div class="row">
<div class="col4 offset1">
<?php echo template::button('configBackupCopyButton', [
'href' => helper::baseUrl() . 'config/copyBackups',
'value' => 'Copier sauvegardes auto',
'ico' => 'docs'
]); ?>
</div>
<div class="col4 offset1">
<?php echo template::button('configBackupDelButton', [
'href' => helper::baseUrl() . 'config/delBackups',
'value' => 'Vider dossier sauvegardes auto',
'ico' => 'trash',
'class' => 'buttonRed'
]); ?>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4><?php echo helper::translate('Scripts externes'); ?>
</h4>
<div class="row">
<div class="col4 offset1 verticalAlignBottom">
<?php echo template::button('socialScriptHead', [
'href' => helper::baseUrl() . 'config/script/head',
'value' => 'Script dans head',
'ico' => 'pencil'
]); ?>
</div>
<div class="col4 offset1 verticalAlignBottom">
<?php echo template::button('socialScriptBody', [
'href' => helper::baseUrl() . 'config/script/body',
'value' => 'Script dans body',
'ico' => 'pencil'
]); ?>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4>ZwiiCMS <a href="https://zwiicms.fr" target="_blank">Site Web</a> - <a
href="https://forum.zwiicms.fr" target="_blank">Forum</a>
</h4>
<div class="row textAlignCenter">
<div class="col12">
<a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/4.0/"><img
alt="Licence Creative Commons" style="border-width:0"
src="https://i.creativecommons.org/l/by-nc-nd/4.0/88x31.png" /></a>
<p>Cette œuvre est mise à disposition selon les termes de la <a rel="license"
href="http://creativecommons.org/licenses/by-nc-nd/4.0/">Licence Creative Commons
Attribution - Pas d&#39;Utilisation Commerciale - Pas de Modification 4.0
International.</a></p>
<p>Pour voir une copie de cette licence, visitez
http://creativecommons.org/licenses/by-nc-nd/4.0/ ou écrivez à Creative Commons, PO Box
1866, Mountain View, CA 94042, USA.</p>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,178 @@
<div id="socialContainer" class="tabContent">
<div class="row">
<div class="col12">
<div class="block">
<h4>
<?php echo helper::translate('Capture d\'écran Open Graph'); ?>
</h4>
<div class="row">
<div class="col6">
<div class="row">
<div class="col12">
<?php echo template::file('seoOpenGraphImage', [
'language' => $this->getData(['user', $this->getUser('id'), 'language']),
'label' => 'Image Open Graph',
'value' => $this->getData(['config', 'seo', 'openGraphImage']),
'folder' => $this->getData(['config', 'seo', 'openGraphImage']) ? dirname($this->getData(['config', 'seo', 'openGraphImage'])) : '',
'type' => 1,
'help' => sprintf('%s : JPG - PNG<br />', helper::translate('Format')) .
sprintf('%s : 1200 x 630 pixels<br />', helper::translate('Dimensions minimales')) .
sprintf('%s : 1.91:1<br />', helper::translate('Ratio')) .
sprintf('%s : %s, %s<br />', helper::translate('Taille maximale du fichier'), helper::translate('5 Mo pour les images JPEG'), helper::translate('1 Mo pour les images PNG'))
]); ?>
</div>
</div>
<div class="row">
<div class="col10 textAlignCenter">
<?php if( !empty($module::$imageOpenGraph['type']) ): ?>
<p>
<?php echo sprintf('%s : <span id="screenType">%s</span>', helper::translate('Format'), $module::$imageOpenGraph['type']); ?>
</p>
<p>
<?php echo sprintf('%s : <span id="screenWide">%s</span> x <span id="screenHeight">%s</span> pixels', helper::translate('Dimensions minimales'), $module::$imageOpenGraph['wide'], $module::$imageOpenGraph['height'] ); ?>
</p>
<p>
<?php echo sprintf('%s : <span id="screenRatio">%s</span><span id="screenFract">:1</span>' , helper::translate('Ratio'), round($module::$imageOpenGraph['ratio'], 2)); ?>
</p>
<p>
<?php echo sprintf('%s : <span id="screenWeight">%s</span>', helper::translate('Poids'), $module::$imageOpenGraph['size']); ?>
</p>
<?php endif; ?>
</div>
</div>
</div>
<div class="col6">
<?php if (
$this->getData(['config', 'seo', 'openGraphImage']) &&
file_exists(self::FILE_DIR . 'source/' . $this->getData(['config', 'seo', 'openGraphImage']))
): ?>
<img
src="<?php echo self::FILE_DIR . 'source/' . $this->getData(['config', 'seo', 'openGraphImage']); ?>" />
<?php endif; ?>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4>
<?php echo helper::translate('Référencement'); ?>
</h4>
<div class="row">
<div class="col4 offset1">
<?php echo template::button('socialSiteMap', [
'href' => helper::baseUrl() . 'config/sitemap',
'value' => 'Générer sitemap.xml et robots.txt'
]); ?>
</div>
<div class="col4 offset1">
<?php echo template::checkbox('seoRobots', true, 'Autoriser les robots à référencer le site', [
'checked' => $this->getData(['config', 'seo', 'robots'])
]); ?>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4>
</h4>
<div class="row">
<div class="col3">
<?php echo template::text('socialFacebookId', [
'help' => 'Saisissez votre ID : https://www.facebook.com/[ID].',
'label' => template::ico('facebook', ['margin' => 'right']) . 'Facebook',
'value' => $this->getData(['config', 'social', 'facebookId'])
]); ?>
</div>
<div class="col3">
<?php echo template::text('socialInstagramId', [
'help' => 'Saisissez votre ID : https://www.instagram.com/[ID].',
'label' => template::ico('instagram', ['margin' => 'right']) . 'Instagram',
'value' => $this->getData(['config', 'social', 'instagramId'])
]); ?>
</div>
<div class="col3">
<?php echo template::text('socialTwitterId', [
'help' => 'Saisissez votre ID : https://twitter.com/[ID].',
'label' => template::ico('twitter', ['margin' => 'right']) . 'Twitter',
'value' => $this->getData(['config', 'social', 'twitterId'])
]); ?>
</div>
<div class="col3">
<?php echo template::text('socialRedditId', [
'help' => 'Saisissez votre ID Reddit : https://www.reddit.com/user/[ID].',
'label' => template::ico('reddit', ['margin' => 'right']) . 'Reddit',
'value' => $this->getData(['config', 'social', 'redditId'])
]); ?>
</div>
</div>
<div class="row">
<div class="col3">
<?php echo template::text('socialYoutubeId', [
'help' => 'ID de la chaîne : https://www.youtube.com/channel/[ID].',
'label' => template::ico('youtube', ['margin' => 'right']) . 'Chaîne Youtube',
'value' => $this->getData(['config', 'social', 'youtubeId'])
]); ?>
</div>
<div class="col3">
<?php echo template::text('socialYoutubeUserId', [
'help' => 'Saisissez votre ID Utilisateur : https://www.youtube.com/user/[ID].',
'label' => template::ico('youtube', ['margin' => 'right']) . 'Youtube',
'value' => $this->getData(['config', 'social', 'youtubeUserId'])
]); ?>
</div>
<div class="col3">
<?php echo template::text('socialVimeoId', [
'help' => 'Saisissez votre ID Viemo : https://vimeo.com/[ID].',
'label' => template::ico('vimeo', ['margin' => 'right']) . 'Vimeo',
'value' => $this->getData(['config', 'social', 'vimeoId'])
]); ?>
</div>
<div class="col3">
<?php echo template::text('socialPinterestId', [
'help' => 'Saisissez votre ID : https://pinterest.com/[ID].',
'label' => template::ico('pinterest', ['margin' => 'right']) . 'Pinterest',
'value' => $this->getData(['config', 'social', 'pinterestId'])
]); ?>
</div>
</div>
<div class="row">
<div class="col3">
<?php echo template::text('socialLinkedinId', [
'help' => 'Saisissez votre ID Linkedin : https://fr.linkedin.com/in/[ID].',
'label' => template::ico('linkedin', ['margin' => 'right']) . 'Linkedin',
'value' => $this->getData(['config', 'social', 'linkedinId'])
]); ?>
</div>
<div class="col3">
<?php echo template::text('socialGithubId', [
'help' => 'Saisissez votre ID Github : https://github.com/[ID].',
'label' => template::ico('github', ['margin' => 'right']) . 'Github',
'value' => $this->getData(['config', 'social', 'githubId'])
]); ?>
</div>
<div class="col3">
<?php echo template::text('socialTwitchId', [
'help' => 'Saisissez votre ID Twitch : https://www.twitch.tv/[ID].',
'label' => template::ico('twitch', ['margin' => 'right']) . 'Twitch',
'value' => $this->getData(['config', 'social', 'twitchId'])
]); ?>
</div>
<div class="col3">
<?php echo template::text('socialSteamId', [
'help' => 'Saisissez votre ID Viemo : https://steamcommunity.com/id/[ID].',
'label' => template::ico('steam', ['margin' => 'right']) . 'Steam',
'value' => $this->getData(['config', 'social', 'steamId'])
]); ?>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,50 @@
<?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/
*/
class dashboard extends common
{
public static $actions = [
'index' => self::GROUP_ADMIN,
];
public static $infos = [];
/**
* Dashboard
*/
public function index()
{
self::$infos['webserver'] = $_SERVER['SERVER_SOFTWARE'];
self::$infos['php']['version'] = phpversion();
self::$infos['php']['extension'] = get_loaded_extensions();
self::$infos['system']['memory'] = memory_get_usage() . ' octets';
self::$infos['system']['peek'] = 'Pic de mémoire utilisée : ' . memory_get_peak_usage() . ' octets';
$loadAverage = sys_getloadavg();
self::$infos['system']['charge'] = 'Charge moyenne (1 min / 5 min / 15 min) : ' . implode(' / ', $loadAverage) . '</P>';
// Valeurs en sortie
$this->addOutput([
'title' => helper::translate('Tableau de bord'),
'view' => 'index'
]);
}
}

View File

@ -0,0 +1,54 @@
<?php echo template::formOpen('dashboard'); ?>
<div class="row">
<div class="col1">
<?php echo template::button('dashboardFormBack', [
'class' => 'buttonGrey',
'href' => helper::baseUrl(false),
'value' => template::ico('home')
]); ?>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4>
<?php echo helper::translate('Système'); ?>
</h4>
<div class="row">
<div class="col6">
<p>
<?php echo helper::translate('Serveur Web'); ?>
</p>
<p>
<?php echo $module::$infos['webserver']; ?>
</p>
</div>
<div class="col6">
<p>
<?php echo helper::translate('PHP') . ' ' . $module::$infos['php']['version']; ?>
</p>
<p>
<?php echo implode(' - ', $module::$infos['php']['extension']); ?>
</p>
</div>
</div>
<div class="row">
<div class="col12">
<p>
<?php echo helper::translate('Mémoire'); ?>
</p>
<p>
<?php echo $module::$infos['system']['memory']; ?>
</p>
<p>
<?php echo $module::$infos['system']['charge']; ?>
</p>
<p>
<?php echo $module::$infos['system']['peek']; ?>
</p>
</div>
</div>
</div>
</div>
</div>

423
core/module/install/install.php Executable file → Normal file
View File

@ -2,35 +2,93 @@
/** /**
* This file is part of Zwii. * This file is part of Zwii.
*
* For full copyright and license information, please see the LICENSE * For full copyright and license information, please see the LICENSE
* file that was distributed with this source code. * file that was distributed with this source code.
* *
* @author Rémi Jean <remi.jean@outlook.com> * @author Rémi Jean <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean * @copyright Copyright (C) 2008-2018, Rémi Jean
* @license GNU General Public License, version 3 * @author Frédéric Tempez <frederic.tempez@outlook.com>
* @link http://zwiicms.com/ * @copyright Copyright (C) 2018-2024, Frédéric Tempez
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
* @link http://zwiicms.fr/
*/ */
class install extends common {
class install extends common
{
public static $actions = [ public static $actions = [
'index' => self::GROUP_VISITOR, 'index' => self::GROUP_VISITOR,
"postinstall" => self::GROUP_VISITOR,
'steps' => self::GROUP_ADMIN, 'steps' => self::GROUP_ADMIN,
'update' => self::GROUP_ADMIN, 'update' => self::GROUP_ADMIN
'removeAll' => self::GROUP_ADMIN,
]; ];
// Type de proxy
public static $proxyType = [
'tcp://' => 'TCP',
'http://' => 'HTTP'
];
public static $updateButtonText = 'Réinstaller';
public static $newVersion; public static $newVersion;
// Fichiers des Interface
public static $i18nFiles = [];
/** /**
* Installation * Pré-installation - choix de la langue
*/ */
public function index() { public function index()
{
// Accès refusé // Accès refusé
if($this->getData(['user']) !== []) { if ($this->getData(['user']) !== []) {
// Valeurs en sortie
$this->addOutput([
'access' => false
]);
}
// Soumission du formulaire
if (
//$this->getUser('permission', __CLASS__, __FUNCTION__) === true &&
$this->isPost()
) {
$lang = $this->getInput('installLanguage');
// Pour la suite de l'installation
// setcookie('ZWII_UI', $lang, time() + 3600, helper::baseUrl(false, false), '', false, false);
$_SESSION['ZWII_UI'] = $this->getInput('installLanguage');
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'install/postinstall'
]);
}
// Liste des langues UI disponibles
if (is_dir(self::I18N_DIR)) {
foreach ($this->getData(['language']) as $lang => $value) {
self::$i18nFiles[$lang] = self::$languages[$lang];
}
}
$this->addOutput([
'display' => self::DISPLAY_LAYOUT_LIGHT,
'title' => helper::translate('ZwiiCMS Installation'),
'view' => 'index'
]);
}
/**
* post Installation
*/
public function postInstall()
{
// Accès refusé
if ($this->getData(['user']) !== []) {
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'access' => false 'access' => false
@ -39,38 +97,49 @@ class install extends common {
// Accès autorisé // Accès autorisé
else { else {
// Soumission du formulaire // Soumission du formulaire
if($this->isPost()) { if (
//$this->getUser('permission', __CLASS__, __FUNCTION__) !== true &&
$this->isPost()
) {
$success = true;
// Double vérification pour le mot de passe // Double vérification pour le mot de passe
if($this->getInput('installPassword', helper::FILTER_STRING_SHORT, true) !== $this->getInput('installConfirmPassword', helper::FILTER_STRING_SHORT, true)) { if ($this->getInput('installPassword', helper::FILTER_STRING_SHORT, true) !== $this->getInput('installConfirmPassword', helper::FILTER_STRING_SHORT, true)) {
self::$inputNotices['installConfirmPassword'] = 'Incorrect'; self::$inputNotices['installConfirmPassword'] = 'Incorrect';
$success = false;
} }
// Crée l'utilisateur // Utilisateur
$userFirstname = $this->getInput('installFirstname', helper::FILTER_STRING_SHORT, true); $userFirstname = $this->getInput('installFirstname', helper::FILTER_STRING_SHORT, true);
$userLastname = $this->getInput('installLastname', helper::FILTER_STRING_SHORT, true); $userLastname = $this->getInput('installLastname', helper::FILTER_STRING_SHORT, true);
$userMail = $this->getInput('installMail', helper::FILTER_MAIL, true); $userMail = $this->getInput('installMail', helper::FILTER_MAIL, true);
$userId = $this->getInput('installId', helper::FILTER_ID, true); $userId = $this->getInput('installId', helper::FILTER_ID, true);
// Configure certaines données par défaut
if ($this->getInput('installDefaultData',helper::FILTER_BOOLEAN) === FALSE) { // Validation de la langue transmise
foreach($this->getHierarchy(null, false) as $parentPageId => $childrenPageIds) { self::$i18nUI = $_SESSION['ZWII_UI'];
if ( $parentPageId !== 'accueil') { self::$i18nUI = array_key_exists(self::$i18nUI, self::$languages) ? self::$i18nUI : 'fr_FR';
$this->deleteData(['page',$parentPageId]); // par défaut le contenu est la langue d'installation
$_SESSION['ZWII_SITE_CONTENT'] = self::$i18nUI;
// Création du dossier de langue avec le marqueur de langue par défaut
if (!is_dir(self::DATA_DIR . $_SESSION['ZWII_SITE_CONTENT'])) {
mkdir(self::DATA_DIR . $_SESSION['ZWII_SITE_CONTENT']);
touch(self::DATA_DIR . $_SESSION['ZWII_SITE_CONTENT'] . '/.default');
} }
foreach($childrenPageIds as $childKey) {
$this->deleteData(['page', $childKey]); // Installation du site de test
} if (
} $this->getInput('installDefaultData', helper::FILTER_BOOLEAN) === false
// Ajouter ici la liste des pages privées qui ne sont pas vues lors de l'installation. && $_SESSION['ZWII_SITE_CONTENT'] === 'fr_FR'
$this->deleteData(['page', 'privee']); ) {
// Effacer les fichiers par défaut $sample = true;
if (is_dir('site/file/source/galerie')) {
$this->removeAll('site/file/source/galerie');
$this->removeAll('site/file/thumb/galerie');
}
} else {
$this->setData(['module', 'blog', 'mon-premier-article', 'userId', $userId]);
$this->setData(['module', 'blog', 'mon-deuxieme-article', 'userId', $userId]);
$this->setData(['module', 'blog', 'mon-troisieme-article', 'userId', $userId]);
} }
$this->initData('page', $_SESSION['ZWII_SITE_CONTENT'], $sample);
$this->initData('module', $_SESSION['ZWII_SITE_CONTENT'], $sample);
$this->initData('locale', $_SESSION['ZWII_SITE_CONTENT'], $sample);
// Création de l'utilisateur si les données sont complétées.
// success retour de l'enregistrement des données
$this->setData([ $this->setData([
'user', 'user',
$userId, $userId,
@ -78,38 +147,95 @@ class install extends common {
'firstname' => $userFirstname, 'firstname' => $userFirstname,
'forgot' => 0, 'forgot' => 0,
'group' => self::GROUP_ADMIN, 'group' => self::GROUP_ADMIN,
'profil' => 0,
'lastname' => $userLastname, 'lastname' => $userLastname,
'pseudo' => 'Admin',
'signature' => 1,
'mail' => $userMail, 'mail' => $userMail,
'password' => $this->getInput('installPassword', helper::FILTER_PASSWORD, true) 'password' => $this->getInput('installPassword', helper::FILTER_PASSWORD, true),
'language' => $_SESSION['ZWII_SITE_CONTENT']
] ]
]); ]);
// Envoie le mail // Envoie le mail
$sent = $this->sendMail( // Sent contient true si réussite sinon code erreur d'envoi en clair
$this->sendMail(
$userMail, $userMail,
'Installation de votre site', 'Installation de votre site',
'Bonjour' . ' <strong>' . $userFirstname . ' ' . $userLastname . '</strong>,<br><br>' . 'Bonjour' . ' <strong>' . $userFirstname . ' ' . $userLastname . '</strong>,<br><br>' .
'Vous trouverez ci-dessous les détails de votre installation.<br><br>' . 'Voici les détails de votre installation.<br><br>' .
'<strong>URL du site :</strong> <a href="' . helper::baseUrl(false) . '" target="_blank">' . helper::baseUrl(false) . '</a><br>' . '<strong>URL du site :</strong> <a href="' . helper::baseUrl(false) . '" target="_blank">' . helper::baseUrl(false) . '</a><br>' .
'<strong>Identifiant du compte :</strong> ' . $this->getInput('installId') . '<br>' . '<strong>Identifiant du compte :</strong> ' . $this->getInput('installId') . '<br>',
'<strong>Mot de passe du compte :</strong> ' . $this->getInput('installPassword') null,
'no-reply@localhost'
); );
// Générer un fichier robots.txt
$this->createRobots(); // Nettoyage fr par défaut
// Créer sitemap if (
$this->createSitemap('all'); $_SESSION['ZWII_SITE_CONTENT'] !== 'fr_FR'
) {
if (is_dir(self::DATA_DIR . 'fr_FR'))
$this->deleteDir(self::DATA_DIR . 'fr_FR');
}
// Sauvegarder la configuration du Proxy
$this->setData(['config', 'proxyType', $this->getInput('installProxyType')], false);
$this->setData(['config', 'proxyUrl', $this->getInput('installProxyUrl')], false);
$this->setData(['config', 'proxyPort', $this->getInput('installProxyPort', helper::FILTER_INT)], false);
// Images exemples livrées dans tous les cas
try {
// Décompression dans le dossier de fichier temporaires
if (file_exists(self::TEMP_DIR . 'files.tar.gz')) {
unlink(self::TEMP_DIR . 'files.tar.gz');
}
if (file_exists(self::TEMP_DIR . 'files.tar')) {
unlink(self::TEMP_DIR . 'files.tar');
}
copy('core/module/install/ressource/files.tar.gz', self::TEMP_DIR . 'files.tar.gz');
$pharData = new PharData(self::TEMP_DIR . 'files.tar.gz');
$pharData->decompress();
// Installation
$pharData->extractTo(__DIR__ . '/../../../', null, true);
} catch (Exception $e) {
$success = $e->getMessage();
}
// Nettoyage
unlink(self::TEMP_DIR . 'files.tar.gz');
unlink(self::TEMP_DIR . 'files.tar');
// Créer le dossier des fontes
if (!is_dir(self::DATA_DIR . 'font')) {
mkdir(self::DATA_DIR . 'font');
}
// Copie des langues de l'UI et génération de la base de données
if (is_dir(self::I18N_DIR) === false) {
mkdir(self::I18N_DIR);
}
// Créer la base de données des langues
$this->copyDir('core/module/install/ressource/i18n', self::I18N_DIR);
// Fixe l'adresse from pour les envois d'email
$this->setData(['config', 'smtp', 'from', 'no-reply@' . str_replace('www.', '', $_SERVER['HTTP_HOST'])], false);
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'redirect' => helper::baseUrl(false), 'redirect' => helper::baseUrl(),
'notification' => ($sent === true ? 'Installation terminée' : $sent), 'notification' => helper::translate('Installation terminée'),
'state' => ($sent === true ? true : null) 'state' => true
]); ]);
} }
// Force la sauvegarde
$this->saveDB('config');
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'display' => self::DISPLAY_LAYOUT_LIGHT, 'display' => self::DISPLAY_LAYOUT_LIGHT,
'title' => 'Installation', 'title' => helper::translate('Installation'),
'view' => 'index' 'view' => 'postinstall'
]); ]);
} }
} }
@ -117,121 +243,240 @@ class install extends common {
/** /**
* Étapes de mise à jour * Étapes de mise à jour
*/ */
public function steps() { public function steps()
switch($this->getInput('step', helper::FILTER_INT)) { {
// Action interdite
if (
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true
) {
// Valeurs en sortie
$this->addOutput([
'access' => false
]);
} else {
switch ($this->getInput('step', helper::FILTER_INT)) {
// Préparation // Préparation
case 1: case 1:
$success = true; $success = true;
// Copie du fichier de données $message = '';
copy('site/data/core.json', 'site/backup/' . date('Y-m-d', time()) . '-core-update.json'); // RAZ la mise à jour auto
copy('site/data/theme.json', 'site/backup/' . date('Y-m-d', time()) . '-theme-update.json'); $this->setData(['core', 'updateAvailable', false]);
// Nettoyage des fichiers temporaires // Backup du dossier Data
if(file_exists('site/tmp/update.tar.gz')) { helper::autoBackup(self::BACKUP_DIR, ['backup', 'tmp', 'file']);
$success = unlink('site/tmp/update.tar.gz'); // Sauvegarde htaccess
if ($this->getData(['config', 'autoUpdateHtaccess'])) {
$success = copy('.htaccess', '.htaccess' . '.bak');
$message = $success ? '' : 'Erreur de copie du fichier htaccess';
} }
if(file_exists('site/tmp/update.tar')) { // Nettoyage des fichiers d'installation précédents
$success = unlink('site/tmp/update.tar'); if ($success && file_exists(self::TEMP_DIR . 'update.tar.gz')) {
$success = unlink(self::TEMP_DIR . 'update.tar.gz');
$message = $success ? '' : 'Impossible d\'effacer la mise à jour précédente';
}
if ($success && file_exists(self::TEMP_DIR . 'update.tar')) {
$success = unlink(self::TEMP_DIR . 'update.tar');
$message = $success ? '' : 'Impossible d\'effacer la mise à jour précédente';
}
// Sauvegarde le message dans le journal
if (!empty($message)) {
$this->saveLog($message);
} }
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'display' => self::DISPLAY_JSON, 'display' => self::DISPLAY_JSON,
'content' => [ 'content' => [
'success' => $success, 'success' => $success,
'data' => null 'data' => $message
] ]
]); ]);
break; break;
// Téléchargement // Téléchargement
case 2: case 2:
// Téléchargement depuis le serveur de Zwii $success = true;
$success = (file_put_contents('site/tmp/update.tar.gz', file_get_contents('https://zwiicms.com/update/update.tar.gz')) !== false); $message = '';
$this->secure_file_put_contents(self::TEMP_DIR . 'update.tar.gz', helper::getUrlContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/update.tar.gz'));
$md5origin = helper::getUrlContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/update.md5');
$md5origin = explode(' ', $md5origin);
$md5target = md5_file(self::TEMP_DIR . 'update.tar.gz');
// Vérifier si les checksums correspondent
if ($md5origin[0] === $md5target) {
$success = true;
$message = "";
} else {
$success = false;
$message = 'Erreur de téléchargement ou de somme de contrôle';
if (file_exists(self::TEMP_DIR . 'update.tar.gz')) {
unlink(self::TEMP_DIR . 'update.tar.gz');
http_response_code(500);
}
}
// Sauvegarde le message dans le journal
if (!empty($message)) {
$this->saveLog($message);
}
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'display' => self::DISPLAY_JSON, 'display' => self::DISPLAY_JSON,
'content' => [ 'content' => [
'success' => $success, 'success' => $success,
'data' => null 'data' => $message
] ]
]); ]);
break; break;
// Installation // Installation
case 3: case 3:
$success = true; $success = true;
$message = '';
// Check la réécriture d'URL avant d'écraser les fichiers // Check la réécriture d'URL avant d'écraser les fichiers
$rewrite = helper::checkRewrite(); if (helper::checkRewrite()) {
touch(self::DATA_DIR . '.rewrite');
}
// Décompression et installation // Décompression et installation
try { try {
// Décompression dans le dossier de fichier temporaires // Décompression dans le dossier de fichier temporaires
$pharData = new PharData('site/tmp/update.tar.gz'); $pharData = new PharData(self::TEMP_DIR . 'update.tar.gz');
$pharData->decompress(); $pharData->decompress();
// Installation // Installation
$pharData->extractTo(__DIR__ . '/../../../', null, true); $pharData->extractTo(__DIR__ . '/../../../', null, true);
} catch (Exception $e) { } catch (Exception $e) {
$success = $e->getMessage(); $message = $e->getMessage();
$success = false;
http_response_code(500);
}
// Nettoyage du dossier
if (file_exists(self::TEMP_DIR . 'update.tar.gz')) {
unlink(self::TEMP_DIR . 'update.tar.gz');
}
if (file_exists(self::TEMP_DIR . 'update.tar')) {
unlink(self::TEMP_DIR . 'update.tar');
}
// Sauvegarde le message dans le journal
if (!empty($message)) {
$this->saveLog($message);
} }
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'display' => self::DISPLAY_JSON, 'display' => self::DISPLAY_JSON,
'content' => [ 'content' => [
'success' => $success, 'success' => $success,
'data' => $rewrite 'data' => $message,
] ]
]); ]);
break; break;
// Configuration // Configuration
case 4: case 4:
$success = true; $success = true;
// Réécriture d'URL $message = '';
if($this->getInput('data', helper::FILTER_BOOLEAN)) {
$success = (file_put_contents( /**
'.htaccess', * Restaure le fichier htaccess
PHP_EOL . */
'<ifModule mod_rewrite.c>' . PHP_EOL . // Recopie htaccess
if (
$this->getData(['config', 'autoUpdateHtaccess']) === true
) {
// L'écraser avec le backup
$success = copy('.htaccess.bak', '.htaccess');
if ($success === false) {
$message = helper::translate('La copie de sauvegarde du fichier htaccess n\'a pas été restaurée !');
http_response_code(500);
}
// Effacer le backup
unlink('.htaccess.bak');
} else {
/**
* Restaure la réécriture d'URL
*/
if (file_exists(self::DATA_DIR . '.rewrite')) { // Ajout des lignes dans le .htaccess
$fileContent = file_get_contents('.htaccess');
$rewriteData = PHP_EOL .
'# URL rewriting' . PHP_EOL .
'<IfModule mod_rewrite.c>' . PHP_EOL .
"\tRewriteEngine on" . PHP_EOL . "\tRewriteEngine on" . PHP_EOL .
"\tRewriteBase " . helper::baseUrl(false, false) . PHP_EOL . "\tRewriteBase " . helper::baseUrl(false, false) . PHP_EOL .
"\tRewriteCond %{REQUEST_FILENAME} !-f" . PHP_EOL . "\tRewriteCond %{REQUEST_FILENAME} !-f" . PHP_EOL .
"\tRewriteCond %{REQUEST_FILENAME} !-d" . PHP_EOL . "\tRewriteCond %{REQUEST_FILENAME} !-d" . PHP_EOL .
"\tRewriteRule ^(.*)$ index.php?$1 [L]" . PHP_EOL . "\tRewriteRule ^(.*)$ index.php?$1 [L]" . PHP_EOL .
'</ifModule>', '</IfModule>' . PHP_EOL .
FILE_APPEND '# URL rewriting' . PHP_EOL;
) !== false); $fileContent = str_replace('# URL rewriting', $rewriteData, $fileContent);
$success = $this->secure_file_put_contents(
'.htaccess',
$fileContent
);
unlink(self::DATA_DIR . '.rewrite');
} }
}
/**
* Met à jour les dictionnaires des langues depuis les nouveaux modèles installés
*/
require_once('core/module/install/ressource/defaultdata.php');
$installedLanguages = $this->getData(['language']);
$defaultLanguages = init::$defaultData['language'];
foreach ($installedLanguages as $key => $value) {
if (
isset($defaultLanguages[$key]['date']) &&
$defaultLanguages[$key]['date'] > $value['date'] &&
isset($defaultLanguages[$key]['version']) &&
$defaultLanguages[$key]['version'] >= $value['version']
) {
copy('core/module/install/ressource/i18n/' . $key . '.json', self::I18N_DIR . $key . '.json');
$this->setData(['language', $key, $defaultLanguages[$key]]);
}
}
// Sauvegarde le message dans le journal
if (!empty($message)) {
$this->saveLog($message);
}
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'display' => self::DISPLAY_JSON, 'display' => self::DISPLAY_JSON,
'content' => [ 'content' => [
'success' => $success, 'success' => $success,
'data' => null 'data' => $message
] ]
]); ]);
break; }
} }
} }
/** /**
* Mise à jour * Mise à jour
*/ */
public function update() { public function update()
{
// Action interdite
if (
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true
) {
// Valeurs en sortie
$this->addOutput([
'access' => false
]);
} else {
// Nouvelle version // Nouvelle version
self::$newVersion = file_get_contents('http://zwiicms.com/update/version'); self::$newVersion = helper::getUrlContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/version');
// Variable de version
if (helper::checkNewVersion(common::ZWII_UPDATE_CHANNEL)) {
self::$updateButtonText = helper::translate('Mise à jour');
}
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'display' => self::DISPLAY_LAYOUT_LIGHT, 'display' => self::DISPLAY_LAYOUT_LIGHT,
'title' => 'Mise à jour', 'title' => helper::translate(self::$updateButtonText),
'view' => 'update' 'view' => 'update'
]); ]);
} }
/**
* Effacer un dossier non vide.
*/
private function removeAll ( $path ) {
foreach ( new DirectoryIterator($path) as $item ):
if ( $item->isFile() ) unlink($item->getRealPath());
if ( !$item->isDot() && $item->isDir() ) $this->removeAll($item->getRealPath());
endforeach;
rmdir($path);
} }
} }

View File

@ -0,0 +1,10 @@
# Bloque l'accès aux données
<Files *.json>
Order deny,allow
Deny from all
</Files>
# Bloque l'accès htaccess
<Files .htaccess>
Order deny,allow
Deny from all
</Files>

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -0,0 +1,693 @@
{
"'Ne pas afficher' crée une page orpheline non accessible par le biais des menus.": "'Do not display' creates an orphan page not accessible through menus.",
"'Sauvegarder et télécharger les données du module": "'Save and download module data",
"1 jour": "1 jour",
"1/4 : Préparation...": "1/4: preparation ...",
"10 minutes": "10 minutes",
"10 tentatives": "10 attempts",
"14 jours": "14 days",
"15 minutes": "15 minutes",
"2 jours": "2 days",
"2/4 : Téléchargement...": "2/4: Download ...",
"3 tentatives": "3 attempts",
"3/4 : Installation...": "3/4 : Installation...",
"4 jours": "4 days",
"4/4 : Configuration...": "4/4 : Setup...",
"5 minutes": "5 minutes",
"5 tentatives": "5 attempts",
"7 jours": "7 days",
"Accueil": "Homepage",
"Accède au site": "Access to the site",
"Accède aux pages réservées": "Access to restricted pages",
"Accède aux pages réservées et à un dossier partagé": "Access to restricted pages and a shared folder",
"Accès bloqué %d minutes": "Blocked access %d minutes",
"Accès désactivé": "Access disabled",
"Accès interdit, erreur 403": "Access prohibited, error 403",
"Action interdite": "Prohibited action",
"Activation obligatoire selon les lois françaises sauf si vous utilisez votre propre système de consentement.": "Compulsory activation according to French laws unless you use your own consent system.",
"Activer": "Enable",
"Activer la journalisation": "Activate journalization",
"Actualiser": "Update",
"Adaptation": "Adaptation",
"Administrateur": "Administrator",
"Administration": "Administration",
"Adresse SMTP": "SMTP Address",
"Adresse du proxy": "Proxy address",
"Adresse électronique": "email address",
"Affectation": "Assignment",
"Affiche le nom de la page parente suivi du nom de la page, le titre ne doit pas être masqué.": "Displays the name of the parent page followed by the page name, the title should not be hidden.",
"Affiche les icônes de gestion du compte et de déconnexion des membres simples connectés": "Displays account management and logout icons for logged-in regular members",
"Afin d'assurer le bon fonctionnement de Zwii, veuillez ne pas fermer cette page avant la fin de l'opération.": "In order to ensure the proper functioning of Zwii, please do not close this page before the end of the operation.",
"Aide": "Help",
"Ajouter": "Add",
"Ajouter un profil": "Add Profile",
"Ajouter un utilisateur": "Add a user",
"Ajouter une fonte": "Add a cast iron",
"Alignement": "Alignment",
"Aligner la bannière avec le contenu": "Align the banner with the contents",
"Ancien mot de passe": "Old Password",
"Anonymat des adresses IP": "Anonymity of IP addresses",
"Apache URL intelligent": "Intelligent Apache URL",
"Apache URL intelligentes": "Intelligent Apache URL",
"Apparence": "Appearance",
"Appliquer": "Apply",
"Approuver un commentaire": "Approve Comment",
"Après": "After",
"Après la bannière": "After the banner",
"Après le contenu de la page": "After the content of the page",
"Archive": "Archive",
"Archive ZIP": "Zip archive",
"Archive copiée dans le dossier Modules du gestionnaire de fichier": "Archive copied in the Modules folder",
"Archive de thème invalide": "Invalid theme archive",
"Archive invalide": "Invalid archive",
"Archive invalide, l'écriture dans le dossier core est interdite": "Invalid archive, writing in the core file is prohibited",
"Archive invalide, le descripteur est absent": "Invalid archive, the descriptor is absent",
"Archive invalide, le fichier de classe est absent": "Invalide archive, the class file is absent",
"Archive invalide, les dossiers ne correspondent pas au descripteur": "Invalid archive, the files do not correspond to the descriptor",
"Archive non spécifiée ou introuvable": "Archive not specified or not found",
"Archive à restaurer": "Archive to restore",
"Arrière plan": "Background",
"Arrière plan des blocs": "Blocks background",
"Arrière plan des champs": "Fields background",
"Arrondi des angles": "Rounding of angles",
"Au centre": "Center",
"Au début": "At first",
"Au milieu au centre": "In the middle in the center",
"Au milieu à droite": "In the middle right",
"Au milieu à gauche": "In the middle on the left",
"Au-dessus du site": "Above the site",
"Aucun": "None",
"Aucun dossier": "No Folder",
"Aucun fichier journal à télécharger": "No log file to download",
"Aucun journal à effacer": "No log file to erase",
"Aucun menu": "No menu",
"Aucune": "None",
"Aucune liste noire à effacer": "No blacklist to erase",
"Aucune liste noire à télécharger": "No blacklist to download",
"Auteur :": "Author:",
"Authentification": "Authentication",
"Automatique": "Automatique",
"Autoriser les robots à référencer le site": "Allow robots to reference the site",
"Autorisé": "Allowed",
"Avant la bannière": "Before the banner",
"Avant le contenu de la page": "Before the content of the page",
"Background": "Background",
"Banni": "Ban",
"Bannière": "Banner",
"Bannière cliquable": "Clickable banner",
"Barre 1/3 - page 2/3": "Sidebar 1/3 - page 2/3",
"Barre 1/4 - page 1/2 - barre 1/4": "Sidebar 1/4 - page 1/2 - Sidebar 1/4",
"Barre 1/4 - page 3/4": "Sidebar 1/4 - page 3/4",
"Barre 2/12 - page 7/12 - barre 3/12": "Sidebar 2/12 - page 7/12 - Sidebar 3/12",
"Barre 3/12 - page 7/12 - barre 2/12": "Sidebar 3/12 - page 7/12 - Sidebar 2/12",
"Barre de membre": "Member bar",
"Barre latérale": "Sidebar",
"Barre latérale droite :": "Right sidebar:",
"Barre latérale gauche :": "Left sidebar:",
"Barres latérales": "Side bars",
"Bienvenue %s %s": "Welcome %s %s",
"Blocage après échecs": "Blocking after chess",
"Blog": "Blog",
"Bords arrondis": "Rounded edges",
"Bordure des blocs": "Blocks border",
"Bordure des champs": "Fields border",
"Bouton Aide": "Help button",
"Bouton Standard": "Standard button",
"Bouton de validation": "Validation button",
"Bouton effacement": "Delete button",
"Bouton retour": "Return button",
"Bouton standard": "Standard button",
"Bouton validation": "Validation button",
"Boutons": "Buttons",
"Caché": "Hidden",
"Cachée": "Hidden",
"Captcha complexe": "Complex captcha",
"Captcha à la connexion": "Captcha at connecting",
"Captcha, identifiant ou mot de passe incorrects": "Incorrect captcha, login or password",
"Capture d'écran Open Graph": "Open Graph screenshot",
"Capture d'écran générée avec succès": "Successful generated screenshot",
"Casse": "Case",
"Catalogue": "Store",
"Catégorie": "Category",
"Ce membre pourra téléverser ou télécharger des fichiers dans le dossier 'partage' et ses sous-dossiers": "This member upload or download files in the 'Sharing' folder and its subfolders",
"Cette page ne doit pas apparaître dans l'arborescence du menu. Créez une page orpheline.": "This page should not appear in the menu tree. Create an orphan page.",
"Cette redirection ne concerne que les pages d'administration du site.": "This redirection only concerns the administration pages of the site.",
"Chaîne Youtube": "Youtube channel",
"Chiffres": "Numbers",
"Cible": "Target",
"Cliquez sur une zone afin d'accéder à ses options de personnalisation.": "Click on an area to access its customization options.",
"Commentaire": "Comment",
"Complète": "Complete",
"Compte administrateur": "Administrator account",
"Compte de l'utilisateur": "User Account",
"Compte verrouillé": "Locked",
"Configuration": "Setup",
"Configuration du module": "Module setup",
"Configurer": "Configure",
"Configurer mon compte": "Set up my account",
"Confirmation": "Confirmation",
"Confirmer la suppression de cet utilisateur": "Confirm the deletion of this user",
"Confirmer la dissociation du module de cette page": "Confirm the dissociation of the module of this page",
"Confirmer la désinstallation du module": "Confirm the uninstalling of the module",
"Confirmer la suppression de cet utilisateur": "Confirm the deletion of this user",
"Confirmer la suppression de cette langue": "Confirm deletion of this language",
"Confirmer la suppression de la page": "Confirm the deletion of the page",
"Confirmer la suppression des données du module": "Confirm the deletion of module data",
"Confirmez-vous la suppression de cette page ?": "Do you confirm the deletion of this page?",
"Connexion": "Connection",
"Consulter l'aide en ligne": "Online help",
"Contents": "Contents",
"Contenu": "Contents",
"Contenu HTML": "HTML contents",
"Contenu avancé": "Advanced contents",
"Contenu du menu vertical": "Vertical menu content",
"Contrôle total": "Full control",
"Cookies": "Cookies",
"Cookies Zwii": "Cookies Zwii",
"Copie de contenus localisés": "Localized content copy",
"Copie de sites inter-langues": "Copy of inter-language sites",
"Copie des traductions rédigées": "Copy of written translations",
"Copie terminée avec des erreurs": "Copy finished with errors",
"Copie terminée avec succès": "Copy successfully completed",
"Copier": "Copy",
"Copier sauvegardes auto": "Copy auto backups",
"Couleur de fond automatique": "Automatic background color",
"Couleur icône haut de page": "Color of top page icon",
"Couleur texte page active": "Active page text color",
"Couleur unie ou papier-peint": "United color or wallpaper",
"Couleur visible en l'absence d'une image.<br />Le curseur horizontal règle le niveau de transparence.": "Visible color in the absence of an image. <br /> The horizontal cursor regulates the level of transparency.",
"Couleur visible en l'absence d'une image.<br />Le curseur horizontal règle le niveau de transparence. La couleur du texte est automatique.": "Visible color in the absence of an image. <br /> The horizontal cursor regulates the level of transparency. The color of the text is automatic.",
"Couleurs": "Colors",
"Dans le site": "Into the site",
"Dans quelle langue utiliserez-vous Zwii ?": "In which language will you use Zwii?",
"Date": "Date",
"Description": "Site description",
"Disponible si le consentement des cookies est activé.": "Available if cookie consent is enabled.",
"Disposition": "Layout",
"Données %s copiées vers %s": "Data %s copied to %s",
"Données des modules": "Module data",
"Données importées": "Imported data",
"Dossier": "Folder",
"Droits sur les dossiers": "Folder authorizations",
"Droits sur les fichiers": "File authorizations",
"Dupliquer": "Duplicate",
"Dupliquer la page": "Duplicate the page",
"Déconnecte les sessions ouvertes précédemment sur d'autres navigateurs ou terminaux. Activation recommandée.": "Disconnects the previously opened sessions on other browsers or terminals. Recommended activation.",
"Déconnecter": "Disconnect",
"Déconnexion !": "Logout!",
"Déconnexion automatique": "Automatic disconnection",
"Définir par défaut": "Set as default",
"Dévoiler le mot de passe": "Reveal the password",
"Effacer": "Delete",
"Effacer la page": "Delete the page",
"Effacer tous les commentaires": "Delete all Comments",
"Effacer toutes les statistiques": "Delete all statistics",
"Effacer un commentaire": "Delete Comment",
"Effacer une catégorie": "Delete category",
"Emplacement :": "Location:",
"Emplacement dans le menu": "Location in the menu",
"En bas au centre": "Down in the center",
"En bas à droite": "At the bottom right",
"En bas à gauche": "At the bottom left",
"En cas de changement de module, les données du module précédent seront supprimées.": "In the event of a module change, data from the previous module will be deleted.",
"En dessous du site": "Below the site",
"En haut au centre": "Top in the center",
"En haut à droite": "Top right",
"En haut à gauche": "On the top corner left",
"En position libre ajoutez le module en plaçant [MODULE] à l'endroit voulu dans votre page.": "In free position add the module by placing [module] to the desired location in your page.",
"En-dehors du site": "Outside the site",
"Enregistrer": "Save",
"Envoyer un message de confirmation": "Send a confirmation message",
"Erreur : sauvegarde non générée !": "Error: non-generated backup!",
"Erreur d'URL": "URL error",
"Erreur d'extraction, vérifiez les permissions": "Extraction error, check permissions",
"Erreur de copie": "Copy error",
"Erreur de copie, vérifiez les permissions": "Copy error, check permissions",
"Erreur de lecture, vérifiez les permissions": "Reading error, check permissions",
"Erreur inconnue": "unknown error",
"Erreur inconnue, le module n'est pas installé": "Unknown error, the module is not installed",
"Export CSV": "Export CSV",
"Expéditeur": "From",
"Extension": "Extension",
"Extraire": "Extract",
"Facebook": "Facebook",
"Famille": "Family",
"Favicon thème sombre": "Dark theme favicon",
"Feuille de style spécifique à la page.": "Style sheet specific to the page.",
"Fichiers": "Files",
"Fichiers effacés": "Erased files",
"Fil d'Ariane dans le titre": "Breadcrumb in the title",
"Fond du sous-menu": "Background of the submenu",
"FontId": "FontId",
"Fonte": "Font",
"Fonte actualisée": "Update",
"Fonte créée": "Font created",
"Fonte en ligne": "Online font",
"Fonte installée": "Installed font",
"Fonte non créée, ressource absente !": "Font not created, absent resource!",
"Fonte supprimée": "Font deleted",
"Fontes": "Fonts",
"Format incorrect": "Wrong format",
"Formulaire": "Form",
"Fréquence de recherche": "Search frequency",
"Fuseau horaire": "Time zone",
"Gabarits de page - Barre latérale": "Page templates - Sidebar",
"Gestion": "Management",
"Gestion des modules": "Module management",
"Gestion des thèmes": "Themes management",
"Gestionnaire de fichiers": "File Manager",
"Github": "Github",
"Grande": "Large",
"Grande (220%)": "Grande (220%)",
"Grande (300px)": "Grande (300px)",
"Gras": "Fetter",
"Groupe": "Group",
"Groupe associé": "Associated Group",
"Groupe requis pour accéder à la page :": "Group required to access the page:",
"Groupes": "Groups",
"Générer sitemap.xml et robots.txt": "Generate sitemap.xml and robots.txt",
"Générer une capture Open Graph": "Generate an Open Graph capture",
"Gérer les catégories": "Manage categories",
"Gérer les commentaires": "Manage comments",
"Gérer les données": "Manage Data",
"Hauteur": "Height:",
"Hauteur de l'image": "Image Height",
"Hauteur de l'image sélectionnée": "Selected Image Height",
"Hauteur maximale": "Maximum height",
"ID de la chaîne : https://www.youtube.com/channel/[ID].": "Channel ID: https://www.youtube.com/channel/ [ID].",
"Icône": "Icon",
"Icône avec bulle de texte": "Icon with text bubble",
"Icône haut de page, couleur arrière-plan": "Top page icon, background color",
"Identifiant": "Identifier",
"Identifiant (sans espace ni majuscule)": "Identifier (without space or capital letters)",
"Identité": "Identity",
"Identité de la fonte": "Identity of the font",
"Identité du site": "Site identity",
"Il apparaît dans la barre de titre et les partages sur les réseaux sociaux.": "It appears in the title bar and sharing on social networks.",
"Image": "Image",
"Image étirée (100% 100%)": "Stretched image (100% 100%)",
"Important": "Important",
"Importante": "Important",
"Importation d'utilisateurs": "Import of users",
"Importation de fichier plat CSV": "CSV flat file import",
"Importation effectuée": "Import done",
"Importer": "Import",
"Importer dans": "Import into",
"Importer des utilisateurs en masse": "Import mass users",
"Impossible d'ouvrir l'archive": "Impossible to open the archive",
"Impossible de modifier votre propre groupe.": "Unable to modify your own group.",
"Impossible de soumettre le formulaire, car il contient des erreurs": "Unable to submit the form, as it contains errors",
"Impossible de supprimer une page contenant des pages enfants": "Unable to delete a page containing children's pages",
"Impossible de supprimer votre propre compte": "Unable to delete your own account",
"Inclure le contenu du gestionnaire de fichiers": "Include the content of the file manager",
"Incorrect": "Incorrect",
"Informations": "Informations",
"Instagram": "Instagram",
"Installation terminée": "Installation completed",
"Installer": "Install",
"Installer depuis le catalogue en ligne": "Install from the online catalog",
"Installer depuis une archive": "Install from an archive",
"Installer les données d'un module": "Install a module data",
"Installer ou mettre à jour un module téléchargé": "Install or update a downloaded module",
"Installer un module": "Install a module",
"Installer un thème archivé (site ou administration)": "Install an archived theme (site or administration)",
"Instructions JS ou jquery spécifiques à la page.": "JS or JQuery instructions specific to the page.",
"Interface": "Interface",
"Jeton invalide": "Invalid token",
"Journal réinitialisé avec succès": "Log file successfully reset",
"Journalisation": "Journalization",
"L'archive a été déposée dans le gestionnaire de fichiers. Les archives inférieures à la version 9 ne sont pas acceptées.": "The archive was deposited in the file manager. Archives below version 9 are not accepted.",
"L'identifiant est défini lors de la création du compte, il ne peut pas être modifié.": "The identifier is defined when creating the account, it cannot be changed.",
"La carte du site a été mise à jour": "The site card has been updated",
"La copie de sauvegarde du fichier htaccess n'a pas été restaurée !": "Backup copy of htaccess file has not been restored!",
"La description d'une page participe à son référencement, chaque page doit disposer d'une description différente.": "The description of a page participates in its referencing, each page must have a different description.",
"La page %s est ouverte par l'utilisateur %s": "Page %s opened by user %s",
"La page demandée n'existe pas ou est introuvable (erreur 404)": "This page does not exists (error 404)",
"La page est affichée dans un menu horizontal mais pas dans le menu vertical d'une barre latérale.": "The page is displayed in a horizontal menu but not in the vertical menu of a sidebar.",
"La première page que vos visiteurs verront.": "The first page that your visitors will see.",
"La règlementation française impose un anonymat de niveau 2": "French regulations require level 2 anonymity",
"La réécriture d'URL n'a pas été restaurée !": "URL rewriting has not been restored!",
"La sauvegarde des fichiers peut prendre du temps. Continuer ?": "The backup of the files can take time. Continue?",
"La suppression a échoué": "The deletion failed",
"La version installée est plus récente": "The installed version is more recent",
"La vérification est quotidienne. Option désactivée si la configuration du serveur ne le permet pas.": "The verification is daily. Option deactivated if the server configuration does not allow it.",
"Langue de l'administration": "Language of administration",
"Langue du site par défaut": "Default site language",
"Langue par défaut": "Default language",
"Langues": "Languages",
"Langues disponibles": "Available languages",
"Langues installées": "Installed languages",
"Largeur": "Width",
"Largeur de l'image": "Image Width",
"Largeur du site": "Site Width",
"Le curseur horizontal règle le niveau de transparence, le placer tout à la gauche pour un surlignement invisible.": "The horizontal cursor regulates the level of transparency, place it on the left for invisible highlights.",
"Le curseur horizontal règle le niveau de transparence.": "The horizontal cursor regulates the level of transparency.",
"Le fuseau horaire est utile au bon référencement": "The time zone is useful for the right SEO",
"Le menu accessoire est aligné à droite de la barre de menu, c'est un emplacement réservé aux drapeaux et au bouton de connexion.": "The accessory menu is aligned to the right of the menu bar, it is a place reserved for flags and the login button.",
"Le menu horizontal intégral": "The full horizontal menu",
"Le module %s a été %s": "The module %s was %s",
"Le module %s de la page %s a été supprimé": "The %s module of the %s has been deleted",
"Le module %s est désinstallé, il reste peut-être des données dans %s": "The module %s is uninstalled, there may be data in %s",
"Le sous-menu de la page parente": "The parent page submenu",
"Le survol d'une icône de l'écran de connexion affiche temporairement le mot de passe.": "Flyover of an icon on the connection screen temporarily displays the password.",
"Le titre court est affiché dans les menus. Il peut être identique au titre de la page.": "The short title is displayed in the menus. It can be identical to the page title.",
"Les langues sélectionnées sont identiques": "The selected languages are identical",
"Les mentions légales sont obligatoires en France. Une option du pied de page ajoute un lien discret vers cette page.": "Legal notices are compulsory in France. An option of the footer adds a discrete link to this page.",
"Les modifications que vous avez apportées ne seront peut-être pas enregistrées.": "The changes you have made may not be recorded.",
"Les tailles des polices de la bannière, de menu et de pied de page sont proportionnelles à cette taille.": "The font sizes of the banner, menu and footer are proportional to this size.",
"Lettres": "Letters",
"Libre": "Libre",
"Licence :": "Licence:",
"Lien de connexion": "Login link",
"Lien page des mentions légales.": "Link of legal notices.",
"Liens": "Links",
"Limitation des tentatives": "Limitation of attempts",
"Limitée au site": "Limited to the site",
"Linkedin": "Linkedin",
"Liste noire": "Blacklist",
"Liste noire réinitialisée avec succès": "Blacklist successfully reset",
"Lors d'une mise à jour automatique, conserve le fichier htaccess de la racine du site.": "During an automatic update, keeps the htaccess file of the site root.",
"Léger": "Light",
"Légère": "Light",
"Maigre": "Lean",
"Maintenance": "Maintenance",
"Majuscule à chaque mot": "Capper with each word",
"Majuscules": "Capital letters",
"Marges verticales": "Vertical margins",
"Masquer la bannière en écran réduit": "Hide the banner in reduced screen",
"Masquer la page et les pages enfants dans le menu d'une barre latérale": "Hide the page and children's pages in the menu of a sidebar",
"Masquer les pages enfants dans le menu horizontal": "Hide children's pages in the horizontal menu",
"Membre": "Member",
"Membre avec droit de partage": "Member with sharing rights",
"Membre simple": "Simple member",
"Mentions légales": "Legal notice",
"Menu": "Menu",
"Menu accessoire": "Accessory menu",
"Menu burger dans écran réduit": "Burger menu in reduced screen",
"Menu standard": "Standard menu",
"Message d'acceptation des Cookies": "Cookie acceptance message",
"Message de consentement aux cookies": "Cookie consent message",
"Mettre à jour": "Update",
"Mettre à jour le module orphelin": "Update the orphan module",
"Minuscules": "Tiny",
"Mise en forme des titres": "Formatting of titles",
"Mise en forme du texte": "Text formatting",
"Mise en forme du titre": "Title formatting",
"Mise en page": "Layout",
"Mise à jour": "Update",
"Mise à jour automatisée": "Automated update",
"Mise à jour terminée avec succès.": "Successful update completed.",
"Modifications enregistrées": "Modifications recorded",
"Module": "Module",
"Module de la page": "Page module",
"Modules": "Modules",
"Modules configurés": "Configured modules",
"Modules installés": "Installed modules",
"Modules orphelins": "Orphaned modules",
"Mot de passe": "Password",
"Mot de passe oublié": "Forgot your password",
"Mot de passe perdu": "Lost password",
"Motorisé par": "Powered by",
"Moyen": "Medium",
"Moyenne": "Medium",
"Moyenne (200%)": "Average (200%)",
"Moyenne (200px)": "Average (200px)",
"Méta-description": "Meta-description",
"Méta-titre": "Meta title",
"Ne pas afficher": "Do not display",
"Ne pas charger l'exemple de site (utilisateurs avancés)": "Do not load the example of a site (advanced users)",
"Ne pas répéter": "Do not repeat",
"Ne pas saisir les balises": "Don't type tags",
"News": "",
"Niveau 1 (192.168.12.x)": "Level 1 (192.168.12.x)",
"Niveau 2 (192.168.x.x)": "Level 2 (192.168.x.x)",
"Niveau 3 (192.x.x.x)": "Level 3 (192.x.x.x)",
"Nom": "Last Name",
"Nom Prénom": "Last name First Name",
"Nom du profil": "Profile Name",
"Nom utilisateur": "Username",
"Non": "No",
"Non tronquée": "Unmanned",
"Notre site est actuellement en maintenance. Nous sommes désolés pour la gêne occasionnée et faisons notre possible pour être rapidement de retour.": "Our site is currently under maintenance. We are sorry for the inconvenience caused and do our best to be quickly back.",
"Nouveau contenu localisé": "New localized content",
"Nouveau mot de passe": "New Password",
"Nouveau mot de passe enregistré": "New password recorded",
"Nouvel utilisateur": "New user",
"Nouvelle page créée": "New page created",
"Nouvelle page ou barre latérale": "New page or sidebar",
"Obligatoire": "Missing",
"Ombre": "Shadow",
"Option active en mode déconnecté uniquement, les pages enfants sont visibles et accessibles.": "Active option in disconnected mode only, children's pages are visible and accessible.",
"Option recommandée pour sécuriser la connexion. S'applique à tous les captchas du site. Le captcha simple se limite à une addition de nombres de 0 à 10. Le captcha complexe utilise quatre opérations de nombres de 0 à 20. Activation recommandée.": "Recommended option to secure the connection. Applies to all the Captchas of the site. Simple Captcha is limited to an addition of numbers from 0 to 10. Complex Captcha uses four numbers of 0 to 20. Recommended activation.",
"Options": "Options",
"Options avancées": "Advanced options",
"Origine": "Origin",
"Oui": "Yes",
"Page": "Page",
"Page 2/3 - barre 1/3": "Page 2/3 - Sidebar 1/3",
"Page 3/4 - barre 1/4": "Page 3/4 - Sidebar 1/4",
"Page associée": "Associated page",
"Page de recherche": "Search page",
"Page dupliquée": "Duplicate page",
"Page et module dupliqués": "Duplicated page and module",
"Page inexistante, erreur 404": "Page non-existent, error 404",
"Page non cliquable": "Non-clickable page",
"Page parent": "Parent page",
"Page standard": "Standard page",
"Page supprimée": "Deleted page",
"Pages dans le menu": "Pages in the menu",
"Pages du site": "Site pages",
"Pages et les modules de": "Pages and modules of",
"Pages orphelines": "Orphan pages",
"Papier peint": "Wallpaper",
"Par défaut le menu est affiché APRES le contenu de la page. Pour le positionner à un emplacement précis, insérez [MENU] dans le contenu de la page.": "By default the menu is displayed after the content of the page. To position it at a specific location, insert [MENU] into the content of the page.",
"Paramètres": "Settings",
"Paramètres de la localisation": "Location parameters",
"Paramètres de la sauvegarde": "Backup settings",
"Paramètres du profil": "Profile Settings",
"Paramètres à utiliser lorsque votre hébergeur ne propose pas la fonctionnalité d'envoi de mail.": "Settings to use when your host does not offer the mail sending feature.",
"Pas de marge au-dessus et en dessous du site": "No margin above and below the site",
"Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.": "Remember to delete your browser's cache if the favicon does not change.",
"Permission": "Permission",
"Permission et référencement": "Permission and SEO",
"Permissions": "Permissions",
"Permissions sur les dossiers": "Folder Permissions",
"Permissions sur les fichiers": "File Permissions",
"Permissions sur les pages": "Page Permissions",
"Petite": "Small",
"Petite (150px)": "Small (150px)",
"Petite (180%)": "Petite (180%)",
"Pied de page": "Footer",
"Pinterest": "Pinterest",
"Plan du site": "Sitemap",
"Police des titres": "Titles font",
"Police du texte": "Text font",
"Port SMTP": "SMTP port",
"Port du proxy": "Proxy port",
"Position": "Position",
"Position du module": "Position of the module",
"Pour définir la page comme barre latérale, choisissez l'option dans la liste.": "To define the page as a sidebar, choose the option from the list.",
"Presse Papier": "Clipboard",
"Presse papier": "Clipboard",
"Profils des groupes": "Group Profiles",
"Proportionnelle à la taille définie dans le site.": "Proportional to that defined in the site.",
"Prénom": "First name",
"Prénom Nom": "Firstname name",
"Préparation de la mise à jour": "Preparation of the update",
"Préserver le fichier htaccess racine": "Preserve the root htaccess file",
"Préserver les comptes des utilisateurs déjà installés": "Preserve user accounts already installed",
"Prévenir l'utilisateur par mail": "Prevent the user by email",
"Prévisualiser": "Preview",
"Pseudo": "Pseudo",
"Rang 9 > rang 1. Le profil de rang 1 n'est pas modifiable.": "Rank 9 > Rank 1. The profile of Rank 1 is not editable.",
"Ratio": "Ratio",
"Ratio :": "Ratio:",
"Recherche": "Search",
"Recherche dans le site": "Search on the site",
"Rechercher": "Search",
"Rechercher une mise à jour en ligne": "Search for an online update",
"Redirection": "Redirection",
"Redirection vers la connexion": "Redirection to connection",
"Renommer": "Rename",
"Renseignez les champs ci-dessous pour finaliser l'installation.": "Fill in the fields below to finalize the installation.",
"Responsive (contain)": "Responsive (contain)",
"Responsive (cover)": "Responsive (cover)",
"Restauration des bases de données absentes": "Restoring missing databases",
"Restauration effectuée avec succès": "Restoration successfully completed",
"Restaurer": "Restore",
"Restaurer les données du site": "Restore site data",
"Rester connecté sur ce navigateur": "Stay connected on this browser",
"Retour": "Return",
"Rien à importer, erreur de format ou fichier incorrect": "Nothing to import, format error or incorrect file",
"Rédacteur": "Editor",
"Référencement": "SEO",
"Réinitialisation du mot de passe": "Reset password",
"Réinitialiser avec le thème par défaut": "Reset with the default theme",
"Réinitialiser la feuille de style": "Reset the style sheet",
"Réinitialiser la liste": "Reset the list",
"Réinitialiser le journal": "Reset the log file",
"Réinstaller": "Reinstall",
"Répétition": "Repetition",
"Réseau": "Network",
"Réseaux sociaux": "Social networks",
"S'ouvre dans un nouvel onglet": "Opens in a new tab",
"SMTP": "SMTP",
"SMTP personnalisé": "Custom SMTP",
"Saisir la clé, puis valider le formulaire avant de cliquer sur le bouton de génération": "Enter the key, then validate the form before clicking on the generation button",
"Saisissez le Titre de gestion des cookies.": "Enter the title of the cookie management window.",
"Saisissez le message pour les cookies déposés par ZwiiCMS, nécessaires au fonctionnement et qui ne nécessitent pas de consentement.": "Enter the message for cookies set by Zwiicms, necessary for operation and which do not require consent.",
"Saisissez le texte du lien vers les mentions légales,la page doit être définie dans la configuration du site.": "Enter the text of the link to the legal notices, the page must be defined in the site configuration.",
"Saisissez votre ID : https://pinterest.com/[ID].": "Enter your ID: https://pinterest.com/[ID].",
"Saisissez votre ID : https://twitter.com/[ID].": "Enter your ID: https://twitter.com/[ID].",
"Saisissez votre ID : https://www.facebook.com/[ID].": "Enter your ID: https://www.facebook.com/).",
"Saisissez votre ID : https://www.instagram.com/[ID].": "Enter your ID: https://www.instagram.com/ [ID].",
"Saisissez votre ID Github : https://github.com/[ID].": "Enter your GitHub ID: https://github.com/[ID].",
"Saisissez votre ID Linkedin : https://fr.linkedin.com/in/[ID].": "Enter your LinkedIn ID: https://fr.linkedin.com/in/[ID].",
"Saisissez votre ID Utilisateur : https://www.youtube.com/user/[ID].": "Enter your user ID: https://www.youtube.com/user/ [ID].",
"Sauvegarde": "Backup",
"Sauvegarde automatique quotidienne du site": "Daily automatic backup of the site",
"Sauvegarde du thème dans le": "Backup of the theme in the",
"Sauvegarde générée avec succès": "Successfully generated backup.",
"Sauvegarder": "Backup",
"Sauvegarder et télécharger le module": "Save and download the module",
"Sauvegarder le module dans le gestionnaire de fichiers": "Save the module in the file manager",
"Sauvegarder les données du module dans le gestionnaire de fichiers": "Save module data in the file manager",
"Sauvegarder les données du site": "Save site data",
"Script dans body": "Script in body",
"Script dans head": "Script in head",
"Scripts externes": "External scripts",
"Se déconnecter": "Logout",
"Service en ligne inaccessible": "Inaccessible online service",
"Seul un administrateur peut se connecter lors d'une maintenance": "Only an administrator can login during maintenance",
"Si le contenu du gestionnaire de fichiers est très volumineux, mieux vaut une copie par FTP.": "If the content of the file manager is very large, it is better to copy by FTP.",
"Signature": "Signature",
"Site": "Site",
"Site en maintenance": "Site under maintenance",
"Size": "Size",
"Source": "Source",
"Standard": "Standard",
"Style": "Style",
"Suppression interdite": "Deletion prohibited",
"Suppression interdite, page active dans la configuration de la langue du site": "Deletion not allowed, page is active in the site's language configuration",
"Supprime le point d'interrogation dans les URL, l'option est indisponible avec les autres serveurs Web": "Deletes the question mark in the URLs, the option is unavailable with other web servers",
"Supprimer": "Delete",
"Supprimer la page": "Delete the page",
"Supprimer le module": "Delete the module",
"Supprimer toutes les sauvegardes automatiques ?": "Remove all automatic backups?",
"Sur l'axe horizontal": "On the horizontal axis",
"Sur l'axe vertical": "On the vertical axis",
"Sur les deux axes": "On both axes",
"Sécurité": "Security",
"Sécurité de la connexion": "Connection security",
"Sécurité désactivée": "Safety deactivated",
"Sélectionner un fichier": "Select a file",
"Sélectionnez au moins un contenu à afficher": "Select at least one content to display",
"Sélectionnez la langue à copier vers une langue cible": "Select the language to copy to a target language",
"Sélectionnez une icône adaptée à un thème sombre.<br>Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.": "Select an icon adapted to a dark theme. <br> Remember to delete your browser's cache if the favicon does not change.",
"Sélectionnez une image ou une icône de petite dimension": "Select a small image or icon",
"Sélectionnez une langue": "Select a language",
"Sélectionnez une page contenant le module 'Recherche'. Une option du pied de page ajoute un lien discret vers cette page.": "Select a page containing the 'research' module. An option of the footer adds a discrete link to this page.",
"Sélectionnez une page pour activer": "Select a page to activate",
"Séparateur": "Separator",
"Taille": "Size",
"Text": "Text",
"Texte": "Text",
"Thème": "Theme",
"Thème de l'administration": "Administration theme",
"Thème du site": "Site theme",
"Thème importé": "Imported theme",
"Thèmes": "Themes",
"Titre": "Title",
"Titre court": "Short title",
"Titre masqué": "Masked title",
"Titre masqué dans la page": "Masked hidden in the page",
"Titres": "Titles",
"Tous les dossiers": "All Folders",
"Tous les droits d'édition des contenus": "All content editing rights",
"Tout Effacer": "Clear All",
"Traduction supprimée": "Translation deleted",
"Très grande": "Very large",
"Très grande (240%)": "Very large (240%)",
"Très grande (400px)": "Very large (400px)",
"Très important": "Very important",
"Très importante": "Very important",
"Très léger": "Very light",
"Très légère": "Very light",
"Très petite": "Very small",
"Très petite (100px) ": "Very small (100px)",
"Très petite (160%)": "Very small (160%)",
"Twitter": "Twitter",
"Type de captcha": "Type of Captcha",
"Type de proxy": "Proxy type",
"Téléchargement et validation de l'archive": "Download and validation of the archive",
"Télécharger": "Download",
"Télécharger la liste": "Download list",
"Télécharger le journal": "Download logs",
"Télécharger le module dans le gestionnaire de fichiers": "Download the module in the file manager",
"Téléverser": "Upload",
"URL incorrecte": "Incorrect url",
"Un mail a été envoyé pour confirmer la réinitialisation": "An email was sent to confirm the reset",
"Une archive du dossier /site/data est conservée pendant 30 jours. Activation recommandée": "An archive of the file /site/data is kept for 30 days. Recommended activation",
"Une erreur est survenue lors de l'étape :": "An error occurred during the stage:",
"Url du fichier de fonte": "Font file URL",
"Utilisateur inexistant": "Non-existent user",
"Utilisateur supprimé": "User deleted",
"Utilisateurs": "Users",
"Valider": "Submit",
"Version": "Version",
"Version n°": "Version n°",
"Vider dossier sauvegardes auto": "Empty auto backup files",
"Visiteur": "Visitor",
"Vous n'êtes pas autorisé à consulter cette page (erreur 403)": "You are not authorised to view this page (error 403)",
"Youtube": "Youtube",
"ZwiiCMS - Installation": "ZwiiCMS - Installation",
"actualisé": "updated",
"favicon.ico": "favicon.ico",
"faviconDark.ico": "favicondark.ico",
"gestionnaire de fichiers": "file manager",
"installé": "installed",
"jour": "day",
"jours": "days",
"sauvegardé avec succès": "successfully saved",
"vers": "to",
"À droite": "Right",
"À gauche": "Left",
"À l'emplacement du mot clé [MODULE] dans la page": "At the location of the keyword [MODULE] on the page",
"Échec de l'écriture, vérifiez les permissions": "Failure of writing, check permissions",
"Échecs": "Fail",
"Éditer": "Edit",
"Éditer la page": "Edit the page",
"Éditer les dialogues": "Edit dialogs",
"Éditer une catégorie": "Edit category",
"Éditeur": "Editor",
"Éditeur CSS": "CSS editor",
"Éditeur JS": "JS editor",
"Éditeur de script %s": "Script editor %s",
"Éditeur de script dans Body": "Script editor in Body",
"Éditeur de script dans Head": "Script editor in Head",
"Éditeur simple": "Simple editor",
"Édition des pages": "Page editing",
"Édition du profil %s": "Edit Profile %s",
"Éléments": "Items",
"Étendu sur la page": "Spread across the page",
"Étiquettes des pages spéciales": "Special pages labels",
"Dimensions minimales": "Minimum dimensions",
"Taille maximale du fichier": "Maximum file size",
"5 Mo pour les images JPEG": "5 MB for JPEG images",
"1 Mo pour les images PNG": "1 MB for PNG images",
"Poids": "Weight",
"Supprimer ce profil ?": "Delete this profile?",
"Masqué": "Hidden",
"Haut de page": "Top of Page",
"Bas de page": "Bottom of Page",
"Petit triangle": "Small Triangle",
"Grand triangle": "Large Triangle",
"Flèche": "Arrow",
"Modèle": "Template",
"Bouton de navigation droit": "Right Navigation Button",
"Bouton de navigation gauche": "Left Navigation Button",
"Groupes / Profils": "Groups / Profiles",
"Prénom commence par": "First Name starts with",
"Nom commence par": "Last Name starts with",
"Impossible de réinitialiser le mot de passe de ce compte !": "Impossible to reset this account password!"
}

View File

@ -0,0 +1,693 @@
{
"'Ne pas afficher' crée une page orpheline non accessible par le biais des menus.": "'No mostrar' crea una página huérfana a la que no se puede acceder a través de los menús.",
"'Sauvegarder et télécharger les données du module": "Guardar y descargar de los datos del módulo",
"1 jour": "1 Jour",
"1/4 : Préparation...": "1/4: Preparando...",
"10 minutes": "10 minutos",
"10 tentatives": "6 intentos",
"14 jours": "14 dias",
"15 minutes": "15 minutos",
"2 jours": "2 dias",
"2/4 : Téléchargement...": "2/4: Descargando...",
"3 tentatives": "3 intentos",
"3/4 : Installation...": "3/4: Instalando...",
"4 jours": "4 días",
"4/4 : Configuration...": "4/4: Configuración...",
"5 minutes": "5 minutos",
"5 tentatives": "5 intentos",
"7 jours": "7 días",
"Accueil": "Inicio",
"Accède au site": "Acceso al sitio",
"Accède aux pages réservées": "Acceso a páginas restringidas",
"Accède aux pages réservées et à un dossier partagé": "Acceso a páginas restringidas y una carpeta compartida",
"Accès bloqué %d minutes": "Acceso bloqueado minutos",
"Accès désactivé": "Acceso desactivado",
"Accès interdit, erreur 403": "Acceso denegado, error 403",
"Action interdite": "Acción no permitida",
"Activation obligatoire selon les lois françaises sauf si vous utilisez votre propre système de consentement.": "Activación obligatoria según las leyes francesas a menos que utilice su propio sistema de consentimiento.",
"Activer": "Activar",
"Activer la journalisation": "Habilitar registro",
"Actualiser": "Actualizar",
"Adaptation": "Adaptación",
"Administrateur": "Administrador",
"Administration": "Administración",
"Adresse SMTP": "Dirección SMTP",
"Adresse du proxy": "Dirección proxy",
"Adresse électronique": "Correo electrónico",
"Affectation": "Asignación",
"Affiche le nom de la page parente suivi du nom de la page, le titre ne doit pas être masqué.": "Mostrar el nombre de la página principal seguido del nombre de la página, el título no debe ocultarse.",
"Affiche les icônes de gestion du compte et de déconnexion des membres simples connectés": "Muestra los iconos de gestión de cuenta y cierre de sesión para miembros regulares conectados",
"Afin d'assurer le bon fonctionnement de Zwii, veuillez ne pas fermer cette page avant la fin de l'opération.": "Para garantizar el correcto funcionamiento de Zwii, no cierre esta página antes de que se complete la operación",
"Aide": "Ayuda",
"Ajouter": "Agregar",
"Ajouter un profil": "Agregar un perfil",
"Ajouter un utilisateur": "Agregar usuario",
"Ajouter une fonte": "Añadir tipografía",
"Alignement": "Alineación de contenido",
"Aligner la bannière avec le contenu": "Alinear el banner con el contenido",
"Ancien mot de passe": "Antigua contraseña",
"Anonymat des adresses IP": "Anonimato de la dirección IP",
"Apache URL intelligent": "URL inteligente de Apache",
"Apache URL intelligentes": "URL inteligentes de Apache",
"Apparence": "Apariencia",
"Appliquer": "Aplicar",
"Approuver un commentaire": "Aprobar comentarios",
"Après": "Después",
"Après la bannière": "Después del banner",
"Après le contenu de la page": "Después del contenido de la página",
"Archive": "Archivo",
"Archive ZIP": "Archivo ZIP",
"Archive copiée dans le dossier Modules du gestionnaire de fichier": "Archivo copiado a la carpeta Módulos del administrador de archivos",
"Archive de thème invalide": "Archivo de tema no válido",
"Archive invalide": "Archivo no válido",
"Archive invalide, l'écriture dans le dossier core est interdite": "Archivo no válido, está prohibido escribir en la carpeta core",
"Archive invalide, le descripteur est absent": "Archivo no válido, falta el descriptor",
"Archive invalide, le fichier de classe est absent": "Archivo no válido, falta el archivo de clase",
"Archive invalide, les dossiers ne correspondent pas au descripteur": "Archivo no válido, las carpetas no coinciden con el descriptor",
"Archive non spécifiée ou introuvable": "Archivo no especificado o no encontrado",
"Archive à restaurer": "Archivo para restaurar",
"Arrière plan": "Fondo",
"Arrière plan des blocs": "Fondo de bloques",
"Arrière plan des champs": "Fondo de zona",
"Arrondi des angles": "Redondeo de ángulos",
"Au centre": "En el centro",
"Au début": "Al principio",
"Au milieu au centre": "En el medio en el centro",
"Au milieu à droite": "En el medio derecho",
"Au milieu à gauche": "En el medio a la izquierda",
"Au-dessus du site": "Por encima del sitio",
"Aucun": "Ninguno",
"Aucun dossier": "Sin carpeta",
"Aucun fichier journal à télécharger": "No hay archivos de registro para descargar",
"Aucun journal à effacer": "No hay registros para borrar",
"Aucun menu": "Ningún menú",
"Aucune": "Ninguna",
"Aucune liste noire à effacer": "No hay lista negra para borrar",
"Aucune liste noire à télécharger": "No hay lista negra para descargar",
"Auteur :": "Autor",
"Authentification": "Autenticación",
"Automatique": "Automáquica",
"Autoriser les robots à référencer le site": "Permitir que los robots hagan referencia al sitio",
"Autorisé": "Autorizado",
"Avant la bannière": "Antes del banner",
"Avant le contenu de la page": "Antes del contenido de la página",
"Background": "Fondo",
"Banni": "Prohibición",
"Bannière": "Banner",
"Bannière cliquable": "Banner",
"Barre 1/3 - page 2/3": "Barra 1/3 - página 2/3",
"Barre 1/4 - page 1/2 - barre 1/4": "Barra 1/4 - página 1/2 - Barra 1/4",
"Barre 1/4 - page 3/4": "Barra 1/4 - página 3/4",
"Barre 2/12 - page 7/12 - barre 3/12": "Barra 2/12 - página 7/12 - Barra 3/12",
"Barre 3/12 - page 7/12 - barre 2/12": "Barra 3/12 - página 7/12 - Barra 2/12",
"Barre de membre": "Barra de miembro",
"Barre latérale": "Barra lateral",
"Barre latérale droite :": "Barra lateral derecha:",
"Barre latérale gauche :": "Barra lateral izquierda:",
"Barres latérales": "Barras laterales",
"Bienvenue %s %s": "Bienvenido %s %s",
"Blocage après échecs": "Bloquear después de fallar",
"Blog": "Blog",
"Bords arrondis": "Bordes redondeados",
"Bordure des blocs": "Borde de bloques",
"Bordure des champs": "Borde de zona",
"Bouton Aide": "Boton de ayuda",
"Bouton Standard": "Botón estándar",
"Bouton de validation": "Botón Validación",
"Bouton effacement": "Botón Eliminar",
"Bouton retour": "Botón de retroceso",
"Bouton standard": "Botón estándar",
"Bouton validation": "Botón de validación",
"Boutons": "Botones",
"Caché": "Oculto",
"Cachée": "Oculto",
"Captcha complexe": "Captcha complejo",
"Captcha à la connexion": "Captcha al iniciar sesión",
"Captcha, identifiant ou mot de passe incorrects": "Captcha, nombre de usuario o contraseña incorrecta",
"Capture d'écran Open Graph": "Captura de pantalla de Open Graph",
"Capture d'écran générée avec succès": "Captura de pantalla generada con éxito",
"Casse": "Roto",
"Catalogue": "Catálogo",
"Catégorie": "Categoría",
"Ce membre pourra téléverser ou télécharger des fichiers dans le dossier 'partage' et ses sous-dossiers": "Este miembro podrá cargar o descargar archivos en la carpeta 'compartir' y sus subcarpetas",
"Cette page ne doit pas apparaître dans l'arborescence du menu. Créez une page orpheline.": "Esta página no debería aparecer en el árbol del menú. Crear una página huérfana.",
"Cette redirection ne concerne que les pages d'administration du site.": "Esta redirección solo afecta a las páginas de administración del sitio.",
"Chaîne Youtube": "Canal de Youtube",
"Chiffres": "Cifras",
"Cible": "Objetivo",
"Cliquez sur une zone afin d'accéder à ses options de personnalisation.": "Haga clic en un área para acceder a sus opciones de personalización.",
"Commentaire": "Comentario",
"Complète": "sin truncar",
"Compte administrateur": "Cuenta de administrador",
"Compte de l'utilisateur": "Cuenta de usuario",
"Compte verrouillé": "Cuenta bloqueada",
"Configuration": "Configuración",
"Configuration du module": "Configuración del módulo",
"Configurer": "Configurar",
"Configurer mon compte": "Configurar mi cuenta",
"Confirmation": "Confirmación",
"Confirmer la suppression de cet utilisateur": "Confirmar eliminación de este usuario",
"Confirmer la dissociation du module de cette page": "Confirmar desvincular módulo de esta página",
"Confirmer la désinstallation du module": "Confirmar la desinstalación del módulo",
"Confirmer la suppression de cet utilisateur": "Confirme la eliminación de este usuario",
"Confirmer la suppression de cette langue": "Confirmar eliminación de este idioma",
"Confirmer la suppression de la page": "Confirmar la eliminación de la página",
"Confirmer la suppression des données du module": "Confirmar la eliminación de datos del módulo",
"Confirmez-vous la suppression de cette page ?": "¿Confirma la eliminación de esta página?",
"Connexion": "Conexión",
"Consulter l'aide en ligne": "Consultar la ayuda en línea",
"Contents": "Contenido",
"Contenu": "Contenido",
"Contenu HTML": "Contenido HTML",
"Contenu avancé": "Contenido avanzado",
"Contenu du menu vertical": "Contenido del menú vertical",
"Contrôle total": "Control total",
"Cookies": "Cookies",
"Cookies Zwii": "Cookies Zwii",
"Copie de contenus localisés": "Copia de contenidos localizados",
"Copie de sites inter-langues": "Copia del sitio multilingües",
"Copie des traductions rédigées": "Copia de traducciones redactadas",
"Copie terminée avec des erreurs": "Copia completada con errores",
"Copie terminée avec succès": "Copia completada con éxito",
"Copier": "Copiar",
"Copier sauvegardes auto": "Copiar guardados automáticos",
"Couleur de fond automatique": "Color de fondo automático",
"Couleur icône haut de page": "Color del icono superior de la página",
"Couleur texte page active": "Color del texto de página activa",
"Couleur unie ou papier-peint": "Color unido o papel tapiz",
"Couleur visible en l'absence d'une image.<br />Le curseur horizontal règle le niveau de transparence.": "Color visible en ausencia de una imagen.<br />El control deslizante horizontal ajusta el nivel de transparencia.",
"Couleur visible en l'absence d'une image.<br />Le curseur horizontal règle le niveau de transparence. La couleur du texte est automatique.": "Color visible en ausencia de una imagen.<br />El control deslizante horizontal ajusta el nivel de transparencia. El color del texto es automático.",
"Couleurs": "Colores",
"Dans le site": "En el sitio",
"Dans quelle langue utiliserez-vous Zwii ?": "¿En qué idioma usará Zwii?",
"Date": "fecha",
"Description": "Descripción del sitio",
"Disponible si le consentement des cookies est activé.": "Disponible si se ha otorgado el consentimiento de las cookies.",
"Disposition": "Arreglo",
"Données %s copiées vers %s": "Datos %s copiados hacia %s",
"Données des modules": "Datos de los módulos",
"Données importées": "Datos importados",
"Dossier": "Carpeta",
"Droits sur les dossiers": "Derechos de las carpetas",
"Droits sur les fichiers": "Derechos de los archivos",
"Dupliquer": "Duplicar",
"Dupliquer la page": "Duplicar la página",
"Déconnecte les sessions ouvertes précédemment sur d'autres navigateurs ou terminaux. Activation recommandée.": "Desconecte sesiones abiertas previamente en otros navegadores o dispositivos. Activación recomendada.",
"Déconnecter": "Desconectar",
"Déconnexion !": "¡Cerrar sesión!",
"Déconnexion automatique": "Cierre de sesión automático",
"Définir par défaut": "Establecer como predeterminado",
"Dévoiler le mot de passe": "Revelar la contraseña",
"Effacer": "Borrar",
"Effacer la page": "Borrar página",
"Effacer tous les commentaires": "Borrar todos los comentarios",
"Effacer toutes les statistiques": "Borrar todas las estadísticas",
"Effacer un commentaire": "Borrar el comentario",
"Effacer une catégorie": "Borrar categoría",
"Emplacement :": "Ubicación",
"Emplacement dans le menu": "Ubicación en el menú",
"En bas au centre": "Abajo en el centro",
"En bas à droite": "Abajo a la derecha",
"En bas à gauche": "Abajo a la izquierda",
"En cas de changement de module, les données du module précédent seront supprimées.": "Al cambiar de módulo se borrarán los datos del módulo anterior.",
"En dessous du site": "Debajo del sitio",
"En haut au centre": "Cubra en el centro",
"En haut à droite": "Arriba a la derecha",
"En haut à gauche": "Arriba a la izquierda",
"En position libre ajoutez le module en plaçant [MODULE] à l'endroit voulu dans votre page.": "En posición libre agregue el módulo colocando [MODULE] en la ubicación deseada en su página.",
"En-dehors du site": "Fuera del sitio",
"Enregistrer": "Registrar",
"Envoyer un message de confirmation": "Enviar mensaje de confirmación",
"Erreur : sauvegarde non générée !": "Error: copia de seguridad no generada!",
"Erreur d'URL": "Error de URL",
"Erreur d'extraction, vérifiez les permissions": "Error de extracción, verifique los permisos",
"Erreur de copie": "Error de copia",
"Erreur de copie, vérifiez les permissions": "error de copia, verifique las permisiones",
"Erreur de lecture, vérifiez les permissions": "Error de lectura, verifique los permisos",
"Erreur inconnue": "error desconocido",
"Erreur inconnue, le module n'est pas installé": "Error desconocido, el módulo no está instalado",
"Export CSV": "Exportar CSV",
"Expéditeur": "Remitente",
"Extension": "Extensión",
"Extraire": "Extraer",
"Facebook": "Facebook",
"Famille": "Vínculo",
"Favicon thème sombre": "favicon de tema oscuro",
"Feuille de style spécifique à la page.": "Hoja de estilo específica de la página.",
"Fichiers": "Archivos",
"Fichiers effacés": "archivos borrados",
"Fil d'Ariane dans le titre": "Migas de pan en el título",
"Fond du sous-menu": "Fondo del submenú",
"FontId": "ID de fuente",
"Fonte": "Fuente",
"Fonte actualisée": "fuente actualizada",
"Fonte créée": "Fuente creada",
"Fonte en ligne": "Tipografía en línea",
"Fonte installée": "Tipografía instalada",
"Fonte non créée, ressource absente !": "¡Fuente no creada, por falta recurso!",
"Fonte supprimée": "Fuente eliminada",
"Fontes": "Tipografias",
"Format incorrect": "Formato incorrecto",
"Formulaire": "Formulario",
"Fréquence de recherche": "Frecuencia de búsqueda",
"Fuseau horaire": "Zona horaria",
"Gabarits de page - Barre latérale": "Patrón de página - Barra lateral",
"Gestion": "Administrar",
"Gestion des modules": "Gestión de módulos",
"Gestion des thèmes": "Gestión de temas",
"Gestionnaire de fichiers": "Administrador de archivos",
"Github": "Github",
"Grande": "Grande",
"Grande (220%)": "Grande (220%)",
"Grande (300px)": "Grande (300px)",
"Gras": "Negrita",
"Groupe": "Grupo",
"Groupe associé": "Grupo asociado",
"Groupe requis pour accéder à la page :": "Grupo necesario para acceder a la página:",
"Groupes": "Grupos",
"Générer sitemap.xml et robots.txt": "Generar sitemap.xml y robots.txt",
"Générer une capture Open Graph": "Generar una captura de Open Graph",
"Gérer les catégories": "Gestionar categorías",
"Gérer les commentaires": "Administrar comentarios",
"Gérer les données": "Administrar datos",
"Hauteur": "Altura",
"Hauteur de l'image": "Altura de la imagen",
"Hauteur de l'image sélectionnée": "Altura de la imagen seleccionada",
"Hauteur maximale": "Altura máxima",
"ID de la chaîne : https://www.youtube.com/channel/[ID].": "ID del canal: https://www.youtube.com/channel/[ID].",
"Icône": "Icono",
"Icône avec bulle de texte": "Icono con burbuja de texto",
"Icône haut de page, couleur arrière-plan": "Icono superior de la página, color de fondo",
"Identifiant": "Identificación",
"Identifiant (sans espace ni majuscule)": "Identificación (sin espacios ni mayúsculas)",
"Identité": "Identificación",
"Identité de la fonte": "Identidad de tipografía",
"Identité du site": "identidad del sitio",
"Il apparaît dans la barre de titre et les partages sur les réseaux sociaux.": "Aparece en la barra de título y se comparte en redes sociales.",
"Image": "Imagen",
"Image étirée (100% 100%)": "Imagen estirada (100% 100%)",
"Important": "Importante",
"Importante": "Importante",
"Importation d'utilisateurs": "Importación de usuarios",
"Importation de fichier plat CSV": "Importar archivo plano CSV",
"Importation effectuée": "Importación realizada",
"Importer": "Importar",
"Importer dans": "Importar a",
"Importer des utilisateurs en masse": "Importar usuarios de forma masiva",
"Impossible d'ouvrir l'archive": "No se puede abrir el archivo",
"Impossible de modifier votre propre groupe.": "No puede editar su propio grupo.",
"Impossible de soumettre le formulaire, car il contient des erreurs": "No se puede enviar el formulario porque contiene errores",
"Impossible de supprimer une page contenant des pages enfants": "No se puede eliminar una página que contiene páginas secundarias",
"Impossible de supprimer votre propre compte": "No puede eliminar su propia cuenta",
"Inclure le contenu du gestionnaire de fichiers": "Incluir el contenido del administrador de archivos",
"Incorrect": "Incorrecto",
"Informations": "Información",
"Instagram": "Instagram",
"Installation terminée": "instalación completa",
"Installer": "Instalar",
"Installer depuis le catalogue en ligne": "Instalar desde el archivo en línea",
"Installer depuis une archive": "Instalar desde un archivo",
"Installer les données d'un module": "Instalar datos de un módulo",
"Installer ou mettre à jour un module téléchargé": "Instalar o actualizar un módulo descargado",
"Installer un module": "Instalar un módulo",
"Installer un thème archivé (site ou administration)": "Instalar un tema archivado (sitio o administración)",
"Instructions JS ou jquery spécifiques à la page.": "Instrucciones JS o jquery específicas de la página.",
"Interface": "Idiomas interfaz",
"Jeton invalide": "Simbolo no valido",
"Journal réinitialisé avec succès": "Registro reiniciado con éxito",
"Journalisation": "Inicio sesión",
"L'archive a été déposée dans le gestionnaire de fichiers. Les archives inférieures à la version 9 ne sont pas acceptées.": "El archivo ha sido depositado en el administrador de archivos. No se aceptan archivos inferiores a la versión 9.",
"L'identifiant est défini lors de la création du compte, il ne peut pas être modifié.": "El identificador se define al crear la cuenta, no se puede modificar.",
"La carte du site a été mise à jour": "El mapa del sitio ha sido actualizado.",
"La copie de sauvegarde du fichier htaccess n'a pas été restaurée !": "¡La copia de seguridad del archivo htaccess no ha sido restaurada!",
"La description d'une page participe à son référencement, chaque page doit disposer d'une description différente.": "La descripción de una página participa en su referenciación, cada página debe tener una descripción diferente.",
"La page %s est ouverte par l'utilisateur %s": "La página %s ha sido abierta por el usuario %s",
"La page demandée n'existe pas ou est introuvable (erreur 404)": "La page demandée n'existe pas ou est introuvable (erreur 404)",
"La page est affichée dans un menu horizontal mais pas dans le menu vertical d'une barre latérale.": "La página se muestra en un menú horizontal pero no en el menú vertical de una barra lateral.",
"La première page que vos visiteurs verront.": "La primera página que verán tus visitantes.",
"La règlementation française impose un anonymat de niveau 2": "La normativa francesa impone el anonimato de nivel 2",
"La réécriture d'URL n'a pas été restaurée !": "¡La reescritura de URL no ha sido restaurada!",
"La sauvegarde des fichiers peut prendre du temps. Continuer ?": "La copia de seguridad de los archivos puede tardar un poco. ¿Desea continuar?",
"La suppression a échoué": "Eliminación fallida",
"La version installée est plus récente": "La versión instalada es más nueva.",
"La vérification est quotidienne. Option désactivée si la configuration du serveur ne le permet pas.": "La comprobación es diaria. Opción deshabilitada si la configuración del servidor no lo permite.",
"Langue de l'administration": "Idioma de la administración",
"Langue du site par défaut": "Idioma predeterminado del sitio",
"Langue par défaut": "Idioma predeterminado",
"Langues": "Idiomas",
"Langues disponibles": "Idiomas Disponibles",
"Langues installées": "Idiomas instalados",
"Largeur": "Anchura o Ancho",
"Largeur de l'image": "Ancho de la imagen",
"Largeur du site": "Ancho del sitio",
"Le curseur horizontal règle le niveau de transparence, le placer tout à la gauche pour un surlignement invisible.": "El control deslizante horizontal establece el nivel de transparencia, colóquelo completamente hacia la izquierda para obtener un resaltado invisible.",
"Le curseur horizontal règle le niveau de transparence.": "El cursor horizontal regula el nivel de transparencia.",
"Le fuseau horaire est utile au bon référencement": "La zona horaria es útil para una buena referencia",
"Le menu accessoire est aligné à droite de la barre de menu, c'est un emplacement réservé aux drapeaux et au bouton de connexion.": "El menù accesorio está alineado a la derecha de la barra de menú, es un marcador de posición para las banderas y el botón de inicio de sesión",
"Le menu horizontal intégral": "El menú horizontal completo",
"Le module %s a été %s": "El módulo %s ha sido %s",
"Le module %s de la page %s a été supprimé": "Se eliminó el módulo %s de la página %s",
"Le module %s est désinstallé, il reste peut-être des données dans %s": "El módulo %s está desinstalado, es posible que queden datos en %s",
"Le sous-menu de la page parente": "El submenú de la página principal",
"Le survol d'une icône de l'écran de connexion affiche temporairement le mot de passe.": "Al pasar el cursor sobre un ícono de la pantalla de inicio de sesión, se muestra temporalmente la contraseña",
"Le titre court est affiché dans les menus. Il peut être identique au titre de la page.": "El título corto se muestra en los menús. Puede ser el mismo que el título de la página.",
"Les langues sélectionnées sont identiques": "Los idiomas seleccionados son idénticos",
"Les mentions légales sont obligatoires en France. Une option du pied de page ajoute un lien discret vers cette page.": "Los avisos legales son obligatorios en Francia. Una opción en el pie de página agrega un enlace discreto a esta página.",
"Les modifications que vous avez apportées ne seront peut-être pas enregistrées.": "Es posible que no se guarden los cambios realizados.",
"Les tailles des polices de la bannière, de menu et de pied de page sont proportionnelles à cette taille.": "Los tamaños de fuente del banner, menú y pie de página son proporcionales a este tamaño.",
"Lettres": "Letras",
"Libre": "Libre",
"Licence :": "Licencia",
"Lien de connexion": "Enlace de inicio de sesión",
"Lien page des mentions légales.": "Enlace página aviso legal.",
"Liens": "Enlaces",
"Limitation des tentatives": "Limitación de intentos",
"Limitée au site": "Limitado al sitio",
"Linkedin": "Linkedin",
"Liste noire": "Lista negra",
"Liste noire réinitialisée avec succès": "Lista negra restablecida con éxito",
"Lors d'une mise à jour automatique, conserve le fichier htaccess de la racine du site.": "Durante una actualización automática, mantenga el archivo htaccess de la raíz del sitio.",
"Léger": "Ligero",
"Légère": "Ligera",
"Maigre": "Delgado",
"Maintenance": "Mantenimiento",
"Majuscule à chaque mot": "Capper con cada palabra",
"Majuscules": "Letras mayúsculas",
"Marges verticales": "Márgenes verticales",
"Masquer la bannière en écran réduit": "Ocultar el banner en pantalla reducida",
"Masquer la page et les pages enfants dans le menu d'une barre latérale": "Ocultar página y páginas secundarias en un menú de la barra lateral",
"Masquer les pages enfants dans le menu horizontal": "Ocultar páginas secundarias en el menú horizontal",
"Membre": "Miembro",
"Membre avec droit de partage": "Miembro con derecho de compartir",
"Membre simple": "Miembro simple",
"Mentions légales": "Notas legales",
"Menu": "Menù",
"Menu accessoire": "Menú accesorio",
"Menu burger dans écran réduit": "Menú hamburguesa en pantalla reducida",
"Menu standard": "Menú estándar",
"Message d'acceptation des Cookies": "Mensaje de aceptación de cookies",
"Message de consentement aux cookies": "Mensaje de consentimiento de cookies",
"Mettre à jour": "Actualizar",
"Mettre à jour le module orphelin": "Actualizar módulo huérfano",
"Minuscules": "Diminuto",
"Mise en forme des titres": "Formato de título",
"Mise en forme du texte": "Formato de texto",
"Mise en forme du titre": "Formato de título",
"Mise en page": "Diseño",
"Mise à jour": "actualización",
"Mise à jour automatisée": "Actualización automática",
"Mise à jour terminée avec succès.": "Actualización completada con éxito.",
"Modifications enregistrées": "Cambios guardados",
"Module": "Módulo",
"Module de la page": "Módulo de página",
"Modules": "Módulos",
"Modules configurés": "Módulos Configurados",
"Modules installés": "Módulos instalados",
"Modules orphelins": "Módulos huérfanos",
"Mot de passe": "Contraseña",
"Mot de passe oublié": "Contraseña olvidada",
"Mot de passe perdu": "Contraseña perdida",
"Motorisé par": "Motorizado por",
"Moyen": "Medio",
"Moyenne": "Media",
"Moyenne (200%)": "Promedio (200%)",
"Moyenne (200px)": "Promedio (200px)",
"Méta-description": "Meta-descripción",
"Méta-titre": "Meta-título",
"Ne pas afficher": "No se muestra",
"Ne pas charger l'exemple de site (utilisateurs avancés)": "No cargar sitio de muestra (usuarios avanzados)",
"Ne pas répéter": "No repitas",
"Ne pas saisir les balises": "No ingrese las etiquetas",
"News": "Noticias",
"Niveau 1 (192.168.12.x)": "Nivel 1 (192.168.12.x)",
"Niveau 2 (192.168.x.x)": "Nivel 2 (192.168.x.x)",
"Niveau 3 (192.x.x.x)": "Nivel 3 (192.x.x.x)",
"Nom": "Nombre",
"Nom Prénom": "Apellido nombre",
"Nom du profil": "Nombre del perfil",
"Nom utilisateur": "Nombre de usuario",
"Non": "No",
"Non tronquée": "Sin personal",
"Notre site est actuellement en maintenance. Nous sommes désolés pour la gêne occasionnée et faisons notre possible pour être rapidement de retour.": "Nuestro sitio está actualmente en mantenimiento. Lamentamos las molestias y estamos haciendo todo lo posible para regresar lo antes posible",
"Nouveau contenu localisé": "Nuevo contenido localizado",
"Nouveau mot de passe": "Nueva contraseña",
"Nouveau mot de passe enregistré": "Nueva contraseña guardada",
"Nouvel utilisateur": "Nuevo usuario",
"Nouvelle page créée": "Nueva página creada",
"Nouvelle page ou barre latérale": "Nueva página o barra lateral",
"Obligatoire": "Obligatorio",
"Ombre": "Sombra",
"Option active en mode déconnecté uniquement, les pages enfants sont visibles et accessibles.": "Opción activa solo en modo fuera de línea, las páginas secundarias son visibles y accesibles.",
"Option recommandée pour sécuriser la connexion. S'applique à tous les captchas du site. Le captcha simple se limite à une addition de nombres de 0 à 10. Le captcha complexe utilise quatre opérations de nombres de 0 à 20. Activation recommandée.": "Opción recomendada para asegurar la conexión. Se aplica a todos los captchas en el sitio. El captcha simple está limitado a una suma de números del 0 al 10. El captcha complejo usa cuatro operaciones de números del 0 al 20. Activación recomendada.",
"Options": "Opciones",
"Options avancées": "Opciones avanzadas",
"Origine": "Origen",
"Oui": "Sí",
"Page": "Página",
"Page 2/3 - barre 1/3": "página 2/3 - Barra 1/3",
"Page 3/4 - barre 1/4": "página 3/4 - Barra 1/4",
"Page associée": "Página asociada",
"Page de recherche": "Página de búsqueda",
"Page dupliquée": "Página duplicada",
"Page et module dupliqués": "Página y módulo duplicados",
"Page inexistante, erreur 404": "La página no existe, error 404",
"Page non cliquable": "No se puede hacer clic en la página",
"Page parent": "Página principal",
"Page standard": "Página estándar",
"Page supprimée": "página eliminada",
"Pages dans le menu": "Páginas del menú",
"Pages du site": "Páginas del sitio",
"Pages et les modules de": "Páginas y módulos",
"Pages orphelines": "Páginas huérfanas",
"Papier peint": "Color de fondo",
"Par défaut le menu est affiché APRES le contenu de la page. Pour le positionner à un emplacement précis, insérez [MENU] dans le contenu de la page.": "Por defecto, el menú se muestra DESPUÉS del contenido de la página. Para colocarlo en una ubicación específica, inserte [MENÚ] en el contenido de la página.",
"Paramètres": "Configuraciones",
"Paramètres de la localisation": "Configuración de la ubicación",
"Paramètres de la sauvegarde": "Configuración de copia de seguridad",
"Paramètres du profil": "Configuración del perfil",
"Paramètres à utiliser lorsque votre hébergeur ne propose pas la fonctionnalité d'envoi de mail.": "Configuraciones para usar cuando su host no ofrece la funcionalidad para enviar correo.",
"Pas de marge au-dessus et en dessous du site": "Sin margen encima y debajo del sitio",
"Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.": "Recuerde eliminar el caché de su navegador si el favicon no cambia.",
"Permission": "Permiso",
"Permission et référencement": "Permiso y referenciación",
"Permissions": "Permisos",
"Permissions sur les dossiers": "Permisos de las carpetas",
"Permissions sur les fichiers": "Permisos de los archivos",
"Permissions sur les pages": "Permisos de las páginas",
"Petite": "Pequeño",
"Petite (150px)": "Pequeño (150px)",
"Petite (180%)": "Petite (180%)",
"Pied de page": "Pie de página",
"Pinterest": "Pinterest",
"Plan du site": "Mapa del sitio",
"Police des titres": "Tipografía del titulo",
"Police du texte": "Tipografía del texto",
"Port SMTP": "Puerto SMTP",
"Port du proxy": "Puerto proxy",
"Position": "Posición",
"Position du module": "Posición del módulo",
"Pour définir la page comme barre latérale, choisissez l'option dans la liste.": "Para configurar la página como barra lateral, elija la opción de la lista.",
"Presse Papier": "Portapapeles",
"Presse papier": "Portapapeles",
"Profils des groupes": "Perfiles de grupos",
"Proportionnelle à la taille définie dans le site.": "Proporcional a la definida en el sitio.",
"Prénom": "Nombre de pila",
"Prénom Nom": "Nombre Apellido",
"Préparation de la mise à jour": "Preparáción de la actualización",
"Préserver le fichier htaccess racine": "Conservar archivo raíz htaccess",
"Préserver les comptes des utilisateurs déjà installés": "Conservar las cuentas de usuario ya instaladas",
"Prévenir l'utilisateur par mail": "Notificar al usuario por correo electrónico",
"Prévisualiser": "Previsualizar",
"Pseudo": "Apodo",
"Rang 9 > rang 1. Le profil de rang 1 n'est pas modifiable.": "Rango 9 > rango 1. El perfil del rango 1 no se puede modificar.",
"Ratio": "Proporción",
"Ratio :": "Relación",
"Recherche": "Buscar",
"Recherche dans le site": "Buscar en el sitio",
"Rechercher": "Buscar",
"Rechercher une mise à jour en ligne": "Buscar una actualización en línea",
"Redirection": "Redirección",
"Redirection vers la connexion": "Redirección hacia conexión",
"Renommer": "Renombrar",
"Renseignez les champs ci-dessous pour finaliser l'installation.": "Complete las zonas a continuación para terminar la instalación.",
"Responsive (contain)": "Responsivo (contener)",
"Responsive (cover)": "Responsivo (cobertura)",
"Restauration des bases de données absentes": "Restauración de bases de datos faltantes",
"Restauration effectuée avec succès": "Restauración completada con éxito",
"Restaurer": "Restaurar",
"Restaurer les données du site": "Restaurar datos del sitio",
"Rester connecté sur ce navigateur": "Permanecer conectado en este navegador",
"Retour": "Retroceder",
"Rien à importer, erreur de format ou fichier incorrect": "Nada que importar, error de formato o archivo incorrecto",
"Rédacteur": "Editor",
"Référencement": "Referenciación",
"Réinitialisation du mot de passe": "Restablecer la contraseña de usuario",
"Réinitialiser avec le thème par défaut": "establecer tema predeterminado",
"Réinitialiser la feuille de style": "Restablecer hoja de estilo",
"Réinitialiser la liste": "Restablecer lista",
"Réinitialiser le journal": "Restablecer registro",
"Réinstaller": "Reinstalar",
"Répétition": "Repetición",
"Réseau": "La red",
"Réseaux sociaux": "Redes sociales",
"S'ouvre dans un nouvel onglet": "Se abre en una nueva pestaña",
"SMTP": "SMTP",
"SMTP personnalisé": "SMTP personalizado",
"Saisir la clé, puis valider le formulaire avant de cliquer sur le bouton de génération": "Ingrese la clave, luego valide el formulario antes de hacer clic en el botón generar",
"Saisissez le Titre de gestion des cookies.": "Introduce el título de la ventana de gestión de cookies.",
"Saisissez le message pour les cookies déposés par ZwiiCMS, nécessaires au fonctionnement et qui ne nécessitent pas de consentement.": "Ingrese el mensaje para las cookies colocadas por ZwiiCMS, necesarias para su funcionamiento y que no requieren consentimiento.",
"Saisissez le texte du lien vers les mentions légales,la page doit être définie dans la configuration du site.": "Ingrese el texto del enlace a los avisos legales, la página debe estar definida en la configuración del sitio.",
"Saisissez votre ID : https://pinterest.com/[ID].": "Ingrese su ID: https://pinterest.com/[ID].",
"Saisissez votre ID : https://twitter.com/[ID].": "Ingrese su ID: https://twitter.com/[ID].",
"Saisissez votre ID : https://www.facebook.com/[ID].": "Ingrese su ID: https://www.facebook.com/[ID].",
"Saisissez votre ID : https://www.instagram.com/[ID].": "Ingrese su ID: https://www.instagram.com/[ID].",
"Saisissez votre ID Github : https://github.com/[ID].": "Ingrese su ID de Github: https://github.com/[ID].",
"Saisissez votre ID Linkedin : https://fr.linkedin.com/in/[ID].": "Ingrese su ID de Linkedin: https://fr.linkedin.com/in/[ID].",
"Saisissez votre ID Utilisateur : https://www.youtube.com/user/[ID].": "Ingrese su ID de usuario: https://www.youtube.com/user/[ID].",
"Sauvegarde": "Salvaguardad",
"Sauvegarde automatique quotidienne du site": "Copia de seguridad diaria automática del sitio",
"Sauvegarde du thème dans le": "Guardando tema en el",
"Sauvegarde générée avec succès": "Copia de seguridad generada con éxito",
"Sauvegarder": "Para salvaguardar",
"Sauvegarder et télécharger le module": "Guardar y descargar módulo",
"Sauvegarder le module dans le gestionnaire de fichiers": "Guardar módulo en el administrador de archivos",
"Sauvegarder les données du module dans le gestionnaire de fichiers": "Guardar de los datos del módulo en el administrador de archivos",
"Sauvegarder les données du site": "Guardar datos del sitio",
"Script dans body": "Script en el body",
"Script dans head": "Script en el head",
"Scripts externes": "Guiones externos",
"Se déconnecter": "Desconectarse",
"Service en ligne inaccessible": "Servicio en línea inaccesible",
"Seul un administrateur peut se connecter lors d'une maintenance": "Solo un administrador puede iniciar sesión durante un mantenimiento",
"Si le contenu du gestionnaire de fichiers est très volumineux, mieux vaut une copie par FTP.": "Si el contenido del administrador de archivos es muy grande, es mejor copiar por FTP.",
"Signature": "Firma",
"Site": "Idiomas instalados",
"Site en maintenance": "Sitio en mantenimiento",
"Size": "Tamaño",
"Source": "Fuente",
"Standard": "Estándar",
"Style": "Estilo",
"Suppression interdite": "Borrado prohibido",
"Suppression interdite, page active dans la configuration de la langue du site": "Eliminación no permitida, la página está activa en la configuración de idioma del sitio",
"Supprime le point d'interrogation dans les URL, l'option est indisponible avec les autres serveurs Web": "Eliminar el signo de interrogación en las URL, la opción no está disponible con otros servidores web",
"Supprimer": "Borrar",
"Supprimer la page": "Eliminar página",
"Supprimer le module": "Eliminar módulo",
"Supprimer toutes les sauvegardes automatiques ?": "¿Eliminar todos los guardados automáticos?",
"Sur l'axe horizontal": "En el eje horizontal",
"Sur l'axe vertical": "En el eje vertical",
"Sur les deux axes": "En ambos hachas",
"Sécurité": "Seguridad",
"Sécurité de la connexion": "Seguridad de la conexión",
"Sécurité désactivée": "Seguridad desactivada",
"Sélectionner un fichier": "Seleccione un archivo",
"Sélectionnez au moins un contenu à afficher": "Seleccione al menos un contenido para mostrar",
"Sélectionnez la langue à copier vers une langue cible": "Seleccione el idioma para copiar hacia oyto idioma",
"Sélectionnez une icône adaptée à un thème sombre.<br>Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.": "Seleccione un ícono adecuado para un tema oscuro.<br>Recuerde eliminar el caché de su navegador si el favicon no cambia",
"Sélectionnez une image ou une icône de petite dimension": "Seleccione una imagen o icono pequeño",
"Sélectionnez une langue": "Seleccione un idioma",
"Sélectionnez une page contenant le module 'Recherche'. Une option du pied de page ajoute un lien discret vers cette page.": "Seleccione una página que contenga el módulo 'Buscar'. Una opción de pie de página agrega un enlace discreto a esta página.",
"Sélectionnez une page pour activer": "Seleccione una página para activar",
"Séparateur": "Separador",
"Taille": "Tamaño",
"Text": "Texto",
"Texte": "Texto",
"Thème": "Tema",
"Thème de l'administration": "Tema de administración",
"Thème du site": "Tema del sitio",
"Thème importé": "Tema importado",
"Thèmes": "Temas",
"Titre": "Título",
"Titre court": "Título corto",
"Titre masqué": "Título enmascarado",
"Titre masqué dans la page": "Título oculto en la página",
"Titres": "Títulos",
"Tous les dossiers": "Todas las carpetas",
"Tous les droits d'édition des contenus": "Todos los derechos de edición de contenido",
"Tout Effacer": "Borrar todo",
"Traduction supprimée": "Traducción eliminada",
"Très grande": "Muy grande",
"Très grande (240%)": "Muy grande (240%)",
"Très grande (400px)": "Muy grande (400px)",
"Très important": "Muy importante",
"Très importante": "Muy importante",
"Très léger": "Muy ligero",
"Très légère": "Muy ligera",
"Très petite": "Muy pequeño",
"Très petite (100px) ": "Muy pequeño (100px)",
"Très petite (160%)": "Muy pequeño (160%)",
"Twitter": "Twitter",
"Type de captcha": "Tipo de captcha",
"Type de proxy": "Tipo de proxy",
"Téléchargement et validation de l'archive": "Descarga y validación del archivo",
"Télécharger": "Descargar",
"Télécharger la liste": "Descargar la revista",
"Télécharger le journal": "Descargar la revista",
"Télécharger le module dans le gestionnaire de fichiers": "Descargar módulo al administrador de archivos",
"Téléverser": "Subir",
"URL incorrecte": "URL incorrecta",
"Un mail a été envoyé pour confirmer la réinitialisation": "Se ha enviado un correo electrónico para confirmar el restablecimiento.",
"Une archive du dossier /site/data est conservée pendant 30 jours. Activation recommandée": "Un archivo que contiene la carpeta /site/data se conserva durante 30 días. Activación recomendada .",
"Une erreur est survenue lors de l'étape :": "Ocurrió un error durante el proceso",
"Url du fichier de fonte": "Url del archivo de tipo de letra",
"Utilisateur inexistant": "Usuario inexistente",
"Utilisateur supprimé": "Usuario eliminado",
"Utilisateurs": "Usuarios",
"Valider": "Validar",
"Version": "Versión",
"Version n°": "Número de versión",
"Vider dossier sauvegardes auto": "Carpeta de autoguardado vacía",
"Visiteur": "Visitante",
"Vous n'êtes pas autorisé à consulter cette page (erreur 403)": "No está autorizado para ver esta página (error 403)",
"Youtube": "YouTube",
"ZwiiCMS - Installation": "ZwiiCMS - Instalación",
"actualisé": "actualizado",
"favicon.ico": "Recuerde borrar el caché de su navegador si el favicon no cambia.",
"faviconDark.ico": "faviconDark.ico",
"gestionnaire de fichiers": "administrador de archivos",
"installé": "instalado",
"jour": "día",
"jours": "días",
"sauvegardé avec succès": "Guardado exitosamente",
"vers": "hacia",
"À droite": "A la derecha",
"À gauche": "A la izquierda",
"À l'emplacement du mot clé [MODULE] dans la page": "En la ubicación de la palabra clave [MODULE] en la página",
"Échec de l'écriture, vérifiez les permissions": "Escritura fallida, verifique los permisos",
"Échecs": "Fracasos",
"Éditer": "Editar",
"Éditer la page": "Editar página",
"Éditer les dialogues": "Editar los diálogos",
"Éditer une catégorie": "Editar categoría",
"Éditeur": "Editor",
"Éditeur CSS": "Editor de CSS",
"Éditeur JS": "Editor de JS",
"Éditeur de script %s": "Editor de script %s",
"Éditeur de script dans Body": "Éditor del script en el Body",
"Éditeur de script dans Head": "Éditor del script en el Head",
"Éditeur simple": "Editor simple",
"Édition des pages": "Edición de páginas",
"Édition du profil %s": "Edición del perfil %s",
"Éléments": "Elementos",
"Étendu sur la page": "Extendido en la página",
"Étiquettes des pages spéciales": "Etiquetas de páginas especiales",
"Dimensions minimales": "Dimensiones mínimas",
"Taille maximale du fichier": "Tamaño máximo de archivo",
"5 Mo pour les images JPEG": "5 MB para imágenes JPEG",
"1 Mo pour les images PNG": "1 MB para imágenes PNG",
"Poids": "Peso",
"Supprimer ce profil ?": "¿Eliminar este perfil?",
"Masqué": "Oculto",
"Haut de page": "Parte superior de la página",
"Bas de page": "Parte inferior de la página",
"Petit triangle": "Triángulo pequeño",
"Grand triangle": "Triángulo grande",
"Flèche": "Flecha",
"Modèle": "Plantilla",
"Bouton de navigation droit": "Botón de navegación derecha",
"Bouton de navigation gauche": "Botón de navegación izquierda",
"Groupes / Profils": "Grupos / Perfiles",
"Prénom commence par": "El nombre comienza con",
"Nom commence par": "El apellido comienza con",
"Impossible de réinitialiser le mot de passe de ce compte !": "No puedo restablecer la contraseña de esta cuenta."
}

View File

@ -0,0 +1,693 @@
{
"'Ne pas afficher' crée une page orpheline non accessible par le biais des menus.": "",
"'Sauvegarder et télécharger les données du module": "",
"1 jour": "",
"1/4 : Préparation...": "",
"10 minutes": "",
"10 tentatives": "",
"14 jours": "",
"15 minutes": "",
"2 jours": "",
"2/4 : Téléchargement...": "",
"3 tentatives": "",
"3/4 : Installation...": "",
"4 jours": "",
"4/4 : Configuration...": "",
"5 minutes": "",
"5 tentatives": "",
"7 jours": "",
"Accueil": "",
"Accède au site": "",
"Accède aux pages réservées": "",
"Accède aux pages réservées et à un dossier partagé": "",
"Accès bloqué %d minutes": "",
"Accès désactivé": "",
"Accès interdit, erreur 403": "",
"Action interdite": "",
"Activation obligatoire selon les lois françaises sauf si vous utilisez votre propre système de consentement.": "",
"Activer": "",
"Activer la journalisation": "",
"Actualiser": "",
"Adaptation": "",
"Administrateur": "",
"Administration": "",
"Adresse SMTP": "",
"Adresse du proxy": "",
"Adresse électronique": "",
"Affectation": "",
"Affiche le nom de la page parente suivi du nom de la page, le titre ne doit pas être masqué.": "",
"Affiche les icônes de gestion du compte et de déconnexion des membres simples connectés": "",
"Afin d'assurer le bon fonctionnement de Zwii, veuillez ne pas fermer cette page avant la fin de l'opération.": "",
"Aide": "",
"Ajouter": "",
"Ajouter un profil": "",
"Ajouter un utilisateur": "",
"Ajouter une fonte": "",
"Alignement": "",
"Aligner la bannière avec le contenu": "",
"Ancien mot de passe": "",
"Anonymat des adresses IP": "",
"Apache URL intelligent": "",
"Apache URL intelligentes": "",
"Apparence": "",
"Appliquer": "",
"Approuver un commentaire": "",
"Après": "",
"Après la bannière": "",
"Après le contenu de la page": "",
"Archive": "",
"Archive ZIP": "",
"Archive copiée dans le dossier Modules du gestionnaire de fichier": "",
"Archive de thème invalide": "",
"Archive invalide": "",
"Archive invalide, l'écriture dans le dossier core est interdite": "",
"Archive invalide, le descripteur est absent": "",
"Archive invalide, le fichier de classe est absent": "",
"Archive invalide, les dossiers ne correspondent pas au descripteur": "",
"Archive non spécifiée ou introuvable": "",
"Archive à restaurer": "",
"Arrière plan": "",
"Arrière plan des blocs": "",
"Arrière plan des champs": "",
"Arrondi des angles": "",
"Au centre": "",
"Au début": "",
"Au milieu au centre": "",
"Au milieu à droite": "",
"Au milieu à gauche": "",
"Au-dessus du site": "",
"Aucun": "",
"Aucun dossier": "",
"Aucun fichier journal à télécharger": "",
"Aucun journal à effacer": "",
"Aucun menu": "",
"Aucune": "",
"Aucune liste noire à effacer": "",
"Aucune liste noire à télécharger": "",
"Auteur :": "",
"Authentification": "",
"Automatique": "",
"Autoriser les robots à référencer le site": "",
"Autorisé": "",
"Avant la bannière": "",
"Avant le contenu de la page": "",
"Background": "",
"Banni": "",
"Bannière": "",
"Bannière cliquable": "",
"Barre 1/3 - page 2/3": "",
"Barre 1/4 - page 1/2 - barre 1/4": "",
"Barre 1/4 - page 3/4": "",
"Barre 2/12 - page 7/12 - barre 3/12": "",
"Barre 3/12 - page 7/12 - barre 2/12": "",
"Barre de membre": "",
"Barre latérale": "",
"Barre latérale droite :": "",
"Barre latérale gauche :": "",
"Barres latérales": "",
"Bienvenue %s %s": "",
"Blocage après échecs": "",
"Blog": "",
"Bords arrondis": "",
"Bordure des blocs": "",
"Bordure des champs": "",
"Bouton Aide": "",
"Bouton Standard": "",
"Bouton de validation": "",
"Bouton effacement": "",
"Bouton retour": "",
"Bouton standard": "",
"Bouton validation": "",
"Boutons": "",
"Caché": "",
"Cachée": "",
"Captcha complexe": "",
"Captcha à la connexion": "",
"Captcha, identifiant ou mot de passe incorrects": "",
"Capture d'écran Open Graph": "",
"Capture d'écran générée avec succès": "",
"Casse": "",
"Catalogue": "",
"Catégorie": "",
"Ce membre pourra téléverser ou télécharger des fichiers dans le dossier 'partage' et ses sous-dossiers": "",
"Cette page ne doit pas apparaître dans l'arborescence du menu. Créez une page orpheline.": "",
"Cette redirection ne concerne que les pages d'administration du site.": "",
"Chaîne Youtube": "",
"Chiffres": "",
"Cible": "",
"Cliquez sur une zone afin d'accéder à ses options de personnalisation.": "",
"Commentaire": "",
"Complète": "",
"Compte administrateur": "",
"Compte de l'utilisateur": "",
"Compte verrouillé": "",
"Configuration": "",
"Configuration du module": "",
"Configurer": "",
"Configurer mon compte": "",
"Confirmation": "",
"Confirmer la suppression de cet utilisateur": "",
"Confirmer la dissociation du module de cette page": "",
"Confirmer la désinstallation du module": "",
"Confirmer la suppression de cet utilisateur": "",
"Confirmer la suppression de cette langue": "",
"Confirmer la suppression de la page": "",
"Confirmer la suppression des données du module": "",
"Confirmez-vous la suppression de cette page ?": "",
"Connexion": "",
"Consulter l'aide en ligne": "",
"Contents": "",
"Contenu": "",
"Contenu HTML": "",
"Contenu avancé": "",
"Contenu du menu vertical": "",
"Contrôle total": "",
"Cookies": "",
"Cookies Zwii": "",
"Copie de contenus localisés": "",
"Copie de sites inter-langues": "",
"Copie des traductions rédigées": "",
"Copie terminée avec des erreurs": "",
"Copie terminée avec succès": "",
"Copier": "",
"Copier sauvegardes auto": "",
"Couleur de fond automatique": "",
"Couleur icône haut de page": "",
"Couleur texte page active": "",
"Couleur unie ou papier-peint": "",
"Couleur visible en l'absence d'une image.<br />Le curseur horizontal règle le niveau de transparence.": "",
"Couleur visible en l'absence d'une image.<br />Le curseur horizontal règle le niveau de transparence. La couleur du texte est automatique.": "",
"Couleurs": "",
"Dans le site": "",
"Dans quelle langue utiliserez-vous Zwii ?": "",
"Date": "",
"Description": "",
"Disponible si le consentement des cookies est activé.": "",
"Disposition": "",
"Données %s copiées vers %s": "",
"Données des modules": "",
"Données importées": "",
"Dossier": "",
"Droits sur les dossiers": "",
"Droits sur les fichiers": "",
"Dupliquer": "",
"Dupliquer la page": "",
"Déconnecte les sessions ouvertes précédemment sur d'autres navigateurs ou terminaux. Activation recommandée.": "",
"Déconnecter": "",
"Déconnexion !": "",
"Déconnexion automatique": "",
"Définir par défaut": "",
"Dévoiler le mot de passe": "",
"Effacer": "",
"Effacer la page": "",
"Effacer tous les commentaires": "",
"Effacer toutes les statistiques": "",
"Effacer un commentaire": "",
"Effacer une catégorie": "",
"Emplacement :": "",
"Emplacement dans le menu": "",
"En bas au centre": "",
"En bas à droite": "",
"En bas à gauche": "",
"En cas de changement de module, les données du module précédent seront supprimées.": "",
"En dessous du site": "",
"En haut au centre": "",
"En haut à droite": "",
"En haut à gauche": "",
"En position libre ajoutez le module en plaçant [MODULE] à l'endroit voulu dans votre page.": "",
"En-dehors du site": "",
"Enregistrer": "",
"Envoyer un message de confirmation": "",
"Erreur : sauvegarde non générée !": "",
"Erreur d'URL": "",
"Erreur d'extraction, vérifiez les permissions": "",
"Erreur de copie": "",
"Erreur de copie, vérifiez les permissions": "",
"Erreur de lecture, vérifiez les permissions": "",
"Erreur inconnue": "",
"Erreur inconnue, le module n'est pas installé": "",
"Export CSV": "",
"Expéditeur": "",
"Extension": "",
"Extraire": "",
"Facebook": "",
"Famille": "",
"Favicon thème sombre": "",
"Feuille de style spécifique à la page.": "",
"Fichiers": "",
"Fichiers effacés": "",
"Fil d'Ariane dans le titre": "",
"Fond du sous-menu": "",
"FontId": "",
"Fonte": "",
"Fonte actualisée": "",
"Fonte créée": "",
"Fonte en ligne": "",
"Fonte installée": "",
"Fonte non créée, ressource absente !": "",
"Fonte supprimée": "",
"Fontes": "",
"Format incorrect": "",
"Formulaire": "",
"Fréquence de recherche": "",
"Fuseau horaire": "",
"Gabarits de page - Barre latérale": "",
"Gestion": "",
"Gestion des modules": "",
"Gestion des thèmes": "",
"Gestionnaire de fichiers": "",
"Github": "",
"Grande": "",
"Grande (220%)": "",
"Grande (300px)": "",
"Gras": "",
"Groupe": "",
"Groupe associé": "",
"Groupe requis pour accéder à la page :": "",
"Groupes": "",
"Générer sitemap.xml et robots.txt": "",
"Générer une capture Open Graph": "",
"Gérer les catégories": "",
"Gérer les commentaires": "",
"Gérer les données": "",
"Hauteur": "",
"Hauteur de l'image": "",
"Hauteur de l'image sélectionnée": "",
"Hauteur maximale": "",
"ID de la chaîne : https://www.youtube.com/channel/[ID].": "",
"Icône": "",
"Icône avec bulle de texte": "",
"Icône haut de page, couleur arrière-plan": "",
"Identifiant": "",
"Identifiant (sans espace ni majuscule)": "",
"Identité": "",
"Identité de la fonte": "",
"Identité du site": "",
"Il apparaît dans la barre de titre et les partages sur les réseaux sociaux.": "",
"Image": "",
"Image étirée (100% 100%)": "",
"Important": "",
"Importante": "",
"Importation d'utilisateurs": "",
"Importation de fichier plat CSV": "",
"Importation effectuée": "",
"Importer": "",
"Importer dans": "",
"Importer des utilisateurs en masse": "",
"Impossible d'ouvrir l'archive": "",
"Impossible de modifier votre propre groupe.": "",
"Impossible de soumettre le formulaire, car il contient des erreurs": "",
"Impossible de supprimer une page contenant des pages enfants": "",
"Impossible de supprimer votre propre compte": "",
"Inclure le contenu du gestionnaire de fichiers": "",
"Incorrect": "",
"Informations": "",
"Instagram": "",
"Installation terminée": "",
"Installer": "",
"Installer depuis le catalogue en ligne": "",
"Installer depuis une archive": "",
"Installer les données d'un module": "",
"Installer ou mettre à jour un module téléchargé": "",
"Installer un module": "",
"Installer un thème archivé (site ou administration)": "",
"Instructions JS ou jquery spécifiques à la page.": "",
"Interface": "",
"Jeton invalide": "",
"Journal réinitialisé avec succès": "",
"Journalisation": "",
"L'archive a été déposée dans le gestionnaire de fichiers. Les archives inférieures à la version 9 ne sont pas acceptées.": "",
"L'identifiant est défini lors de la création du compte, il ne peut pas être modifié.": "",
"La carte du site a été mise à jour": "",
"La copie de sauvegarde du fichier htaccess n'a pas été restaurée !": "",
"La description d'une page participe à son référencement, chaque page doit disposer d'une description différente.": "",
"La page %s est ouverte par l'utilisateur %s": "",
"La page demandée n'existe pas ou est introuvable (erreur 404)": "",
"La page est affichée dans un menu horizontal mais pas dans le menu vertical d'une barre latérale.": "",
"La première page que vos visiteurs verront.": "",
"La règlementation française impose un anonymat de niveau 2": "",
"La réécriture d'URL n'a pas été restaurée !": "",
"La sauvegarde des fichiers peut prendre du temps. Continuer ?": "",
"La suppression a échoué": "",
"La version installée est plus récente": "",
"La vérification est quotidienne. Option désactivée si la configuration du serveur ne le permet pas.": "",
"Langue de l'administration": "",
"Langue du site par défaut": "",
"Langue par défaut": "",
"Langues": "",
"Langues disponibles": "",
"Langues installées": "",
"Largeur": "",
"Largeur de l'image": "",
"Largeur du site": "",
"Le curseur horizontal règle le niveau de transparence, le placer tout à la gauche pour un surlignement invisible.": "",
"Le curseur horizontal règle le niveau de transparence.": "",
"Le fuseau horaire est utile au bon référencement": "",
"Le menu accessoire est aligné à droite de la barre de menu, c'est un emplacement réservé aux drapeaux et au bouton de connexion.": "",
"Le menu horizontal intégral": "",
"Le module %s a été %s": "",
"Le module %s de la page %s a été supprimé": "",
"Le module %s est désinstallé, il reste peut-être des données dans %s": "",
"Le sous-menu de la page parente": "",
"Le survol d'une icône de l'écran de connexion affiche temporairement le mot de passe.": "",
"Le titre court est affiché dans les menus. Il peut être identique au titre de la page.": "",
"Les langues sélectionnées sont identiques": "",
"Les mentions légales sont obligatoires en France. Une option du pied de page ajoute un lien discret vers cette page.": "",
"Les modifications que vous avez apportées ne seront peut-être pas enregistrées.": "",
"Les tailles des polices de la bannière, de menu et de pied de page sont proportionnelles à cette taille.": "",
"Lettres": "",
"Libre": "",
"Licence :": "",
"Lien de connexion": "",
"Lien page des mentions légales.": "",
"Liens": "",
"Limitation des tentatives": "",
"Limitée au site": "",
"Linkedin": "",
"Liste noire": "",
"Liste noire réinitialisée avec succès": "",
"Lors d'une mise à jour automatique, conserve le fichier htaccess de la racine du site.": "",
"Léger": "",
"Légère": "",
"Maigre": "",
"Maintenance": "",
"Majuscule à chaque mot": "",
"Majuscules": "",
"Marges verticales": "",
"Masquer la bannière en écran réduit": "",
"Masquer la page et les pages enfants dans le menu d'une barre latérale": "",
"Masquer les pages enfants dans le menu horizontal": "",
"Membre": "",
"Membre avec droit de partage": "",
"Membre simple": "",
"Mentions légales": "",
"Menu": "",
"Menu accessoire": "",
"Menu burger dans écran réduit": "",
"Menu standard": "",
"Message d'acceptation des Cookies": "",
"Message de consentement aux cookies": "",
"Mettre à jour": "",
"Mettre à jour le module orphelin": "",
"Minuscules": "",
"Mise en forme des titres": "",
"Mise en forme du texte": "",
"Mise en forme du titre": "",
"Mise en page": "",
"Mise à jour": "",
"Mise à jour automatisée": "",
"Mise à jour terminée avec succès.": "",
"Modifications enregistrées": "",
"Module": "",
"Module de la page": "",
"Modules": "",
"Modules configurés": "",
"Modules installés": "",
"Modules orphelins": "",
"Mot de passe": "",
"Mot de passe oublié": "",
"Mot de passe perdu": "",
"Motorisé par": "",
"Moyen": "",
"Moyenne": "",
"Moyenne (200%)": "",
"Moyenne (200px)": "",
"Méta-description": "",
"Méta-titre": "",
"Ne pas afficher": "",
"Ne pas charger l'exemple de site (utilisateurs avancés)": "",
"Ne pas répéter": "",
"Ne pas saisir les balises": "",
"News": "",
"Niveau 1 (192.168.12.x)": "",
"Niveau 2 (192.168.x.x)": "",
"Niveau 3 (192.x.x.x)": "",
"Nom": "",
"Nom Prénom": "",
"Nom du profil": "",
"Nom utilisateur": "",
"Non": "",
"Non tronquée": "",
"Notre site est actuellement en maintenance. Nous sommes désolés pour la gêne occasionnée et faisons notre possible pour être rapidement de retour.": "",
"Nouveau contenu localisé": "",
"Nouveau mot de passe": "",
"Nouveau mot de passe enregistré": "",
"Nouvel utilisateur": "",
"Nouvelle page créée": "",
"Nouvelle page ou barre latérale": "",
"Obligatoire": "",
"Ombre": "",
"Option active en mode déconnecté uniquement, les pages enfants sont visibles et accessibles.": "",
"Option recommandée pour sécuriser la connexion. S'applique à tous les captchas du site. Le captcha simple se limite à une addition de nombres de 0 à 10. Le captcha complexe utilise quatre opérations de nombres de 0 à 20. Activation recommandée.": "",
"Options": "",
"Options avancées": "",
"Origine": "",
"Oui": "",
"Page": "",
"Page 2/3 - barre 1/3": "",
"Page 3/4 - barre 1/4": "",
"Page associée": "",
"Page de recherche": "",
"Page dupliquée": "",
"Page et module dupliqués": "",
"Page inexistante, erreur 404": "",
"Page non cliquable": "",
"Page parent": "",
"Page standard": "",
"Page supprimée": "",
"Pages dans le menu": "",
"Pages du site": "",
"Pages et les modules de": "",
"Pages orphelines": "",
"Papier peint": "",
"Par défaut le menu est affiché APRES le contenu de la page. Pour le positionner à un emplacement précis, insérez [MENU] dans le contenu de la page.": "",
"Paramètres": "",
"Paramètres de la localisation": "",
"Paramètres de la sauvegarde": "",
"Paramètres du profil": "",
"Paramètres à utiliser lorsque votre hébergeur ne propose pas la fonctionnalité d'envoi de mail.": "",
"Pas de marge au-dessus et en dessous du site": "",
"Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.": "",
"Permission": "",
"Permission et référencement": "",
"Permissions": "",
"Permissions sur les dossiers": "",
"Permissions sur les fichiers": "",
"Permissions sur les pages": "",
"Petite": "",
"Petite (150px)": "",
"Petite (180%)": "",
"Pied de page": "",
"Pinterest": "",
"Plan du site": "",
"Police des titres": "",
"Police du texte": "",
"Port SMTP": "",
"Port du proxy": "",
"Position": "",
"Position du module": "",
"Pour définir la page comme barre latérale, choisissez l'option dans la liste.": "",
"Presse Papier": "",
"Presse papier": "",
"Profils des groupes": "",
"Proportionnelle à la taille définie dans le site.": "",
"Prénom": "",
"Prénom Nom": "",
"Préparation de la mise à jour": "",
"Préserver le fichier htaccess racine": "",
"Préserver les comptes des utilisateurs déjà installés": "",
"Prévenir l'utilisateur par mail": "",
"Prévisualiser": "",
"Pseudo": "",
"Rang 9 > rang 1. Le profil de rang 1 n'est pas modifiable.": "",
"Ratio": "",
"Ratio :": "",
"Recherche": "",
"Recherche dans le site": "",
"Rechercher": "",
"Rechercher une mise à jour en ligne": "",
"Redirection": "",
"Redirection vers la connexion": "",
"Renommer": "",
"Renseignez les champs ci-dessous pour finaliser l'installation.": "",
"Responsive (contain)": "",
"Responsive (cover)": "",
"Restauration des bases de données absentes": "",
"Restauration effectuée avec succès": "",
"Restaurer": "",
"Restaurer les données du site": "",
"Rester connecté sur ce navigateur": "",
"Retour": "",
"Rien à importer, erreur de format ou fichier incorrect": "",
"Rédacteur": "",
"Référencement": "",
"Réinitialisation du mot de passe": "",
"Réinitialiser avec le thème par défaut": "",
"Réinitialiser la feuille de style": "",
"Réinitialiser la liste": "",
"Réinitialiser le journal": "",
"Réinstaller": "",
"Répétition": "",
"Réseau": "",
"Réseaux sociaux": "",
"S'ouvre dans un nouvel onglet": "",
"SMTP": "",
"SMTP personnalisé": "",
"Saisir la clé, puis valider le formulaire avant de cliquer sur le bouton de génération": "",
"Saisissez le Titre de gestion des cookies.": "",
"Saisissez le message pour les cookies déposés par ZwiiCMS, nécessaires au fonctionnement et qui ne nécessitent pas de consentement.": "",
"Saisissez le texte du lien vers les mentions légales,la page doit être définie dans la configuration du site.": "",
"Saisissez votre ID : https://pinterest.com/[ID].": "",
"Saisissez votre ID : https://twitter.com/[ID].": "",
"Saisissez votre ID : https://www.facebook.com/[ID].": "",
"Saisissez votre ID : https://www.instagram.com/[ID].": "",
"Saisissez votre ID Github : https://github.com/[ID].": "",
"Saisissez votre ID Linkedin : https://fr.linkedin.com/in/[ID].": "",
"Saisissez votre ID Utilisateur : https://www.youtube.com/user/[ID].": "",
"Sauvegarde": "",
"Sauvegarde automatique quotidienne du site": "",
"Sauvegarde du thème dans le": "",
"Sauvegarde générée avec succès": "",
"Sauvegarder": "",
"Sauvegarder et télécharger le module": "",
"Sauvegarder le module dans le gestionnaire de fichiers": "",
"Sauvegarder les données du module dans le gestionnaire de fichiers": "",
"Sauvegarder les données du site": "",
"Script dans body": "",
"Script dans head": "",
"Scripts externes": "",
"Se déconnecter": "",
"Service en ligne inaccessible": "",
"Seul un administrateur peut se connecter lors d'une maintenance": "",
"Si le contenu du gestionnaire de fichiers est très volumineux, mieux vaut une copie par FTP.": "",
"Signature": "",
"Site": "",
"Site en maintenance": "",
"Size": "",
"Source": "",
"Standard": "",
"Style": "",
"Suppression interdite": "",
"Suppression interdite, page active dans la configuration de la langue du site": "",
"Supprime le point d'interrogation dans les URL, l'option est indisponible avec les autres serveurs Web": "",
"Supprimer": "",
"Supprimer la page": "",
"Supprimer le module": "",
"Supprimer toutes les sauvegardes automatiques ?": "",
"Sur l'axe horizontal": "",
"Sur l'axe vertical": "",
"Sur les deux axes": "",
"Sécurité": "",
"Sécurité de la connexion": "",
"Sécurité désactivée": "",
"Sélectionner un fichier": "",
"Sélectionnez au moins un contenu à afficher": "",
"Sélectionnez la langue à copier vers une langue cible": "",
"Sélectionnez une icône adaptée à un thème sombre.<br>Pensez à supprimer le cache de votre navigateur si la favicon ne change pas.": "",
"Sélectionnez une image ou une icône de petite dimension": "",
"Sélectionnez une langue": "",
"Sélectionnez une page contenant le module 'Recherche'. Une option du pied de page ajoute un lien discret vers cette page.": "",
"Sélectionnez une page pour activer": "",
"Séparateur": "",
"Taille": "",
"Text": "",
"Texte": "",
"Thème": "",
"Thème de l'administration": "",
"Thème du site": "",
"Thème importé": "",
"Thèmes": "",
"Titre": "",
"Titre court": "",
"Titre masqué": "",
"Titre masqué dans la page": "",
"Titres": "",
"Tous les dossiers": "",
"Tous les droits d'édition des contenus": "",
"Tout Effacer": "",
"Traduction supprimée": "",
"Très grande": "",
"Très grande (240%)": "",
"Très grande (400px)": "",
"Très important": "",
"Très importante": "",
"Très léger": "",
"Très légère": "",
"Très petite": "",
"Très petite (100px) ": "",
"Très petite (160%)": "",
"Twitter": "",
"Type de captcha": "",
"Type de proxy": "",
"Téléchargement et validation de l'archive": "",
"Télécharger": "",
"Télécharger la liste": "",
"Télécharger le journal": "",
"Télécharger le module dans le gestionnaire de fichiers": "",
"Téléverser": "",
"URL incorrecte": "",
"Un mail a été envoyé pour confirmer la réinitialisation": "",
"Une archive du dossier /site/data est conservée pendant 30 jours. Activation recommandée": "",
"Une erreur est survenue lors de l'étape :": "",
"Url du fichier de fonte": "",
"Utilisateur inexistant": "",
"Utilisateur supprimé": "",
"Utilisateurs": "",
"Valider": "",
"Version": "",
"Version n°": "",
"Vider dossier sauvegardes auto": "",
"Visiteur": "",
"Vous n'êtes pas autorisé à consulter cette page (erreur 403)": "",
"Youtube": "",
"ZwiiCMS - Installation": "",
"actualisé": "",
"favicon.ico": "",
"faviconDark.ico": "",
"gestionnaire de fichiers": "",
"installé": "",
"jour": "",
"jours": "",
"sauvegardé avec succès": "",
"vers": "",
"À droite": "",
"À gauche": "",
"À l'emplacement du mot clé [MODULE] dans la page": "",
"Échec de l'écriture, vérifiez les permissions": "",
"Échecs": "",
"Éditer": "",
"Éditer la page": "",
"Éditer les dialogues": "",
"Éditer une catégorie": "",
"Éditeur": "",
"Éditeur CSS": "",
"Éditeur JS": "",
"Éditeur de script %s": "",
"Éditeur de script dans Body": "",
"Éditeur de script dans Head": "",
"Éditeur simple": "",
"Édition des pages": "",
"Édition du profil %s": "",
"Éléments": "",
"Étendu sur la page": "",
"Étiquettes des pages spéciales": "",
"Dimensions minimales": "",
"Taille maximale du fichier": "",
"5 Mo pour les images JPEG": "",
"1 Mo pour les images PNG": "",
"Poids": "",
"Supprimer ce profil ?": "",
"Masqué": "",
"Haut de page": "",
"Bas de page": "",
"Petit triangle": "",
"Grand triangle": "",
"Flèche": "",
"Modèle": "",
"Bouton de navigation droit": "",
"Bouton de navigation gauche": "",
"Groupes / Profils": "",
"Prénom commence par": "",
"Nom commence par": "",
"Impossible de réinitialiser le mot de passe de ce compte !": ""
}

View File

@ -0,0 +1,18 @@
/**
* 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/
*/
/** NE PAS EFFACER
* admin.css
*/

View File

@ -1,36 +0,0 @@
/**
* 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
* @license GNU General Public License, version 3
* @link http://zwiicms.com/
*/
/**
* Affichage de l'id en simulant FILTER_ID
*/
$("#installId").on("change keydown keyup", function(event) {
var userId = $(this).val();
if(
event.keyCode !== 8 // BACKSPACE
&& event.keyCode !== 37 // LEFT
&& event.keyCode !== 39 // RIGHT
&& event.keyCode !== 46 // DELETE
&& window.getSelection().toString() !== userId // Texte sélectionné
) {
var searchReplace = {
"á": "a", "à": "a", "â": "a", "ä": "a", "ã": "a", "å": "a", "ç": "c", "é": "e", "è": "e", "ê": "e", "ë": "e", "í": "i", "ì": "i", "î": "i", "ï": "i", "ñ": "n", "ó": "o", "ò": "o", "ô": "o", "ö": "o", "õ": "o", "ú": "u", "ù": "u", "û": "u", "ü": "u", "ý": "y", "ÿ": "y",
"Á": "A", "À": "A", "Â": "A", "Ä": "A", "Ã": "A", "Å": "A", "Ç": "C", "É": "E", "È": "E", "Ê": "E", "Ë": "E", "Í": "I", "Ì": "I", "Î": "I", "Ï": "I", "Ñ": "N", "Ó": "O", "Ò": "O", "Ô": "O", "Ö": "O", "Õ": "O", "Ú": "U", "Ù": "U", "Û": "U", "Ü": "U", "Ý": "Y", "Ÿ": "Y",
"'": "-", "\"": "-", " ": "-"
};
userId = userId.replace(/[áàâäãåçéèêëíìîïñóòôöõúùûüýÿ'" ]/ig, function(match) {
return searchReplace[match];
});
userId = userId.replace(/[^a-z0-9-]/ig, "");
$(this).val(userId);
}
});

58
core/module/install/view/index/index.php Executable file → Normal file
View File

@ -1,54 +1,20 @@
<p>Veuillez saisir les champs ci-dessous afin de terminer l'installation.</p>
<?php echo template::formOpen('installForm'); ?> <?php echo template::formOpen('installForm'); ?>
<?php echo template::text('installId', [ <h3>
'autocomplete' => 'off', <?php echo helper::translate('Dans quelle langue utiliserez-vous Zwii ?'); ?>
'label' => 'Identifiant' </h3>
]); ?> <div class="row">
<div class="row"> <div class="col6 offset3">
<div class="col6"> <?php echo template::select('installLanguage', $module::$i18nFiles, [
<?php echo template::password('installPassword', [ 'label' => 'Langues installées',
'autocomplete' => 'off', 'selected' => array_key_exists ('fr_FR', $module::$i18nFiles) ? 'fr_FR': reset($module::$i18nFiles),
'label' => 'Mot de passe'
]); ?> ]); ?>
</div> </div>
<div class="col6"> </div>
<?php echo template::password('installConfirmPassword', [ <div class="row">
'autocomplete' => 'off',
'label' => 'Confirmation'
]); ?>
</div>
</div>
<?php echo template::mail('installMail', [
'autocomplete' => 'off',
'label' => 'Adresse mail'
]); ?>
<div class="row">
<div class="col6">
<?php echo template::text('installFirstname', [
'autocomplete' => 'off',
'label' => 'Prénom'
]); ?>
</div>
<div class="col6">
<?php echo template::text('installLastname', [
'autocomplete' => 'off',
'label' => 'Nom'
]); ?>
</div>
</div>
<div class="row">
<div class="col12">
<?php echo template::checkbox('installDefaultData',true , 'Charger un exemple de site', [
'checked' => true
]);
?>
</div>
</div>
<div class="row">
<div class="col3 offset9"> <div class="col3 offset9">
<?php echo template::submit('installSubmit', [ <?php echo template::submit('installSubmit', [
'value' => 'Installer' 'value' => 'Suivant'
]); ?> ]); ?>
</div> </div>
</div> </div>
<?php echo template::formClose(); ?> <?php echo template::formClose(); ?>

View File

@ -0,0 +1,22 @@
/**
* 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/
*/
/** NE PAS EFFACER
* admin.css
*/
.title {
font-weight: bold;
}

View File

@ -0,0 +1,13 @@
/**
* 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/
*/
$("#installId").on("change keydown keyup",(function(event){var userId=$(this).val();if(8!==event.keyCode&&37!==event.keyCode&&39!==event.keyCode&&46!==event.keyCode&&window.getSelection().toString()!==userId){var searchReplace={"á":"a","à":"a","â":"a","ä":"a","ã":"a","å":"a","ç":"c","é":"e","è":"e","ê":"e","ë":"e","í":"i","ì":"i","î":"i","ï":"i","ñ":"n","ó":"o","ò":"o","ô":"o","ö":"o","õ":"o","ú":"u","ù":"u","û":"u","ü":"u","ý":"y","ÿ":"y","Á":"A","À":"A","Â":"A","Ä":"A","Ã":"A","Å":"A","Ç":"C","É":"E","È":"E","Ê":"E","Ë":"E","Í":"I","Ì":"I","Î":"I","Ï":"I","Ñ":"N","Ó":"O","Ò":"O","Ô":"O","Ö":"O","Õ":"O","Ú":"U","Ù":"U","Û":"U","Ü":"U","Ý":"Y","Ÿ":"Y","'":"-",'"':"-"," ":"-"};userId=(userId=userId.replace(/[áàâäãåçéèêëíìîïñóòôöõúùûüýÿ'" ]/gi,(function(match){return searchReplace[match]}))).replace(/[^a-z0-9-]/gi,""),$(this).val(userId)}}));

View File

@ -0,0 +1,119 @@
<p>
<?php echo helper::translate('Renseignez les champs ci-dessous pour finaliser l\'installation.'); ?>
</p>
<?php echo template::formOpen('installForm'); ?>
<div class="row">
<div class="col12">
<details open>
<summary>
<span class="title">
<?php echo helper::translate('Compte administrateur'); ?>
</span>
</summary>
<div class="row">
<div class="col6">
<?php echo template::text('installFirstname', [
'autocomplete' => 'off',
'label' => 'Prénom'
]); ?>
</div>
<div class="col6">
<?php echo template::text('installLastname', [
'autocomplete' => 'off',
'label' => 'Nom'
]); ?>
</div>
</div>
<div class="row">
<div class="col6">
<?php echo template::text('installId', [
'autocomplete' => 'off',
'label' => 'Identifiant'
]); ?>
</div>
<div class="col6">
<?php echo template::mail('installMail', [
'autocomplete' => 'off',
'label' => 'Adresse électronique'
]); ?>
</div>
</div>
<div class="row">
<div class="col6">
<?php echo template::password('installPassword', [
'autocomplete' => 'off',
'label' => 'Mot de passe'
]); ?>
</div>
<div class="col6">
<?php echo template::password('installConfirmPassword', [
'autocomplete' => 'off',
'label' => 'Confirmation'
]); ?>
</div>
</div>
</details>
</div>
</div>
<div class="row">
<div class="col12">
<details close>
<summary>
<span class="title">
<?php echo helper::translate('Options avancées'); ?>
</span>
</summary>
<?php if ($_SESSION['ZWII_UI'] === 'fr_FR'): ?>
<div class="row">
<div class="col12">
<?php echo template::checkbox('installDefaultData', true, 'Ne pas charger l\'exemple de site (utilisateurs avancés)', [
'checked' => false
]);
?>
</div>
</div>
<?php endif; ?>
<div class="row">
<div class="col3">
<?php echo template::select('installProxyType', $module::$proxyType, [
'label' => 'Type de proxy'
]); ?>
</div>
<div class="col6">
<?php echo template::text('installProxyUrl', [
'label' => 'Adresse du proxy',
'placeholder' => 'cache.proxy.fr'
]); ?>
</div>
<div class="col3">
<?php echo template::text('installProxyPort', [
'label' => 'Port du proxy',
'placeholder' => '6060'
]); ?>
</div>
</div>
<div class="row">
<div class="col12">
<?php echo template::hidden('installLanguage', [
'value' => $this->getUrl(2)
]); ?>
</div>
</div>
</div>
</div>
</details>
<div class="row">
<div class="col2">
<?php echo template::button('installPrevious', [
'class' => 'buttonGrey',
'href' => helper::baseUrl(true) . '?install',
'value' => template::ico('left')
]); ?>
</div>
<div class="col3 offset7">
<?php echo template::submit('installSubmit', [
'value' => 'Installer'
]); ?>
</div>
</div>
<?php echo template::formClose(); ?>

View File

@ -0,0 +1,18 @@
/**
* 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/
*/
/** NE PAS EFFACER
* admin.css
*/

123
core/module/install/view/update/update.js.php Executable file → Normal file
View File

@ -1,70 +1,95 @@
/**
* Exécution des différentes étapes de mise à jour
*/
function step(i, data) { function step(i, data) {
// Affiche le texte de progression var errors = [
"<?php echo helper::translate('Préparation de la mise à jour'); ?>",
"<?php echo helper::translate('Téléchargement et validation de l\'archive'); ?>",
"<?php echo helper::translate('Installation'); ?>",
"<?php echo helper::translate('Configuration'); ?>"
];
$(".installUpdateProgressText").hide(); $(".installUpdateProgressText").hide();
$(".installUpdateProgressText[data-id=" + i + "]").show(); $(".installUpdateProgressText[data-id=" + i + "]").show();
// Requête ajax
$("body").css("cursor", "wait");
$.ajax({ $.ajax({
type: "POST", type: "POST",
url: "<?php echo helper::baseUrl(false); ?>?install/steps", // Ignore la réécriture d'URL url: "<?php echo helper::baseUrl(false); ?>?install/steps",
data: { data: {
step: i, step: i,
data: data data: data
}, },
// Succès de la requête success: function (result) {
success: function(result) { setTimeout(function () {
setTimeout(function() { if (4 === i) {
// Succès
if(result.success === true) {
// Fin de la mise à jour
if(i === 4) {
// Affiche le message de succès
$("#installUpdateSuccess").show(); $("#installUpdateSuccess").show();
// Déverrouille le bouton "Terminer" $("body").css("cursor", "default");
$("#installUpdateEnd").removeClass("disabled"); $("#installUpdateEnd").removeClass("disabled");
// Cache le texte de progression
$("#installUpdateProgress").hide(); $("#installUpdateProgress").hide();
} } else {
// Prochaine étape
else {
step(i + 1, result.data); step(i + 1, result.data);
} }
}
// Échec
else {
// Affiche le message d'erreur
$("#installUpdateErrorStep").text(i);
$("#installUpdateError").show();
// Déverrouille le bouton "Terminer"
$("#installUpdateEnd").removeClass("disabled");
// Cache le texte de progression
$("#installUpdateProgress").hide();
// Affiche le résultat dans la console
console.error(result);
}
}, 2000); }, 2000);
}, },
// Échec de la requête error: function (xhr) {
error: function(xhr) { console.log(i);
// Affiche le message d'erreur console.log(xhr.responseText);
$("#installUpdateErrorStep").text(0); console.log(errors);
$("#installUpdateError").show();
// Déverrouille le bouton "Terminer" // Vérification du code d'erreur HTTP pour gérer la déconnexion
$("#installUpdateEnd").removeClass("disabled"); if (xhr.status === 401 || xhr.status === 403) {
// Cache le texte de progression alert("Votre session a expiré. Veuillez vous reconnecter.");
$("#installUpdateProgress").hide(); window.location.href = "?user/login"; // Redirige vers la page de connexion
// Affiche l'erreur dans la console } else {
console.error(xhr); // Appel de la fonction de gestion d'erreur
showError(i, xhr.responseText, errors);
}
} }
}); });
} }
$(window).on("load", step(1, null));
/** function showError(step, message, errors) {
* Paramètres par défaut au chargement $("body").css("cursor", "default");
*/ $("#installUpdateErrorStep").text(errors[step] + " (étape n°" + step + ")");
$( document ).ready(function() { $("#installUpdateError").show();
$("section").addClass("updateForm"); $("#installUpdateEnd").removeClass("disabled");
$("#installUpdateProgress").hide();
// Vérifier si l'accolade ouvrante est trouvée et qu'elle n'est pas en première position
if (typeof message !== 'object') {
// Trouver la position du premier "{" pour repérer le début du tableau
const startOfArray = message.indexOf('{');
if (startOfArray !== -1 && startOfArray > 0) {
// Extraire le message du warning jusqu'au début du tableau
const warningMessage = message.substring(0, startOfArray).trim();
// Extraire le tableau JSON entre les accolades
const jsonString = message.substring(startOfArray);
try {
const jsonData = JSON.parse(jsonString);
// Afficher les résultats si le parsing JSON est réussi
if (jsonData) {
$("#installUpdateErrorMessage").html("<strong>Détails de l'erreur :</strong><br> " +
jsonData.data.replace(/^"(.*)"$/, '$1') +
"<br>" +
warningMessage.replace(/<[^p].*?>/g, ""));
}
} catch (e) {
// Afficher un message générique en cas d'erreur de parsing
console.error("Erreur de parsing JSON : ", e);
$("#installUpdateErrorMessage").html("Une erreur inattendue est survenue lors du traitement des détails de l'erreur.");
}
} else {
// Si pas de JSON détecté, afficher le message brut
$("#installUpdateErrorMessage").html("Message d'erreur : " + message);
}
} else {
$("#installUpdateErrorMessage").html(message);
}
}
$(window).on("load", function () {
step(1, null);
}); });

57
core/module/install/view/update/update.php Executable file → Normal file
View File

@ -1,24 +1,45 @@
<p><strong>Mise à jour de Zwii <?php echo self::ZWII_VERSION; ?> vers Zwii <?php echo $module::$newVersion; ?>.</strong></p> <div id="updateContainer">
<p>Afin d'assurer le bon fonctionnement de Zwii, veuillez ne pas fermer cette page avant la fin de l'opération.</p> <p><strong>
<div class="row"> <?php echo helper::translate('Version'); ?>
&nbsp;
<?php echo self::ZWII_VERSION; ?>
<?php echo helper::translate('vers'); ?>
&nbsp;
<?php echo $module::$newVersion; ?>
</strong></p>
<p>
<?php echo helper::translate('Afin d\'assurer le bon fonctionnement de Zwii, veuillez ne pas fermer cette page avant la fin de l\'opération.'); ?>
</p>
<div class="row">
<div class="col9 verticalAlignMiddle"> <div class="col9 verticalAlignMiddle">
<div id="installUpdateProgress"> <div id="installUpdateProgress">
<?php echo template::ico('spin', '', true); ?> <?php echo template::ico('spin', ['animate' => true]); ?>
<span class="installUpdateProgressText" data-id="1">1/4 : Préparation...</span> <span class="installUpdateProgressText" data-id="1">
<span class="installUpdateProgressText displayNone" data-id="2">2/4 : Téléchargement...</span> <?php echo helper::translate('1/4 : Préparation...'); ?>
<span class="installUpdateProgressText displayNone" data-id="3">3/4 : Installation...</span> </span>
<span class="installUpdateProgressText displayNone" data-id="4">4/4 : Configuration...</span> <span class="installUpdateProgressText displayNone" data-id="2">
<?php echo helper::translate('2/4 : Téléchargement...'); ?>
</span>
<span class="installUpdateProgressText displayNone" data-id="3">
<?php echo helper::translate('3/4 : Installation...'); ?>
</span>
<span class="installUpdateProgressText displayNone" data-id="4">
<?php echo helper::translate('4/4 : Configuration...'); ?>
</span>
</div> </div>
<div id="installUpdateError" class="colorRed displayNone"> <div id="installUpdateError" class="message colorRed displayNone">
<?php echo template::ico('cancel', ''); ?> <?php echo template::ico('cancel'); ?>
Une erreur est survenue lors de l'étape <span id="installUpdateErrorStep"></span>. <strong>
<?php echo helper::translate('Une erreur est survenue lors de l\'étape :') . '<br>'; ?>
<span id="installUpdateErrorStep"> </span>.
</strong>
</div> </div>
<div id="installUpdateSuccess" class="colorGreen displayNone"> <div id="installUpdateSuccess" class="message colorGreen displayNone">
<?php echo template::ico('check', ''); ?> <?php echo template::ico('check'); ?>
Mise à jour terminée avec succès. <?php echo helper::translate('Mise à jour terminée avec succès.'); ?>
</div> </div>
</div> </div>
<div class="col3 verticalAlignMiddle"> <div class="col3 verticalAlignTop">
<?php echo template::button('installUpdateEnd', [ <?php echo template::button('installUpdateEnd', [
'value' => 'Terminer', 'value' => 'Terminer',
'href' => helper::baseUrl() . 'config', 'href' => helper::baseUrl() . 'config',
@ -26,4 +47,10 @@
'class' => 'disabled' 'class' => 'disabled'
]); ?> ]); ?>
</div> </div>
</div>
<div class="row">
<div class="col12">
<p><em><span class="colorRed" id="installUpdateErrorMessage"></span></em></p>
</div>
</div>
</div> </div>

View File

@ -0,0 +1,712 @@
<?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/
*/
class language extends common
{
// URL langues de l'UI en ligne
const ZWII_UI_URL = 'https://forge.chapril.org/ZwiiCMS-Team/zwiicms-translations/raw/branch/master/v13/';
public static $actions = [
'index' => self::GROUP_ADMIN,
'copy' => self::GROUP_ADMIN,
'add' => self::GROUP_ADMIN,
// Ajouter une langue de contenu
'edit' => self::GROUP_ADMIN,
// Éditer une langue de l'UI
'locale' => self::GROUP_ADMIN,
// Éditer une langue de contenu
'delete' => self::GROUP_ADMIN,
// Effacer une langue de contenu ou de l'interface
'content' => self::GROUP_VISITOR,
'update' => self::GROUP_ADMIN,
'default' => self::GROUP_ADMIN
];
const PAGINATION = '20';
// Language contents
public static $translateOptions = [];
// Page pour la configuration dans la langue
public static $pagesList = [];
public static $orphansList = [];
public static $pages = '';
// Liste des langues installées
public static $languagesUiInstalled = [];
public static $languagesInstalled = [];
public static $languagesStore = [];
public static $dialogues = [];
// Liste des langues cibles
public static $languagesTarget = [];
// Activation du bouton de copie
public static $siteCopy = true;
// Localisation en cours d'édition
public static $locales = [];
//UI
// Fichiers des langues de l'interface
public static $i18nFiles = [];
/**
* Met à jour les traduction du site depuis le store
*/
public function update()
{
if (
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true
) {
// Valeurs en sortie
$this->addOutput([
'access' => false
]);
} else {
$lang = $this->getUrl(2);
// Action interdite ou URl avec le code langue incorrecte
if (
array_key_exists($lang, self::$languages) === false
) {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'language',
'state' => false,
'notification' => helper::translate('Action interdite')
]);
}
// Télécharger le descripteur en ligne
$languageData = json_decode(helper::getUrlContents(self::ZWII_UI_URL . $lang . '.json'), true);
$descripteur = json_decode(helper::getUrlContents(self::ZWII_UI_URL . 'language.json'), true);
$success = false;
if (
is_array($languageData) &&
is_array($descripteur['language'][$lang])
) {
if ($this->setData(['language', $lang, $descripteur['language'][$lang]])) {
$success = $this->secure_file_put_contents(self::I18N_DIR . $lang . '.json', $languageData);
$success = is_int($success) ? true : false;
}
}
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'language',
'notification' => $success ? helper::translate('Copie terminée avec succès') : 'Copie terminée avec des erreurs',
'state' => $success
]);
}
}
/**
* Configuration avancée des langues
*/
public function copy()
{
// Soumission du formulaire
if (
$this->getUser('permission', __CLASS__, __FUNCTION__) === true &&
$this->isPost()
) {
// Initialisation
$success = false;
$copyFrom = $this->getInput('translateFormCopySource');
$toCreate = $this->getInput('translateFormCopyTarget');
if ($copyFrom !== $toCreate) {
// Création du dossier
if (is_dir(self::DATA_DIR . $toCreate) === false) { // Si le dossier est déjà créé
$success = mkdir(self::DATA_DIR . $toCreate, 0755);
$success = mkdir(self::DATA_DIR . $toCreate . '/content', 0755);
} else {
$success = true;
}
// Copier les données par défaut
$success = (copy(self::DATA_DIR . $copyFrom . '/locale.json', self::DATA_DIR . $toCreate . '/locale.json') === true && $success === true) ? true : false;
$success = (copy(self::DATA_DIR . $copyFrom . '/module.json', self::DATA_DIR . $toCreate . '/module.json') === true && $success === true) ? true : false;
$success = (copy(self::DATA_DIR . $copyFrom . '/page.json', self::DATA_DIR . $toCreate . '/page.json') === true && $success === true) ? true : false;
$success = ($this->copyDir(self::DATA_DIR . $copyFrom . '/content', self::DATA_DIR . $toCreate . '/content') === true && $success === true) ? true : false;
// Enregistrer la langue
if ($success) {
$notification = sprintf(helper::translate('Données %s copiées vers %s'), self::$languages[$copyFrom], self::$languages[$toCreate]);
} else {
$notification = helper::translate('Erreur de copie, vérifiez les permissions');
}
} else {
$success = false;
$notification = helper::translate('Les langues sélectionnées sont identiques');
}
// Valeurs en sortie
$this->addOutput([
'notification' => $notification,
'title' => 'Utilitaire de copie',
'view' => 'index',
'state' => $success
]);
}
// Tableau des langues installées
foreach (self::$languages as $key => $value) {
// tableau des langues installées
if (is_dir(self::DATA_DIR . $key)) {
self::$languagesTarget[$key] = self::$languages[$key];
}
}
// Langues cibles fr en plus
self::$languagesInstalled = self::$languagesTarget;
// Valeurs en sortie
$this->addOutput([
'title' => helper::translate('Copie de contenus localisés'),
'view' => 'copy'
]);
}
/**
* Configuration
*/
public function index()
{
// --------------------------------------------------------------------------------------------------
// Langues du site
// --------------------------------------------------------------------------------------------------
foreach (self::$languages as $key => $value) {
// tableau des langues installées
if (is_dir(self::DATA_DIR . $key)) {
if (
file_exists(self::DATA_DIR . $key . '/page.json') &&
file_exists(self::DATA_DIR . $key . '/module.json') &&
file_exists(self::DATA_DIR . $key . '/locale.json')
) {
if (file_exists(self::DATA_DIR . $key . '/.default')) {
$messageLocale = helper::translate('Langue par défaut');
} elseif (isset($_SESSION['ZWII_SITE_CONTENT']) && $_SESSION['ZWII_SITE_CONTENT'] === $key) {
$messageLocale = helper::translate('Langue du site sélectionnée');
} else {
$messageLocale = '';
}
self::$languagesInstalled[] = [
template::flag($key, '20 %') . '&nbsp;' . $value . ' (' . $key . ')',
$messageLocale,
template::button('translateContentLanguageLocaleEdit' . $key, [
'class' => file_exists(self::DATA_DIR . $key . '/locale.json') ? '' : ' disabled',
'href' => helper::baseUrl() . $this->getUrl(0) . '/locale/' . $key,
'value' => template::ico('pencil'),
'help' => 'Éditer'
]),
template::button('translateContentLanguageLocaleDelete' . $key, [
'class' => 'translateDelete buttonRed' . ($messageLocale ? ' disabled' : ''),
'href' => helper::baseUrl() . $this->getUrl(0) . '/delete/locale/' . $key,
'value' => template::ico('trash'),
'help' => 'Supprimer',
])
];
}
}
}
// Activation du bouton de copie
self::$siteCopy = count(self::$languagesInstalled) > 1 ? false : true;
// --------------------------------------------------------------------------------------------------
// Langues de l'UI
// --------------------------------------------------------------------------------------------------
// Langues attachées à des utilisateurs non effaçables
$usersUI = [];
$users = $this->getData(['user']);
foreach ($users as $key => $value) {
array_push($usersUI, $this->getData(['user', $key, 'language']));
}
// Langues installées
$installedUI = $this->getData(['language']);
if (array_key_exists('language', $installedUI)) {
$installedUI = $installedUI['language'];
}
// Langues disponibles en ligne
$storeUI = json_decode(helper::getUrlContents(self::ZWII_UI_URL . 'language.json'), true);
$storeUI = $storeUI ? $storeUI['language'] : null;
// Construction du tableau à partir des langues disponibles dans le store
foreach ($installedUI as $file => $value) {
// La langue est-elle référencée ?
if (array_key_exists(basename($file, '.json'), $installedUI)) {
// La langue est déjà installée
self::$languagesUiInstalled[$file] = [
template::flag($file, '20 %') . '&nbsp;' . self::$languages[$file],
$value['version'],
helper::dateUTF8('%d/%m/%Y', $value['date'], self::$i18nUI),
//self::$i18nUI === $file ? helper::translate('Interface') : '',
'',
/*
template::button('translateContentLanguageUIEdit' . $file, [
'href' => helper::baseUrl() . $this->getUrl(0) . '/edit/' . $file,
'value' => template::ico('pencil'),
'help' => 'Éditer',
'disabled' => 'fr_FR' === $file
]),
*/
template::button('translateContentLanguageUIDownload' . $file, [
'class' => isset($storeUI[$file]['version']) && version_compare($installedUI[$file]['version'], $storeUI[$file]['version']) < 0 ? 'buttonGreen' : '',
'href' => helper::baseUrl() . $this->getUrl(0) . '/update/' . $file,
'value' => template::ico('update'),
'help' => 'Mise à jour',
]),
template::button('translateContentLanguageUIDelete' . $file, [
'class' => 'translateDelete buttonRed' . (in_array($file, $usersUI) ? ' disabled' : ''),
'href' => helper::baseUrl() . $this->getUrl(0) . '/delete/ui/' . $file,
'value' => template::ico('trash'),
'help' => 'Supprimer',
]),
];
}
}
// Construction du tableau à partir des langues disponibles dans le store
if ($storeUI) {
foreach ($storeUI as $file => $value) {
// La langue est-elle installée ?
if (array_key_exists($file, $installedUI) === false) {
self::$languagesStore[$file] = [
template::flag($file, '20 %') . '&nbsp;' . self::$languages[$file],
$value['version'],
helper::dateUTF8('%d/%m/%Y', $value['date'], self::$i18nUI),
'',
template::button('translateContentLanguageUIDownload' . $file, [
'class' => 'buttonGreen',
'href' => helper::baseUrl() . $this->getUrl(0) . '/update/' . $file,
'value' => template::ico('shopping-basket'),
'help' => 'Installer',
])
];
}
}
}
// Pointer vers la fenêtre
switch ($this->getUrl(1)) {
case 'interface':
setcookie('translateLayout', 'ui', time() + 3600, '/', '', false, false);
break;
case 'site':
setcookie('translateLayout', 'content', time() + 3600, '/', '', false, false);
break;
default:
break;
}
// Valeurs en sortie
$this->addOutput([
'title' => helper::translate('Langues'),
'view' => 'index'
]);
}
/***
* Ajouter une langue de contenu
*/
public function add()
{
// Soumission du formulaire
if (
$this->getUser('permission', __CLASS__, __FUNCTION__) === true &&
$this->isPost()
) {
$lang = $this->getInput('translateAddContent');
// Constructeur pour cette langue
$this->jsonDB($lang);
// Création du contenu
$this->initData('page', $lang);
$this->initData('module', $lang);
$this->initData('locale', $lang);
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'language',
'notification' => helper::translate('Modifications enregistrées'),
'state' => true
]);
}
// Préparation de l'affichage du formulaire
//-----------------------------------------
// Tableau des langues non installées
foreach (self::$languages as $key => $value) {
if (!is_dir(self::DATA_DIR . $key))
self::$i18nFiles[$key] = $value;
}
// Valeurs en sortie
$this->addOutput([
'title' => helper::translate('Nouveau contenu localisé'),
'view' => 'add'
]);
}
/**
* Edition des paramètres de la langue de contenu
*/
public function locale()
{
// Action interdite ou URl avec le code langue incorrecte
$lang = $this->getUrl(2);
if (
array_key_exists($lang, self::$languages) === false
) {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'language',
'state' => false,
'notification' => helper::translate('Action interdite')
]);
}
// Soumission du formulaire
if (
$this->getUser('permission', __CLASS__, __FUNCTION__) === true &&
$this->isPost()
) {
// Sauvegarder les locales
$data = [
'locale' => [
'homePageId' => $this->getInput('localeHomePageId', helper::FILTER_ID, true),
'page404' => $this->getInput('localePage404'),
'page403' => $this->getInput('localePage403'),
'page302' => $this->getInput('localePage302'),
'legalPageId' => $this->getInput('localeLegalPageId'),
'searchPageId' => $this->getInput('localeSearchPageId'),
'poweredPageLabel' => empty($this->getInput('localePoweredPageLabel', helper::FILTER_STRING_SHORT)) ? 'Motorisé par' : $this->getInput('localePoweredPageLabel', helper::FILTER_STRING_SHORT),
'searchPageLabel' => empty($this->getInput('localeSearchPageLabel', helper::FILTER_STRING_SHORT)) ? 'Rechercher' : $this->getInput('localeSearchPageLabel', helper::FILTER_STRING_SHORT),
'legalPageLabel' => empty($this->getInput('localeLegalPageLabel', helper::FILTER_STRING_SHORT)) ? 'Mentions légales' : $this->getInput('localeLegalPageLabel', helper::FILTER_STRING_SHORT),
'sitemapPageLabel' => empty($this->getInput('localeSitemapPageLabel', helper::FILTER_STRING_SHORT)) ? 'Plan du site' : $this->getInput('localeSitemapPageLabel', helper::FILTER_STRING_SHORT),
'metaDescription' => $this->getInput('localeMetaDescription', helper::FILTER_STRING_LONG, true),
'title' => $this->getInput('localeTitle', helper::FILTER_STRING_SHORT, true),
'cookies' => [
// Les champs sont obligatoires si l'option consentement des cookies est active
'mainLabel' => $this->getInput('localeCookiesZwiiText', helper::FILTER_STRING_LONG, $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN)),
'titleLabel' => $this->getInput('localeCookiesTitleText', helper::FILTER_STRING_SHORT, $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN)),
'linkLegalLabel' => $this->getInput('localeCookiesLinkMlText', helper::FILTER_STRING_SHORT, $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN)),
'cookiesFooterText' => $this->getInput('localeCookiesFooterText', helper::FILTER_STRING_SHORT, $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN)),
'buttonValidLabel' => $this->getInput('localeCookiesButtonText', helper::FILTER_STRING_SHORT, $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN))
]
]
];
// Sauvegarde hors méthodes si la langue n'est pas celle de l'UI
if ($lang === self::$siteContent) {
// Enregistrer les données par lecture directe du formulaire
$this->setData(['locale', $data['locale']]);
} else {
// Sauver sur le disque
$this->secure_file_put_contents(self::DATA_DIR . $lang . '/locale.json', $data);
}
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . $this->getUrl(),
'notification' => helper::translate('Modifications enregistrées'),
'state' => true
]);
}
// Préparation de l'affichage du formulaire
//-----------------------------------------
// La locale est-elle celle de la langue de l'UI ?
if ($lang === self::$siteContent) {
self::$locales[$lang]['locale'] = $this->getData(['locale']);
} else {
// Lire les locales sans passer par les méthodes
self::$locales[$lang] = json_decode(file_get_contents(self::DATA_DIR . $lang . '/locale.json'), true);
}
// Générer la liste des pages disponibles
self::$pagesList = $this->getData(['page']);
foreach (self::$pagesList as $page => $pageId) {
if (
$this->getData(['page', $page, 'block']) === 'bar' ||
$this->getData(['page', $page, 'disable']) === true
) {
unset(self::$pagesList[$page]);
}
}
self::$orphansList = $this->getData(['page']);
foreach (self::$orphansList as $page => $pageId) {
if (
$this->getData(['page', $page, 'block']) === 'bar' ||
$this->getData(['page', $page, 'disable']) === true ||
$this->getdata(['page', $page, 'position']) !== 0
) {
unset(self::$orphansList[$page]);
}
}
// Valeurs en sortie
$this->addOutput([
'title' => helper::translate('Paramètres de la localisation') . '&nbsp;' . template::flag($lang, '20 %'),
'view' => 'locale'
]);
}
/**
* Edition de la langue de l'interface
*/
public function edit()
{
$lang = $this->getUrl(2);
// Action interdite ou URl avec le code langue incorrecte
if (
array_key_exists($lang, self::$languages) === false
) {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'language',
'state' => false,
'notification' => helper::translate('Action interdite')
]);
}
// Soumission du formulaire
if (
$this->getUser('permission', __CLASS__, __FUNCTION__) === true &&
$this->isPost()
) {
// Sauvegarder les champs de la langue
$data = json_decode(file_get_contents(self::I18N_DIR . $lang . '.json'), true);
foreach ($data as $key => $value) {
$target = $this->getInput('translateString' . array_search($key, array_keys($data)));
if (empty($target) === false) {
$data[$key] = $target;
}
}
$this->secure_file_put_contents(self::I18N_DIR . $lang . '.json', $data);
// Mettre à jour le descripteur
$this->setData([
'language',
$lang,
[
'version' => $this->getInput('translateEditVersion'),
'date' => $this->getInput('translateEditDate', helper::FILTER_DATETIME),
]
]);
// Valeurs en sortie
$this->addOutput([
'notification' => helper::translate('Modifications enregistrées'),
'redirect' => helper::baseUrl() . 'language',
'state' => true,
]);
}
// Construction du formulaire
// Chargement des dialogue de la langue cible
if (!isset($data)) {
$data = json_decode(file_get_contents(self::I18N_DIR . $this->getUrl(2) . '.json'), true);
}
// Ajout des champs absents selon la langue de référence
$dataFr = json_decode(file_get_contents(self::I18N_DIR . 'fr_FR.json'), true);
foreach ($dataFr as $key => $value) {
if (!array_key_exists($key, $data)) {
$data[$key] = '';
}
}
$this->secure_file_put_contents(self::I18N_DIR . $lang . '.json', $data);
// Tableau des chaines à traduire dans la langue sélectionnée
foreach ($data as $key => $value) {
$dialogues[] = ['source' => $key, 'target' => $value];
}
// Pagination
$pagination = helper::pagination($dialogues, $this->getUrl(), self::PAGINATION);
// Liste des pages
self::$pages = $pagination['pages'];
// Articles en fonction de la pagination
for ($i = $pagination['first']; $i < $pagination['last']; $i++) {
self::$dialogues[$i] = $dialogues[$i];
}
// Valeurs en sortie
$this->addOutput([
'title' => helper::translate('Éditer les dialogues') . '&nbsp;' . template::flag($lang, '20 %'),
'view' => 'edit',
'vendor' => [
'flatpickr',
],
]);
}
/***
* Effacer une langue de contenu
*/
public function delete()
{
if (
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true
) {
// Valeurs en sortie
$this->addOutput([
'access' => false
]);
} else {
// Action interdite ou URl avec le code langue incorrecte
$target = $this->getUrl(2);
$lang = $this->getUrl(3);
if (
array_key_exists($lang, self::$languages) === false
) {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'language',
'state' => false,
'notification' => helper::translate('Action interdite')
]);
}
switch ($target) {
case 'locale':
$success = false;
// Effacement d'une site dans une langue
if (is_dir(self::DATA_DIR . $lang) === true) {
$success = $this->deleteDir(self::DATA_DIR . $lang);
}
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'language',
'notification' => $success ? helper::translate('Traduction supprimée') : helper::translate('Erreur inconnue'),
'state' => $success
]);
break;
case 'ui':
$success = false;
// Effacement d'une langue de l'interface
if (file_exists(self::I18N_DIR . $lang . '.json') === true) {
$this->deleteData(['language', $lang]);
$success = unlink(self::I18N_DIR . $lang . '.json');
}
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'language',
'notification' => $success ? helper::translate('Traduction supprimée') : helper::translate('Erreur inconnue'),
'state' => $success
]);
break;
default:
# Do nothing
break;
}
}
}
/*
* Modifie la langue du site par défaut
*
*/
public function default()
{
if (
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true
) {
// Valeurs en sortie
$this->addOutput([
'access' => false
]);
} else {
// Action interdite ou URl avec le code langue incorrecte
$lang = $this->getUrl(2);
if (
array_key_exists($lang, self::$languages) === false
) {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'language',
'state' => false,
'notification' => helper::translate('Action interdite')
]);
}
foreach (self::$languages as $key => $value) {
if (file_exists(self::DATA_DIR . $key . '/.default')) {
unlink(self::DATA_DIR . $key . '/.default');
touch(self::DATA_DIR . $lang . '/.default');
break;
}
}
// Valeurs en sortie
$this->addOutput([
'notification' => helper::translate('Modifications enregistrées'),
'redirect' => helper::baseUrl() . 'language',
'state' => true,
]);
}
}
/*
* Traitement du changement de langue
* Fonction utilisée par le noyau
*/
public function content()
{
// Langue sélectionnée
$lang = $this->getUrl(2);
/**
* Changement de la langue si
* différe de la langue active
* déjà initialisée
* fait partie des langues installées
*/
if (
is_dir(self::DATA_DIR . $lang) &&
array_key_exists($lang, self::$languages) === true
) {
// Stocker la sélection
$_SESSION['ZWII_SITE_CONTENT'] = $lang;
}
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl()
]);
}
}

View File

@ -0,0 +1,20 @@
/**
* 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/
*/
/** @import url("site/data/admin.css"); */
/** NE PAS EFFACER
* admin.css
*/

View File

@ -0,0 +1,29 @@
<?php echo template::formOpen('translateAddForm'); ?>
<div class="row">
<div class="col1">
<?php echo template::button('translateFormBack', [
'class' => 'buttonGrey',
'href' => helper::baseUrl() . 'language',
'value' => template::ico('left')
]); ?>
</div>
<div class="col2 offset9">
<?php echo template::submit('translateFormSubmit'); ?>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4><?php echo helper::translate('Sélectionnez une langue'); ?>
</h4>
<div class="row">
<div class="col4 offset4">
<?php echo template::select('translateAddContent', $module::$i18nFiles, [
'label' => 'Langues disponibles'
]); ?>
</div>
</div>
</div>
</div>
</div>
<?php echo template::formClose(); ?>

View File

@ -0,0 +1,20 @@
/**
* 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/
*/
/** @import url("site/data/admin.css"); */
/** NE PAS EFFACER
* admin.css
*/

View File

@ -0,0 +1,36 @@
<?php echo template::formOpen('translateFormCopy'); ?>
<div class="row">
<div class="col1">
<?php echo template::button('translateFormCopyBack', [
'class' => 'buttonGrey',
'href' => helper::baseUrl() . 'language',
'value' => template::ico('left')
]); ?>
</div>
<div class="col2 offset9">
<?php echo template::submit('translateFormCopySubmit', [
'value' => 'Copier'
]); ?>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4><?php echo helper::translate('Sélectionnez la langue à copier vers une langue cible'); ?>
</h4>
<div class="row">
<div class="col6">
<?php echo template::select('translateFormCopySource', $module::$languagesInstalled, [
'label' => 'Source'
]); ?>
</div>
<div class="col6">
<?php echo template::select('translateFormCopyTarget', $module::$languagesTarget, [
'label' => 'Cible'
]); ?>
</div>
</div>
</div>
</div>
</div>
<?php echo template::formClose(); ?>

View File

@ -0,0 +1,20 @@
/**
* 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/
*/
/** @import url("site/data/admin.css"); */
/** NE PAS EFFACER
* admin.css
*/

View File

@ -0,0 +1,59 @@
<?php echo template::formOpen('translateUIForm'); ?>
<div class="row">
<div class="col1">
<?php echo template::button('translateUIFormBack', [
'class' => 'buttonGrey',
'href' => helper::baseUrl() . 'language',
'value' => template::ico('left')
]); ?>
</div>
<div class="col2 offset9">
<?php echo template::submit('translateUIFormSubmit'); ?>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4>
<?php echo helper::translate('Paramètres'); ?>
</h4>
<div class="row">
<div class="col6">
<?php echo template::text('translateEditVersion', [
'label' => 'Version n°',
'value' => $this->getData(['language', $this->getUrl(2), 'version'])
]); ?>
</div>
<div class="col6">
<?php echo template::date('translateEditDate', [
'label' => 'Date de publication',
'type' => 'datetime-local',
'value' => $this->getData(['language', $this->getUrl(2), 'date'])
]); ?>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<div class="row">
<?php foreach ($module::$dialogues as $key => $value) : ?>
<div class="col6">
<?php echo sprintf('%g -', $key); ?>
<?php echo $value['source']; ?>
</div>
<div class="col6">
<?php echo template::text('translateString' . $key, [
'label' => '',
'value' => $value['target']
]); ?>
</div>
<?php endforeach; ?>
</div>
<?php echo $module::$pages; ?>
</div>
</div>
</div>
<?php echo template::formClose(); ?>

View File

@ -0,0 +1,54 @@
/**
* 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/
*/
/** NE PAS EFFACER
* admin.css
*/
#setupContainer {
display: block;
}
.buttonNotice {
border: 2px solid red !important;
border-radius: 2px;
}
/* Style the tab */
.tab {
margin-top: 1.8em;
overflow: hidden;
text-align: center;
}
.tab ~ .tabContent {
margin-top: -10px;
}
.buttonTab {
display: inline-block;
transition: 0.3s;
border-radius: 10px 10px 0px 0px;
width: 160px;
margin: 0 1px;
}
.buttonTab:hover {
filter: saturate(200%);
}
.activeButton {
background-color: #00BFFF;
}

View File

@ -0,0 +1,88 @@
/**
* 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/
*/
$(document).ready(function() {
var translateLayout = getCookie("translateLayout");
if (translateLayout == null) {
translateLayout = "content";
setCookie("translateLayout", "content");
}
$("#contentContainer").hide();
$("#uiContainer").hide();
$("#" + translateLayout + "Container").show();
$("#translate" + capitalizeFirstLetter(translateLayout) + "Button").addClass("activeButton");
});
// Sélecteur de fonctions
$("#translateUiButton").on("click", function() {
$("#contentContainer").hide();
$("#uiContainer").show();
$(this).addClass("activeButton");
$("#translateContentButton").removeClass("activeButton");
setCookie("translateLayout", "ui");
});
$("#translateContentButton").on("click", function() {
$("#uiContainer").hide();
$("#contentContainer").show();
$(this).addClass("activeButton");
$("#translateUiButton").removeClass("activeButton");
setCookie("translateLayout", "content");
// Afficher les boutons liés au contenu
$(".contentButtonContainer").show();
});
/**
* Confirmation de suppression
*/
$(".translateDelete").on("click", function() {
var _this = $(this);
var message_delete = "<?php echo helper::translate('Confirmer la suppression de cette langue'); ?>";
return core.confirm(message_delete, function() {
$(location).attr("href", _this.attr("href"));
});
});
// Fonctions
function setCookie(name, value, days) {
var expires = "";
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toUTCString();
}
document.cookie = name + "=" + (value || "") + expires + "; path=/; samesite=lax";
}
function getCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') c = c.substring(1, c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
}
return null;
}
// Define function to capitalize the first letter of a string
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}

View File

@ -0,0 +1,98 @@
<?php echo template::formOpen('translateForm'); ?>
<div class="row">
<div class="col1">
<?php echo template::button('translateFormBack', [
'class' => 'buttonGrey',
'href' => helper::baseUrl(),
'value' => template::ico('home')
]); ?>
</div>
<div class="col1">
<?php /**echo template::button('translateHelp', [
'href' => 'https://doc.zwiicms.fr/prise-en-charge-des-langues-etrangeres',
'target' => '_blank',
'value' => template::ico('help'),
'class' => 'buttonHelp',
'help' => 'Consulter l\'aide en ligne'
]);*/?>
</div>
</div>
<div class="tab">
<?php echo template::button('translateUiButton', [
'value' => 'Interface',
'class' => 'buttonTab'
]); ?>
<?php echo template::button('translateContentButton', [
'value' => 'Site',
'class' => 'buttonTab'
]); ?>
</div>
<div id="uiContainer" class="tabContent">
<div class="row">
<div class="col12">
<div class="block">
<h4>
<?php echo helper::translate('Langues installées'); ?>
</h4>
<?php if ($module::$languagesUiInstalled): ?>
<?php echo template::table([2, 1, 1, 5, 1, 1], $module::$languagesUiInstalled, ['Langues', 'Version', 'Date', '', '', '']); ?>
<?php endif; ?>
</div>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4>
<?php echo helper::translate('Catalogue'); ?>
</h4>
<?php if ($module::$languagesStore): ?>
<?php echo template::table([2, 1, 2, 6, 1], $module::$languagesStore, ['Langues', 'Version', 'Date', '', '']); ?>
<?php endif; ?>
</div>
</div>
</div>
</div>
<div id="contentContainer" class="tabContent">
<div class="row">
<div class="col12">
<div class="block">
<h4>
<?php echo helper::translate('Paramètres'); ?>
</h4>
<div class="col4 offset2">
<?php echo template::button('translateButtonCopyContent', [
'href' => helper::baseUrl() . 'language/copy',
'ico' => 'docs',
'disabled' => $module::$siteCopy,
'value' => 'Copie de contenus localisés'
]); ?>
</div>
<div class="col4">
<?php echo template::button('translateButtonAddContent', [
'href' => helper::baseUrl() . 'language/add',
'ico' => 'plus',
'class' => 'buttonGreen',
'value' => 'Nouveau contenu localisé'
]); ?>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4>
<?php echo helper::translate('Langues installées'); ?>
</h4>
<?php if ($module::$languagesInstalled): ?>
<?php echo template::table([2, 6, 1, 1], $module::$languagesInstalled, ['Langues', '', '', '']); ?>
<?php endif; ?>
</div>
</div>
</div>
</div>
<?php echo template::formClose(); ?>

View File

@ -0,0 +1,20 @@
/**
* 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/
*/
/** @import url("site/data/admin.css"); */
/** NE PAS EFFACER
* admin.css
*/

View File

@ -0,0 +1,206 @@
<?php echo template::formOpen('translateLocaleForm'); ?>
<div class="row">
<div class="col1">
<?php echo template::button('translateFormBack', [
'class' => 'buttonGrey',
'href' => helper::baseUrl() . 'language',
'value' => template::ico('left')
]); ?>
</div>
<div class="col2 offset9">
<?php echo template::submit('translateFormSubmit'); ?>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4><?php echo helper::translate('Identité du site'); ?>
<!--<span id="localeHelpButton" class="helpDisplayButton" title="Cliquer pour consulter l'aide en ligne">
<a href="https://doc.zwiicms.fr/localisation-et-identite" target="_blank">
<?php //echo template::ico('help', ['margin' => 'left']); ?>
</a>
</span>-->
</h4>
<div class="row">
<div class="col12">
<?php echo template::text('localeTitle', [
'label' => 'Titre',
'value' => $module::$locales[$this->getUrl(2)]['locale']['title'],
'help' => 'Il apparaît dans la barre de titre et les partages sur les réseaux sociaux.'
]); ?>
</div>
</div>
<div class="row">
<div class="col12">
<?php echo template::textarea('localeMetaDescription', [
'label' => 'Description',
'value' => $module::$locales[$this->getUrl(2)]['locale']['metaDescription'],
'help' => 'La description d\'une page participe à son référencement, chaque page doit disposer d\'une description différente.'
]); ?>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4><?php echo helper::translate('Assignation des pages spéciales') ?>
<!--<span id="localeHelpButton" class="helpDisplayButton" title="Cliquer pour consulter l'aide en ligne">
<a href="https://doc.zwiicms.fr/localisation-et-identite" target="_blank">
<?php //echo template::ico('help', ['margin' => 'left']); ?>
</a>
</span>-->
</h4>
<div class="row">
<div class="col4">
<?php echo template::select('localeHomePageId', helper::arrayColumn($module::$pagesList, 'title', 'SORT_ASC'), [
'label' => 'Accueil',
'selected' => $module::$locales[$this->getUrl(2)]['locale']['homePageId'],
'help' => 'La première page que vos visiteurs verront.'
]); ?>
</div>
<div class="col4">
<?php echo template::select('localePage403', array_merge(['none' => 'Page par défaut'], helper::arrayColumn($module::$orphansList, 'title', 'SORT_ASC')), [
'label' => 'Accès interdit, erreur 403',
'selected' => $module::$locales[$this->getUrl(2)]['locale']['page403'],
'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.'
]); ?>
</div>
<div class="col4">
<?php echo template::select('localePage404', array_merge(['none' => 'Page par défaut'], helper::arrayColumn($module::$orphansList, 'title', 'SORT_ASC')), [
'label' => 'Page inexistante, erreur 404',
'selected' => $module::$locales[$this->getUrl(2)]['locale']['page404'],
'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.'
]); ?>
</div>
</div>
<div class="row">
<div class="col4">
<?php echo template::select('localeLegalPageId', array_merge(['none' => 'Aucune'], helper::arrayColumn($module::$pagesList, 'title', 'SORT_ASC')), [
'label' => 'Mentions légales',
'selected' => $module::$locales[$this->getUrl(2)]['locale']['legalPageId'],
'help' => 'Les mentions légales sont obligatoires en France. Une option du pied de page ajoute un lien discret vers cette page.'
]); ?>
</div>
<div class="col4">
<?php echo template::select('localeSearchPageId', array_merge(['none' => 'Aucune'], helper::arrayColumn($module::$pagesList, 'title', 'SORT_ASC')), [
'label' => 'Recherche dans le site',
'selected' => $module::$locales[$this->getUrl(2)]['locale']['searchPageId'],
'help' => 'Sélectionnez une page contenant le module \'Recherche\'. Une option du pied de page ajoute un lien discret vers cette page.'
]); ?>
</div>
<div class="col4">
<?php
echo template::select('localePage302', array_merge(['none' => 'Page par défaut'], helper::arrayColumn($module::$orphansList, 'title', 'SORT_ASC')), [
'label' => 'Site en maintenance',
'selected' => $module::$locales[$this->getUrl(2)]['locale']['page302'],
'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.'
]); ?>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4><?php echo helper::translate('Étiquettes des pages spéciales'); ?>
<!--<span id="labelHelpButton" class="helpDisplayButton" title="Cliquer pour consulter l'aide en ligne">
<a href="https://doc.zwiicms.fr/Étiquettes-des-pages-speciales" target="_blank">
<?php //echo template::ico('help', ['margin' => 'left']); ?>
</a>
</span>-->
</h4>
<div class="row">
<div class="col4">
<?php echo template::text('localePoweredPageLabel', [
'label' => 'Motorisé par',
'placeholder' => 'Motorisé par',
'value' => $module::$locales[$this->getUrl(2)]['locale']['poweredPageLabel']
]); ?>
</div>
<div class="col4">
<?php echo template::text('localeLegalPageLabel', [
'label' => 'Mentions légales',
'placeholder' => 'Mentions légales',
'value' => $module::$locales[$this->getUrl(2)]['locale']['legalPageLabel']
]); ?>
</div>
<div class="col4">
<?php echo template::text('localeSearchPageLabel', [
'label' => 'Rechercher',
'placeholder' => 'Rechercher',
'value' => $module::$locales[$this->getUrl(2)]['locale']['searchPageLabel']
]); ?>
</div>
</div>
<div class="row">
<div class="col4 offset2">
<?php echo template::text('localeSitemapPageLabel', [
'label' => 'Plan du site',
'placeholder' => 'Plan du site',
'value' => $module::$locales[$this->getUrl(2)]['locale']['sitemapPageLabel'],
]); ?>
</div>
<div class="col4">
<?php echo template::text('localeCookiesFooterText', [
'label' => 'Cookies',
'value' => $module::$locales[$this->getUrl(2)]['locale']['cookies']['cookiesFooterText'],
'placeHolder' => 'Cookies'
]); ?>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4><?php echo helper::translate('Message d\'acceptation des Cookies'); ?>
<!--<span id="specialeHelpButton" class="helpDisplayButton" title="Cliquer pour consulter l'aide en ligne">
<a href="https://doc.zwiicms.fr/cookies" target="_blank">
<?php //echo template::ico('help', ['margin' => 'left']); ?>
</a>
</span>-->
</h4>
<div class="row">
<div class="col6">
<?php echo template::text('localeCookiesTitleText', [
'help' => 'Saisissez le Titre de gestion des cookies.',
'label' => 'Titre',
'value' => $module::$locales[$this->getUrl(2)]['locale']['cookies']['titleLabel'],
'placeHolder' => 'Cookies essentiels'
]); ?>
</div>
<div class="col6">
<?php echo template::text('localeCookiesButtonText', [
'label' => 'Bouton de validation',
'value' => $module::$locales[$this->getUrl(2)]['locale']['cookies']['buttonValidLabel'],
'placeHolder' => 'J\'ai compris'
]); ?>
</div>
</div>
<div class="row">
<div class="col8">
<?php echo template::textarea('localeCookiesZwiiText', [
'help' => 'Saisissez le message pour les cookies déposés par ZwiiCMS, nécessaires au fonctionnement et qui ne nécessitent pas de consentement.',
'label' => 'Cookies Zwii',
'value' => $module::$locales[$this->getUrl(2)]['locale']['cookies']['mainLabel'],
'placeHolder' => 'Ce site utilise des cookies nécessaires à son fonctionnement, ils permettent de fluidifier son fonctionnement par exemple en mémorisant les données de connexion, la langue que vous avez choisie ou la validation de ce message.'
]); ?>
</div>
<div class="col4">
<?php echo template::text('localeCookiesLinkMlText', [
'help' => 'Saisissez le texte du lien vers les mentions légales,la page doit être définie dans la configuration du site.',
'label' => 'Lien page des mentions légales.',
'value' => $module::$locales[$this->getUrl(2)]['locale']['cookies']['linkLegalLabel'],
'placeHolder' => 'Consulter les mentions légales'
]); ?>
</div>
</div>
</div>
</div>
</div>
<?php echo template::formClose(); ?>

View File

@ -0,0 +1 @@
<?php // Résolument vide

37
core/module/maintenance/maintenance.php Executable file → Normal file
View File

@ -2,17 +2,19 @@
/** /**
* This file is part of Zwii. * This file is part of Zwii.
*
* For full copyright and license information, please see the LICENSE * For full copyright and license information, please see the LICENSE
* file that was distributed with this source code. * file that was distributed with this source code.
* *
* @author Rémi Jean <remi.jean@outlook.com> * @author Rémi Jean <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean * @copyright Copyright (C) 2008-2018, Rémi Jean
* @license GNU General Public License, version 3 * @author Frédéric Tempez <frederic.tempez@outlook.com>
* @link http://zwiicms.com/ * @copyright Copyright (C) 2018-2024, Frédéric Tempez
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
* @link http://zwiicms.fr/
*/ */
class maintenance extends common { class maintenance extends common
{
public static $actions = [ public static $actions = [
'index' => self::GROUP_VISITOR 'index' => self::GROUP_VISITOR
@ -21,13 +23,34 @@ class maintenance extends common {
/** /**
* Maintenance * Maintenance
*/ */
public function index() { public function index()
{
// Redirection vers l'accueil après rafraîchissement et que la maintenance est terminée.
if ($this->getData(['config', 'maintenance']) == False) {
header('Location:' . helper::baseUrl());
exit();
}
// Page perso définie et existante
if (
$this->getData(['locale', 'page302']) !== 'none'
and $this->getData(['page', $this->getData(['locale', 'page302'])])
) {
$this->addOutput([
'display' => self::DISPLAY_LAYOUT_LIGHT,
'title' => $this->getData(['page', $this->getData(['locale', 'page302']), 'hideTitle'])
? ''
: $this->getData(['page', $this->getData(['locale', 'page302']), 'title']),
//'content' => $this->getdata(['page',$this->getData(['locale','page302']),'content']),
'content' => $this->getPage($this->getData(['locale', 'page302']), self::$siteContent),
'view' => 'index'
]);
} else {
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'display' => self::DISPLAY_LAYOUT_LIGHT, 'display' => self::DISPLAY_LAYOUT_LIGHT,
'title' => 'Maintenance en cours...', 'title' => helper::translate('Maintenance en cours...'),
'view' => 'index' 'view' => 'index'
]); ]);
} }
}
} }

View File

@ -0,0 +1 @@
/* vide */

6
core/module/maintenance/view/index/index.php Executable file → Normal file
View File

@ -1,8 +1,10 @@
<p>Notre site est actuellement en maintenance. Nous sommes désolés pour la gêne occasionnée et faisons notre possible pour être rapidement de retour.</p> <p>
<?php echo helper::translate('Notre site est actuellement en maintenance. Nous sommes désolés pour la gêne occasionnée et faisons notre possible pour être rapidement de retour.'); ?>
</p>
<div class="row"> <div class="row">
<div class="col4 offset8 textAlignCenter"> <div class="col4 offset8 textAlignCenter">
<?php echo template::button('maintenanceLogin', [ <?php echo template::button('maintenanceLogin', [
'value' => 'Administration', 'value' => 'Connexion',
'href' => helper::baseUrl() . 'user/login', 'href' => helper::baseUrl() . 'user/login',
'ico' => 'lock' 'ico' => 'lock'
]); ?> ]); ?>

620
core/module/page/page.php Executable file → Normal file
View File

@ -9,17 +9,22 @@
* @author Rémi Jean <remi.jean@outlook.com> * @author Rémi Jean <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean * @copyright Copyright (C) 2008-2018, Rémi Jean
* @author Frédéric Tempez <frederic.tempez@outlook.com> * @author Frédéric Tempez <frederic.tempez@outlook.com>
* @copyright Copyright (C) 2018-2019, Frédéric Tempez * @copyright Copyright (C) 2018-2024, Frédéric Tempez
* @license GNU General Public License, version 3 * @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
* @link http://zwiicms.com/ * @link http://zwiicms.fr/
*/ */
class page extends common { class page extends common
{
public static $actions = [ public static $actions = [
'add' => self::GROUP_MODERATOR, 'add' => self::GROUP_EDITOR,
'delete' => self::GROUP_MODERATOR, 'delete' => self::GROUP_EDITOR,
'edit' => self::GROUP_MODERATOR 'edit' => self::GROUP_EDITOR,
'duplicate' => self::GROUP_EDITOR,
'jsEditor' => self::GROUP_EDITOR,
'cssEditor' => self::GROUP_EDITOR,
'register' => self::GROUP_EDITOR,
]; ];
public static $pagesNoParentId = [ public static $pagesNoParentId = [
'' => 'Aucune' '' => 'Aucune'
@ -32,33 +37,130 @@ class page extends common {
public static $typeMenu = [ public static $typeMenu = [
'text' => 'Texte', 'text' => 'Texte',
'icon' => 'Icône', 'icon' => 'Icône',
'icontitle' => 'Icône et bulle' 'icontitle' => 'Icône avec bulle de texte'
]; ];
// Position du module // Position du module
public static $modulePosition = [ public static $modulePosition = [
'bottom' => 'En bas', 'bottom' => 'Après le contenu de la page',
'top' => 'En haut', 'top' => 'Avant le contenu de la page',
'free' => 'Libre' 'free' => 'À l\'emplacement du mot clé [MODULE] dans la page'
]; ];
public static $pageBlocks = [ public static $pageBlocks = [
'12' => 'Pleine page', '12' => 'Page standard',
'4-8' => 'Barre latérale 1/3 - Page 2/3', 'bar' => 'Barre latérale',
'8-4' => 'Page 2/3 - Barre latérale 1/3', '4-8' => 'Barre 1/3 - page 2/3',
'3-9' => 'Barre latérale 1/4 - Page 3/4', '8-4' => 'Page 2/3 - barre 1/3',
'9-3' => 'Page 3/4 - Barre latérale 1/4', '3-9' => 'Barre 1/4 - page 3/4',
'3-6-3' => 'Barre latérale 1/4 - Page 1/2 - Barre latérale 1/4', '9-3' => 'Page 3/4 - barre 1/4',
'bar' => 'Barre latérale' '3-6-3' => 'Barre 1/4 - page 1/2 - barre 1/4',
'2-7-3' => 'Barre 2/12 - page 7/12 - barre 3/12',
'3-7-2' => 'Barre 3/12 - page 7/12 - barre 2/12',
]; ];
public static $displayMenu = [ public static $displayMenu = [
'none' => 'Aucun', 'none' => 'Aucun menu',
'parents' => 'Menu principal', 'parents' => 'Le menu horizontal intégral',
'children' => 'Sous-menu de la page parente' 'children' => 'Le sous-menu de la page parente'
]; ];
public static $extraPosition = [
false => 'Menu standard',
true => 'Menu accessoire'
];
public static $userProfils = [];
public static $navIconTemplate = [
'dir' => 'Petit triangle',
'open' => 'Grand triangle',
'big' => 'Flèche',
];
public static $navIconPosition = [
'none' => 'Masqué',
'top' => 'Haut de page',
'bottom' => 'Bas de page',
];
/**
* Duplication
*/
public function duplicate()
{
// La session ne correspond pas au site ouvert dans cet onglet
if (
// Contrôle la présence de l'id de langue uniquement si l'id est fourni afin de ne pas bloquer les modules non mis à jour
$this->getUrl(3) && $this->getUrl(3) != self::$siteContent
) {
$_SESSION['ZWII_SITE_CONTENT'] = $this->getUrl(3);
header('Refresh:0; url=' . helper::baseUrl() . $this->getUrl());
exit();
}
// Adresse sans le token
$page = $this->getUrl(2);
// La page n'existe pas
if (
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true ||
$this->getData(['page', $page]) === null
) {
// Valeurs en sortie
$this->addOutput([
'access' => false
]);
} else {
// Duplication de la page
$pageTitle = $this->getData(['page', $page, 'title']);
$pageId = helper::increment(helper::filter($pageTitle, helper::FILTER_ID), $this->getData(['page']));
$pageId = helper::increment($pageId, self::$coreModuleIds);
$pageId = helper::increment($pageId, self::$moduleIds);
$data = $this->getData([
'page',
$page
]);
// Ecriture
$this->setData(['page', $pageId, $data], false);
$notification = helper::translate('Page dupliquée');
// Duplication du module présent
if ($this->getData(['page', $page, 'moduleId'])) {
$data = $this->getData(['module', $page]);
$this->setData(['module', $pageId, $data], false);
$notification = helper::translate('Page et module dupliqués');
}
// Force la sauvegarde
$this->saveDB('page');
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'page/edit/' . $pageId . '/' . self::$siteContent,
'notification' => $notification,
'state' => true
]);
}
}
/** /**
* Création * Création
*/ */
public function add() { public function add()
{
// La session ne correspond pas au site ouvert dans cet onglet
if (
// Contrôle la présence de l'id de langue uniquement si l'id est fourni afin de ne pas bloquer les modules non mis à jour
$this->getUrl(3) && $this->getUrl(3) != self::$siteContent
) {
$_SESSION['ZWII_SITE_CONTENT'] = $this->getUrl(3);
header('Refresh:0; url=' . helper::baseUrl() . $this->getUrl());
exit();
}
if ($this->getUser('permission', __CLASS__, __FUNCTION__) !== true) {
// Valeurs en sortie
$this->addOutput([
'access' => false
]);
} else {
$pageTitle = 'Nouvelle page'; $pageTitle = 'Nouvelle page';
$pageId = helper::increment(helper::filter($pageTitle, helper::FILTER_ID), $this->getData(['page'])); $pageId = helper::increment(helper::filter($pageTitle, helper::FILTER_ID), $this->getData(['page']));
$this->setData([ $this->setData([
@ -68,7 +170,7 @@ class page extends common {
'typeMenu' => 'text', 'typeMenu' => 'text',
'iconUrl' => '', 'iconUrl' => '',
'disable' => false, 'disable' => false,
'content' => 'Contenu de votre nouvelle page.', 'content' => $pageId . '.html',
'hideTitle' => false, 'hideTitle' => false,
'breadCrumb' => false, 'breadCrumb' => false,
'metaDescription' => '', 'metaDescription' => '',
@ -80,80 +182,149 @@ class page extends common {
'group' => self::GROUP_VISITOR, 'group' => self::GROUP_VISITOR,
'targetBlank' => false, 'targetBlank' => false,
'title' => $pageTitle, 'title' => $pageTitle,
'shortTitle' => $pageTitle,
'block' => '12', 'block' => '12',
'barLeft' => '', 'barLeft' => '',
'barRight' => '', 'barRight' => '',
'navLeft' => 'none',
'navRight' => 'none',
'navTemplate' => 'dir',
'displayMenu' => '0', 'displayMenu' => '0',
'hideMenuSide' => false, 'hideMenuSide' => false,
'hideMenuHead' => false, 'hideMenuHead' => false,
'hideMenuChildren' => false 'hideMenuChildren' => false,
'js' => '',
'css' => ''
] ]
]); ]);
// Met à jour le site map // Creation du contenu de la page
$this->createSitemap('all'); if (!is_dir(self::DATA_DIR . self::$siteContent . '/content')) {
mkdir(self::DATA_DIR . self::$siteContent . '/content', 0755);
}
//$this->secure_file_put_contents(self::DATA_DIR . self::$siteContent . '/content/' . $pageId . '.html', '<p>Contenu de votre nouvelle page.</p>');
$this->setPage($pageId, '<p>Contenu de votre nouvelle page.</p>', self::$siteContent);
// Ne met à jour le sitemap pour éviter un warning, de toute manière la nouvelle page doit être éditée.
// $this->updateSitemap();
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'redirect' => helper::baseUrl() . $pageId, 'redirect' => helper::baseUrl() . $pageId,
'notification' => 'Nouvelle page créée', 'notification' => helper::translate('Nouvelle page créée'),
'state' => true 'state' => true
]); ]);
} }
}
/** /**
* Suppression * Suppression
*/ */
public function delete() { public function delete()
{
// La session ne correspond pas au site ouvert dans cet onglet
if (
// Contrôle la présence de l'id de langue uniquement si l'id est fourni afin de ne pas bloquer les modules non mis à jour
$this->getUrl(3) && $this->getUrl(3) != self::$siteContent
) {
$_SESSION['ZWII_SITE_CONTENT'] = $this->getUrl(3);
header('Refresh:0; url=' . helper::baseUrl() . $this->getUrl());
exit();
}
// $url prend l'adresse sans le token // $url prend l'adresse sans le token
$url = explode('&',$this->getUrl(2)); $page = $this->getUrl(2);
// La page n'existe pas // La page n'existe pas
if($this->getData(['page', $url[0]]) === null) { if (
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true ||
$this->getData(['page', $page]) === null
) {
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'access' => false 'access' => false
]); ]);
} }
// Impossible de supprimer la page d'accueil // Impossible de supprimer la page d'accueil
elseif($url[0] === $this->getData(['config', 'homePageId'])) { elseif ($page === $this->getData(['locale', 'homePageId'])) {
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'redirect' => helper::baseUrl() . 'page/edit/' . $url[0], 'redirect' => helper::baseUrl() . 'config',
'notification' => 'Impossible de supprimer la page d\'accueil' 'notification' => helper::translate('Suppression interdite, page active dans la configuration de la langue du site')
]); ]);
} }
// Jeton incorrect // Impossible de supprimer la page affectée
elseif(!isset($_GET['csrf'])) { elseif ($page === $this->getData(['locale', 'searchPageId'])) {
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'redirect' => helper::baseUrl() . 'page/edit/' . $url[0], 'redirect' => helper::baseUrl() . 'config',
'notification' => 'Jeton invalide' 'notification' => helper::translate('Suppression interdite, page active dans la configuration de la langue du site')
]); ]);
} }
elseif ($_GET['csrf'] !== $_SESSION['csrf']) { // Impossible de supprimer la page affectée
elseif ($page === $this->getData(['locale', 'legalPageId'])) {
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'redirect' => helper::baseUrl() . 'page/edit/' . $url[0], 'redirect' => helper::baseUrl() . 'config',
'notification' => 'Suppression non autorisée' 'notification' => helper::translate('Suppression interdite, page active dans la configuration de la langue du site')
]);
}
// Impossible de supprimer la page affectée
elseif ($page === $this->getData(['locale', 'page404'])) {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'config',
'notification' => helper::translate('Suppression interdite, page active dans la configuration de la langue du site')
]);
}
// Impossible de supprimer la page affectée
elseif ($page === $this->getData(['locale', 'page403'])) {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'config',
'notification' => helper::translate('Suppression interdite, page active dans la configuration de la langue du site')
]);
}
// Impossible de supprimer la page affectée
elseif ($page === $this->getData(['locale', 'page302'])) {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'config',
'notification' => helper::translate('Suppression interdite, page active dans la configuration de la langue du site')
]); ]);
} }
// Impossible de supprimer une page contenant des enfants // Impossible de supprimer une page contenant des enfants
elseif($this->getHierarchy($url[0])) { elseif ($this->getHierarchy($page, null)) {
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'redirect' => helper::baseUrl() . 'page/edit/' . $url[0], 'redirect' => helper::baseUrl() . 'page/edit/' . $page . '/' . self::$siteContent,
'notification' => 'Impossible de supprimer une page contenant des enfants' 'notification' => helper::translate('Impossible de supprimer une page contenant des pages enfants')
]); ]);
} }
// Suppression // Suppression
else { else {
// Met à jour le site map // Effacer le dossier du module
$this->createSitemap('all'); $moduleId = $this->getData(['page', $page, 'moduleId']);
$modulesData = helper::getModules();
if (
array_key_exists($moduleId, $modulesData)
&& is_dir($modulesData[$moduleId]['dataDirectory'] . $page)
) {
$this->deleteDir($modulesData[$moduleId]['dataDirectory'] . $page);
}
// Effacer la page // Effacer la page
$this->deleteData(['page', $url[0]]); $this->deleteData(['page', $page]);
$this->deleteData(['module', $url[0]]); if (file_exists(self::DATA_DIR . self::$siteContent . '/content/' . $page . '.html')) {
unlink(self::DATA_DIR . self::$siteContent . '/content/' . $page . '.html');
}
$this->deleteData(['module', $page]);
// Met à jour le sitemap
$this->updateSitemap();
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'redirect' => helper::baseUrl(false), 'redirect' => helper::baseUrl(false),
'notification' => 'Page supprimée', 'notification' => helper::translate('Page supprimée'),
'state' => true 'state' => true
]); ]);
} }
@ -163,9 +334,24 @@ class page extends common {
/** /**
* Édition * Édition
*/ */
public function edit() { public function edit()
{
// La session ne correspond pas au site ouvert dans cet onglet
if (
// Contrôle la présence de l'id de langue uniquement si l'id est fourni afin de ne pas bloquer les modules non mis à jour
$this->getUrl(3) && $this->getUrl(3) != self::$siteContent
) {
$_SESSION['ZWII_SITE_CONTENT'] = $this->getUrl(3);
header('Refresh:0; url=' . helper::baseUrl() . $this->getUrl());
exit();
}
// La page n'existe pas // La page n'existe pas
if($this->getData(['page', $this->getUrl(2)]) === null) { if (
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true ||
$this->getData(['page', $this->getUrl(2)]) === null
) {
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'access' => false 'access' => false
@ -174,11 +360,21 @@ class page extends common {
// La page existe // La page existe
else { else {
// Soumission du formulaire // Soumission du formulaire
if($this->isPost()) { if (
$this->getUser('permission', __CLASS__, __FUNCTION__) === true &&
$this->isPost()
) {
// Si le Title n'est pas vide, premier test pour positionner la notification du champ obligatoire
if ($this->getInput('pageEditTitle', helper::FILTER_ID, true) !== null && $this->getInput('pageEditTitle') !== '') {
// Génére l'ID si le titre de la page a changé
if ($this->getInput('pageEditTitle') !== $this->getData(['page', $this->getUrl(2), 'title'])) {
$pageId = $this->getInput('pageEditTitle', helper::FILTER_ID, true); $pageId = $this->getInput('pageEditTitle', helper::FILTER_ID, true);
} else {
$pageId = $this->getUrl(2);
}
// un dossier existe du même nom (erreur en cas de redirection) // un dossier existe du même nom (erreur en cas de redirection)
if (file_exists($pageId)) { if (file_exists($pageId)) {
$pageId = uniqid($pageId . '-'); $pageId = uniqid($pageId);
} }
// Si l'id a changée // Si l'id a changée
if ($pageId !== $this->getUrl(2)) { if ($pageId !== $this->getUrl(2)) {
@ -187,48 +383,90 @@ class page extends common {
$pageId = helper::increment($pageId, self::$coreModuleIds); $pageId = helper::increment($pageId, self::$coreModuleIds);
$pageId = helper::increment($pageId, self::$moduleIds); $pageId = helper::increment($pageId, self::$moduleIds);
// Met à jour les enfants // Met à jour les enfants
foreach($this->getHierarchy($this->getUrl(2)) as $childrenPageId) { foreach ($this->getHierarchy($this->getUrl(2), null) as $childrenPageId) {
$this->setData(['page', $childrenPageId, 'parentPageId', $pageId]); $this->setData(['page', $childrenPageId, 'parentPageId', $pageId], false);
} }
// Force la sauvegarde
$this->saveDB('page');
// Change l'id de page dans les données des modules // Change l'id de page dans les données des modules
$this->setData(['module', $pageId, $this->getData(['module', $this->getUrl(2)])]); if ($this->getData(['module', $this->getUrl(2)]) !== null) {
$this->setData(['module', $pageId, $this->getData(['module', $this->getUrl(2)])], false);
$this->deleteData(['module', $this->getUrl(2)]); $this->deleteData(['module', $this->getUrl(2)]);
// Renommer le dossier du module
$moduleId = $this->getData(['page', $this->getUrl(2), 'moduleId']);
$modulesData = helper::getModules();
if (is_dir($modulesData[$moduleId]['dataDirectory'] . $this->getUrl(2))) {
// Placer la feuille de style dans un dossier au nom de la nouvelle instance
mkdir($modulesData[$moduleId]['dataDirectory'] . $pageId, 0755);
copy($modulesData[$moduleId]['dataDirectory'] . $this->getUrl(2), $modulesData[$moduleId]['dataDirectory'] . $pageId);
$this->deleteDir($modulesData[$moduleId]['dataDirectory'] . $this->getUrl(2));
// Mettre à jour le nom de la feuille de style
$this->setData(['module', $pageId, 'theme', 'style', $modulesData[$moduleId]['dataDirectory'] . $pageId], false);
}
// Force la sauvegarde
$this->saveDB('module');
}
// Si la page correspond à la page d'accueil, change l'id dans la configuration du site // Si la page correspond à la page d'accueil, change l'id dans la configuration du site
if($this->getData(['config', 'homePageId']) === $this->getUrl(2)) { if ($this->getData(['locale', 'homePageId']) === $this->getUrl(2)) {
$this->setData(['config', 'homePageId', $pageId]); $this->setData(['locale', 'homePageId', $pageId]);
} }
} }
// Supprime les données du module en cas de changement de module // Supprime les données du module en cas de changement de module
if($this->getInput('pageEditModuleId') !== $this->getData(['page', $this->getUrl(2), 'moduleId'])) { if ($this->getInput('pageEditModuleId') !== $this->getData(['page', $this->getUrl(2), 'moduleId'])) {
$this->deleteData(['module', $pageId]); $this->deleteData(['module', $pageId]);
} }
// Supprime l'ancienne page si l'id a changée // Supprime l'ancienne page si l'id a changée
if($pageId !== $this->getUrl(2)) { if ($pageId !== $this->getUrl(2)) {
$this->deleteData(['page', $this->getUrl(2)]); $this->deleteData(['page', $this->getUrl(2)]);
if (file_exists(self::DATA_DIR . self::$siteContent . '/content/' . $this->getUrl(2) . '.html')) {
unlink(self::DATA_DIR . self::$siteContent . '/content/' . $this->getUrl(2) . '.html');
} }
}
// Traitement des pages spéciales affectées dans la config :
if ($this->getUrl(2) === $this->getData(['locale', 'legalPageId'])) {
$this->setData(['locale', 'legalPageId', $pageId], false);
}
if ($this->getUrl(2) === $this->getData(['locale', 'searchPageId'])) {
$this->setData(['locale', 'searchPageId', $pageId], false);
}
if ($this->getUrl(2) === $this->getData(['locale', 'page404'])) {
$this->setData(['locale', 'page404', $pageId], false);
}
if ($this->getUrl(2) === $this->getData(['locale', 'page403'])) {
$this->setData(['locale', 'page403', $pageId], false);
}
if ($this->getUrl(2) === $this->getData(['locale', 'page302'])) {
$this->setData(['locale', 'page302', $pageId], false);
}
// Force la sauvegarde
$this->saveDB('locale');
// Si la page est une page enfant, actualise les positions des autres enfants du parent, sinon actualise les pages sans parents // Si la page est une page enfant, actualise les positions des autres enfants du parent, sinon actualise les pages sans parents
$lastPosition = 1; $lastPosition = 1;
$hierarchy = $this->getInput('pageEditParentPageId') ? $this->getHierarchy($this->getInput('pageEditParentPageId')) : array_keys($this->getHierarchy()); $hierarchy = $this->getInput('pageEditParentPageId') ? $this->getHierarchy($this->getInput('pageEditParentPageId')) : array_keys($this->getHierarchy());
$position = $this->getInput('pageEditPosition', helper::FILTER_INT); $position = $this->getInput('pageEditPosition', helper::FILTER_INT);
foreach($hierarchy as $hierarchyPageId) { $extraPosition = $this->getinput('pageEditExtraPosition', helper::FILTER_BOOLEAN);
foreach ($hierarchy as $hierarchyPageId) {
// Ne traite que les pages du menu sélectionné
if ($this->getData(['page', $hierarchyPageId, 'extraPosition']) === $extraPosition) {
// Ignore la page en cours de modification // Ignore la page en cours de modification
if($hierarchyPageId === $this->getUrl(2)) { if ($hierarchyPageId === $this->getUrl(2)) {
continue; continue;
} }
// Incrémente de +1 pour laisser la place à la position de la page en cours de modification // Incrémente de +1 pour laisser la place à la position de la page en cours de modification
if($lastPosition === $position) { if ($lastPosition === $position) {
$lastPosition++; $lastPosition++;
} }
// Change la position // Change la position
$this->setData(['page', $hierarchyPageId, 'position', $lastPosition]); $this->setData(['page', $hierarchyPageId, 'position', $lastPosition], false);
// Incrémente pour la prochaine position // Incrémente pour la prochaine position
$lastPosition++; $lastPosition++;
} }
}
if ($this->getinput('pageEditBlock') !== 'bar') { if ($this->getinput('pageEditBlock') !== 'bar') {
$barLeft = $this->getinput('pageEditBarLeft'); $barLeft = $this->getinput('pageEditBarLeft');
$barRight = $this->getinput('pageEditBarRight'); $barRight = $this->getinput('pageEditBarRight');
$hideTitle = $this->getInput('pageEditHideTitle', helper::FILTER_BOOLEAN); $hideTitle = $this->getInput('pageEditHideTitle', helper::FILTER_BOOLEAN);
} else { } else {
// Une barre ne peut pas avoir de barres // Une barre ne peut pas avoir de barres
$barLeft = ""; $barLeft = "";
@ -237,6 +475,53 @@ class page extends common {
$position = 0; $position = 0;
$hideTitle = true; $hideTitle = true;
} }
// Une page parent devient orpheline, les pages enfants le devienne pour éviter une incohérence
if (
$position === 0 &&
$position !== $this->getData(['page', $this->getUrl(2), 'position']) &&
$this->getinput('pageEditBlock') !== 'bar'
) {
foreach ($this->getHierarchy($pageId) as $parentId => $childId) {
if ($this->getData(['page', $childId, 'parentPageId']) === $pageId) {
$this->setData(['page', $childId, 'position', 0], false);
}
}
// Force la sauvegarde
$this->saveDB('page');
}
// La page est une barre latérale qui a été renommée : changer le nom de la barre dans les pages qui l'utilisent
if ($this->getinput('pageEditBlock') === 'bar') {
foreach ($this->getHierarchy() as $eachPageId => $parentId) {
if ($this->getData(['page', $eachPageId, 'barRight']) === $this->getUrl(2)) {
$this->setData(['page', $eachPageId, 'barRight', $pageId], false);
}
if ($this->getData(['page', $eachPageId, 'barLeft']) === $this->getUrl(2)) {
$this->setData(['page', $eachPageId, 'barLeft', $pageId], false);
}
foreach ($parentId as $childId) {
if ($this->getData(['page', $childId, 'barRight']) === $this->getUrl(2)) {
$this->setData(['page', $childId, 'barRight', $pageId], false);
}
if ($this->getData(['page', $childId, 'barLeft']) === $this->getUrl(2)) {
$this->setData(['page', $childId, 'barLeft', $pageId], false);
}
}
}
}
// Détermine le groupe selon que la page est une barre ou une page standard
$group = $this->getinput('pageEditBlock') !== 'bar' ? $this->getInput('pageEditGroup', helper::FILTER_INT) : 0;
//Détermine le profil d'utilisateur en fonction du groupe sinon le groupe vaut 0
$profil = 0;
if (
$this->getinput('pageEditBlock') !== 'bar' ||
$group === 1 ||
$group === 2
) {
$profil = $this->getInput('pageEditProfil' . $group, helper::FILTER_INT);
}
// Modifie la page ou en crée une nouvelle si l'id a changé // Modifie la page ou en crée une nouvelle si l'id a changé
$this->setData([ $this->setData([
'page', 'page',
@ -244,91 +529,108 @@ class page extends common {
[ [
'typeMenu' => $this->getinput('pageTypeMenu'), 'typeMenu' => $this->getinput('pageTypeMenu'),
'iconUrl' => $this->getinput('pageIconUrl'), 'iconUrl' => $this->getinput('pageIconUrl'),
'disable'=> $this->getinput('pageEditDisable', helper::FILTER_BOOLEAN), 'disable' => $this->getinput('pageEditDisable', helper::FILTER_BOOLEAN),
'content' => (empty($this->getInput('pageEditContent', null)) ? "<p></p>" : $this->getInput('pageEditContent', null)) , 'content' => $pageId . '.html',
'hideTitle' => $hideTitle, 'hideTitle' => $hideTitle,
'breadCrumb' => $this->getInput('pageEditbreadCrumb', helper::FILTER_BOOLEAN), 'breadCrumb' => $this->getInput('pageEditbreadCrumb', helper::FILTER_BOOLEAN),
'metaDescription' => $this->getInput('pageEditMetaDescription', helper::FILTER_STRING_LONG), 'metaDescription' => $this->getInput('pageEditMetaDescription', helper::FILTER_STRING_LONG),
'metaTitle' => $this->getInput('pageEditMetaTitle'), 'metaTitle' => $this->getInput('pageEditMetaTitle'),
'moduleId' => $this->getInput('pageEditModuleId'), 'moduleId' => $this->getInput('pageEditModuleId'),
'modulePosition' => $this->getInput('configModulePosition'), 'modulePosition' => $this->getInput('pageModulePosition'),
'parentPageId' => $this->getInput('pageEditParentPageId'), 'parentPageId' => $this->getInput('pageEditParentPageId'),
'position' => $position, 'position' => $position,
'group' => $this->getInput('pageEditGroup', helper::FILTER_INT), 'group' => $group,
'profil' => $profil,
'targetBlank' => $this->getInput('pageEditTargetBlank', helper::FILTER_BOOLEAN), 'targetBlank' => $this->getInput('pageEditTargetBlank', helper::FILTER_BOOLEAN),
'title' => $this->getInput('pageEditTitle', helper::FILTER_STRING_SHORT, true), 'title' => $this->getInput('pageEditTitle', helper::FILTER_STRING_SHORT),
'shortTitle' => $this->getInput('pageEditShortTitle', helper::FILTER_STRING_SHORT, true),
'block' => $this->getinput('pageEditBlock'), 'block' => $this->getinput('pageEditBlock'),
'barLeft' => $barLeft, 'barLeft' => $barLeft,
'barRight' => $barRight, 'barRight' => $barRight,
'navLeft' => $this->getInput('pageEditNavLeft'),
'navRight' => $this->getInput('pageEditNavRight'),
'navTemplate' => $this->getInput('pageEditNavTemplate'),
'displayMenu' => $this->getinput('pageEditDisplayMenu'), 'displayMenu' => $this->getinput('pageEditDisplayMenu'),
'hideMenuSide' => $this->getinput('pageEditHideMenuSide', helper::FILTER_BOOLEAN), 'hideMenuSide' => $this->getinput('pageEditHideMenuSide', helper::FILTER_BOOLEAN),
'hideMenuHead' => $this->getinput('pageEditHideMenuHead', helper::FILTER_BOOLEAN), 'hideMenuHead' => $this->getinput('pageEditHideMenuHead', helper::FILTER_BOOLEAN),
'hideMenuChildren' => $this->getinput('pageEditHideMenuChildren', helper::FILTER_BOOLEAN), 'hideMenuChildren' => $this->getinput('pageEditHideMenuChildren', helper::FILTER_BOOLEAN),
'extraPosition' => $this->getinput('pageEditExtraPosition', helper::FILTER_BOOLEAN),
'css' => $this->getData(['page', $this->getUrl(2), 'css']) == null ? '' : $this->getData(['page', $this->getUrl(2), 'css']),
'js' => $this->getData(['page', $this->getUrl(2), 'js']) == null ? '' : $this->getData(['page', $this->getUrl(2), 'js']),
] ]
]); ]);
// Barre renommée : changement le nom de la barre dans les pages mères
if ($this->getinput('pageEditBlock') === 'bar') { // Creation du contenu de la page
foreach ($this->getHierarchy() as $eachPageId=>$parentId) { if (!is_dir(self::DATA_DIR . self::$siteContent . '/content')) {
if ($this->getData(['page',$eachPageId,'barRight']) === $this->getUrl(2)) { mkdir(self::DATA_DIR . self::$siteContent . '/content', 0755);
$this->setData(['page',$eachPageId,'barRight',$pageId]);
} }
if ($this->getData(['page',$eachPageId,'barLeft']) === $this->getUrl(2)) { $content = empty($this->getInput('pageEditContent', null)) ? '<p></p>' : str_replace('<p></p>', '<p>&nbsp;</p>', $this->getInput('pageEditContent', null));
$this->setData(['page',$eachPageId,'barLeft',$pageId]); $this->setPage($pageId, $content, self::$siteContent);
}
foreach ($parentId as $childId) { // Met à jour le sitemap
if ($this->getData(['page',$childId,'barRight']) === $this->getUrl(2)) { $this->updateSitemap();
$this->setData(['page',$childId,'barRight',$pageId]);
}
if ($this->getData(['page',$childId,'barLeft']) === $this->getUrl(2)) {
$this->setData(['page',$childId,'barLeft',$pageId]);
}
}
}
}
// Met à jour le site map
$this->createSitemap('all');
// Redirection vers la configuration // Redirection vers la configuration
if($this->getInput('pageEditModuleRedirect', helper::FILTER_BOOLEAN)) { if (
$this->getInput('pageEditModuleRedirect', helper::FILTER_BOOLEAN)
) {
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'redirect' => helper::baseUrl() . $pageId . '/config', 'redirect' => helper::baseUrl() . $pageId . '/config',
'state' => true 'state' => true
]); ]);
}
// Redirection vers la page // Redirection vers la page
else { } else {
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'redirect' => helper::baseUrl() . $pageId, 'redirect' => helper::baseUrl() . $pageId,
'notification' => 'Modifications enregistrées', 'notification' => helper::translate('Modifications enregistrées'),
'state' => true 'state' => true
]); ]);
} }
} }
// Liste des modules
$moduleIds = [
'' => 'Aucun'
];
$iterator = new DirectoryIterator('module/');
foreach($iterator as $fileInfos) {
if(is_file($fileInfos->getPathname() . '/' . $fileInfos->getFilename() . '.php')) {
$moduleIds[$fileInfos->getBasename()] = ucfirst($fileInfos->getBasename());
} }
// Construction du formulaire
// Met à jour le sitemap
$this->updateSitemap();
// Création du sélecteur de modules
self::$moduleIds = [];
foreach (helper::getModules() as $key => $values) {
self::$moduleIds[$key] = $values['realName'] . ' (' . $key . ')';
} }
self::$moduleIds = $moduleIds; self::$moduleIds = array_merge(['' => 'Aucun'], self::$moduleIds);
// Pages sans parent // Pages sans parent
foreach($this->getHierarchy() as $parentPageId => $childrenPageIds) { foreach ($this->getHierarchy() as $parentPageId => $childrenPageIds) {
if($parentPageId !== $this->getUrl(2)) { if ($parentPageId !== $this->getUrl(2)) {
self::$pagesNoParentId[$parentPageId] = $this->getData(['page', $parentPageId, 'title']); self::$pagesNoParentId[$parentPageId] = $this->getData(['page', $parentPageId, 'title']);
} }
} }
// Pages barre latérales // Pages barre latérales
foreach($this->getHierarchy(null,false,true) as $parentPageId => $childrenPageIds) { foreach ($this->getHierarchy(null, false, true) as $parentPageId => $childrenPageIds) {
if($parentPageId !== $this->getUrl(2) && if (
$this->getData(['page', $parentPageId, 'block']) === 'bar') { $parentPageId !== $this->getUrl(2) &&
$this->getData(['page', $parentPageId, 'block']) === 'bar'
) {
self::$pagesBarId[$parentPageId] = $this->getData(['page', $parentPageId, 'title']); self::$pagesBarId[$parentPageId] = $this->getData(['page', $parentPageId, 'title']);
} }
} }
// Profils installés
// Profils disponibles
foreach ($this->getData(['profil']) as $profilId => $profilData) {
if ($profilId < self::GROUP_MEMBER) {
continue;
}
if ($profilId === self::GROUP_ADMIN) {
self::$userProfils[$profilId][self::GROUP_ADMIN] = $profilData['name'];
continue;
}
foreach ($profilData as $key => $value) {
self::$userProfils[$profilId][$key] = $profilData[$key]['name'];
}
}
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'title' => $this->getData(['page', $this->getUrl(2), 'title']), 'title' => $this->getData(['page', $this->getUrl(2), 'title']),
@ -340,4 +642,108 @@ class page extends common {
} }
} }
/**
* Éditeur de feuille de style
*/
public function cssEditor()
{
// Soumission du formulaire
if (
$this->getUser('permission', __CLASS__, __FUNCTION__) === true &&
$this->isPost()
) {
$css = $this->getInput('pageCssEditorContent', helper::FILTER_STRING_LONG) === null ? '' : $this->getInput('pageCssEditorContent', helper::FILTER_STRING_LONG);
// Enregistre le CSS
$this->setData([
'page',
$this->getUrl(2),
'css',
$css
]);
// Valeurs en sortie
$this->addOutput([
'notification' => helper::translate('Modifications enregistrées'),
'redirect' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2) . '/' . self::$siteContent,
'state' => true
]);
}
// Valeurs en sortie
$this->addOutput([
'title' => helper::translate('Éditeur CSS'),
'vendor' => [
'codemirror'
],
'view' => 'cssEditor'
]);
}
/**
* Éditeur de feuille de style
*/
public function jsEditor()
{
// Soumission du formulaire
if (
$this->getUser('permission', __CLASS__, __FUNCTION__) === true &&
$this->isPost()
) {
$js = $this->getInput('pageJsEditorContent', helper::FILTER_STRING_LONG) === null ? '' : $this->getInput('pageJsEditorContent', helper::FILTER_STRING_LONG);
// Enregistre le JS
$this->setData([
'page',
$this->getUrl(2),
'js',
$js
]);
// Valeurs en sortie
$this->addOutput([
'notification' => helper::translate('Modifications enregistrées'),
'redirect' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2) . '/' . self::$siteContent,
'state' => true
]);
}
// Valeurs en sortie
$this->addOutput([
'title' => helper::translate('Éditeur Js'),
'vendor' => [
'codemirror'
],
'view' => 'jsEditor'
]);
}
/**
* Retourne les informations sur les pages en omettant les clés CSS et JS qui occasionnent des bugs d'affichage dans l'éditeur de page
* @return string tableau associatif des pages dans le menu
*/
public function getPageInfo()
{
$p = $this->getData(['page']);
$d = array_map(function ($d) {
unset($d["css"], $d["js"]);
return $d;
}, $p);
return json_encode($d);
}
/**
* Stocke la variable dans les paramètres de l'utilisateur pour activer la tab à sa prochaine visite
* @return never
*/
public function register(): void
{
$this->setData([
'user',
$this->getUser('id'),
'view',
[
'page' => $this->getUrl(2),
'config' => $this->getData(['user', $this->getUser('id'), 'view', 'config']),
]
]);
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'page/edit/' . $this->getUrl(3) . '/' . self::$siteContent,
]);
}
} }

View File

@ -0,0 +1,18 @@
/**
* 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/
*/
/** NE PAS EFFACER
* admin.css
*/

Some files were not shown because too many files have changed in this diff Show More