WikiNi
ActionAttach
PagePrincipale
::
DerniersChangements
::
DerniersCommentaires
::
ParametresUtilisateur
:: Vous êtes 38.107.191.108
ListeActions ==== 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é entièrement réécrite. Mise à jour le 2004-05-08 : Gestion de version des fichiers et gestionnaire de fichiers. NB: l'évolution de la fonctionnalité liée à l'insertion d'images est en cours de discussion sur ErgonomieInclureUneImage. [[http://codedb.delphicenter.com/wikiAttach/wakka.php?wiki=TestAttach Démonstration]] ====[[http://codedb.delphicenter.com/wikiAttach/wakka.php?wiki=PagePrincipale/download&file=actionattach.zip Download]]==== [[http://codedb.delphicenter.com/wikiAttach/wakka.php?wiki=PagePrincipale Dernière version]] ---- === Ce que fait cette action === - Elle permet d'uploader un fichier sur le site, dans un sous-répertoire d'un répertoire défini pour recevoir les uploads. Le sous-répertoire a pour nom le nom de la page d'où à lieu l'attachement. Le cas ou le ##safe_mode## de PHP est activé (exemple sur Free.fr) est traité et tous les fichiers uploadés seront dans même répertoire mais leur nom sera préfixé avec le nom de la page d'où a eu lieu l'upload - 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 autres sur le serveur. === 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. - ##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"}}""## - 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écupérer un fichier depuis la poubelle. **Installation** L'archive comprend **6 fichiers** : ##attach.php, attach.class.php, attachfm.php, filemanager.php, download.php, upload.php##. 1) Copiez le fichier attach.php dans le répertoire des actions (/actions) 2) Copiez le fichier attach.class.php dans le répertoire des actions (/actions) 3) Copiez le fichier attachfm.php dans le repertoire des actions (/actions) 4) Copiez le fichier filemanager.php dans le répertoire des handlers (/handlers/page) 3) Copiez le fichier upload.php dans le répertoire des handlers (/handlers/page) 4) Copiez le fichier download.php dans le répertoire des handlers (/handlers/page) 5) 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. 6) 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: %% $wakkaConfig["attach_config"] = array( "upload_path" => 'files', //répertoire racine des uploads "ext_images" => 'gif|jpeg|png|jpg', //extension des fichiers images "ext_script" => 'php|php3|asp|asx|vb|vbs|js', //extension des script(non utilisé) "update_symbole" => '*', //symbole pour permettre une mise-à-jour du fichier "max_file_size" => 1024*100, //taille maximum du fichier en octets (100Ko par défaut) "fmDelete_symbole" => 'Supr', //symbole à afficher pour le lien "supprimer" dans le gestionnaire de fichier "fmRestore_symbole" => 'Rest', //symbole à afficher pour le lien "restaurer" dans le gestionnaire de fichier "fmTrash_symbole" => 'Poubelle'); //symbole à afficher pour le lien "Poubelle" dans le gestionnaire de fichier %% 7) 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: %% .attach_margin05em { margin: 0.5em;} /* marge de 0.5 em autour de l'image*/ .attach_margin1em { margin: 1em;} /* marge de 1em autour de l'image*/ .attach_left {float: left;} /* bloc flottant à gauche */ .attach_right {float: right;} /* bloc flottant à droite */ .attach_noborder {border-width: 0px;} /* pas de bordure */ .attach_vmiddle {vertical-align: text-bottom;} /* alignement vertical au milieu */ %% 10)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 inacceptable ! -- 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 "inacceptable"... --GarfieldFr Je modère mon "inacceptable" : 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 "inacceptable" 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: %% RewriteEngine on #On n'applique pas les règles aux fichiers CSS # CSS dans handler RewriteRule ^([^/]*)/(.*)\.css$ $2\.css [QSA,L,NC] # CSS dan sles pages normales RewriteRule ^(.*)\.css$ $1\.css [QSA,L,NC] #******************************************************************************* # REGLES POUR L'ACTION ATTACH #******************************************************************************* #RewriteRule ^(.*)/filenamager$ wakka.php?wiki=$1/filemanager # Regles pour l'affichage des images du filemanager #Image dans le filemanager RewriteRule ^([^/]*)/images/(.*)$ images/$2 [QSA,L,NC] #Image "update" RewriteRule ^images/(.*)$ images/$1 [QSA,L,NC] # Regle pour l'affichage d'une image ou lien vers un fichier RewriteRule ^uploads/(.*)$ uploads/$1 [QSA,L,NC] #******************************************************************************* #Regle générale pour les pages #Page avec un handler RewriteRule ^([^/]+)/(.*)$ wakka.php?wiki=$1/$2 [L,QSA,NC] #page sans handler RewriteRule ^(.*)$ wakka.php?wiki=$1 [L,NC,QSA] %% //**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 de mise à jour 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 alt="Mettre à jour" src="images/update.gif" border="none"/>', "fmDelete_symbole" => '<img alt="Supprimer" src="images/delete.gif" border="none"/>', "fmRestore_symbole" => '<img alt="Restaurer" src="images/restaure.gif" border="none"/>', "fmTrash_symbole" => '<img alt="Corbeille" src="images/corbeill.gif" border="none"/>'); ## //Je met à disposition des petite images pour ci-dessus http://metaweb.ath.cx/wakka.php?wiki=ContribActionAttach -- Err404 // - c'est sur mon serveur web qui me sert à tester, donc parfois il n'est pas disponible (ben oui j'expérimente...) - tant qu'à mettre un ##alt##, autant mettre quelque chose dedans hein ;-) -- LordFarquaad ---- === pour augmenter la taille des fichiers en upload === Il faut rajouter les paramètres suivants dans wakka.config.php (juste après "preview_before_save" => "0"); ) pour personnaliser l'action qui permet d'envoyer des fichiers sur un wiki : ## $wakkaConfig["attach_config"] = array( "upload_path" => 'files', ""//""répertoire racine des uploads "update_symbole" => '*', ""//""symbole pour faire un update du fichier "max_file_size" => 1024*2000); ""//""taille maximum du fichier en octet (100Ko par defaut) ## Ensuite on peut régler la taille maximum comme on veux en changeant le max_file_size. Attention la majeure partie des hébergeurs limite cette taille à 2 Mega. ---- ActionAttachDiscussion ActionAttachBug ---- PageSuivieParGarfieldFr ListeDesActionsWikini ActionsEnCoursDeDiscussion
XHTML 1.0 valide ?
::
CSS valide ?
:: -- Fonctionne avec
WikiNi 0.5.0 (interwiki)