[plugin] kzDownload

bazooka07bazooka07 PluXml Lead Developer, Moderator
juin 2018 modifié dans Plugins
PluXml propose 2 fonctions pour crypter / décrypter les URLs de fichiers proposés en téléchargement.

Si côté visiteur le téléchargement de fichier se passe très bien, côté administrateur c'est un peu compliqué pour crypter les URLs. Et cela devient d'autant plus temps lorsqu'on souhaite proposer plusieurs fichiers.

Ce plugin permet de proposer un ou plusieurs fichiers en téléchargement dans un article ou une page statique.

Dans le premier cas, après avoir défini dans le panneau de config le dossier où sont stockés ces fabuleux fichiers, Dans le premier cas, préciser dans une balise <a> l'url du fichier comme n'importe fichier de médias.
Lorsque le visiteur chargera la page, l'URL sera automatiquement cryptée.

Dans le second cas ajouter simplement une balise '<div data-download="chemin-vers-dossier">On s'en fout</div>' en précisant dans l'attribut data-download le chemin vers le dossier contenant les fichiers à télécharger relativement au dossier des médias ( en principe data/medias/ ). Le contenu de la balise <div> ser remplacé par un tableau listant les fichiers avec leurs type-mimes, taille et dates de modifs.
kzDownload.png

2 petits bonus:
côté back-office le nombre de téléchargement hebdomadaire est affichée sous forme de tableau sur une période glissante de 11 semaines.
un graphique au format SVG est généré pour afficher l'évolution de la popularité des fichiers;

Télécharger la dernière version du plugin
2018-06-24 : version 0.8.5 - mise à jour pour utiliser svgraph.php avec Inkscape
2018-05-16 : version 0.8.4 retouche cosmétique pour écran à faible hauteur (ratio 19,5:9)
2018-05-15 ; version 0.8.2 Voir billet #14
2018-05-13 : version 0.8.1 Fix l'emploi de realpath dans self::__construct()
2018-05-09 : version 0.8.0 - 1ère publication
«1

