Compare commits

...

303 Commits

Author SHA1 Message Date
SylvainLelievre ece9d87a79 Bug config advanced() setData i18n 1 day ago
SylvainLelievre 892b2a833a Bug sitemap $parent remplacé par $parentId 2 days ago
Fred Tempez a6b0921f12 copyDir 2 days ago
Fred Tempez 54c472675c News update 3 days ago
SylvainLelievre 15009b3503 Modification mineure sur common.css 4 days ago
SylvainLelievre 7157e43baf Personnalisation du bouton d'aide 4 days ago
SylvainLelievre b9976e2893 Modification du texte de l'aide dans addon upload 4 days ago
SylvainLelievre 788fb8257e Modification du texte d'aide addon / upload 4 days ago
SylvainLelievre 5114ddaf0f Bug dans addon suite au découpage des fonctions 4 days ago
SylvainLelievre 25887c88a5 Mise à jour du système d'aide et de son application dans addon 5 days ago
Fred Tempez e252c087a8 Merge branch '10600' into 11000 7 days ago
Fred Tempez b4c7a39054 Merge branch '11000' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 11000 7 days ago
Fred Tempez a5d2278d31 copyTree -> copyDir 7 days ago
SylvainLelievre 2d093a61e0 Suppression du copié collé dans tinymce 7 days ago
SylvainLelievre d335660d30 Suppression du copié collé dans tinymce 7 days ago
Fred Tempez 5dc33bd8a5 faute 2 1 week ago
Fred Tempez 706da4ab8f faute 1 week ago
Fred Tempez f67de97eb9 custom_copy devient copy Dir dans core + check backup copy error 1 week ago
Fred Tempez d3387330bd suppression backup auto 1 week ago
Fred Tempez 03eaed72a1 système d'aide + utilitaire de copie de langues 1 week ago
Fred Tempez ec91858263 Récupérer backup auto dans file manager 1 week ago
Fred Tempez 0bcd1c527c Restore -> manage 1 week ago
Fred Tempez cbd3deede9 tableau 'translate' devient 'i18n' 1 week ago
Fred Tempez bd0062ecd2 config adaptée + activation gestion des langues 1 week ago
Fred Tempez 96514f092a Lity option supprimée 1 week ago
fredtempez 8b93bdbe11 Merge branch '10600' into 11000 1 week ago
fredtempez 364e6e4be5 News 3.1 dépublication 1 week ago
fredtempez 1eb78c5cd8 Merge branch '10600' into 11000 1 week ago
fredtempez 3908d75240 News : titre d'article h1 en h2 pour respecter la hiérarchie 1 week ago
fredtempez 1fe067aa25 gitignore 1 week ago
fredtempez bd3630f718 Bug core version 1 week ago
fredtempez 6506679466 News : Bug theme par defaut 1 week ago
fredtempez 3a88ae8dca gitignore 1 week ago
fredtempez a89f3e9329 Commentaire 1 week ago
fredtempez f8decc4ce3 News bug import + bug couleur arrière-plan sombre 1 week ago
fredtempez 12e59b0b4b Supp module download 1 week ago
fredtempez 524bf2223a Structure datadirectory dossier racine 1 week ago
SylvainLelievre 01da51ac9b Logo dans le mail envoyé par form 1 week ago
fredtempez 479a546679 Merge branch '10504' into 10600 2 weeks ago
fredtempez b1418461ad Merge branch '10504' into 10600 2 weeks ago
fredtempez 346b2a8cec Merge branch '10504' into 10600 2 weeks ago
fredtempez 59f0fe537f DATADIRECTORY chemins corrects 2 weeks ago
fredtempez d79861cbdf Version 5.0 (mise à jour du bug effacement des commentaires dans 10504) 2 weeks ago
fredtempez 54426593d5 Blog 5.1 bug bouton effacement des commentaires 2 weeks ago
fredtempez 0b8ae49b70 DATADIRECTORY supprimer le dossier modules 2 weeks ago
SylvainLelievre a55c2b9de4 Chemin des feuilles de style .../class_du_module/pages/instance/theme.css 2 weeks ago
SylvainLelievre 97374fafb4 Page.php, mise à jour et effacement du dossier au nom du module et de l'instance 3 weeks ago
fredtempez b1b77d767c news effet blur avec arrière plan contrasté 3 weeks ago
fredtempez 2b94ba426a Fautes de frappe dans un commentaire 3 weeks ago
fredtempez 7594821ca7 petites corrections 4 weeks ago
fredtempez d378cd94a2 Merge branch '10600' into 11000 4 weeks ago
fredtempez a7158cf366 Merge branch 'master' into 10600 4 weeks ago
fredtempez 66ad9623da Merge branch '10600' into 11000 4 weeks ago
fredtempez ff6ececbb9 update 10600 4 weeks ago
fredtempez f4f8cfe885 suppression items par page de la config 4 weeks ago
fredtempez 4e02938e3a itemsparPage supprimé dans la config 4 weeks ago
fredtempez 06ec036d9a Form gestion des données nombre de lignes par page 4 weeks ago
fredtempez 3789ca2b42 Merge branch '10600' into 11000 1 month ago
fredtempez a08367a992 Merge branch '10503' into 10600 1 month ago
fredtempez f24688afa2 Merge branch '10600' into 11000 1 month ago
fredtempez 1442f75f15 changes 1 month ago
fredtempez ba06a9f69a Merge branch '10600' into 11000 1 month ago
fredtempez b4da3b7d98 Simplification + gestion des ressources de module au niveau de la page 1 month ago
fredtempez 2f5a8c565d change 1 month ago
fredtempez d25dbd3a81 Blog bouton déplacé 1 month ago
fredtempez cde0e52528 Gallery sample defalutdata 1 month ago
fredtempez 4d17eebdd6 Blog Nettoyage des espaces inutiles 1 month ago
fredtempez 452123813e Blog site sample Positions not set 1 month ago
fredtempez 26fe5fb214 blog example defaultdata 1 month ago
fredtempez d7991f702e Merge branch '10600' into 11000 1 month ago
fredtempez 39a449d92a activation core auto update modules 1 month ago
fredtempez 1c1a97c22a Gallery WIP 1 month ago
fredtempez 080a601c3f News option blur ok 1 month ago
F Tempez 5e481ca3d7 News OK + blur option 1 month ago
fredtempez 1f32a6e7cc News tester update 1 month ago
fredtempez 1f37f1ca91 Search OK !!! 1 month ago
fredtempez 0f3cdfe3c6 search en test 1 month ago
fredtempez 6084179d1d update search ok 1 month ago
fredtempez 490d39a9ba uodate news ok 1 month ago
F Tempez 08bed9fc33 Merge branch '10598' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 10600 1 month ago
F Tempez 9240883e59 fix gallery from 10502 1 month ago
fredtempez 36ed072667 core modules autnomes update 1 month ago
F Tempez dfd6291563 Merge branch '10600' into 11000 1 month ago
F Tempez babebc5a7e fix setData mal placé 1 month ago
F Tempez 43da5f03db Appel automatique des initCSS lors de la mise à jour vers 10600 1 month ago
F Tempez 55c921025a News : initCss 1 month ago
F Tempez 3247e14a83 initCss variable d'instance 1 month ago
F Tempez e3744bf7d8 Bug module initcss manque style 1 month ago
F Tempez 695abf314a warning stristr deprecated 1 month ago
fredtempez fc2fbf2103 init 1 month ago
fredtempez 4c0e0bd4b6 i18n pour la v11 1 month ago
F Tempez 33b4337d0b Merge branch '10600' into 11000 1 month ago
F Tempez 6f7efd7420 Bug variable non déclarée dans config 1 month ago
F Tempez 108e285704 Merge branch '10600' into 11000 1 month ago
F Tempez 9de4b08d20 addon effacement des données 1 month ago
F Tempez 04fab0e06c Merge branch '10600' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 10600 1 month ago
F Tempez 6a9d194942 export nouveau datadirectory 1 month ago
SylvainLelievre 2ad1036a7f Mise à jour de 'core/class/helper.class.php' 1 month ago
fredtempez 14f525a618 Merge branch '10600' into 11000 1 month ago
fredtempez e90da78bad Modules : datadirectory type string 1 month ago
F Tempez ba1d5bbf1f Gallery datadirectory 1 month ago
fredtempez 93e78c0963 Merge branch '10600' into 11000 1 month ago
fredtempez 03ae2b84f9 changes et readme 1 month ago
fredtempez d209f40cf9 Merge branch '10600' into 11000 1 month ago
fredtempez 2510a1bc8d Search bouton loupe si pas de texte 1 month ago
fredtempez 687a98df15 Icône search 1 month ago
fredtempez 77fc370e28 Fonction initCss 1 month ago
fredtempez a1d934ad7b search initCSS 1 month ago
fredtempez 9a8592cb68 Search fonction initialisation 1 month ago
fredtempez cba87d3295 news Effet blur 1 month ago
fredtempez 374439755c Gallery correction init 1 month ago
fredtempez 89a5828d99 suprresion des options de langues commentées 1 month ago
fredtempez c45fdc4895 config advanced emplacements des sélecteurs 1 month ago
fredtempez df778fbee1 config objets par page 1 month ago
fredtempez 9630f093cd defaultdata de la v11 1 month ago
fredtempez c2c67b55ff Modules de v11 1 month ago
fredtempez fd8a15812b Style perso 1 month ago
fredtempez e2f1d5e0e3 gitignore 1 month ago
fredtempez b9af44b99c Merge branch 'master' into 11000 1 month ago
fredtempez 020392ae3d update gitignore 1 month ago
fredtempez 650ae755be bug modif theme + init feuille de style 1 month ago
fredtempez 90ad9f29fb Gallery v3 à vérifier : installation sans site exemple + import 1 month ago
fredtempez a6e245e83b Gallery 3.0 structure données config et content 1 month ago
fredtempez c6d48a8fdf search 2.0 update + module css 1 month ago
fredtempez 20ebf0d2c9 Search css nouvelle norme 1 month ago
fredtempez 2d8c5cad07 news nom de la feuille de style dans data 1 month ago
fredtempez 0c4827b507 Merge branch '11000' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 11000 1 month ago
fredtempez b495afc2e8 Version devient versionData 1 month ago
fredtempez 89ef3c84ab Merge branch '11000' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 11000 1 month ago
fredtempez 2d730ab100 changes 1 month ago
fredtempez 4d9d71602e init ok 1 month ago
fredtempez 40a62401bc news : marge sous content 1 month ago
Fred Tempez 1f6c665479 Lity à tester 1 month ago
Fred Tempez fc90dc0d45 lity affectation erronée 1 month ago
fredtempez ab95e70846 Lity in progess 1 month ago
Fred Tempez 9d97c0a75f Détail article 1 month ago
fredtempez 1ca00c11e5 NEWS blur css à régler. 1 month ago
fredtempez 6bd248fb6a News : effet blur 1 month ago
Fred Tempez faf64a0660 News Hauteur paramétrable 1 month ago
Fred Tempez 7389f3026d Supprimer init update version 1 month ago
Fred Tempez 7f4e03f2c6 update : save version when save config 1 month ago
Fred Tempez 90d0fc2127 update comparaison 1 month ago
Fred Tempez ba5cdb3deb Revert "Inversion du test de version WIP" 1 month ago
Fred Tempez 0432eb65b6 Inversion du test de version WIP 1 month ago
fredtempez c8b16f2f25 update change 1 month ago
fredtempez 86e9ef539b suppression options par page dans la config 1 month ago
Fred Tempez e7348012ba config sans itemsperpage 1 month ago
Fred Tempez 1dab50c5ff itemsperPages blog + download 1 month ago
Fred Tempez 861d08768a itemsperPage 1 month ago
Fred Tempez ffe91f99d8 init 1 month ago
Fred Tempez b0e8be710b news update simplifié 1 month ago
Fred Tempez 51b6f4b51d private update 1 month ago
Fred Tempez b9ca6e500f news v3 1 month ago
Fred Tempez 1ed2e8ec35 fonction update 1 month ago
fredtempez 541ab1728b Aide supprimée 1 month ago
fredtempez 9c9c95653c Merge branch '11000' into NewsColumn 1 month ago
fredtempez 05920a3171 Bug page de connexion 1 month ago
fredtempez 0b55bba9c6 Auto update en test 1 month ago
Fred Tempez b2969a748e Mise en forme de la config 1 month ago
Fred Tempez 92bbafdafd Nom de variables et alignements 1 month ago
Fred Tempez 08127b1fd5 Init 1 month ago
Fred Tempez 88b716a448 Lity suite et fin 1 month ago
SylvainLelievre cb254d9a31 Search maj copyright 1 month ago
SylvainLelievre bbab45758f Module search modification du placeholder 1 month ago
SylvainLelievre 9864d8120c Modification des conditions de traduction et longueur minimale des mots clefs 1 month ago
Fred Tempez 2d432a375a Lity page avec un module 1 month ago
fredtempez 27154982ec Lity bug galery + login 1 month ago
fredtempez 6a76673dd3 config bug aide page recherche 2 months ago
fredtempez 2f41223c29 affichage correct d'une page avec module dans un lity 2 months ago
fredtempez 40a770a1f6 Page lity dans le pied de page - à voir page avec module générée complète dans lity 2 months ago
fredtempez 57821752f4 Merge branch '10501' into 11000 2 months ago
fredtempez 993089841b Option de layout datality 2 months ago
fredtempez 02d3a41e26 LAYOUT LITY 2 months ago
fredtempez e5b0ff0311 Téléchargement depuis le store en attendant l'installation automatique 2 months ago
fredtempez 3fad88dcbc uploadItem WIP 2 months ago
fredtempez 66c4395069 installation d'un module ok 2 months ago
fredtempez 2f256c65f0 renommer fonction module Delete 2 months ago
fredtempez a4fe13124d Import remise en état 2 months ago
fredtempez 316faabcbc Détaile module à terminer 2 months ago
fredtempez 8923dd9a2d Download 1.1 2 months ago
fredtempez 125d3a2a5d Module pour modification 2 months ago
fredtempez 2b72cb419e URL du store 2 months ago
fredtempez f4bff1b460 Store installé ou pas code couleur 2 months ago
fredtempez dc3e7f8356 Calsse buttonBlue n'existe aps 2 months ago
fredtempez 7d84df4722 store install or update 2 months ago
Fred Tempez 39e6e38107 Store Fonction importModule pour le store et l'import de zip 2 months ago
Fred Tempez 8112e732d7 addon erreur d'adresse de store 2 months ago
Fred Tempez 812e7ca904 fix table lenght 2 months ago
Fred Tempez a233a1aa24 dossiers à supprimer 2 months ago
Fred Tempez 8de48859c2 Merge branch '10501' into 11000 2 months ago
Fred Tempez b5aa88483d Merge branch '10501' into 11000 2 months ago
Fred Tempez d89b1f40c0 drapeaux dans le site écrans plus petits que 1024px 2 months ago
Fred Tempez a62366d0a0 Merge branch '10501' into 11000 2 months ago
Fred Tempez 1bd5e0b17c Merge branch '10501' into 11000 2 months ago
fredtempez cd1f578011 update v11 2 months ago
fredtempez eee99d43f9 Merge branch 'master' into 11000 2 months ago
Fred Tempez f01e9d3899 Merge branch '10500' into 11000 2 months ago
Fred Tempez 5c07089123 Merge branch '10500' into 11000 2 months ago
Fred Tempez e2aa5d3e20 Merge branch '10500' into 11000 2 months ago
Fred Tempez ce0297251c Merge branch 'extensions' into 11000 2 months ago
fredtempez 4839b306d9 Merge branch '10500' into 11000 2 months ago
Fred Tempez 296d1593e6 Merge branch '10500' into 11000 2 months ago
Fred Tempez f60e1ab9e7 Merge branch '10500' into 11000 2 months ago
fredtempez de6a3fffdc Merge branch '10500' into 11000 2 months ago
fredtempez 2f332d2bc3 Revert "Merge branch '10500' into 11000" 2 months ago
fredtempez 6d576a16a6 Merge branch '10500' into 11000 2 months ago
Fred Tempez 7766c16ed9 Merge branch '10500' into 11000 2 months ago
Fred Tempez 30f72c6859 Module Install from store WIP 2 months ago
Fred Tempez a0a259f92f Détail brut d'un item du catalogue 2 months ago
fredtempez 33d47a7e5c Liste des objets du store et détail d'un objet WIP 2 months ago
fredtempez bb6750def5 Gestion des modules par catalogue 2 months ago
fredtempez f000db5746 Merge branch '10500' into 11000 2 months ago
fredtempez 101b8ac0f0 readme version 2 months ago
fredtempez 2951b2cb5f changes 2 months ago
fredtempez 5b895c8375 Merge branch '10500' into 11000 2 months ago
fredtempez 3def0e9b92 Merge branch '10500' into 11000 2 months ago
fredtempez a894628696 Merge branch '10500' into 11000 3 months ago
fredtempez 8a3d876e8f Merge branch '10500' into 11000 3 months ago
Prof Langues 0dc4420bff Merge branch '10401' into 11000 3 months ago
fredtempez 734d3e67fa Merge branch '10400' into 11000 3 months ago
fredtempez 24d9d08f96 Merge branch '11000' of https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS into 11000 3 months ago
fredtempez 1beb70a5c3 Merge branch '10400.15' into 11000 3 months ago
fredtempez 691eed8ba4 changelog 4 months ago
fredtempez 9de5d5975b Option de déconnecion automatique 4 months ago
fredtempez 37b3bdb14a double quote pour simple quote 4 months ago
fredtempez 271beb06e9 Trad auto langue du navigateur 4 months ago
fredtempez 34ef8d7237 Merge branch '10400' into 11000 4 months ago
fredtempez efc324c3db Modif cookies WIP 4 months ago
fredtempez 36e4cd8253 Pas de trad auto du login 4 months ago
fredtempez 7e43f3adf4 Bug effacement langue déjà installée 4 months ago
fredtempez 3e53df3e7f Langue du navigateur + désactivation de la langue sélectionnée. 4 months ago
fredtempez ff4f1489f2 Auto détermination de la langue du script google 4 months ago
fredtempez eea05bf358 faute de frappe 4 months ago
fredtempez d752d3b03b Susteme d'aide hover plustôt que click 4 months ago
fredtempez 8d1c68a2c6 Merge branch '10400' into 11000 4 months ago
fredtempez 82a42d8daf Sélecteur de copie de langues plus souple 4 months ago
fredtempez 606cd9de62 Merge branch '10400' into 11000 4 months ago
fredtempez 440fed288c Merge branch '10400' into 11000 4 months ago
fredtempez 019a774ddc del trailing spaces 4 months ago
fredtempez 5b2e349726 Merge branch '10400' into 11000 4 months ago
fredtempez 384ac6052f Bug sélection de langue 4 months ago
fredtempez babf10f4bf annulation dans getUrl 4 months ago
fredtempez d7f03521df Merge branch '10400' into 11000 4 months ago
fredtempez 1a5935815a Merge branch '10400' into 11000 4 months ago
fredtempez 52f59c1061 $i18nCurrent non déclarée ?! 4 months ago
fredtempez f1207551a5 Merge branch '10400' into 11000 4 months ago
fredtempez 76e7f45ac1 Merge branch '10400' into 11000 4 months ago
fredtempez a8eb0f39ad Merge branch '10400' into 11000 4 months ago
fredtempez 7c3c0c145c Merge branch '10400' into 11000 4 months ago
fredtempez 1beadf188b Merge branch '10400' into 11000 4 months ago
fredtempez 5d5b87d9e6 Merge branch '10400' into 11000 4 months ago
fredtempez 21fa4d242c Merge branch '10400' into 11000 4 months ago
fredtempez fc0cf37fc3 Merge branch '10400' into 11000 4 months ago
fredtempez 5ec18961de Merge branch '10400' into 11000 4 months ago
fredtempez 6e7de11d64 Merge branch '10400' into 11000 5 months ago
fredtempez 757ac6672f Merge branch '10400' into 11000 5 months ago
fredtempez 41408bc047 Merge branch '10313' into 11000 5 months ago
fredtempez 0ab9c3e309 Merge branch '10400' into 11000 5 months ago
fredtempez 49744a75b0 Merge branch '10400' into 11000 5 months ago
fredtempez 815be8cd3b Merge branch '10400' into 11000 5 months ago
fredtempez 4b53936fa8 Merge branch '10400' into 11000 5 months ago
fredtempez 9920be0b20 fix css 5 months ago
fredtempez 45c9788228 Merge branch '10400' into 11000 5 months ago
fredtempez 4c0811ccb6 Merge branch '10400' into 11000 5 months ago
fredtempez 8bbb19fb35 Numérotation 5 months ago
fredtempez 5bfceca3ec Erreur span + aide 5 months ago
fredtempez b91db6fbbc faute de frappe 5 months ago
fredtempez adaea91dbb i18n : 5 months ago
fredtempez 7b286c7940 petits correctifs 5 months ago
fredtempez 704930aa5d Merge branch 'i18n' of https://github.com/fredtempez/ZwiiCMS into i18n 5 months ago
fredtempez 1da895bda8 Merge branch 'master' into i18n 5 months ago
fredtempez d4ad266573 Merge branch 'master' into i18n_search 5 months ago
fredtempez e7b320e5ad Traduction de la recherche ok 5 months ago
fredtempez 7b4bfcc484 Merge branch 'i18n' into i18n_search 5 months ago
fredtempez cf7a0cf177 Merge branch '10400' into i18n 5 months ago
fredtempez 5bdd1b13cd Merge branch '10400' into i18n_search 5 months ago
fredtempez 30a3caf75e Merge branch '10400' into i18n 5 months ago
fredtempez 2ee8f59c89 Merge branch '10400' into i18n 5 months ago
fredtempez 0cd84b7f2e 012 UI des options de langue 5 months ago
fredtempez caca2507ca Merge branch '10400' into i18n 5 months ago
fredtempez 33d4c02bb2 Merge branch '10400' into i18n 5 months ago
fredtempez 184fb45b70 too many requests 5 months ago
fredtempez 06d379c747 en cours 5 months ago
fredtempez 5802814f15 Bug ACCEPT LANGUAGE 5 months ago
fredtempez 867b0d3d0b UI page de traduction 5 months ago
fredtempez 966e88abd0 bug installation version core 6 months ago
fredtempez 3287c300f5 bug installation vierge et réinstallation 6 months ago
fredtempez 36dddcf30b Bug fix 6 months ago
fredtempez 33e1ac75a6 Sécurisation du formulaire 6 months ago
fredtempez 2abcc365ae Bug autoDetect + Drapeau sélectionné 6 months ago
fredtempez 39f7421569 Données par défaut + update 6 months ago
fredtempez bafd6addbf Option du français 6 months ago
fredtempez 6c4aa26608 Libellé 6 months ago
fredtempez c39ae60a42 Position des options 6 months ago
fredtempez 2aa3e80e0a Langue du navigateur autodétectée 6 months ago
fredtempez 7245fb8804 Bloc de drapeaux dans le menu 6 months ago
fredtempez 88f50b825c trad auto ok 6 months ago
fredtempez de6c83380a Traduction rédigée ok 6 months ago
fredtempez 49e8603ff9 bug effacement langue installée 6 months ago
fredtempez 793860f7d1 Position des drapeaux dans content 6 months ago
fredtempez 1828d9c7a3 traduction manuelle ok 6 months ago
fredtempez fee358a385 Merge branch '10400' into i18n 6 months ago
fredtempez de1dc21f4e Activation 6 months ago
  1. 13
      .gitignore
  2. 23
      CHANGES.md
  3. 12
      README.md
  4. 11
      core/class/helper.class.php
  5. 22
      core/core.js.php
  6. 6287
      core/core.php
  7. 89
      core/layout/common.css
  8. 22
      core/layout/lity.css
  9. 27
      core/layout/lity.php
  10. 15
      core/layout/mail.php
  11. 4
      core/layout/main.php
  12. 611
      core/module/addon/addon.php
  13. 5
      core/module/addon/view/index/index.help.html
  14. 80
      core/module/addon/view/index/index.php
  15. 14
      core/module/addon/view/item/item.css
  16. 41
      core/module/addon/view/item/item.php
  17. 0
      core/module/addon/view/store/store.css
  18. 15
      core/module/addon/view/store/store.php
  19. 18
      core/module/addon/view/upload/upload.css
  20. 6
      core/module/addon/view/upload/upload.help.html
  21. 52
      core/module/addon/view/upload/upload.php
  22. 103
      core/module/config/config.php
  23. 124
      core/module/config/view/advanced/advanced.php
  24. 2
      core/module/config/view/backup/backup.php
  25. 2
      core/module/config/view/index/index.help.html
  26. 33
      core/module/config/view/index/index.php
  27. 18
      core/module/config/view/restore/restore.css
  28. 25
      core/module/config/view/restore/restore.php
  29. 2
      core/module/install/install.php
  30. 117
      core/module/install/ressource/defaultdata.php
  31. 20
      core/module/page/page.php
  32. 2
      core/module/page/view/edit/edit.js.php
  33. 2
      core/module/sitemap/view/index/index.php
  34. 1
      core/module/theme/theme.php
  35. 14
      core/module/theme/view/admin/admin.php
  36. 174
      core/module/translate/translate.php
  37. 20
      core/module/translate/view/copy/copy.css
  38. 34
      core/module/translate/view/copy/copy.php
  39. 68
      core/module/translate/view/index/index.js.php
  40. 180
      core/module/translate/view/index/index.php
  41. 20
      core/module/user/user.php
  42. 4
      core/vendor/tinymce/init.js
  43. 1
      core/vendor/zwiico/css/zwiico-codes.css
  44. 13
      core/vendor/zwiico/css/zwiico-embedded.css
  45. 1
      core/vendor/zwiico/css/zwiico-ie7-codes.css
  46. 1
      core/vendor/zwiico/css/zwiico-ie7.css
  47. 15
      core/vendor/zwiico/css/zwiico.css
  48. BIN
      core/vendor/zwiico/font/zwiico.eot
  49. 2
      core/vendor/zwiico/font/zwiico.svg
  50. BIN
      core/vendor/zwiico/font/zwiico.ttf
  51. BIN
      core/vendor/zwiico/font/zwiico.woff
  52. BIN
      core/vendor/zwiico/font/zwiico.woff2
  53. 49
      module/blog/blog.php
  54. 6
      module/blog/view/article/article.php
  55. 2
      module/blog/view/comment/comment.js.php
  56. 8
      module/blog/view/config/config.php
  57. 1
      module/blog/view/edit/edit.php
  58. 24
      module/form/form.php
  59. 49
      module/form/view/config/config.js.php
  60. 21
      module/form/view/config/config.php
  61. 234
      module/gallery/gallery.php
  62. 5
      module/gallery/ressource/defaultdata.php
  63. 16
      module/gallery/view/edit/edit.php
  64. 79
      module/gallery/view/gallery/gallery.css
  65. 2
      module/gallery/view/gallery/gallery.php
  66. 79
      module/gallery/view/index/index.css
  67. 28
      module/gallery/view/theme/theme.php
  68. 249
      module/news/news.php
  69. 14
      module/news/ressource/defaultdata.php
  70. 11
      module/news/view/add/add.php
  71. 20
      module/news/view/article/article.css
  72. 63
      module/news/view/config/config.php
  73. 11
      module/news/view/edit/edit.php
  74. 38
      module/news/view/index/index.css
  75. 34
      module/news/view/index/index.php
  76. 2
      module/redirection/redirection.php
  77. 7
      module/search/ressource/defaultdata.php
  78. 202
      module/search/search.php
  79. 10
      module/search/view/config/config.php
  80. 8
      module/search/view/index/index.php
  81. 1
      site/data/modules/news/actu/style.css
  82. 1
      site/data/news/pages/accueil/theme.css
  83. 1
      site/data/news/pages/telechargement/theme.css
  84. 1
      site/data/search/pages/recherche/theme.css
  85. 34
      site/file/statislite/filtres_primaires/liste_bot.txt
  86. 1
      site/file/statislite/filtres_primaires/liste_querystring.txt
  87. 5
      site/file/statislite/filtres_primaires/liste_vos_ip.txt
  88. 10
      site/file/statislite/json/.htaccess
  89. 10
      site/file/statislite/json_sauve/.htaccess
  90. 59
      site/file/statislite/langages.txt
  91. 12
      site/file/statislite/navigateurs.txt
  92. 12
      site/file/statislite/systemes.txt

