diff options
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 | ||