From 959527bb712fcd05351d8b4b52ff17786baad454 Mon Sep 17 00:00:00 2001 From: polo Date: Sun, 26 Oct 2025 22:48:49 +0100 Subject: =?UTF-8?q?modification=20du=20nom=20et=20plus=20seulement=20de=20?= =?UTF-8?q?l'URL=20des=20entr=C3=A9es=20"URL"=20du=20menu,=20header/footer?= =?UTF-8?q?:=20renommage=20de=20classes=20et=20input=20absents=20du=20HTML?= =?UTF-8?q?=20sans=20=C3=AAtre=20admin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/js/Input.js | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++ public/js/InputFile.js | 62 -------------------------------- public/js/InputText.js | 48 ------------------------- public/js/menu.js | 78 +++++++--------------------------------- 4 files changed, 108 insertions(+), 176 deletions(-) create mode 100644 public/js/Input.js delete mode 100644 public/js/InputFile.js delete mode 100644 public/js/InputText.js (limited to 'public/js') diff --git a/public/js/Input.js b/public/js/Input.js new file mode 100644 index 0000000..0b6912b --- /dev/null +++ b/public/js/Input.js @@ -0,0 +1,96 @@ +class Input{ + constructor(name){ + this.name = name; + /*const name_array = name.split('_'); + this.node = name_array[0]; + this.what = name_array[1];*/ + this.parent = document.getElementById(name); + } + open(){ + this.parent.querySelector('#' + this.name + '_content').classList.add('hidden'); + this.parent.querySelector('#' + this.name + '_input').classList.remove('hidden'); + this.parent.querySelector('#' + this.name + '_open').classList.add('hidden'); + this.parent.querySelector('#' + this.name + '_submit').classList.remove('hidden'); + this.parent.querySelector('#' + this.name + '_cancel').classList.remove('hidden'); + } + close(){ + this.parent.querySelector('#' + this.name + '_content').classList.remove('hidden'); + this.parent.querySelector('#' + this.name + '_input').classList.add('hidden'); + this.parent.querySelector('#' + this.name + '_open').classList.remove('hidden'); + this.parent.querySelector('#' + this.name + '_submit').classList.add('hidden'); + this.parent.querySelector('#' + this.name + '_cancel').classList.add('hidden'); + } + cancel(){ + this.close(); + } +} + +class InputFile extends Input{ + submit(){ + const file = this.parent.querySelector('#' + this.name + '_input').files[0]; + if(!file){ + console.error("Erreur: aucun fichier sélectionné."); + toastNotify("Erreur: aucun fichier sélectionné."); + return; + } + const form_data = new FormData(); + form_data.append('file', file); + + fetch('index.php?head_foot_image=' + this.name, { + method: 'POST', // apparemment il faudrait utiliser PUT + body: form_data + }) + .then(response => response.json()) + .then(data => { + if(data.success){ + // cas particuliers + if(this.name === 'head_favicon'){ + const link = document.querySelector('link[rel="icon"]'); + link.type = data.mime_type; + link.href = data.location; + } + else if(this.name === 'header_background'){ + document.querySelector('header').style.backgroundImage = "url('" + data.location + "')"; + } + + this.parent.querySelector('#' + this.name + '_content').src = data.location; + this.close(); + } + else{ + console.error("Erreur: le serveur n'a pas enregistré l'image'."); + } + }) + .catch(error => { + console.error('Erreur:', error); + }); + } +} + +class InputText extends Input{ + submit(){ + const new_text = this.parent.querySelector('#' + this.name + '_input').value; + + fetch('index.php?head_foot_text=' + this.name, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({new_text: new_text}) + }) + .then(response => response.json()) + .then(data => { + if(data.success){ + this.parent.querySelector('#' + this.name + '_content').innerHTML = new_text; + this.close(); + } + else{ + console.error("Erreur: le serveur n'a pas enregistré le nouveau texte."); + } + }) + .catch(error => { + console.error('Erreur:', error); + }); + } + cancel(){ // surcharge + this.parent.querySelector('#' + this.name + '_input').value = this.parent.querySelector('#' + this.name + '_content').innerHTML; + this.close(); + } +} \ No newline at end of file diff --git a/public/js/InputFile.js b/public/js/InputFile.js deleted file mode 100644 index e676037..0000000 --- a/public/js/InputFile.js +++ /dev/null @@ -1,62 +0,0 @@ -// étendre une classe parente avec InputFile? -class InputFile{ - constructor(name){ - this.name = name; - this.parent = document.getElementById(name); - } - open(){ - this.parent.querySelector('#' + this.name + '_img').classList.add('hidden'); - this.parent.querySelector('#' + this.name + '_input').classList.remove('hidden'); - this.parent.querySelector('#' + this.name + '_open').classList.add('hidden'); - this.parent.querySelector('#' + this.name + '_submit').classList.remove('hidden'); - this.parent.querySelector('#' + this.name + '_cancel').classList.remove('hidden'); - } - close(){ - this.parent.querySelector('#' + this.name + '_img').classList.remove('hidden'); - this.parent.querySelector('#' + this.name + '_input').classList.add('hidden'); - this.parent.querySelector('#' + this.name + '_open').classList.remove('hidden'); - this.parent.querySelector('#' + this.name + '_submit').classList.add('hidden'); - this.parent.querySelector('#' + this.name + '_cancel').classList.add('hidden'); - } - submit(){ - const file = this.parent.querySelector('#' + this.name + '_input').files[0]; - if(!file){ - console.error("Erreur: aucun fichier sélectionné."); - return; - } - const form_data = new FormData(); - form_data.append('file', file); - - fetch('index.php?head_foot_image=' + this.name, { - method: 'POST', // apparemment il faudrait utiliser PUT - body: form_data - }) - .then(response => response.json()) - .then(data => { - if(data.success){ - this.parent.querySelector('#' + this.name + '_img').src = data.location; - - // cas particulier - if(this.name === 'head_favicon'){ - const link = document.querySelector('link[rel="icon"]'); - link.type = data.mime_type; - link.href = data.location; - } - else if(this.name === 'header_background'){ - document.querySelector('header').style.backgroundImage = "url('" + data.location + "')"; - } - - this.close(); - } - else{ - console.error("Erreur: le serveur n'a pas enregistré l'image'."); - } - }) - .catch(error => { - console.error('Erreur:', error); - }); - } - cancel(){ - this.close(); - } -} \ No newline at end of file diff --git a/public/js/InputText.js b/public/js/InputText.js deleted file mode 100644 index 79f0398..0000000 --- a/public/js/InputText.js +++ /dev/null @@ -1,48 +0,0 @@ -// s'en servir dans menu et chemin -// étendre un classe parente avec InputText? -class InputText{ - constructor(name){ - this.name = name; - this.parent = document.getElementById(name); - } - open(){ - this.parent.querySelector('#' + this.name + '_span').classList.add('hidden'); - this.parent.querySelector('#' + this.name + '_input').classList.remove('hidden'); - this.parent.querySelector('#' + this.name + '_open').classList.add('hidden'); - this.parent.querySelector('#' + this.name + '_submit').classList.remove('hidden'); - this.parent.querySelector('#' + this.name + '_cancel').classList.remove('hidden'); - } - close(){ - this.parent.querySelector('#' + this.name + '_span').classList.remove('hidden'); - this.parent.querySelector('#' + this.name + '_input').classList.add('hidden'); - this.parent.querySelector('#' + this.name + '_open').classList.remove('hidden'); - this.parent.querySelector('#' + this.name + '_submit').classList.add('hidden'); - this.parent.querySelector('#' + this.name + '_cancel').classList.add('hidden'); - } - submit(){ - const new_text = this.parent.querySelector('#' + this.name + '_input').value; - - fetch('index.php?head_foot_text=' + this.name, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({new_text: new_text}) - }) - .then(response => response.json()) - .then(data => { - if(data.success){ - this.parent.querySelector('#' + this.name + '_span').innerHTML = new_text; - this.close(); - } - else{ - console.error("Erreur: le serveur n'a pas enregistré le nouveau texte."); - } - }) - .catch(error => { - console.error('Erreur:', error); - }); - } - cancel(){ - this.parent.querySelector('#' + this.name + '_input').value = this.parent.querySelector('#' + this.name + '_span').innerHTML; - this.close(); - } -} \ No newline at end of file diff --git a/public/js/menu.js b/public/js/menu.js index ef58c42..5e02387 100644 --- a/public/js/menu.js +++ b/public/js/menu.js @@ -147,22 +147,27 @@ function checkMenuEntry(page_id){ }); } -// seul la modification des URL est possible pour l'instant, les noms des entrées de menu attendront -function editUrlEntry(page_id){ +function editUrl(page_id, selector){ const parent_div = document.getElementById(page_id); - const url_input = parent_div.querySelector('.url').querySelector('input').value; + const input_data = parent_div.querySelector('.' + selector).querySelector('input').value; - fetch('index.php?menu_edit=edit_url_entry', { + fetch('index.php?menu_edit=url_edit', { method: 'POST', headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ id: page_id, url_input: url_input }) + body: JSON.stringify({ id: page_id, field: selector, input_data: input_data }) }) .then(response => response.json()) .then(data => { if(data.success){ - findParentByTagName(document.getElementById('m_' + page_id), 'a').href = data.url_input; // MAJ menu + // MAJ menu + if(selector === 'url_name'){ + document.getElementById('m_' + page_id).innerHTML = data.url_data; + } + else if(selector === 'url_content'){ + findParentByTagName(document.getElementById('m_' + page_id), 'a').href = data.url_data; + } toastNotify("Nouvelle adresse enregistrée avec succès") } else{ @@ -173,63 +178,4 @@ function editUrlEntry(page_id){ .catch(error => { console.error('Erreur:', error); }); -} - - - -// code à recycler pour pouvoir modifier le nom de l'entrée de menu correspondant aux liens -/*function editUrlEntry(page_id){ - const parent_div = document.getElementById(page_id); - parent_div.querySelector('i').classList.add('hidden'); - parent_div.querySelector('.url').querySelector('input').classList.remove('hidden'); - parent_div.querySelector('#edit-i' + page_id).classList.add('hidden'); - parent_div.querySelector('#delete-i' + page_id).querySelector('input[type=image]').classList.add('hidden'); - parent_div.querySelector('#cancel-i' + page_id).querySelector('button').classList.remove('hidden'); - parent_div.querySelector('#submit-i' + page_id).querySelector('input[type=submit]').classList.remove('hidden'); -} -function cancelUrlEntry(page_id){ - const parent_div = document.getElementById(page_id); - parent_div.querySelector('.url').querySelector('input').value = parent_div.querySelector('i').textContent; // textContent (contrairement à innerHTML) ne transforme pas les & en entités HTML - closeUrlEntry(page_id, parent_div); -} -function submitUrlEntry(page_id){ - const parent_div = document.getElementById(page_id); - const url_input = parent_div.querySelector('.url').querySelector('input').value; - - fetch('index.php?menu_edit=edit_url_entry', { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ id: page_id, url_input: url_input }) - }) - .then(response => response.json()) - .then(data => { - if(data.success){ - parent_div.querySelector('i').innerHTML = data.url_input; // MAJ - findParentByTagName(document.getElementById('m_' + page_id), 'a').href = data.url_input; // MAJ menu - closeUrlEntry(page_id, parent_div); - } - else{ - toastNotify("Erreur rencontrée par le serveur, changements non pris en compte"); - console.error("Erreur rencontrée par le serveur, changements non pris en compte"); - } - }) - .catch(error => { - console.error('Erreur:', error); - }); -} -function closeUrlEntry(page_id, parent_div){ - parent_div.querySelector('i').classList.remove('hidden'); - parent_div.querySelector('.url').querySelector('input').classList.add('hidden'); - parent_div.querySelector('#edit-i' + page_id).classList.remove('hidden'); - parent_div.querySelector('#delete-i' + page_id).querySelector('input[type=image]').classList.remove('hidden'); - parent_div.querySelector('#cancel-i' + page_id).querySelector('button').classList.add('hidden'); - parent_div.querySelector('#submit-i' + page_id).querySelector('input[type=submit]').classList.add('hidden'); -}*/ - -/*function deleteUrlEntry(page_id){ - const selected_div = document.getElementById(page_id); - console.log(selected_div.id); -}*/ - +} \ No newline at end of file -- cgit v1.2.3