summaryrefslogtreecommitdiff
path: root/public/js
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2026-07-26 19:29:53 +0200
committerpolo <ordipolo@gmx.fr>2026-07-26 19:29:53 +0200
commit58514668410cb902dab613221a8e7f963cc36317 (patch)
tree98d0ec77ba9689997e4af395679ce061b2bff3f9 /public/js
parentfea733a16a666e9b7ecf4729b126d65d1ad9208d (diff)
downloadmelaine-58514668410cb902dab613221a8e7f963cc36317.tar.gz
melaine-58514668410cb902dab613221a8e7f963cc36317.tar.bz2
melaine-58514668410cb902dab613221a8e7f963cc36317.zip
versioning fichiers CSS et JS
Diffstat (limited to 'public/js')
-rw-r--r--public/js/file_upload.js101
-rw-r--r--public/js/index.php3
-rw-r--r--public/js/inversion.js16
-rw-r--r--public/js/main.js92
4 files changed, 212 insertions, 0 deletions
diff --git a/public/js/file_upload.js b/public/js/file_upload.js
new file mode 100644
index 0000000..737ca5f
--- /dev/null
+++ b/public/js/file_upload.js
@@ -0,0 +1,101 @@
1// public/js/file_upload.js
2//
3// envoie d'un gros fichier ZIP en contournant la limite du php.ini
4// ce fichier est "caché", il n'est envoyé qu'à un utilisateur connecté et sur la page "restauration"
5
6// -> input file onchange
7function sendFileSize()
8{
9 var tagId = 'archiveUpload';
10 var fileInfos = getFileInfo(tagId);
11 //var fileSize = document.getElementById(tagId).files[0].size;
12
13 const xhr = new XMLHttpRequest();
14 url = 'index.php?action=restauration&file_name='+fileInfos.name+'&file_size='+fileInfos.size;
15 xhr.open("GET", url);
16 xhr.send();
17}
18
19// -> input submit onclick
20function uploadDespiteServerMaxWeightLimit(maxPHPiniWeight, archiveFormat)
21{
22 // dans <input id="archiveUpload" type="file" >
23 var tagId = 'archiveUpload';
24 //var fileInfos = getFileInfo(tagId);
25 var file = document.getElementById(tagId).files[0];
26
27 // si le fichier est assez léger, javascript s'arrête ici
28 if(file.size > maxPHPiniWeight)
29 {
30 // découpage
31 // envoyer et recevoir des pointeurs pour les perfs
32 // chunksArray est un tableau de "blob"
33 var nbChunks = Math.ceil(file.size / maxPHPiniWeight);
34 var chunksArray = sliceFile(file, nbChunks);
35
36 // requêtes AJAX
37 chunkIndex = 0; // une variable globale
38 uploadChunksAJAX(chunksArray, tagId);
39
40 // annule l'envoi normal par POST
41 event.preventDefault();
42
43 // vider le formulaire et recharger
44 // reload() est un F5 et non un Ctrl + F5
45 //document.getElementById(tagId).value = '';
46 //location.reload();
47
48 location.href = "index.php?from=menu&action=restauration";
49 }
50}
51
52function getFileInfo(tagId)
53{
54 var infos =
55 {
56 name: document.getElementById(tagId).files[0].name,
57 size: document.getElementById(tagId).files[0].size,
58 type: document.getElementById(tagId).files[0].type,
59 }
60
61 return(infos);
62}
63
64function sliceFile(file, nbChunks)
65{
66 var byteIndex = 0; // octet du début
67 var chunks = []; // données
68
69 for (var i = 0; i < nbChunks; i += 1)
70 {
71 // octet de fin
72 var byteEnd = Math.ceil((file.size / nbChunks) * (i + 1));
73
74 // un morceau du fichier va dans une case du tableau
75 chunks.push(file.slice(byteIndex, byteEnd));
76
77 // nouvel octet du début
78 byteIndex += (byteEnd - byteIndex);
79 }
80
81 return chunks;
82}
83
84function uploadChunksAJAX(chunksArray, tagId)
85{
86 var fileName = document.getElementById(tagId).files[0].name;
87 var formData = new FormData();
88 const xhr = new XMLHttpRequest();
89
90 for(var i = 0; i < chunksArray.length; i++)
91 {
92 formData.append('blob', chunksArray[i]);
93
94 url = 'index.php?from=menu&action=restauration&chunk_name='+fileName+'_'+i;
95 // false => synchrone, déprécié parce que fige le navigateur, mais ici on s'en fout
96 xhr.open("POST", url, false);
97 xhr.send(formData);
98
99 formData.delete('blob');
100 }
101}
diff --git a/public/js/index.php b/public/js/index.php
new file mode 100644
index 0000000..f67f1d7
--- /dev/null
+++ b/public/js/index.php
@@ -0,0 +1,3 @@
1<?php
2header('Location: ../index.php');
3exit();
diff --git a/public/js/inversion.js b/public/js/inversion.js
new file mode 100644
index 0000000..77c3151
--- /dev/null
+++ b/public/js/inversion.js
@@ -0,0 +1,16 @@
1// public/js/inversion.js
2
3// inverser la position de deux "articles" ou albums d'une page
4function inversion()
5{
6 var page = '';
7 var action = ''; // monter ou descendre
8 var fileCode = ''; // <?= $Articles->fileList[$i]['fileCode'] ?>
9 var position = ''; // <?= $Articles->fileList[$i]['position'] ?>
10
11 const xhr = new XMLHttpRequest();
12 url = 'index.php?page='+page+'&action='+action+'&file_code='+fileCode+'&position='+position+'#'+fileCode;
13 url = 'index.php?action=restauration&file_name='+fileInfos.name+'&file_size='+fileInfos.size;
14 xhr.open("GET", url);
15 xhr.send();
16} \ No newline at end of file
diff --git a/public/js/main.js b/public/js/main.js
new file mode 100644
index 0000000..f5f602b
--- /dev/null
+++ b/public/js/main.js
@@ -0,0 +1,92 @@
1// public/js/main.js
2
3function versMenu()
4{
5 // ergonomique
6 window.setTimeout(function(){
7 location.href = "index.php?page=menu";
8 }, 10000);
9}
10
11function deconnexionAutomatique()
12{
13 // minuterie réinitialisée après une action de l'utilisateur
14 // 600000 ms = 10 min
15 //window.setTimeout("location=('index.php?action=deconnexion');", 600000);
16
17 // sauvegarde de la rédaction en cours avec le plugin "autosave" de l'éditeur
18}
19
20function confirmerSuppression() // appel 'onCLick'
21{
22 // avec JS, on ne suit le lien qu'avec un "oui"
23 // sans JS, le lien fonctionne
24 var oui = confirm('Confirmer la suppression de cet article.');
25 if(!oui)
26 {
27 event.preventDefault();
28 }
29}
30
31// code exécuté à la validation du formulaire
32function envoiDonnees()
33{}
34
35// bouton "mailto", le visiteur ne quitte pas la page
36function clientCourriel()
37{
38 var adresse = "melaine.favennec@wanadoo.fr";
39 var objet = "?subject=visite%20du%20site";
40 var link = "mailto:" + adresse + objet;
41 document.location.href = link;
42}
43
44// pour "cacher" l'adresse du HTML
45// inutile -> nécessite une requête AJAX
46function copierCourriel()
47{
48 var adresse = "melaine.favennec@wanadoo.fr";
49 copierDansPressePapier(adresse);
50}
51
52function copierDansPressePapier(chaine)
53{
54 // une balise <input> avec des attributs
55 var element = document.createElement("input");
56 element.setAttribute("id", "copyMe");
57 element.setAttribute("value", chaine);
58
59 // placement dans la page (= le "document")
60 document.body.appendChild(element);
61 var cible = document.getElementById('copyMe');
62
63 // selection comme on le ferait à la souris
64 cible.select();
65 // copie (= Ctrl + C)
66 document.execCommand("copy");
67
68 // nettoyage
69 element.parentNode.removeChild(element);
70
71 // test optionnel
72 // essayer un document.execCommand("paste"); dans une variable
73 // mais depuis une deuxième fonction
74
75 alert('Cette adresse a été copiée dans le presse-papier:\n\n' + chaine);
76}
77
78// cacher le lien #nouvelArticle quand le ckeditor est appelé
79// hum pourquoi faire déjà?
80// function cacherLienArticle()
81// {
82// var cible = document.getElementById('nouvelArticle');
83// cible.setAttribute("style", "display: none;");
84// }
85
86function nouveauMotdepasse(page)
87{
88 alert('Le mot de passe a été modifié.');
89 window.setTimeout(function(){
90 location.href = "index.php?page=" + page + "&message=nouveau_mdp";
91 }, 0);
92}