13
.gitignore

@ -38,12 +38,7 @@ site/data/journal.log
.DS_Store
site/.DS_Store
site/file/.DS_Store
site/data/es/locale.json
site/data/es/module.json
site/data/es/page.json
site/data/en/locale.json
site/data/en/module.json
site/data/en/page.json
site/data/de/locale.json
site/data/de/module.json
site/data/de/page.json
site/data/es/
site/data/en/
site/data/de/
site/data/modules/*

23
CHANGES.md

@ -1,5 +1,28 @@
# Changelog
## Version 11.0.00
- Modifications :
- Gestion multi-langues
- Traduction rédigée dans une langue européenne
- Traduction automatique dans une langue européenne
- Traduction selon la langue navigateur
- Configuration du site :
- Activation et désactivation de la déconnexion automatique empêchant plusieurs sessions avec le même compte.
- Suppression de l'option articles par pages.
- Suppression de l'option de backup individuel des fichiers de données, pour l'activer manuellement, créez un fichier vide .backup dans site/data
- Nouvelle option permettant de transférer les fichiers de sauvegarde automatiques dans le gestionnaire de fichiers.
## version 10.6.00
Cette version apporte aux modules une autonomie complète par rapport au noyau.
- mise à jour interne (fonction update)
- feuille de style propres aux instances (fonction init)
- Modifications :
- Nombre d'éléments ou d'articles par page : l'option est propre aux modules et n'est plus gérées dans la configuration du CMS.
- Module Search : en l'absence de texte dans le bouton Rechercher, une loupe est affichée.
- Module News : présentation des articles en colonnes.
## version 10.5.04
- Modifications :
- Sitemap : tri des articles de blog selon la date de publication

12
README.md

@ -1,5 +1,6 @@
# ZwiiCMS 10.5.04
# ZwiiCMS 11.0.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.
@ -60,22 +61,23 @@ Pour revenir à la version 8, renommez ce fichier "data.json".
[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] 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
[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] 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
@ -89,7 +91,7 @@ Pour revenir à la version 8, renommez ce fichier "data.json".
[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

11
core/class/helper.class.php

@ -21,9 +21,9 @@ class helper {
/**
* Récupérer l'adresse IP sans tenit compte du proxy
* Récupérer l'adresse IP sans tenir compte du proxy
* @return string IP adress
* Cette focntion est utilisé par user
* Cette fonction est utilisée par user
*/
public static function getIp() {
@ -177,13 +177,10 @@ class helper {
$delete = true;
}
// Constante DATADIRECTORY
if ( array_key_exists('DATADIRECTORY', $class_constants)
&& $class_constants['DATADIRECTORY'] !== []
&& is_array($class_constants['DATADIRECTORY'])
) {
if ( array_key_exists('DATADIRECTORY', $class_constants)) {
$dataDirectory = $value::DATADIRECTORY;
} else {
$dataDirectory = [];
$dataDirectory = '';
}
// Affection
$modules [$value] = [

22
core/core.js.php

@ -478,18 +478,20 @@ $(document).ready(function(){
* Active le système d'aide interne
*
*/
$(".helpDisplayButton").on({
mouseenter: function () {
$(".helpDisplayContent").slideDown();
},
mouseleave: function () {
$(".helpDisplayContent").slideUp();
}
});
$(".buttonHelp").on({
click: function () {
$(".helpDisplayContent").slideToggle();
if( $(".buttonHelp").css('opacity') > '0.75'){
$(".buttonHelp").css('opacity','0.5');
}
else{
$(".buttonHelp").css('opacity','1');
}
}
});
/**
* Remove ID Facebook from URL
* Remove ID Facebook from URL
*/
if(/^\?fbclid=/.test(location.search))
location.replace(location.href.replace(/\?fbclid.+/, ""));

6287
core/core.php
File diff suppressed because it is too large
View File

89
core/layout/common.css

@ -29,7 +29,7 @@ body {
}
@media (min-width: 769px) {
@media screen and (min-width: 769px) {
body {
/*margin:0px 10px;*/
margin: 0;
@ -41,7 +41,7 @@ body {
/**
* Petits écrans inférieurs à 768px de largeur, on supprime les marges
*/
@media (max-width: 768px) {
@media screen and (max-width: 768px) {
body {
margin: 0px;
}
@ -65,7 +65,7 @@ body {
@media (max-width: 768px) {
@media screen and (max-width: 768px) {
.siteContainer {
display: flex;
flex-direction: column;
@ -237,12 +237,12 @@ td>.col12 {
}
/* Tableau sur les écrans de petites tailles */
@media (max-width: 768px) {
@media screen and (max-width: 768px) {
.table thead {
font-size: 0.8em;
}
}
@media (max-width: 668px) {
@media screen and (max-width: 668px) {
.table thead {
display:none;
}
@ -408,7 +408,7 @@ td>.col12 {
background-color: rgba(255, 255, 255, 1);
}
@media (min-width: 769px) {
@media screen and (min-width: 769px) {
#bar #barLeft {
float: left;
}
@ -419,7 +419,7 @@ td>.col12 {
}
}
@media (max-width: 768px) {
@media screen and (max-width: 768px) {
#bar {
text-align: center;
padding: 0 1;
@ -455,7 +455,7 @@ td>.col12 {
overflow: hidden;
}
/* Dans theme.css
@media (min-width:768px) {
@media screen and (min-width:768px) {
#site {
margin: 20px auto;
}
@ -464,7 +464,7 @@ td>.col12 {
/* Bannière */
@media (min-width:768px) {
@media screen and (min-width:768px) {
body>header {
margin: 0;
/*-10px;*/
@ -598,13 +598,13 @@ nav::before {
display: flex;
}
@media (min-width: 769px) {
@media screen and (min-width: 769px) {
nav #menu {
display: block;
}
}
@media (max-width: 768px) {
@media screen and (max-width: 768px) {
body>nav {
margin: 0;
}
@ -691,41 +691,66 @@ li .menuSideChild {
/* Container des drapeaux */
#i18nContainer {
z-index: 100;
#i18nContainerNav, #i18nContainerSite {
position: relative ;
float: right;
width: auto;
height: auto;
margin-top: -25px;
}
#i18nContainer ul {
#i18nContainerNav ul, #i18nContainerSite ul {
list-style: none;
}
#i18nContainer li {
#i18nContainerNav li, #i18nContainerSite li {
display: inline-block;
position: relative;
}
#i18nContainer img {
width: 80%;
#i18nFlag {
width: 70%;
}
#i18nFlagSelected {
width: 100%;
}
/*
* Position du bloc dans le site sur les petits écrans
*/
#i18nContainer img {
margin: 2px;
#i18nContainerNav {
display: block;
}
#i18nContainerSite {
display: none;
}
@media screen and (max-width:1024px){
#i18nContainerNav {
display: none;
}
#i18nContainerSite {
display: block;
margin-top: -10px;
}
#i18nFlag {
width: 100%;
padding: 5px;
}
#i18nFlagSelected {
width: 130%;
padding: 5px;
}
}
/* Corps */
@media (min-width:768px) {
@media screen and (min-width:768px) {
section {
padding: 20px;
}
@ -822,7 +847,7 @@ footer #footerbody>div {
}
/* Conserve le pied de page sur une ligne */
@media (max-width: 768px) {
@media screen and (max-width: 768px) {
body>footer {
margin: 0;
}
@ -1031,6 +1056,7 @@ footer #footerSocials .zwiico-github:hover {
user-select: none;
}
/* Lightbox */
.lightbox {
background: #FFF;
@ -1367,7 +1393,7 @@ input[type='checkbox']:disabled+label:before {
display: inline-block;
}
@media (min-width: 769px) {
@media screen and (min-width: 769px) {
.col1 {
width: 8.33333333%;
}
@ -1556,7 +1582,7 @@ th.col12 {
}
/* Tableau sur les écrans de très petites tailles */
@media (max-width: 480px){
@media screen and (max-width: 480px){
.table tr{
display: block;
margin-bottom: 10px;
@ -1703,19 +1729,10 @@ th.col12 {
.helpDisplayContent {
display: none;
position: fixed;
width: 100%;
bottom: 15px;
padding: 2px 10px;
margin-left: -20px;
padding: 10px 10px;
-webkit-box-shadow: 5px 5px 11px 0px #222222;
box-shadow: 5px 5px 11px 0px #222222;
border-radius: 5px;
background-color:#333;
color: white;
z-index: 30;
}
.helpDisplayButton {
cursor: pointer;
}

22
core/layout/lity.css

@ -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-2021, Frédéric Tempez
* @license GNU General Public License, version 3
* @link http://zwiicms.fr/
*/
/**
* Éléments spécifiques
*/
/* Site */
section {
min-height: 0px;
}

27
core/layout/lity.php

@ -0,0 +1,27 @@
<?php $layout = new layout($this);
$lan = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); ?>
<!DOCTYPE html>
<html prefix="og: http://ogp.me/ns#" lang="<?php echo $lan;?>">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<?php $layout->showMetaTitle(); ?>
<?php $layout->showMetaDescription(); ?>
<?php $layout->showMetaType(); ?>
<?php $layout->showMetaImage(); ?>
<?php $layout->showFavicon(); ?>
<?php $layout->showVendor(); ?>
<?php $layout->showStyle(); ?>
<link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/common.css">
<link rel="stylesheet" href="<?php echo helper::baseUrl(false); ?>core/layout/lity.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'); ?>">
</head>
<body>
<?php $layout->showNotification(); ?>
<div id="site" class="container">
<section><?php $layout->showContent(); ?></section>
</div>
<?php $layout->showScript(); ?>
</body>
</html>

15
core/layout/mail.php

@ -109,7 +109,18 @@
<table role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%">
<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;">
<a href="<?php echo helper::baseUrl(false); ?>" target="_blank"><?php echo $this->getData(['locale', '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>
</tr>
</table>
@ -124,4 +135,4 @@
</div>
</center>
</body>
</html>
</html>

4
core/layout/main.php

@ -36,7 +36,7 @@
<?php
if ( $this->getData(['theme', 'menu', 'position']) === 'top'
AND $this->getData(['theme', 'menu', 'fixed']) === true
AND $this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD',true)
AND $this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD',true)
AND $this->getUser('group') > self::GROUP_MEMBER) {
echo '<nav id="navfixedconnected" >';
} else {
@ -59,7 +59,6 @@
<?php if($this->getData(['theme', 'header', 'position']) === 'body'): ?>
<!-- Bannière dans le fond du site -->
<header>
<?php //$layout->showi18n();?>
<?php
if ($this->getData(['theme','header','linkHomePage'])){
echo "<a href='" . helper::baseUrl(false) . "'>" ;} ?>
@ -153,7 +152,6 @@
<?php endif; ?>
<!-- Corps de page -->
<section>
<?php //$layout->showi18n();?>
<?php
// Gabarit :
// Récupérer la config de la page courante

611
core/module/addon/addon.php

<
@ -20,21 +20,33 @@ class addon extends common {
public static $actions = [
'index' => self::GROUP_ADMIN,
'moduleDelete' => self::GROUP_ADMIN,
'delete' => self::GROUP_ADMIN,
'export' => self::GROUP_ADMIN,
'import' => self::GROUP_ADMIN
'import' => self::GROUP_ADMIN,
'store' => self::GROUP_ADMIN,
'item' => self::GROUP_ADMIN,
'upload' => self::GROUP_ADMIN,
'uploadItem'=> self::GROUP_ADMIN
];
const URL_STORE = 'http://zwiicms.fr/?modules/';
const BASEURL_STORE = 'http://zwiicms.fr/';
// Gestion des modules
public static $modInstal = [];
// pour tests
public static $valeur = [];
// le catalogue
public static $storeList = [];
public static $storeItem = [];
/*
* Effacement d'un module installé et non utilisé
*/
public function moduleDelete() {
public function delete() {
// Jeton incorrect
if ($this->getUrl(3) !== $_SESSION['csrf']) {
@ -50,19 +62,13 @@ class addon extends common {
$infoModules = helper::getModules();
$module = $this->getUrl(2);
//Liste des dossiers associés au module non effacés
$list = '';
foreach( $infoModules[$module]['dataDirectory'] as $moduleId){
if (strpos($moduleId,'module.json') === false && strpos($moduleId,'page.json') === false) {
$list === '' ? $list = self::DATA_DIR.$moduleId : $list .= ', '.self::DATA_DIR. $moduleId;
}
}
if( $this->removeDir('./module/'.$module ) === true){
if( $this->removeDir('./module/'.$module ) === true ){
$success = true;
if( $list === ''){
$notification = 'Module '.$module .' désinstallé';
}
else{
$notification = 'Module '.$module .' désinstallé, il reste des données dans '.$list;
$notification = 'Module '. $module .' désinstallé';
if(($infoModules[$this->getUrl(2)]['dataDirectory']) ) {
if (!$this->removeDir($infoModules[$this->getUrl(2)]['dataDirectory'])){
$notification = 'Module '.$module .' désinstallé, il reste des données dans ' . $infoModules[$this->getUrl(2)]['dataDirectory'];
}
}
}
else{
@ -78,6 +84,270 @@ class addon extends common {
}
}
/***
* Installation d'un module
* Fonction utilisée par upload et storeUpload
*/
private function install ($moduleName, $checkValid){
$tempFolder = 'datamodules';//uniqid();
$zip = new ZipArchive();
if ($zip->open($moduleName) === TRUE) {
$notification = 'Archive ouverte';
mkdir (self::TEMP_DIR . $tempFolder);
$zip->extractTo(self::TEMP_DIR . $tempFolder );
// Archive de module ?
$success = false;
$notification = 'Ce n\'est pas l\'archive d\'un module !';
$moduleDir = self::TEMP_DIR . $tempFolder . '/module';
$moduleName = '';
if ( is_dir( $moduleDir )) {
// Lire le nom du module
if ($dh = opendir( $moduleDir )) {
while ( false !== ($file = readdir($dh)) ) {
if ($file != "." && $file != "..") {
$moduleName = $file;
}
}
closedir($dh);
}
// Module normalisé ?
if( is_file( $moduleDir.'/'.$moduleName.'/'.$moduleName.'.php' ) AND is_file( $moduleDir.'/'.$moduleName.'/view/index/index.php' ) ){
// Lecture de la version et de la validation d'update du module pour validation de la mise à jour
// Pour une version <= version installée l'utilisateur doit cocher 'Mise à jour forcée'
$version = '0.0';
$update = '0.0';
$valUpdate = false;
$file = file_get_contents( $moduleDir.'/'.$moduleName.'/'.$moduleName.'.php');
$file = str_replace(' ','',$file);
$file = str_replace("\t",'',$file);
$pos1 = strpos($file, 'constVERSION');
if( $pos1 !== false){
$posdeb = strpos($file, "'", $pos1);
$posend = strpos($file, "'", $posdeb + 1);
$version = substr($file, $posdeb + 1, $posend - $posdeb - 1);
}
$pos1 = strpos($file, 'constUPDATE');
if( $pos1 !== false){
$posdeb = strpos($file, "'", $pos1);
$posend = strpos($file, "'", $posdeb + 1);
$update = substr($file, $posdeb + 1, $posend - $posdeb - 1);
}
// Si version actuelle >= version indiquée dans UPDATE la mise à jour est validée
$infoModules = helper::getModules();
if( $infoModules[$moduleName]['update'] >= $update ) $valUpdate = true;
// Module déjà installé ?
$moduleInstal = false;
foreach($infoModules as $key=>$value ){
if($moduleName === $key){
$moduleInstal = true;
}
}
// Validation de la maj si autorisation du concepteur du module ET
// ( Version plus récente OU Check de forçage )
$valNewVersion = floatval($version);
$valInstalVersion = floatval( $infoModules[$moduleName]['version'] );
$newVersion = false;
if( $valNewVersion > $valInstalVersion ) $newVersion = true;
$validMaj = $valUpdate && ( $newVersion || $checkValid);
// Nouvelle installation ou mise à jour du module
if( ! $moduleInstal || $validMaj ){
// Copie récursive des dossiers
$this->copyDir( self::TEMP_DIR . $tempFolder, './' );
$success = true;
if( ! $moduleInstal ){
$notification = 'Module '.$moduleName.' installé';
}
else{
$notification = 'Module '.$moduleName.' mis à jour';
}
}
else{
$success = false;
if( $valNewVersion == $valInstalVersion){
$notification = ' Version détectée '.$version.' = à celle installée '.$infoModules[$moduleName]['version'];
}
else{
$notification = ' Version détectée '.$version.' < à celle installée '.$infoModules[$moduleName]['version'];
}
if( $valUpdate === false){
if( $infoModules[$moduleName]['update'] === $update ){
$notification = ' Mise à jour par ce procédé interdite par le concepteur du module';
}
else{
$notification = ' Mise à jour par ce procédé interdite, votre version est trop ancienne';
}
}
}
}
}
// Supprimer le dossier temporaire même si le module est invalide
$this->removeDir(self::TEMP_DIR . $tempFolder);
$zip->close();
} else {
// erreur à l'ouverture
$success = false;
$notification = 'Impossible d\'ouvrir l\'archive';
}
return(['success' => $success,
'notification'=> $notification
]);
}
/***
* Installation d'un module à partir du gestionnaire de fichier
*/
public function upload() {
// Soumission du formulaire
if($this->isPost()) {
// Installation d'un module
$checkValidMaj = $this->getInput('configModulesCheck', helper::FILTER_BOOLEAN);
$zipFilename = $this->getInput('configModulesInstallation', helper::FILTER_STRING_SHORT);
if( $zipFilename !== ''){
$success = [
'success' => false,
'notification'=> ''
];
$state = $this->install(self::FILE_DIR.'source/'.$zipFilename, $checkValidMaj);
}
$this->addOutput([
'redirect' => helper::baseUrl() . $this->getUrl(),
'notification' => $state['notification'],
'state' => $state['success']
]);
}
// Valeurs en sortie
$this->addOutput([
'title' => 'Téléverser un module',
'view' => 'upload'
]);
}
/***
* Installation d'un module par le catalogue
*/
public function uploadItem() {
// Jeton incorrect
if ($this->getUrl(3) !== $_SESSION['csrf']) {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'store',
'state' => false,
'notification' => 'Action non autorisée'
]);
} else {
// Récupérer le module en ligne
$moduleName = $this->getUrl(2);
// Informations sur les module en ligne
$store = json_decode(helper::urlGetContents(self::URL_STORE . 'list'), true);
// Url du module à télécharger
$moduleFilePath = $store[$moduleName]['file'];
// Télécharger le fichier
$moduleData = helper::urlGetContents(self::BASEURL_STORE . self::FILE_DIR . 'source/' . $moduleFilePath);
// Extraire de l'arborescence
$d = explode('/',$moduleFilePath);
$moduleFile = $d[count($d)-1];
// Créer le dossier modules
if (!is_dir(self::FILE_DIR . 'source/modules')) {
mkdir (self::FILE_DIR . 'source/modules');
}
// Sauver les données du fichiers
file_put_contents(self::FILE_DIR . 'source/modules/' . $moduleFile, $moduleData);
/**
* $if( $moduleFile !== ''){
* $success = [
* 'success' => false,
* 'notification'=> ''
* ];
* $state = $this->install(self::FILE_DIR.'source/modules/'.$moduleFile, false);
*}
*/
$this->addOutput([
'redirect' => helper::baseUrl() . 'addon/store',
'notification' => $moduleFile . ' téléchargé dans le dossier modules du gestionnaire de fichiers',
'state' => true
]);
}
// Valeurs en sortie
$this->addOutput([
'title' => 'Catalogue de modules',
'view' => 'store'
]);
}
/**
* Catalogue des modules sur le site ZwiiCMS.fr
*/
public function store() {
$store = json_decode(helper::urlGetContents(self::URL_STORE . 'list'), true);
if ($store) {
// Modules installés
$infoModules = helper::getModules();
// Clés moduleIds dans les pages
$inPages = helper::arrayCollumn($this->getData(['page']),'moduleId', 'SORT_DESC');
foreach( $inPages as $key=>$value){
$inPagesTitle[ $this->getData(['page', $key, 'title' ]) ] = $value;
}
// Parcourir les données des modules
foreach ($store as $key=>$value) {
// Module non installé
$ico = template::ico('download');
$class = '';
// Le module est installé
if (array_key_exists($key,$infoModules) === true) {
$class = 'buttonGreen';
$ico = template::ico('update');
}
// Le module est installé et utilisé
if (in_array($key,$inPages) === true) {
$class = 'buttonRed';
$ico = template::ico('update');
}
self::$storeList [] = [
'<a href="' . self::URL_STORE . $key . '" target="_blank" >'.$store[$key]['title'].'</a>',
$store[$key]['fileVersion'],
mb_detect_encoding(strftime('%d %B %Y', $store[$key]['fileDate']), 'UTF-8', true)
? strftime('%d %B %Y', $store[$key]['fileDate'])
: utf8_encode(strftime('%d %B %Y', $store[$key]['fileDate'])),
implode(', ', array_keys($inPagesTitle,$key)),
template::button('moduleExport' . $key, [
'class' => $class,
'href' => helper::baseUrl(). $this->getUrl(0) . '/uploadItem/' . $key.'/' . $_SESSION['csrf'],// appel de fonction vaut exécution, utiliser un paramètre
'value' => $ico
])
];
}
}
// Valeurs en sortie
$this->addOutput([
'title' => 'Catalogue de modules en ligne',
'view' => 'store'
]);
}
/**
* Détail d'un objet du catalogue
*/
public function item() {
$store = json_decode(helper::urlGetContents(self::URL_STORE . 'list'), true);
self::$storeItem = $store [$this->getUrl(2)] ;
self::$storeItem ['fileDate'] = mb_detect_encoding(strftime('%d %B %Y',self::$storeItem ['fileDate']), 'UTF-8', true)
? strftime('%d %B %Y', self::$storeItem ['fileDate'])
: utf8_encode(strftime('%d %B %Y', self::$storeItem ['fileDate']));
// Valeurs en sortie
$this->addOutput([
'title' =>'Module ' . self::$storeItem['title'],
'view' => 'item'
]);
}
/**
* Gestion des modules
@ -102,257 +372,127 @@ class addon extends common {
$infoModules[$key]['realName'],
$infoModules[$key]['version'],
implode(', ', array_keys($inPagesTitle,$key)),
//array_key_exists('delete',$infoModules[$key]) && $infoModules[$key]['delete'] === true && implode(', ',array_keys($inPages,$key)) === ''
//|| ('delete',$infoModules[$key]) && $infoModules[$key]['delete'] === true && implode(', ',array_keys($inPages,$key)) === ''
$infoModules[$key]['delete'] === true && implode(', ',array_keys($inPages,$key)) === ''
? template::button('moduleDelete' . $key, [
'class' => 'moduleDelete buttonRed',
'href' => helper::baseUrl() . $this->getUrl(0) . '/moduleDelete/' . $key . '/' . $_SESSION['csrf'],
'href' => helper::baseUrl() . $this->getUrl(0) . '/delete/' . $key . '/' . $_SESSION['csrf'],
'value' => template::ico('cancel')
])
: '',
is_array($infoModules[$key]['dataDirectory']) && implode(', ',array_keys($inPages,$key)) !== ''
implode(', ',array_keys($inPages,$key)) !== ''
? template::button('moduleExport' . $key, [
'href' => helper::baseUrl(). $this->getUrl(0) . '/export/' . $key,// appel de fonction vaut exécution, utiliser un paramètre
'href' => helper::baseUrl(). $this->getUrl(0) . '/export/' . $key . '/' . $_SESSION['csrf'],// appel de fonction vaut exécution, utiliser un paramètre
'value' => template::ico('download')
])
: '',
'',
is_array($infoModules[$key]['dataDirectory']) && implode(', ',array_keys($inPages,$key)) === ''
implode(', ',array_keys($inPages,$key)) === ''
? template::button('moduleExport' . $key, [
'href' => helper::baseUrl(). $this->getUrl(0) . '/import/' . $key.'/' . $_SESSION['csrf'],// appel de fonction vaut exécution, utiliser un paramètre
'href' => helper::baseUrl(). $this->getUrl(0) . '/import/' . $key . '/' . $_SESSION['csrf'],// appel de fonction vaut exécution, utiliser un paramètre
'value' => template::ico('upload')
])
: ''
];
}
// Retour du formulaire ?
if($this->isPost()) {
// Installation d'un module
$success = true;
$checkValidMaj = $this->getInput('configModulesCheck', helper::FILTER_BOOLEAN);
$zipFilename = $this->getInput('configModulesInstallation', helper::FILTER_STRING_SHORT);
if( $zipFilename !== ''){
$tempFolder = 'datamodules';//uniqid();
$zip = new ZipArchive();
if ($zip->open(self::FILE_DIR.'source/'.$zipFilename) === TRUE) {