From df3612ed7e6691530503f79483d2fdbc032d01b8 Mon Sep 17 00:00:00 2001 From: polo-pc-greta Date: Thu, 27 Mar 2025 10:13:03 +0100 Subject: mise en ligne github --- public/assets/arrow-down-nb.svg | 36 ++++++++ public/assets/arrow-down.svg | 40 +++++++++ public/assets/arrow-up-nb.svg | 1 + public/assets/arrow-up.svg | 40 +++++++++ public/assets/book-open-nb.svg | 1 + public/assets/book-open.svg | 40 +++++++++ public/assets/calendar-nb.svg | 1 + public/assets/calendar.svg | 40 +++++++++ public/assets/delete-bin-nb.svg | 1 + public/assets/delete-bin.svg | 48 ++++++++++ public/assets/edit-nb.svg | 1 + public/assets/edit.svg | 44 ++++++++++ public/assets/facebook-nb.svg | 1 + public/assets/facebook.svg | 37 ++++++++ public/assets/favicon48x48.png | Bin 0 -> 3067 bytes public/assets/fond-piscine.jpg | Bin 0 -> 24757 bytes public/assets/home.svg | 1 + public/assets/instagram-nb.svg | 1 + public/assets/instagram.svg | 37 ++++++++ public/assets/logo-120x75.jpg | Bin 0 -> 12240 bytes public/assets/logo-150x94.jpg | Bin 0 -> 13506 bytes public/assets/logo-fond-bleu.png | Bin 0 -> 61236 bytes public/assets/logo2.jpg | Bin 0 -> 36899 bytes public/assets/perdu.jpg | Bin 0 -> 107765 bytes public/assets/share-nb.svg | 1 + public/assets/share.svg | 40 +++++++++ public/css/body.css | 39 +++++++++ public/css/foot.css | 120 +++++++++++++++++++++++++ public/css/head.css | 59 +++++++++++++ public/css/main.css | 110 +++++++++++++++++++++++ public/css/nav.css | 95 ++++++++++++++++++++ public/css/tinymce.css | 6 ++ public/erreur404.html | 13 +++ public/images-mini/DPpiscines.png | Bin 0 -> 15359 bytes public/images-mini/kerne-elagage.png | Bin 0 -> 31766 bytes public/images-mini/kerne.png | Bin 0 -> 13272 bytes public/images-mini/mako.png | Bin 0 -> 3011 bytes public/images/DPpiscines.png | Bin 0 -> 15359 bytes public/images/kerne-elagage.png | Bin 0 -> 31766 bytes public/images/kerne.png | Bin 0 -> 13272 bytes public/images/mako.png | Bin 0 -> 3011 bytes public/index.php | 78 +++++++++++++++++ public/js/galery.js | 4 + public/js/main.js | 30 +++++++ public/js/tinymce.js | 164 +++++++++++++++++++++++++++++++++++ 45 files changed, 1129 insertions(+) create mode 100644 public/assets/arrow-down-nb.svg create mode 100644 public/assets/arrow-down.svg create mode 100644 public/assets/arrow-up-nb.svg create mode 100644 public/assets/arrow-up.svg create mode 100644 public/assets/book-open-nb.svg create mode 100644 public/assets/book-open.svg create mode 100644 public/assets/calendar-nb.svg create mode 100644 public/assets/calendar.svg create mode 100644 public/assets/delete-bin-nb.svg create mode 100644 public/assets/delete-bin.svg create mode 100644 public/assets/edit-nb.svg create mode 100644 public/assets/edit.svg create mode 100644 public/assets/facebook-nb.svg create mode 100644 public/assets/facebook.svg create mode 100644 public/assets/favicon48x48.png create mode 100644 public/assets/fond-piscine.jpg create mode 100644 public/assets/home.svg create mode 100644 public/assets/instagram-nb.svg create mode 100644 public/assets/instagram.svg create mode 100644 public/assets/logo-120x75.jpg create mode 100644 public/assets/logo-150x94.jpg create mode 100644 public/assets/logo-fond-bleu.png create mode 100644 public/assets/logo2.jpg create mode 100644 public/assets/perdu.jpg create mode 100644 public/assets/share-nb.svg create mode 100644 public/assets/share.svg create mode 100644 public/css/body.css create mode 100644 public/css/foot.css create mode 100644 public/css/head.css create mode 100644 public/css/main.css create mode 100644 public/css/nav.css create mode 100644 public/css/tinymce.css create mode 100644 public/erreur404.html create mode 100644 public/images-mini/DPpiscines.png create mode 100644 public/images-mini/kerne-elagage.png create mode 100644 public/images-mini/kerne.png create mode 100644 public/images-mini/mako.png create mode 100644 public/images/DPpiscines.png create mode 100644 public/images/kerne-elagage.png create mode 100644 public/images/kerne.png create mode 100644 public/images/mako.png create mode 100644 public/index.php create mode 100644 public/js/galery.js create mode 100644 public/js/main.js create mode 100644 public/js/tinymce.js (limited to 'public') diff --git a/public/assets/arrow-down-nb.svg b/public/assets/arrow-down-nb.svg new file mode 100644 index 0000000..84ad2f3 --- /dev/null +++ b/public/assets/arrow-down-nb.svg @@ -0,0 +1,36 @@ + + + + + + diff --git a/public/assets/arrow-down.svg b/public/assets/arrow-down.svg new file mode 100644 index 0000000..bd7d579 --- /dev/null +++ b/public/assets/arrow-down.svg @@ -0,0 +1,40 @@ + + + + + + + diff --git a/public/assets/arrow-up-nb.svg b/public/assets/arrow-up-nb.svg new file mode 100644 index 0000000..f845bf1 --- /dev/null +++ b/public/assets/arrow-up-nb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/assets/arrow-up.svg b/public/assets/arrow-up.svg new file mode 100644 index 0000000..c88794d --- /dev/null +++ b/public/assets/arrow-up.svg @@ -0,0 +1,40 @@ + + + + + + + diff --git a/public/assets/book-open-nb.svg b/public/assets/book-open-nb.svg new file mode 100644 index 0000000..462bb9d --- /dev/null +++ b/public/assets/book-open-nb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/assets/book-open.svg b/public/assets/book-open.svg new file mode 100644 index 0000000..383bc6d --- /dev/null +++ b/public/assets/book-open.svg @@ -0,0 +1,40 @@ + + + + + + + diff --git a/public/assets/calendar-nb.svg b/public/assets/calendar-nb.svg new file mode 100644 index 0000000..fbf11df --- /dev/null +++ b/public/assets/calendar-nb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/assets/calendar.svg b/public/assets/calendar.svg new file mode 100644 index 0000000..d8a0862 --- /dev/null +++ b/public/assets/calendar.svg @@ -0,0 +1,40 @@ + + + + + + + diff --git a/public/assets/delete-bin-nb.svg b/public/assets/delete-bin-nb.svg new file mode 100644 index 0000000..a71c4d8 --- /dev/null +++ b/public/assets/delete-bin-nb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/assets/delete-bin.svg b/public/assets/delete-bin.svg new file mode 100644 index 0000000..d534c53 --- /dev/null +++ b/public/assets/delete-bin.svg @@ -0,0 +1,48 @@ + + + + + + + + + diff --git a/public/assets/edit-nb.svg b/public/assets/edit-nb.svg new file mode 100644 index 0000000..f57a63e --- /dev/null +++ b/public/assets/edit-nb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/assets/edit.svg b/public/assets/edit.svg new file mode 100644 index 0000000..2c1fd10 --- /dev/null +++ b/public/assets/edit.svg @@ -0,0 +1,44 @@ + + + + + + + + diff --git a/public/assets/facebook-nb.svg b/public/assets/facebook-nb.svg new file mode 100644 index 0000000..543537c --- /dev/null +++ b/public/assets/facebook-nb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/assets/facebook.svg b/public/assets/facebook.svg new file mode 100644 index 0000000..d09d296 --- /dev/null +++ b/public/assets/facebook.svg @@ -0,0 +1,37 @@ + + + + + + diff --git a/public/assets/favicon48x48.png b/public/assets/favicon48x48.png new file mode 100644 index 0000000..9825db1 Binary files /dev/null and b/public/assets/favicon48x48.png differ diff --git a/public/assets/fond-piscine.jpg b/public/assets/fond-piscine.jpg new file mode 100644 index 0000000..239d95d Binary files /dev/null and b/public/assets/fond-piscine.jpg differ diff --git a/public/assets/home.svg b/public/assets/home.svg new file mode 100644 index 0000000..d400c4a --- /dev/null +++ b/public/assets/home.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/assets/instagram-nb.svg b/public/assets/instagram-nb.svg new file mode 100644 index 0000000..c51ee39 --- /dev/null +++ b/public/assets/instagram-nb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/assets/instagram.svg b/public/assets/instagram.svg new file mode 100644 index 0000000..feb8ae8 --- /dev/null +++ b/public/assets/instagram.svg @@ -0,0 +1,37 @@ + + + + + + diff --git a/public/assets/logo-120x75.jpg b/public/assets/logo-120x75.jpg new file mode 100644 index 0000000..b58a7a6 Binary files /dev/null and b/public/assets/logo-120x75.jpg differ diff --git a/public/assets/logo-150x94.jpg b/public/assets/logo-150x94.jpg new file mode 100644 index 0000000..67ec6cc Binary files /dev/null and b/public/assets/logo-150x94.jpg differ diff --git a/public/assets/logo-fond-bleu.png b/public/assets/logo-fond-bleu.png new file mode 100644 index 0000000..f51ac9c Binary files /dev/null and b/public/assets/logo-fond-bleu.png differ diff --git a/public/assets/logo2.jpg b/public/assets/logo2.jpg new file mode 100644 index 0000000..39c03bd Binary files /dev/null and b/public/assets/logo2.jpg differ diff --git a/public/assets/perdu.jpg b/public/assets/perdu.jpg new file mode 100644 index 0000000..043a97a Binary files /dev/null and b/public/assets/perdu.jpg differ diff --git a/public/assets/share-nb.svg b/public/assets/share-nb.svg new file mode 100644 index 0000000..f58f129 --- /dev/null +++ b/public/assets/share-nb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/assets/share.svg b/public/assets/share.svg new file mode 100644 index 0000000..e053051 --- /dev/null +++ b/public/assets/share.svg @@ -0,0 +1,40 @@ + + + + + + + diff --git a/public/css/body.css b/public/css/body.css new file mode 100644 index 0000000..87f71f2 --- /dev/null +++ b/public/css/body.css @@ -0,0 +1,39 @@ +body +{ + margin: auto; + max-width: 1200px; + /*width: 90%;*/ + font-family: sans; + background-color: #0cceec; +} + +#bloc_page +{} + + +.infobulle +{ + /*text-decoration: none;*/ + /* évite que l'infobulle ne se retrouve dans un coin de l'écran */ + /*position:relative;*/ + /* block -> hauteur fixe pour vertical-align dans l'image */ + /*display: inline-block;*/ + +} +/*.infobulle button +{ + + display: none; + position: absolute; + bottom: 35px; + left: 10px; +} +.infobulle:hover button +{ + display: inline; + +} +.infobulle img +{ + vertical-align: middle; +}*/ \ No newline at end of file diff --git a/public/css/foot.css b/public/css/foot.css new file mode 100644 index 0000000..ef3291d --- /dev/null +++ b/public/css/foot.css @@ -0,0 +1,120 @@ +/*-- pied de page --*/ +footer +{ + /*background-color: #279dc177;*/ + /*background-color: #13aff077;*/ + background-color: #B7E9FE; + /*width: 1200px;*/ + margin: auto; + +} +footer > div +{ + margin: auto; + max-width: 1200px; + display: flex; + justify-content: space-around; +} +.contact a +{ + color: unset; + border-bottom: 3px #13aff000 solid; /* bordure invisible */ +} +.contact a:hover +{ + /*background-color: #fadb11;*/ + text-decoration: none; + padding: 0 2px; + /*background-color: #13aff0ff; + border-bottom: 3px #fadb11 solid;*/ + background-color: #ffff00; + /*border-bottom: 2px #00a8f3 solid;*/ + border-bottom: 2px #ff1d04 solid; +} + + +/*-- fil d'ariane --*/ +.breadcrumb +{ + max-width: 45%; + /*margin-right: 10px;*/ + margin: 16px 0; /* = p */ + list-style: none; /* retirer les puces */ + font-size: small; + text-align: right; + font-weight: bold; +} +.breadcrumb img +{ + width: 12px; + vertical-align: middle; +} +.breadcrumb a img, .breadcrumb a span +{ + border-bottom: 2px #13aff000 solid; +} +.breadcrumb a img:hover, .breadcrumb a span:hover +{ + /*background-color: #13aff0; + border-bottom: 3px #fadb11 solid;*/ + background-color: #ffff00; + /*border-bottom: 2px #00a8f3 solid;*/ + border-bottom: 2px #ff1d04 solid; +} +/*.breadcrumb *:not(:last-child)::after +{ + content: "→"; + display: block; + margin: 0 3px; +}*/ +.breadcrumb a +{ + color: unset; /* ne plus hériter */ + text-decoration: none; +} + +/* zone admin */ +.logged_out +{ + /*display: none;*/ + justify-content: start; +} +.logged_out a +{ + color: black; + text-decoration: none; +} +.empty_admin_zone +{ + height: 32px; +} +.logged_in +{ + height: 32px; + width: 1200px; + margin: auto; + background-color: #ffff00; + position: fixed; + bottom: 0px; +} +.logged_in > p +{ + margin: 5px 0; + display: flex; + justify-content: space-around; +} +.logged_in button +{ + margin-left: 5px; + color: #ff1d04; + font-size: medium; + border: lightgrey 2px outset; + border-radius: 4px; + background-color: white; +} +.logged_in button:hover +{ + cursor: pointer; /* curseur qui touche du doigt */ + background-color: #ffff00; + border-radius: 4px; +} \ No newline at end of file diff --git a/public/css/head.css b/public/css/head.css new file mode 100644 index 0000000..b8d4c93 --- /dev/null +++ b/public/css/head.css @@ -0,0 +1,59 @@ +header +{ + text-align: center; + /*padding-top: 5px;*/ + /*padding-bottom: 10px;*/ + background-image: url('../assets/fond-piscine.jpg'); + background-size: cover; /* largeur du bloc_page */ +} +header > div +{ + /*margin: auto;*/ + /*max-width: 1200px;*/ + display: flex; + /*align-items: center;*/ /* conflit possible avec .social align-self */ + justify-content: space-around; +} +.header-content +{ + padding: 20px 0; +} +.site_title +{ + background-color: #ffffff7f; + border-radius: 10px; +} +header h1 +{ + font-size: x-large; + margin: 10px; +} +header h2 +{ + font-size: medium; /* défaut = x-large */ + margin: 10px; +} +header img +{ + vertical-align: bottom; /* supprime espace sous l'image */ +} +header a +{ + color: unset; /* ne plus hériter */ + text-decoration: none; +} +.social +{ + align-self: end; +} +.social img +{ + width: 25px; + background-color: #ffffffb3; + border-radius: 10px; +} + +.social img:hover +{ + background-color: #ffff00; +} diff --git a/public/css/main.css b/public/css/main.css new file mode 100644 index 0000000..b38f8d9 --- /dev/null +++ b/public/css/main.css @@ -0,0 +1,110 @@ +main +{ + margin: auto; + /*max-width: 1200px;*/ + background-color: #E3F3FF; + padding: 15px 0; +} +section > h3 +{ + padding: 15px; + margin: 0; + text-align: center; +} +section > p /* boutons spéciaux mode admin */ +{ + /*margin-left: 15px;*/ +} +.grid_columns +{ + display: grid; + grid-template-columns: repeat(3, 1fr); +} +.galery_photos +{ + display: flex; + flex-wrap: wrap; + justify-content: space-evenly; +} +.galery_photos .html_from_editor img +{ + max-width: 400px; + max-height: 250px; +} +article +{ + /*display: flex;*/ + background-color: white; + margin: 15px 15px 0 15px; + padding: 0 15px; + /*min-height: 150px;*/ +} +article .logo2 +{ + vertical-align: middle; + max-width: 200px; + max-height: 200px; + margin-right: 15px; +} +.new_content, .article_content +{ + width: 100%; +} +.new_content_text +{ + max-height: 250px; + overflow: hidden; +} + +article .action_icon +{ + width: 24px; + vertical-align: middle; + border: white 2px solid; /* invisible */ +} +article .action_icon:hover +{ + background-color: #ffff00; + border-radius: 4px; + border: lightgrey 2px outset; +} +.article_title_zone +{ + display: flex; + justify-content: space-between; +} +.under_an_article +{ + display: flex; + justify-content: space-between; + font-size: small; +} +.under_an_article p +{ + margin: 5px; +} +.under_an_article img +{ + width: 24px; + vertical-align: middle; + margin-right: 5px; +} +.article_admin_zone +{ + display: flex; + justify-content: end; +} +main button +{ + color: #ff1d04; + font-size: medium; + border-radius: 4px; + background-color: white; + border: lightgrey 2px outset; /* rend identiques les boutons firefox et chromium */ +} +main button:hover +{ + cursor: pointer; /* curseur qui pointe du doigt */ + background-color: #ffff00; + border-radius: 4px; +} \ No newline at end of file diff --git a/public/css/nav.css b/public/css/nav.css new file mode 100644 index 0000000..d51c58a --- /dev/null +++ b/public/css/nav.css @@ -0,0 +1,95 @@ +/*-- menu principal --*/ +.empty_nav_zone +{ + height: 33px; +} +.nav_main +{ + position: fixed; + /*box-shadow: 3px 3px 5px #13aff0;*/ + border: 2px solid #13aff0; + top: -2px; +} +.nav_main +{ + /*font-size: 90%;*/ + /*margin-top: 10px;*/ + /*margin-bottom: 10px;*/ + text-wrap: nowrap; +} +.nav_main > ul +{ + display: flex; + flex-direction: row; + justify-content: center; + flex-wrap: wrap; +} +ul +{ + margin: 0; +} +.nav_main ul, .nav_main li +{ + list-style: none; + padding-left: 0; +} +.nav_main p +{ + padding: 7px; + margin: 0; + background-color: #ffffffe1; /* b3 = 179 = 0.7 (x 256) */ +} +.nav_main p:hover +{ + background-color: white; +} +.current > p +{ + background-color: white; + font-weight: bold; +} +.drop-down > p::after +{ + content: ' ▼'; + font-size: x-small; +} + +.drop-down:hover > .sub-menu /* faire apparaître sub-menu */ +{ + display: block; +} +.sub-menu +{ + display: none; + background-color: white; + border-top: 3px solid #13aff0; + box-shadow: 1px 1px 3px black; + font-size: 95%; +} +/*.sub-menu p:hover*/ +.nav_main p:hover +{ + background-color: #ffff00; +} +.drop-down .sub-menu .drop-down > p:after /* bricolage? */ +{ + content: " ▶"; + font-size: x-small; +} + +/* 1er sous-menu, poitionnement pour ne pas aggrandir l'élément parent */ +nav > ul > li > ul +{ + position: absolute; /* retire du flux, positionnement par rapport à la fenêtre */ +} +/* élément du menu survolé, le positionnement relatif en fait la référence du positionnement suivant */ +.drop-down .sub-menu .drop-down +{ + position: relative; +} +.drop-down .sub-menu .drop-down .sub-menu +{ + position: absolute; /* positionnement par rapport au précédent "position" en CSS */ + left: 100%; + top: -3px; /* la bordure bleue fait 3px */ +} diff --git a/public/css/tinymce.css b/public/css/tinymce.css new file mode 100644 index 0000000..55639e0 --- /dev/null +++ b/public/css/tinymce.css @@ -0,0 +1,6 @@ +.tox-promotion{ + display: none; +} +.hidden{ + display: none; +} \ No newline at end of file diff --git a/public/erreur404.html b/public/erreur404.html new file mode 100644 index 0000000..3dcd6ed --- /dev/null +++ b/public/erreur404.html @@ -0,0 +1,13 @@ + + + + + erreur 404 + + +

404 - page non trouvée

+

Le lien que vous avez utilisé ne mène nulle part.
+ Revenez à la page d'accueil et utilisez le menu, vous devriez trouvez votre route.

+ + + \ No newline at end of file diff --git a/public/images-mini/DPpiscines.png b/public/images-mini/DPpiscines.png new file mode 100644 index 0000000..3cb40ba Binary files /dev/null and b/public/images-mini/DPpiscines.png differ diff --git a/public/images-mini/kerne-elagage.png b/public/images-mini/kerne-elagage.png new file mode 100644 index 0000000..5416517 Binary files /dev/null and b/public/images-mini/kerne-elagage.png differ diff --git a/public/images-mini/kerne.png b/public/images-mini/kerne.png new file mode 100644 index 0000000..eea9107 Binary files /dev/null and b/public/images-mini/kerne.png differ diff --git a/public/images-mini/mako.png b/public/images-mini/mako.png new file mode 100644 index 0000000..5ba6263 Binary files /dev/null and b/public/images-mini/mako.png differ diff --git a/public/images/DPpiscines.png b/public/images/DPpiscines.png new file mode 100644 index 0000000..3cb40ba Binary files /dev/null and b/public/images/DPpiscines.png differ diff --git a/public/images/kerne-elagage.png b/public/images/kerne-elagage.png new file mode 100644 index 0000000..5416517 Binary files /dev/null and b/public/images/kerne-elagage.png differ diff --git a/public/images/kerne.png b/public/images/kerne.png new file mode 100644 index 0000000..eea9107 Binary files /dev/null and b/public/images/kerne.png differ diff --git a/public/images/mako.png b/public/images/mako.png new file mode 100644 index 0000000..5ba6263 Binary files /dev/null and b/public/images/mako.png differ diff --git a/public/index.php b/public/index.php new file mode 100644 index 0000000..37ebaf0 --- /dev/null +++ b/public/index.php @@ -0,0 +1,78 @@ +makeRootNode($id); +$node = $director->getRootNode(); + +// -- vues -- +$view_builder = new ViewBuilder($node); +echo $view_builder->render(); // et voilà! diff --git a/public/js/galery.js b/public/js/galery.js new file mode 100644 index 0000000..0be63a4 --- /dev/null +++ b/public/js/galery.js @@ -0,0 +1,4 @@ +function enableGaleryScroller(){ + // lancer photoswipe + // https://photoswipe.com/ +} \ No newline at end of file diff --git a/public/js/main.js b/public/js/main.js new file mode 100644 index 0000000..c86ec51 --- /dev/null +++ b/public/js/main.js @@ -0,0 +1,30 @@ +function newPassword(page, id = ''){ + if(id != ''){ + id = '&id=' + id; + } + alert('Le mot de passe a été modifié.'); + window.setTimeout(function(){ + location.href = "index.php?page=" + page + "&message=nouveau_mdp" + id; + }, 0); +} + +function copyInClipBoard(link){ + // une balise avec des attributs + var element = document.createElement("input"); + element.setAttribute("id", "copyMe"); + element.setAttribute("value", link); + + // placement dans la page (= le "document") + document.body.appendChild(element); + var cible = document.getElementById('copyMe'); + + // selection comme on le ferait à la souris + cible.select(); + // copie (= Ctrl + C) + document.execCommand("copy"); + + // nettoyage + element.parentNode.removeChild(element); + + alert('Cette adresse a été copiée dans le presse-papier:\n\n' + link); +} \ No newline at end of file diff --git a/public/js/tinymce.js b/public/js/tinymce.js new file mode 100644 index 0000000..8aa9368 --- /dev/null +++ b/public/js/tinymce.js @@ -0,0 +1,164 @@ +let editors = {}; + +function openEditor(articleId) { + // Récupérer et sauvegarder le contenu d'origine de l'article + const articleContent = document.getElementById(articleId).innerHTML; + document.getElementById(articleId).setAttribute('data-original-content', articleContent); + + tinymce.init({ + selector: `#${articleId}`, + language: 'fr_FR', // télécharger des paquets de langue ici: https://www.tiny.cloud/get-tiny/language-packages/ + language_url: 'js/tinymce-langs/fr_FR.js', // ou installer tweeb/tinymce-i18n avec composer + license_key: 'gpl', + branding: false, + plugins: 'lists link autolink table image media autoresize help', + toolbar: 'undo redo newdocument print selectall styles bold italic underline strikethrough fontsizeinput forecolor backcolor fontfamily align numlist bullist outdent indent table link image media help', + menubar: false, + toolbar_mode: 'wrap', + statusbar: false, + setup: function (editor) { + editor.on('init', function () { + editors[articleId] = editor; + + // Masquer le bouton "Modifier" et afficher les boutons "Annuler" et "Soumettre" + if(articleId != 'new') + { + document.querySelector(`#edit-${articleId}`).classList.add('hidden'); + document.querySelector(`#delete-${articleId}`).classList.add('hidden'); + document.querySelector(`#position_up-${articleId}`).classList.add('hidden'); + document.querySelector(`#position_down-${articleId}`).classList.add('hidden'); + } + else{ + document.querySelector(`#new-${articleId}`).classList.add('hidden'); + } + document.querySelector(`#cancel-${articleId}`).classList.remove('hidden'); + document.querySelector(`#submit-${articleId}`).classList.remove('hidden'); + + }); + }, + // upload d'image + images_upload_handler: (blobInfo, progress) => new Promise((resolve, reject) => { + const formData = new FormData(); + formData.append("file", blobInfo.blob()); + + fetch("index.php?action=upload_image", { + method: "POST", + body: formData + }) + .then(response => response.json()) + .then(data => { + if (data.location) { + resolve(data.location); + } + else { + reject("Erreur: Chemin d'image invalide"); + } + }) + .catch(error => { + reject("Erreur lors de l'upload"); + }); + }), + image_caption: true + }); + + // Remplacer le contenu de l'article par l'éditeur + document.getElementById(articleId).innerHTML = articleContent; +} + +function deleteArticle(articleId, page = '') { + if (confirm('Voulez-vous vraiment supprimer cet article ?')) + { + // Envoyer une requête au serveur pour supprimer l'article + fetch('index.php?action=delete_article', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ id: articleId }) + }) + .then(response => response.json()) + .then(data => { + if (data.success) + { + if(page == 'article'){ + // redirection vers la page d'accueil + window.setTimeout(function(){ + location.href = "index.php?page=accueil"; + }, 0); + } + else{ + // Supprimer l'article du DOM + const articleElement = document.getElementById(articleId); + articleElement.parentElement.parentElement.remove(); //
est deux niveau au dessus + } + } + else { + alert('Erreur lors de la suppression de l\'article.'); + } + }) + .catch(error => { + console.error('Erreur:', error); + }); + } +} + +function closeEditor(articleId, display_old = true) +{ + // Fermer l'éditeur + tinymce.remove(`#${articleId}`); + delete editors[articleId]; + + // Restaurer le contenu d'origine de l'article + if(display_old){ + const originalContent = document.getElementById(articleId).getAttribute('data-original-content'); + document.getElementById(articleId).innerHTML = originalContent; + } + + // Afficher le bouton "Modifier" et masquer les boutons "Annuler" et "Soumettre" + if(articleId != 'new'){ + document.querySelector(`#edit-${articleId}`).classList.remove('hidden'); + document.querySelector(`#delete-${articleId}`).classList.remove('hidden'); + document.querySelector(`#position_up-${articleId}`).classList.remove('hidden'); + document.querySelector(`#position_down-${articleId}`).classList.remove('hidden'); + } + else{ + document.querySelector(`#new-${articleId}`).classList.remove('hidden'); + } + document.querySelector(`#cancel-${articleId}`).classList.add('hidden'); + document.querySelector(`#submit-${articleId}`).classList.add('hidden'); +} + +function submitArticle(articleId) { + // Récupérer l'éditeur correspondant à l'article + const editor = editors[articleId]; + if (!editor) { + console.error('Éditeur non trouvé pour l\'article:', articleId); + return; + } + + // Récupérer le contenu de l'éditeur + const newContent = editor.getContent(); + + // Envoi AJAX au serveur + fetch('index.php?action=editor_submit', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({id: articleId, content: newContent}) + }) + .then(response => response.json()) + .then(data => { + if (data.success) { + // Fermer l'éditeur et mettre à jour le contenu de l'article + closeEditor(articleId, false); + document.getElementById(articleId).innerHTML = newContent; + } + else { + alert('Erreur lors de la sauvegarde de l\'article.'); + } + }) + .catch(error => { + console.error('Erreur:', error); + }); +} \ No newline at end of file -- cgit v1.2.3