Forum CMS Made Simple FR

Version complète : Automatisation de l'indication de poids de fichier
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 2.1.1
#~ Url du site : local
#~ Hébergeur / Soft : MAMP
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~

Bonjour,

Il est une bonne pratique qui recommande d'indiquer le poids des fichiers en téléchargement sur l'affichage public d'un site (en général, juste à côté du lien). Je me demande s'il serait possible d'automatiser l'affichage de ce-dit poids, et comment ?
J'ai créé une udt à ce sujet dans http://www.cmsmadesimple.fr/forum/viewto...988#p31988.
La fonction human_filesize() permet d'afficher le poids du fichier avec un préfixe d'unité suivant son poids : K, M, G.
Merci Jean, je vais tester ça ! Cool
Bon du coup, je ne sais pas comment faire pour l'automatiser à tous les fichiers pdf qui peuvent s'afficher sur le site.

Je me dis que ça devrait être un truc du genre : "pour chaque pdf, ajouter à la fin du lien le résultat de la fonction". Étant proche du nul en php, je suis guère plus avancé.
Je ne vois pas la difficulté de simplifier le code en démonstration du moment que l'utilisateur télécharge ses fichiers pdf dans un dossier spécifique. Est-ce que c'est le cas ?
Quelle est la procédure d'upload de pdf pour l'utilisateur ?
Hum, non en fait les PDF sont dans de nombreux dossiers, classés par rubriques (correspondant aux rubriques et sous-rubriques du site). D'autre part, le nom du fichier et l'intitulé ne peuvent pas être automatisés comme tu l'as fait. J'ai besoin de plus de souplesse. Et uniquement de la fonction qui ajoute le poids du fichier.
Code :
[== Indéfini ==]
if (!function_exists(human_filesize)) {
  function human_filesize($bytes, $decimals = 0) {
    $sz = 'BKMGTP';
    $factor = floor((strlen($bytes) - 1) / 3);
    return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . @$sz[$factor];
  }
}
$filename = $params['name'];
if (file_exists($filename)) {
    echo "<p><a href=\"".$params['name'].">Télécharger le PDF (".human_filesize(filesize($filenameD)).")</a></p>";
    }
}
Il suffit à l'utilisateur de coller la balise {nomUDT name="chemin complet du fichier"} en faisant attention que le nom du fichier ne comporte pas d'accents, d'espace...
Merci beaucoup Jean !
Cependant, c'est bien trop compliqué pour l'utilisateur par rapport à l'insertion d'un fichier pdf avec l'éditeur wysiwyg. Et de plus l'intitulé ne sera pas toujours "télécharger le pdf".
Il va falloir que je trouve une autre solution pour l'automatisation.
Tu pourrais utiliser un code JS pour ajouter le poids du fichier, mais tu auras l'obligation de placer le lien dans un id.
Tu pourrais également créer un plugin avec le code php qui rechercherait le lien avec une regex et ajouterait la fonction.
Tu pourrais demander sur le forum TinyMCE un plugin human readable filesize.

Mais, en laissant l'utilisateur utiliser TinyMCE pour l'ensemble du contenu, tu lui offres la possibilité de casser la structure du design des pages. Peut-être devrais-tu penser à ajouter des content blocks (ou gabarits pour la v2) d'uploads de fichiers placés aux endroits idoines afin d'harmoniser le design. Surtout que ces fichiers se retrouvent la plupart du temps dans des news.
Je comprends ton point de vue sur TinyMCE. Mais tout d'abord je laisse le strict nécessaire dans la barre d'édition ce afin d'éviter justement de tout casser au niveau du design, ensuite je fais une formation d'utilisation et fournis un document référence avec les préconisations utiles. À ce niveau je suis très vigilant (et insistant durant la formation).
D'autre part, les fichiers pdf peuvent se retrouver insérés dans un paragraphe, du coup pas moyen de les cantonner dans un bloc/gabarit particulier.

Pour les solutions, oui, je sais qu'il y en a, il faut que je vois ces différentes options. Merci de ces suggestions !