diff options
| author | polo <ordipolo@gmx.fr> | 2025-10-09 01:35:52 +0200 |
|---|---|---|
| committer | polo <ordipolo@gmx.fr> | 2025-10-09 01:35:52 +0200 |
| commit | 15cbf5d56b4644151d59fee512f5f8fbe496caa3 (patch) | |
| tree | 0da411f4aff53a0249cf3d59ea13f3786897b740 /public/js/main.js | |
| parent | 9f88389d78755d7c69c29e9db8f114fd1dbef034 (diff) | |
| download | cms-15cbf5d56b4644151d59fee512f5f8fbe496caa3.tar.gz cms-15cbf5d56b4644151d59fee512f5f8fbe496caa3.tar.bz2 cms-15cbf5d56b4644151d59fee512f5f8fbe496caa3.zip | |
pagination partie 2, nouvelles fonctions + renommage dans Director, ArticleController::fetch, et en JS: fetchArticles, insertLocalDates, modifs dans changePaginationLimit, dans les vues
Diffstat (limited to 'public/js/main.js')
| -rw-r--r-- | public/js/main.js | 57 |
1 files changed, 51 insertions, 6 deletions
diff --git a/public/js/main.js b/public/js/main.js index d2f8876..59a9331 100644 --- a/public/js/main.js +++ b/public/js/main.js | |||
| @@ -36,15 +36,10 @@ function toastNotify(message){ | |||
| 36 | setTimeout(function(){ toast.className = toast.className.replace('show', ''); }, 5000); | 36 | setTimeout(function(){ toast.className = toast.className.replace('show', ''); }, 5000); |
| 37 | } | 37 | } |
| 38 | 38 | ||
| 39 | |||
| 40 | // exécuté à la fin du chargement de la page | 39 | // exécuté à la fin du chargement de la page |
| 41 | document.addEventListener('DOMContentLoaded', () => { | 40 | document.addEventListener('DOMContentLoaded', () => { |
| 42 | 41 | ||
| 43 | // détection des dates et conversion à l'heure locale | 42 | insertLocalDates(); |
| 44 | document.querySelectorAll('.local_date').forEach(function(element){ | ||
| 45 | const utc_date = element.getAttribute('date-utc'); // forme: 2025-10-10T12:17:00+00:00 | ||
| 46 | element.innerText = toFormatedLocalDate(utc_date); | ||
| 47 | }); | ||
| 48 | 43 | ||
| 49 | // ouvrir/fermer les sous-menus avec écran tactile | 44 | // ouvrir/fermer les sous-menus avec écran tactile |
| 50 | document.querySelectorAll('.sub-menu-toggle').forEach(button => { | 45 | document.querySelectorAll('.sub-menu-toggle').forEach(button => { |
| @@ -85,6 +80,48 @@ document.addEventListener('DOMContentLoaded', () => { | |||
| 85 | }); | 80 | }); |
| 86 | 81 | ||
| 87 | 82 | ||
| 83 | function fetchArticles(bloc_id){ | ||
| 84 | const parent = document.getElementById(bloc_id); | ||
| 85 | |||
| 86 | const block_type = parent.getAttribute('block-type'); | ||
| 87 | let last_article = ''; | ||
| 88 | if(block_type === 'post_block'){ | ||
| 89 | // pas parfait, suppose que les positions sont correctes | ||
| 90 | last_article = parent.querySelectorAll('article').length - 1; | ||
| 91 | } | ||
| 92 | else if(block_type === 'news_block'){ | ||
| 93 | // date_time du dernier article affiché (heure UTC), date vide si bloc vide | ||
| 94 | const news_elements = parent.querySelector('.section_child').querySelectorAll('article'); | ||
| 95 | last_article = news_elements.length !== 0 ? news_elements[news_elements.length - 1].querySelector('.local_date').getAttribute('date-utc') : ''; | ||
| 96 | } | ||
| 97 | else{ | ||
| 98 | console.log("Erreur, le type de bloc n'est pas reconnu"); | ||
| 99 | return; | ||
| 100 | } | ||
| 101 | |||
| 102 | fetch('index.php?fetch=next_articles&id=' + bloc_id + '&last_article=' + last_article) // méthode GET par défaut | ||
| 103 | .then(response => response.json()) | ||
| 104 | .then(data => { | ||
| 105 | if(data.success){ | ||
| 106 | // insérer les articles | ||
| 107 | parent.querySelector('.section_child').innerHTML += data.html; | ||
| 108 | insertLocalDates(); | ||
| 109 | |||
| 110 | // cacher le bouton | ||
| 111 | parent.querySelector('.fetch_articles').querySelector('button').className = data.truncated ? '' : 'hidden'; | ||
| 112 | |||
| 113 | console.log("Articles insérés dans le bloc"); | ||
| 114 | } | ||
| 115 | else{ | ||
| 116 | console.log("Erreur côté serveur à la récupération d'articles"); | ||
| 117 | } | ||
| 118 | }) | ||
| 119 | .catch(error => { | ||
| 120 | console.error('Erreur:', error); | ||
| 121 | }); | ||
| 122 | } | ||
| 123 | |||
| 124 | |||
| 88 | // complète les fonctions dans tinymce.js | 125 | // complète les fonctions dans tinymce.js |
| 89 | function switchPositions(article_id, direction) | 126 | function switchPositions(article_id, direction) |
| 90 | { | 127 | { |
| @@ -239,6 +276,14 @@ function submitDate(id_date) | |||
| 239 | } | 276 | } |
| 240 | } | 277 | } |
| 241 | 278 | ||
| 279 | function insertLocalDates(){ | ||
| 280 | // détection des dates et conversion à l'heure locale | ||
| 281 | document.querySelectorAll('.local_date').forEach(function(element){ | ||
| 282 | const utc_date = element.getAttribute('date-utc'); // forme: 2025-10-10T12:17:00+00:00 | ||
| 283 | element.innerText = toFormatedLocalDate(utc_date); | ||
| 284 | }); | ||
| 285 | } | ||
| 286 | |||
| 242 | function toFormatedLocalDate(utc_string_date){ // forme: 2025-07-17T13:54:00.000Z ou 2025-02-04T00:24 | 287 | function toFormatedLocalDate(utc_string_date){ // forme: 2025-07-17T13:54:00.000Z ou 2025-02-04T00:24 |
| 243 | const date = new Date(utc_string_date); | 288 | const date = new Date(utc_string_date); |
| 244 | 289 | ||
