Sujet de cette page
Le but de cette page est de présenter pour discussion une action que j'ai écrite pour attacher un fichier à une page
WikiNi.
2004-04-28 : L'action
{{attach}} a été entierement réécrite.
Mise à jour le 2004-05-08 : Gestion de version des fichiers et gestionnaire de fichiers.
Lien pour tester l'action
Ce que fait cette action :
- Elle permet de téléverser un fichier sur le site, dans un sous-répertoire d'un répertoire défini pour reçevoir les téléversements (upload). Le sous-répertoire a pour nom le nom de la page d'ou à lieu l'attachement. Le cas ou le safe_mode de php est activé (exemple sur Free.fr) est traité et tous les fichiers téléversés seront dans même répertoire mais leur nom sera préfixé avec le nom de la page d'où a eu lieu le téléversement.
- Si le fichier attaché est une image, elle est affichée dans la page. Cette image peut être sensible, les liens possibles pour une image sensible sont le nom d'une page WikiNi, un lien interwiki et un URL "normal".
- Si le fichier attaché n'est pas une image, alors il est disponible en téléchargement. Un gestionnaire de téléchargement se charge d'empêcher l'exécution de scripts php ou autre sur le serveur.
- Il est possible de supprimer une fichier attaché. fonction supprimée avec la gestion de version des fichiers
- Les fichiers téléversés sont versionnés, il n'y a donc plus la possibilité de supprimer un fichier depuis l'action {{attach}}
Syntaxe
L'action
{{attach}} prend les paramètres suivants :
- file ou attachfile: nom du fichier tel qu'il sera sur le serveur. Les espaces sont remplacés par des "_". (OBLIGATOIRE)
- desc ou attachdesc: description du fichier. C'est le texte qui sera affiché comme lien vers le fichier ou dans l'attribut alt de la balise <img>. Ce paramètre est obligatoire pour les images pour être conforme au XHTML.
- delete ou attachdelete: Si ce paramètre est non vide alors le fichier sera effacé sur le serveur. Le fichier n'est pas réellement supprimé mais simplement renommé. Pour le récupérer, il faudra que l'administrateur du site renomme le fichier correctement via FTP ou autre moyen. fonction supprimée avec la gestion de version des fichiers
- link ou attachlink: URL de lien pour une image sensible. le lien peut être un nom de page WikiNi, un lien interwiki ou une adresse http. Ce paramètre est ignoré si le fichier n'est pas une image.
- class: indique le nom de la ou les classes de style à utiliser pour afficher l'image. les noms des classes sont séparés par un espace.
Exemples
- Attacher un fichier archive:
- {{attach file="archive.zip"}}
- Attacher un fichier archive avec une description
- {{attach file="archive.zip" desc="Code source de l'application"}}
- Supprimer un fichier:
- {{attach file="archive.zip" delete="y"}}
- Afficher une image:
- {{attach file="image.png" desc="voici une image"}}
- Afficher une image sensible:
- {{attach file="image.png" desc="voici une image" link="PagePrincipale"}}
{{attach file="image.png" desc="voici une image" link="WikiNi:PagePrincipale"}}
{{attach file="image.png" desc="voici une image" link="http://www.wikini.net"}}
- Afficher une image collé sur le bord droit et sans contour:
- {{attach file="image.png" desc="voici une image" class="right noborder"}}
Gestionnaire des fichiers attachés
Une action
{{attachfm}} qui ne prend pas de paramètre permet d'afficher facilement un lien vers le gestionnaire des fichiers attachés à la page courante. Ce gestionnaire permet de mettre des fichiers à la poubelle, de vider la poubelle, de récuperer un fichier depuis la poubelle.
Installation
L'archive comprend
6 fichiers :
attach.php, attach.class.php, attachfm.php, filemanager.php, download.php, upload.php.
- Copiez le fichier attach.php dans le répertoire des actions (/actions)
- Copiez le fichier attach.class.php dans le répertoire des actions (/actions)
- Copiez le fichier attachfm.php dans le repertoire des actions (/actions)
- Copiez le fichier filemanager.php dans le répertoire des handlers (/handlers/page)
- Copiez le fichier upload.php dans le répertoire des handlers (/handlers/page)
- Copiez le fichier download.php dans le répertoire des handlers (/handlers/page)
- Créez le répertoire racine des uploads sur le site du wiki. Si le SAFE_MODE de PHP est activé, vous devez créer vous même ce répertoire et autoriser l'écriture dans ce répertoire pour l'utilisateur et le groupe.
- Ouvrez le fichier wakka.config.php et ajoutez la configuration de l'action.
- Tous les paramètres de configuration ont une valeur par défaut.
- Le configuration par défaut est:
- Ajoutez la définition des classe CSS à utiliser pour les images. Le nom de la classe CSS doit commencer par .attach_. Voici quelques exemples de classe:
- Pour configurer l'aspect du gestionnnaire de fichier utiliser les classes de style .tableFM , tableFMCol1 et tableFMCol2. La classe tableFM est appliquée au tableau affichant les fichiers. Le tableau utilise les balises <THEAD>, <TFOOT> et <TBODY> conformes au HTML4.
Exemple :
.tableFM {border: thin solid Black; width: 100%; }
.tableFM THEAD { background-color: Silver; font-weight: bold; text-align: center; }
.tableFM TFOOT { background-color: Silver; font-weight: bold; text-align: left; }
.tableFM TBODY TR { text-align: center; }
.tableFMCol1 { background-color: Aqua; }
.tableFMCol2 { background-color: Yellow; }
Limitation
Actuellement l'action
{{attach}} ne fonctionne pas si le mode rewrite est utilisé (paramètre rewrite_mode à 1 dans le fichier de configuration). Vous
devez donc mettre le paramètre
"rewrite_mode" => "0" dans le fichier de configuration.
- Euh... Tu veux rire ?! Il faut trouver une solution dans ton script car c'est une contrainte parfois tout bonnement innacceptable ! -- ProgFou
- Ben non, je ris pas. En plus j'ai pas le temps de le faire en ce moment donc ... si tu es volontaire pour corriger ce problème "innacceptable"... --GarfieldFr
- Je modère mon "innacceptable" : je veux dire par là que quand le design t'impose de faire de la ré-écriture d'URL (= pas le choix), c'est dommage de se priver de ton action juste parce qu'elle ne supporte pas la ré-écriture d'URL... Je ne l'avais pas encore installé sur mon site, mais du coup je suis déjà certain que ça ne fonctionnera pas... :-( Je serais bien volontaire pour participer là dessus mais, hélas, le temps me manque en ce moment et ce n'est pas (encore) dans mes priorités... Peut-être que je m'y mettrai quand on m'imposera d'avoir des attachements sur mes pages... ;-) Ceci dit, mon "innacceptable" ne m'empêche pas de reconnaître du bon boulo : le tiens ! -- ProgFou
- J'avais bien compris et tu as tout à fait raison d'indiquer que c'est dommage que ca ne marche pas avec une redirection d'URL. Il va donc falloir que je trouve comment configurer la redirection d'URL et comment l'utiliser dans attach. Mais c'est pas pour tout de suite... si il y a des volontaires... --GarfieldFr
Mode Réécriture d'URL
Il est tout à fait possible d'utiliser l'action avec la réécriture d'URL d'Apache sans aucune modification du code de l'action. Voici un test que je viens de réaliser, ne me demandez pas d'expliquer mais ca marche:
NB: le flag NC dans les options indique que l'on fait les comparaisons sans considérer la casse. A supprimer éventuellement...
Dans cet exemple, j'ai considéré que l'on avait utilisé des images au lieu de mots pour les liens d'update et dans le filemanager(voir l'astuce chapitre suivant) et que ces images étaient dans le répertoire
images à la racine du wiki.
Je pense que c'est la meilleure méthode car modifier le code implique que l'on considère une exploitation privilégiée de
WikiNi avec Apache.
Astuces
Si vous voulez mettre des images pour le lien de mise à jour, de suppression et de restauration de fichier, vous pouvez mettre quelque chose comme ceci dans le fichier de configuration :
$wakkaConfig["attach_config"] = array(
- "update_symbole" => '<img src="images/update.gif" border="none"/>',
- "fmDelete_symbole" => '<img src="images/delete.gif" border="none"/>',
- "fmRestore_symbole" => '<img src="images/restaure.gif" border="none"/>',
- "fmTrash_symbole" => '<img src="images/corbeill.gif" border="none"/>');
Cette action semble être utilisée par plusieurs
WikiNi car elle m'a été plusieurs fois demandée.
--
GarfieldFr
Excellent et merci pour le travail effectué. --
ThierryBazzanella
NOTA: Nicephore17 remarque qu'il y un problème au niveau du suivi des version, comment peut on reconnaître la version que l'on a installé et quelle est la dernière version de l'action?
ActionAttachDiscussion ActionAttachBug
|
PageSuivieParGarfieldFr