WikiNi

ActionAttach

PagePrincipale :: DerniersChangements :: DerniersCommentaires :: ParametresUtilisateur :: Vous êtes 38.107.191.106
(Redirigé depuis SolutionGarfieldFrPourLUploadDeFichier)
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.

Démonstration

Download

Dernière version



Ce que fait cette action



Syntaxe


L'action {{attach}} prend les paramètres suivants :

Exemples



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)
  5. Copiez le fichier upload.php dans le répertoire des handlers (/handlers/page)
  6. Copiez le fichier download.php dans le répertoire des handlers (/handlers/page)
  7. 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.
  8. 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

  1. 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 */


  1. 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.

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(


Je met à disposition des petite images pour ci-dessus http://metaweb.ath.cx/wakka.php?wiki=ContribActionAttach -- Err404


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
Il y a 23 commentaires sur cette page. [Afficher commentaires/formulaire]