Réponses

  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    mai 2018 modifié
    SVGraph.png

    Afficher en SVG
    Le contenu SVG est uniquement généré à partir de la class DOMDocument en PHP.
    On utilise une feuille de style externe au fichier SVG.

    Rappelons que le format SVG est dérivé du format XML.
    Il n'est fait aucun usage de l'instruction echo pour générer le XML comme malheureusement on le voit trop souvent.
    Pour avoir des jolies formes, on utilise des courbes de Bézier.
  • jack31jack31 Member
    Bonjour Bazooka07, :)

    J'essaye de tester ton nouveau plugin mais rencontre quelques difficultés.

    Lors de la configuration, il me dit...

    "Erreur pendant l'enregistrement des données" activé ou pas.
  • jol5926jol5926 Member
    jack31 a écrit:
    Bonjour Bazooka07, :)

    J'essaye de tester ton nouveau plugin mais rencontre quelques difficultés.

    Lors de la configuration, il me dit...

    "Erreur pendant l'enregistrement des données" activé ou pas.


    Bonjour Bazooka07,

    Je teste également ton plugin et j'ai la même erreur que Jack31.
    Dans la configuration du plugi, je n'ai pas la possibilité de choisir le répertoire des fichiers à télécharger, rien ne s'affiche ?

    Jol
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Oups !
    Je suis obligé d'utiliser la fonction realpath pour contourner un bug de PluXml.
    Mais cette fonction renvoie false si le fichier passé en argument n'existe pas, au lieu de simplement résoudre le nom du fichier.

    Lire l'avertissement dans le fichier d'aide et appliquer la correction.
    Télécharger la version 0.8.1
  • jack31jack31 Member
    Cela fonctionne maintenant avec la version 0.8.1.

    Par contre, je n'ai pas réussi à afficher le graphique. Ni avec Chrome ni avec Firefox.

    Une idée du pourquoi ?
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Vu comme cela, non.
    Je vais aller voir Mme Irma qu'elle me prête sa boule de cristal. Mais je crois qu'elle est en congés ]:D

    J'ai fait des essais avec une install de PluXml version 5.6 et pas de souci
    Tu peux afficher le contenu du fichier data/configuration/plugins/kzDownload.xml ?
    Sinon regarder le fichier de log.
    le graphique est entièrement calculé par PHP;
  • jol5926jol5926 Member
    Hello les amis,

    Test du plugin ok avec la nouvelle version.

    Bravo pour ce plugin ! :)
  • jack31jack31 Member
    Je crains que Mm Irma n'ait rien à voir avec tout cela. :-//

    Pour ce qui est de data/configuration/plugins/kzDownload.xml
    [== Indéfini ==]
    <document><parameter name="download-folder" type="cdata">/telechargements</parameter><parameter name="stats" type="cdata">
    {
        "telechargements/kzdownload-0_8_1.zip": {
            "weeks": {
                "18W20": 1
            },
            "cumul": 1,
            "published": "2018-05-14"
        },
        "telechargements/le-testeur-fou.jpg": {
            "weeks": {
                "18W20": 2
            },
            "cumul": 2,
            "published": "2018-05-14"
        },
        "telechargements/invitation-soiree-montmaurin-tout-public.pdf": {
            "weeks": {
                "18W20": 2
            },
            "cumul": 2,
            "published": "2018-05-14"
        }
    }
    </parameter></document>
    

    Quand aux logs, je ne sais pas où trouver ça sur le serveur.
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Le format de ton fichier XML n'est pas correct
    Il doit ressembler à quelque chose comme cela avec des "<!CDATA[...]]>" :
    [== XML ==]
    <?xml version='1.0' encoding="UTF-8"?>
    <document>
            <parameter name="download-folder" type="cdata"><![CDATA[/download]]></parameter>
            <parameter name="stats" type="cdata"><![CDATA[
    {
        "download/version.php": {
            "weeks": {
                "18W20": 1,
                "18W19": 2
            },
            "cumul": 3,
            "published": "2018-05-13"
        }
    }
    ]]></parameter>
    </document>
    
    Les fichiers de logs sont dans le dossier "/var/log/apache2/"
    Tu as quelle version de PHP ?
  • jack31jack31 Member
    PHP Version 5.6.36

    Pour les logs, je viens de récupérer ça sur le serveur. Dis-moi si cela t'est utile.
    [== Indéfini ==]
    86.201.190.136 - - [14/May/2018:13:09:56 +0200] "GET / HTTP/1.0" 200 5212 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/66.0.3359.139 Chrome/66.0.3359.139 Safari/537.36"
    86.201.190.136 - - [14/May/2018:13:09:57 +0200] "GET /plugins/site.css HTTP/1.0" 200 379 "http://tests.reseauk.info/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/66.0.3359.139 Chrome/66.0.3359.139 Safari/537.36"
    86.201.190.136 - - [14/May/2018:13:09:57 +0200] "GET /plugins/pluxautomatic/APP/style.min.css HTTP/1.0" 200 - "http://tests.reseauk.info/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/66.0.3359.139 Chrome/66.0.3359.139 Safari/537.36"
    86.201.190.136 - - [14/May/2018:13:09:57 +0200] "GET /data/medias/le-testeur-fou.jpg HTTP/1.0" 200 14578 "http://tests.reseauk.info/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/66.0.3359.139 Chrome/66.0.3359.139 Safari/537.36"
    86.201.190.136 - - [14/May/2018:13:10:06 +0200] "GET /core/admin/ HTTP/1.0" 200 8019 "http://tests.reseauk.info/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/66.0.3359.139 Chrome/66.0.3359.139 Safari/537.36"
    86.201.190.136 - - [14/May/2018:13:10:06 +0200] "GET /plugins/plxMyPluginDownloader/css/style.css HTTP/1.0" 200 605 "http://tests.reseauk.info/core/admin/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/66.0.3359.139 Chrome/66.0.3359.139 Safari/537.36"
    86.201.190.136 - - [14/May/2018:13:10:19 +0200] "GET /core/admin/plugin.php?p=kzDownload HTTP/1.0" 200 9096 "http://tests.reseauk.info/core/admin/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/66.0.3359.139 Chrome/66.0.3359.139 Safari/537.36"
    86.201.190.136 - - [14/May/2018:13:10:54 +0200] "GET /core/admin/plugin.php?p=kzDownload HTTP/1.0" 302 - "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0"
    86.201.190.136 - - [14/May/2018:13:10:55 +0200] "GET /core/admin/auth.php?p=/core/admin/plugin.php?p=kzDownload HTTP/1.0" 200 1962 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0"
    86.201.190.136 - - [14/May/2018:13:10:55 +0200] "GET /core/admin/theme/plucss.css HTTP/1.0" 200 21249 "http://tests.reseauk.info/core/admin/auth.php?p=/core/admin/plugin.php?p=kzDownload" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0"
    86.201.190.136 - - [14/May/2018:13:10:56 +0200] "GET /core/admin/theme/images/pluxml.png HTTP/1.0" 200 2363 "http://tests.reseauk.info/core/admin/theme/theme.css" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0"
    86.201.190.136 - - [14/May/2018:13:10:58 +0200] "POST /core/admin/auth.php?p=%2Fcore%2Fadmin%2Fplugin.php%3Fp%3DkzDownload HTTP/1.0" 302 - "http://tests.reseauk.info/core/admin/auth.php?p=/core/admin/plugin.php?p=kzDownload" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0"
    86.201.190.136 - - [14/May/2018:13:10:59 +0200] "GET /core/admin/plugin.php?p=kzDownload HTTP/1.0" 200 9096 "http://tests.reseauk.info/core/admin/auth.php?p=/core/admin/plugin.php?p=kzDownload" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0"
    86.201.190.136 - - [14/May/2018:13:10:59 +0200] "GET /core/admin/theme/plucss.css?ver=5.6 HTTP/1.0" 200 21249 "http://tests.reseauk.info/core/admin/plugin.php?p=kzDownload" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0"
    86.201.190.136 - - [14/May/2018:13:10:59 +0200] "GET /core/admin/theme/theme.css?ver=5.6 HTTP/1.0" 200 11552 "http://tests.reseauk.info/core/admin/plugin.php?p=kzDownload" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0"
    86.201.190.136 - - [14/May/2018:13:10:59 +0200] "GET /plugins/admin.css HTTP/1.0" 200 8843 "http://tests.reseauk.info/core/admin/plugin.php?p=kzDownload" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0"
    86.201.190.136 - - [14/May/2018:13:10:59 +0200] "GET /plugins/plxMyPluginDownloader/css/style.css HTTP/1.0" 200 605 "http://tests.reseauk.info/core/admin/plugin.php?p=kzDownload" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0"
    
    
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Il y a 2 types de fichiers de log :
    type access : qui enregistre toutes requêtes reçues du navigateur
    type error : qui enregistre les erreurs
    Tu m'as envoyé le premier, mais le deuxième m'intéresse plus.
    Essaie en désactivant le plugin plxMyPluginDownloader, il y a peut-être un conflit entre les règles CSS
  • jack31jack31 Member
    Négatif avec plxMyPluginDownloader désactivé. :(
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    @Jack31,
    J'ai fait une petite modif :
    Aucun accès possible au panneau admin du plugin, tant qu'il n'est pas configuré
    Impossible d'afficher le graphique si aucun fichier n'a été téléchargé

    Petite amélioration :
    Quand l'article ou la page statique sont enregistrés, tous les liens pointant vers les fichiers du dossier de téléchargement sont marqués avec l'attribut data-download.
    Il est ainsi possible de changer le dossier de téléchargement pour les autres articles ou pages statiques.

    Si vous avez déjà utilisé une version précèdente du plugin pour proposer un seul fichier à télécharger dans un article ou une page statique, enregistrer la à nouveau, la mise à jour se fera automatiquement.

    Version 0.8.2
  • jack31jack31 Member
    Cela a l'air de fonctionner avec la version 0.8.2. :)

    Un petit bémol toutefois avec le fait que, selon la résolution de l'écran, les graphiques sont plus ou moins visibles dans leur intégralité en particulier le bas de la page avec les dates.

    Il y aurai-il moyen de réfléchir à ça qui dérangera dans l'état les fanas de statistiques qui voudront s'en rassasier partout dans le monde avec le premier appareil qui leur tombe sous la main. ;)
    bazooka07 a écrit:
    Il est ainsi possible de changer le dossier de téléchargement pour les autres articles ou pages statiques.

    Alors là, c’est puissant (et ça marche) !

    Bravoto et merçimissimo. :)
  • jol5926jol5926 Member
    Hello les amis,

    Tout est ok pour le téléchargement de fichiers dans un répertoire.

    Mais, j'ai un petit souci, le lien n'est pas crypté pour le téléchargement d'un seul fichier.
    Si j'ai bien compris le lien est de ce style :
    <a href="/data/medias/download/nom-du-fichier.pdf">name</a>
    et le cryptage est automatique

    Est-ce bien cela ou j'ai raté quelque chose ?

    Jol
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    @jack31
    D'après les émulateurs "responsive design" de Chrome, il n'y a que l'Iphone-X qui pose problème. C'est quoi ce format d'écran ?
    Pour l'instant, je n'ai pas la solution, ni d'Iphone X ]:D

    @jol5926,
    il faut utiliser une adresse relative par rapport à la racine de ton site. En clair, elle ne doit pas commencer par '/'.
    Dans le gestionnaire de médias tu as un petit symbole pour copier l'URL du fichier qui va bein dans le presse-papier. Lire l'aide.
  • jol5926jol5926 Member
    Hello,

    Super, ça fonctionne, au top !

    Dans la partie admin, j'aurais aimé un lien direct pour l'accès au plugin mais je ne sais pas comment faire ?

    Bazooka07, encore merci pour ce plugin
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Petite retouche cosmétique pour les écrans de faible hauteur ( Iphone X - ratio 19,5:9 ).
    Version 0.8.3
  • jol5926jol5926 Member
    mai 2018 modifié
    Hello Bazooka07,
    J'ai testé ton plugin sur un site de test et tout est ok.

    En l'installant sur mon site opérationnel, j'ai un message "accès interdit" quand je veux le configurer dans la partie admin.
    J'ai désactivé tous les autres plugins et j'ai exactement le même message avec ton plugin seul.

    Afin de continuer mes recherches dans la bonne direction, as-tu une idée ?

    PS : je viens de faire un nouvel essai sur un autre site en test et j'ai la même erreur avec le thème par défaut et tous les plugins désactivés ??

    Merci
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Oups, en voulant renforcer la sécurité, j'en ai trop fait.
    Prendre la version 0.8.4 directement.
    J'ai fait un test chez OVH.
  • jack31jack31 Member
    En résolution 1920x1080 voilà ce que ça donne mais il n'est pas dit que le moniteur soit bien réglé.

    screenshot.png

    Je vais poursuivre les tests avec la V 0.8.4 et avec un netbook qui lui aussi donne problème à l'affichage.

    @+ :)
  • jack31jack31 Member
    bazooka07 a écrit:
    Télécharger la dernière version du plugin
    2018-05-16 : version 0.8.4 retouche cosmétique pour écran à faible hauteur (ratio 19,5:9)

    Il semblerait à cette heure que le téléchargement de la dernière version du plugin nous donne la 0.8.2 avec un "Accès interdit".
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    mai 2018 modifié
    Non c'est bien la version 0.8.4 qui est proposé.
    Je te donne le lien direct au cas où:
    https://kazimentou.fr/pluxml-plugins2/plugins/kzDownload-0_8_4.zip
    Je n'ai aucun souci avec mon écran 1920x1080 !
    Tu peux télécharger cette page pour avoir les dimensions de ton écran :
    https://www.mydevice.io/
  • jack31jack31 Member
    Chez O2switch, la 0_8_4.zip me donne un Accès interdit.

    Beark ! ;)
  • jack31jack31 Member
    Fausse alerte.

    La config a finie par passer mais sous chrome, le graphique ne s'ouvre pas.
  • jack31jack31 Member
    [Fin des fausses alertes.]

    Tout va bien maintenant. :)
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Je viens de faire un essai chez Free.fr :
    Télécharger le plugin depuis kazimentou.fr
    téléverser le zip avec kzUploader
    activer le plugin et config
    Tout baigne

    Vérifie que tu te connectes en tant qu'administrateur.
    C'est prévu comme cela dans le constructeur du plugin " parent::setConfigProfil(PROFIL_ADMIN)" :
    [== PHP ==]
    public function __construct($lang) {
        parent::__construct($lang);
        parent::addHook('plxMotorConstruct', 'plxMotorConstruct');
        $configFilename = $this->plug['parameters.xml'];
        if(!defined('PLX_ADMIN')) {
            if(file_exists($configFilename)) {
                parent::addHook('ThemeEndBody', 'ThemeEndBody');
                parent::addHook('plxMotorSendDownload', 'plxMotorSendDownload');
                // Hack against PluXml : absolute path is required for saving from the front end.
                $this->plug['parameters.xml'] = realpath($configFilename);
            }
        } else {
            if(file_exists($configFilename)) {
                parent::addHook('plxAdminEditArticle', 'plxAdminEdit');
                parent::addHook('plxAdminEditStatique', 'plxAdminEdit');
                parent::setAdminProfil(PROFIL_ADMIN);
                parent::setAdminMenu(parent::getLang('MENU_NAME'), 0, parent::getLang('MENU_TITLE'));
            }
            parent::setConfigProfil(PROFIL_ADMIN);
        }
    }
    
  • jack31jack31 Member
    Téléchargé le plugin depuis kazimentou.fr
    Téléversé le zip avec kzUploader
    Activé le plugin et config

    Cela ne baigne pas sous chrome comme en témoigne le screenshot.

    capture-decran_chrome_1734.png

    De plus, mais ce n’est pas nouveau, j'ai du mal, sous Chrome, à fermer le graphique.
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Copie d'écran de l'émulateur Iphone X de Google Chrome

    Ton chrome ne charge pas correctement les feuilles de style. Vide son cache et recharge.
    la croix sous "13/02/18" est le bouton de fermeture du graphique.
  • jack31jack31 Member
    bazooka07 a écrit:
    Ton chrome ne charge pas correctement les feuilles de style.

    Quel c** ! ]:D
    bazooka07 a écrit:
    Vide son cache et recharge

    It's right.

    Cela baigne ce coup-ci et j'espère pour très longtemps. :)

    D’ailleurs, nous devrions donner systématiquement ce conseil dans les fichiers d'aide quand il y a des manips tellement on n'y pense souvent pas quand c’est le moment. Lol !

    Donc, il semble que les problèmes soient résolus et on va pouvoir souffler.

    Par contre, Bazooka, je n'ai pas très bien compris le pourquoi de...
    bazooka07 a écrit:
    Vérifie que tu te connectes en tant qu'administrateur.

    Evident non ?
Connectez-vous ou Inscrivez-vous pour répondre.