Nouveau module ? Médiathèque de chargement de fichiers

lemimi
lemimi Messages 498Moderateur
août 2025 modifié dans Projets de modules

Bonsoir tout le monde,

Pendant que Fred sue sur ses deux cms, j'ai sué un peu aussi sur la création d'un nouveau module.

Je suis parti d'un script de téléchargements multiples que j'avais créé il y a quelques temps, c'est ici : https://test.lemimi.fr/chargements/chargements.php

C'est ce que j'ai adapté pour Zwii et qui est en test ici : https://test.lemimi.fr/zwii-modules/mediatheque

Vous pouvez l'essayer, c'est en libre service ! (côté visiteur et côté admin)

Et plus de détails ici : https://test.lemimi.fr/zwii-modules/module/mediatheque/readme.pdf

Prochaines étapes : une barre de progression pour le téléchargement du côté visiteur.

Et côté admin, notification facultative par e-mail du dépôt de nouveaux fichiers et fixation adaptative d'une durée de parution de chaque fichier avant suppression automatique. La date de suppression devant apparaître, côté visiteur, à côté de chaque fichier.

Si ça intéresse du monde, et après avis de Fred, nous pourrions le mettre sur le store.

Au plaisir... Michel

Post edited by fred on

Commentaires

  • fred
    fred Messages 2,513Administrateur

    Bonjour Michel,

    Excellente initiative !

    Je le teste dès que possible.

    Tu as le rôle admin sur le store pour faciliter le dépôt, le temps que la nouvelle version répare les bugs de profils.

    Bonne journée,

    Fred

    The f....g boss
  • lemimi
    lemimi Messages 498Moderateur

    Bonjour Fred,

    Je jette un coup d’œil de temps à autre chez Codeberg, et cela a l'air de pas mal bouger.

    Ce script, futur module ?, sert surtout en remplacement des sites spécialisés en dépôts de fichiers ( avec pubs, fourniture d'e-mail...).

    Ici, rien de tout cela. Mes amis, avec qui je partage, apprécient.

    Bonne journée... Michel

  • fred
    fred Messages 2,513Administrateur

    Je pense que ce serait intéressant de l'avoir en module. Pour Campus, le concept m'intéresse.

    Maintenant que tu sembles de plus en plus aguerri en codage ;)

    Bonne fin de journée,

    Fred

    The f....g boss
  • lemimi
    lemimi Messages 498Moderateur
    août 2025 modifié

    Je viens de déposer le module avec des scripts commentés, ici : https://codeberg.org/Lemimi/Mediatheque

    Bonne lecture... Michel

    Post edited by lemimi on
  • lemimi
    lemimi Messages 498Moderateur
    août 2025 modifié

    Bonjour,

    Le module évolue avec une barre de progression graphique de l'upload qui apparaît lors du chargement des fichiers et disparaît après 2 secondes.

    Ajout de mini barres sous les tailles Max, utilisée et disponible.

    Si 2 noms de fichiers identiques à uploader, ajout de (1), (2)... à la fin du nom du fichier.

    C'est ici en test, et le code mis à jour chez Codeberg.

    Au plaisir... Michel

  • fred
    fred Messages 2,513Administrateur
    août 2025 modifié

    Très intéressant ce module.

    Quelques petits conseils.

    Je pense que ce serait mieux de sauvegarder les fichiers dans site/data ou dans site/file/source plutôt que dans le dossier du module qui n'est pas sauvegardé.

    Le module ne fonctionne pas sous Campus, la méthode saveconfig est déjà utilisée dans la classe parente.

    La sauvegarde et la lecture de la configuration pourrait s'effectuer avec la méthode setData(['module', $this->getUrl(0)]) de cette manière, c'est le fichier module.json qui sera alimenté.

    Ainsi $config = self::loadConfig(); serait simplement setData(['module', $this->getUrl(0)]); idem pour charger la config setData.

    J'ai modifié le script principal, déplacement de la zone de stockage dans data, chargement et sauvegarde de la config. Zwii est tellement bien fait (merci @Rémi ) que les méthodes s'utilisent très facilement.

    Je ne sais si c'était voulu, dans index, la partie code était dupliquée après le script ce qui provoquait un double affichage.

    Il y a d'autres pistes d'optimisation, déplacer le script dans un fichier index.js.php (une variable à lire depuis un champ html caché), utiliser le template pour la configuration. Je n'y ai pas touché pour ne pas dénaturer le projet.

    Ton module m'intéresse pour Campus.

    Bon dimanche et bravo pour tes productions.

    Fred

    PS : je t'ai ajouté comme collaborateur dans le dépôt des modules.

    The f....g boss
  • lemimi
    lemimi Messages 498Moderateur

    Je ne sais si c'était voulu, dans index, la partie code était dupliquée après le script ce qui provoquait un double affichage.

    J'ai certainement dû merdouillé en modifiant et déposant index.php chez Codeberg. Voila ce que sait que de ne pas y extraire son ZIP et tester sur sa machine aussitôt :-(

    J'ai modifié le script principal, déplacement de la zone de stockage dans data, chargement et sauvegarde de la config. Zwii est tellement bien fait (merci @Rémi ) que les méthodes s'utilisent très facilement.

    Ah oui, je n'avais pas pensé aux mises à jour de Zwii, ou bien lorsque l'on a un problème, installation neuve et transfert par FTP de son dossier site.

    Bon week-end à tous... Michel

  • lemimi
    lemimi Messages 498Moderateur

    Hello vous tous,

    Ça avance, voir ici : https://test.lemimi.fr/zwiicms-13700/mediatheque

    Je vous laisse découvrir les nouvelles fonctionnalités et les essayer pour tester.

    Je mettrai le code mis à jour demain chez Codeberg... il se fait tard.

    Dodo... Michel

  • lemimi
    lemimi Messages 498Moderateur
    août 2025 modifié

    Bonjour vous tous,

    Le code mis à jour (version 2.00) est consultable ici : https://codeberg.org/Lemimi/Mediatheque

    Je l'ai installé sur une version neuve de Zwii ici , et a l'air de tourner sans encombre.

    Bonne journée... Michel

  • fred
    fred Messages 2,513Administrateur

    Salut Michel,

    L'erreur que je t'avais signalée est toujours présente :

    Tu n'as pas repris l'usage des méthodes setData et getData pour la configuration du module ?

    Bonne journée,

    Fred

    The f....g boss
  • lemimi
    lemimi Messages 498Moderateur
    août 2025 modifié

    Bonsoir Fred,

    Avec du mal, j'ai repris comme tu le suggérais l'usage des méthodes setData et getData pour la configuration du module.

    La sauvegarde des fichiers se fait désormais dans /site/data/mediatheque/.

    Je viens de mettre à jour sur Codeberg, en version 2.01. (sauf le readme) et ça tourne ici : https://test.lemimi.fr/zwiicms-13609/mediatheque

    Allez, au dodo... Michel

  • fred
    fred Messages 2,513Administrateur

    Bonsoir,

    Il doit y avoir un pb dans ton commit, je ne trouve pas ta modification, l'erreur est toujours détectée dans l'éditeur de code.

    Ces modifications étaient dans l'archive que j'avais déposée le 22/8 :

    Les principales modifications sont les suivantes :

    Le constructeur initialise le module si les données n'existent pas dans la basse. $this->getUrl(0) représente l'id du module.

    Les deux méthodes statiques posant pb sont supprimées.

    Enfin, pour stocker dans le dossier, une seule variable est nécessaire :

    Je vais essayer de retravailler index pour respecter au mieux la répartition des fonctions, le code (autant que faire possible) dans mediatheque.php, l'affichage des vues dans view et les scripts dans js.php

    The f....g boss
  • lemimi
    lemimi Messages 498Moderateur

    Hello Fred,

    J'ai du mal à me faire à certaines contraintes deZwii, et à les comprendre:-(

    Moi je suis content quand ça fonctionne ! C'est beaucoup plus facile pour moi de concevoir un script complet et au besoin l'intégrer via une iframe.

    Je vais recharger ton ZIP avec tes modifs et essayer de comprendre.

    J'ai repris le rendu graphique du module côté visiteurs, les trois sections ("Télécharger tout", "Uploader un ou plusieurs fichiers", et les graphiques) sont alignées horizontalement et s'adaptent à la taille de l'écran. La barre d'upload s'affiche sous le bouton "Uploader" quand celui-ci est déclenché.

    Version 2.02 ici et mis à jour sur Codeberg.

    Bonne soirée... Michel

  • fred
    fred Messages 2,513Administrateur

    Hello Michel,

    Bien sûr Michel, c'est logique. Lorsque j'ai pris en main Zwii, il m'a fallu un paquet de temps pour comprendre la structure et les méthodes utilisées.

    Dans les appels de script, lors des transactions AJAX, il faut indiquer true comme paramètre du helper::BaseUrl et supprimer le point d'interrogation saisi en dur. Le script ne fonctionne que si la page est nommée mediatheque la ligne devrait ressembler à ça :

    "<?php echo helper::baseUrl(true) . $this->getUrl(0); ?>/index"
    

    Ce script est très très intéressant :)

    Bonne journée,

    Fred

    The f....g boss
  • lemimi
    lemimi Messages 498Moderateur
    août 2025 modifié

    Bonjour Fred,

    Après mettre fait expliquer ces différences par Mistral, je viens de modifier la ligne et mis à jour sur Codeberg.

    Et si j'avais uploadé un fichier dans la foulée, je me serais rendu compte que la requête était envoyée vers une URL vide !

    C'est réparé. Voila ce que c'est que de faire un copier/coller sans réfléchir ;-(

    Dur, dur d'être dans les clous de Zwii :-)

    Bonne journée... Michel

    Post edited by lemimi on
  • fred
    fred Messages 2,513Administrateur

    Bonjour Michel,

    Bon, j'obtiens enfin une version qui fonctionne quel que soit le nom de la page. Les requêtes AJAX sont toujours difficiles à déboguer.

    Je me suis borné à rendre le module opérationnel et à déplacer le script dans le fichier index.js.php, je n'ai pas changé la philosophie de la présentation, ce n'est pas vraiment le but. On pourrait appliquer tout un tas de méthodes internes dans le formulaire, comme tout fonctionne ainsi..

    J'ai aussi reformé la présentation de la page d'index, elle est un peu différente de la tienne, ce sera facile de l'adapter.

    Dans mes tests, j'ai obtenu des warnings à cause des valeurs maximales acceptées par php (dans php.ini). Il serait intéressant de plafonner à cette valeur dans la configuration du module :

    ini_get('upload_max_filesize')
    

    et

    ini_get('post_max_size')
    

    Voici le module modifié :

    Enfin, j'ai mis à jour le store avec 13.7 et je t'ai attribué les droits de rédacteur.

    Je te laisse avec ce module ;)

    Bonne fin de journée.

    The f....g boss
  • lemimi
    lemimi Messages 498Moderateur

    Bonjour Fred,

    Je suis reparti de ta dernière version 2.03, ici.

    J'ai supprimé dans le code la notification d'e-mail pour l'upload de fichier : cela m'a apporté deux, trois ennuis lorsque je modifiais quelque chose.

    Je verrai plus tard à réintroduire cette fonction quand tout sera vraiment fonctionnel :-)

    La version 2.04 sous ZwiiCms est ici.

    La même version 2.04 sous ZwiiCampus est ici. Et le code chez Codeberg ici.

    Bonne journée... Michel

  • fred
    fred Messages 2,513Administrateur

    Bonjour @lemimi

    Le module ne fonctionne pas, les fichiers ne se téléchargent pas.

    J'ai réinstallé la version sur laquelle j'avais terminé de travaillé et tout fonctionne à part un message sur 'l'index à ne pas afficher.

    Il y a un pb d'affichage sur la page de configuration :

    Voici le script corrigé :

    Il y a une propriété pour les labels, ce qui permet d'afficher un repère pour les champs obligatoires :


    Je n'ai pas touché au reste.

    The f....g boss
  • lemimi
    lemimi Messages 498Moderateur

    Hello Fred,

    La version 2.04 qui est en ce moment chez Codeberg, fonctionne aussi bien en mode visiteurs et en mode admin pour les versions ZwiiCMS inférieures à la dernière 13.7.00.

    Celle-ci sous ZwiiCMS 13.6.09 fonctionne correctement : https://test.lemimi.fr/zwiicms-13609/mediatheque

    Celle-ci sous Zwiicampus 2.6.00 pareillement : https://test.lemimi.fr/zwiicampus-2600/mediatheque

    La même version avec ton nouveau config.php installé sur la dernière version 13.7.00, présente toujours le même symptôme en mode visiteur que décris plus haut : en mode visiteur, tu cliques sur Médiathèque de la barre de menu... et rien ne se passe. https://test.lemimi.fr/zwiicms-13.7.00/

    En admin, tout fonctionne correctement.

    Je me suis peut-être mal exprimé, mais c'est sur cette dernière version qu'il y a un problème avec ce module.

    Bonne soirée et au plaisir... Michel

  • fred
    fred Messages 2,513Administrateur

    Michel,

    La version 2.03 fonctionne, pas la 2.04 qui est sur codeberg à cause de cette ligne dans index.js.php

    xhr.open("POST", "<?php echo helper::baseUrl().$this->getUrl(0); ?>/index", true);

    et non

    xhr.open("POST", "<?php echo helper::baseUrl(); ?>mediatheque/index", true);

    La requête XHR ne fonctionne pas si le nom de la page a changé.

    Entre les deux, j'ai vu que la notification par email était supprimée.

    C'est corrigé ici :


    The f....g boss
  • lemimi
    lemimi Messages 498Moderateur

    Coucou,

    Je viens de réinstaller complètement ta version corrigée... et je dis BRAVO !

    Pour ce qui est de la notification par email, la raison de la suppression, c'est lorsque par moment je modifiais quelque chose, la notification ne fonctionnait plus, quand ça remarchait c'était autre chose :-(

    Du coup, j'ai pratiquement tout supprimé et ajouté de nouvelles fonctionnalités au fur et à mesure. La notification est la prochaine étape : version 2.05. Mais je mettrai la 2.04 sur le store dès que possible.

    Bonne soirée et grand merci... Michel

  • lemimi
    lemimi Messages 498Moderateur
    septembre 2025 modifié

    Bonjour,

    J'ai installé Windsurf, décrit par Fred pour l'élaboration du module Weather, et m'en suis servi pour installer la notification par e-mail de l'upload de fichiers.

    Hé bien, en moins d"une demi heure c'était bâclé ! Impressionnant !

    Il suffit d'expliquer ce que l'on veut, l'IA propose et explique ce qu'elle fait. Si ça ne te plait pas, tu expliques les modifications que tu souhaites jusqu'au résultat final voulu.

    Et dire que j'ai encore acheté un livre sur PHP 8 il y a moins de trois mois. (et que je n'ai pas tout compris;-)

    Bon, du coup la version 2.05 est ici :

    Et en test ici : https://test.lemimi.fr/zwiicms-13.7.00-a/mediatheque

  • fred
    fred Messages 2,513Administrateur

    Bonjour Michel,

    Il faut espérer que la version gratuite reste exploitable longtemps. Trae était gratuit et désormais c'est payant.

    La force de WindSurf est d'agir directement dans le code.

    Je te conseille de faire des commits avant des modifications importantes, il arrive que le modèle dépasse la demande du prompt et fasse un peu n'importe quoi.

    Je réponds à ton MP et je teste.

    Bonne soirée,

    Fred

    The f....g boss
Connectez-vous ou Inscrivez-vous pour répondre.