Formulaire upload

Ce plugin permet d’uploader des documents depuis l’espace public

Objectifs

Ce plugin permet d’ajouter un formulaire dans l’espace public pour uploader et gérer des fichiers. A priori, il peut se greffer sur tous types d’objets SPIP : articles, auteurs, ....

L’upload repose sur la librairie jQuery Multifile qui permet :

  • Envoi de plusieurs fichiers en une seule passe
  • De limiter le nombre ou les types de fichiers à placer en ligne
Attention : Si vous cherchez uniquement à autoriser vos visiteurs à ajouter des documents sur les forums d’article, utilisez directement la fonction native proposée dans SPIP 3.

Aperçu de l’interface

Il est possible de personnaliser la css du formulaire.

Configuration

Une fois le plugin activé, vous pouvez le configurer :

  • Type d’extensions de fichiers autorisés (vide = toutes les extensions autorisées par SPIP)
  • Nombre de fichiers autorisés en un seul upload
  • Afficher ou non des raccourcis d’insertion du type <imgXX> ....

Sur la version SPIP 3, il est aussi possible de déterminer

  • Nombre de fichiers autorisés par utilisateur (quota)
  • La possibilité de gérer les titres des documents

Mise en œuvre dans vos squelettes

Il suffit d’ajouter la balise

 #FORMULAIRE_UPLOAD

Le formulaire dépendra du contexte, s’il est placé dans une boucle articles, il uploadera les documents dans l’article et non pas au niveau de l’auteur.

Hors d’une boucle et sans paramètres, le formulaire prends en argument l’id_auteur de l’auteur connecté

La syntaxe complète est

 #FORMULAIRE_UPLOAD{type_objet,id_objet,fond_documents}

Avec :

  • type_objet auteur par exemple
  • id_objet pour l’id_auteur ou autre élément
  • fond_documents fond situé dans le répertoire /formulaires à utiliser pour l’affichage des documents (personnalisable)

Autorisations

Les autorisations sont les autorisations natives de SPIP. Il est possible de les affiner via le fichier autorisation (spip3)

Retours

Le plugin est sur la zone. N’hésitez pas à le faire évoluer.

Discussion

24 discussions

  • 5

    Pour info, la fonctionnalité est disponible nativement en SPIP3 dans le plugin medias de SPIP :

    Il faut utiliser le #FORMULAIRE_JOINDRE_DOCUMENT, en y précisant à quel objet éditorial attacher le document.
    Par exemple :

    <div class="ajax">
    #FORMULAIRE_JOINDRE_DOCUMENT{new,article,#ID_ARTICLE}
    </div>

    On peut aussi associer des documents sans les attacher à aucun objet éditorial :

    <div class="ajax">
    #FORMULAIRE_JOINDRE_DOCUMENT
    </div>
    • la seule (et grosse différence pour moi, en tous cas sur le site sur lequel je bosse actuellement) c’est que la gestion des titre, descriptif et crédits ne sont pas permises par ce formulaire, il faut jouer avec plusieurs formulaires pour y arriver, et c’est pas simple :)

      mais j’y arriverai !

    • Il faut utiliser le #FORMULAIRE_JOINDRE_DOCUMENT, en y précisant à quel objet éditorial attacher le document.

      Pour ne pas oublier je l’écris ici :

      Pour que le formulaire #FORMULAIRE_JOINDRE_DOCUMENT fonctionne correctement, il ne faut pas oublier que la classe CSS none-js doit avoir la propriété CSS suivante display:none;. Par défaut, cette classe est définie dans le fichier CSS prive/themes/spip/clear.css qui a priori n’est pas chargé dans l’espace public.

      Donc, il faut soit attribuer le display:none; à la classe soi-même, soit charger la feuille CSS.

    • Faire attention à l’ordre des paramètres donnés. La bonne syntaxe est la suivante :

      <div class="ajax">
      #FORMULAIRE_JOINDRE_DOCUMENT{new,#ID_ARTICLE,article}
      </div>
    • Serait-il possible dans la prochaine mise à jours de rendre le plugin actif sur un formulaire personnalisé ?

       #FORMULAIRE_JOINDRE_DOCUMENT_PERSO{new,#ID_ARTICLE,article}

      En attendant j’ai mis ceci à la ligne 60 dans le pipelines (uploadhtml5_pipelines.php)

      if ($flux['args']['form'] == 'joindre_document' || $flux['args']['form'] == 'joindre_document_prive')

      Julien.

    • Pour résumer les message de Ben et Beurt, concernant le formulaire d’upload natif à SPIP. On peut l’intégrer dans un squelette avec le code suivant :

      -  Pour uploader des documents depuis l’espace public sans les rattacher à un objet.

      <div class="ajax">
      #FORMULAIRE_JOINDRE_DOCUMENT
      </div>

      -  Pour uploader des documents depuis l’espace public en les rattachant à un objet (un « article » dans cet exemple).

      <div class="ajax">
      #FORMULAIRE_JOINDRE_DOCUMENT{new,#ID_ARTICLE,article}
      </div>

      Pour que le formulaire d’upload de fichier natif s’affiche correctement, ajouter dans la feuille CSS perso

      .none-js {
      	display:none;
      }

      A noter que le formulaire sans argument #FORMULAIRE_JOINDRE_DOCUMENT est visible pour tout le monde, y compris les visiteurs non authentifiés, mais la balise avec arguments (pour rattacher le document à un article par exemple), n’est visible que des administrateurs.
      L’usage de cette balise est donc assez limité, heureusement le plugin Formulaire Upload permet d’aller plus loin.

    Répondre à ce message

  • 2

    Bonjour,
    Mon site doit avoir un formulaire d’upload sans utilisateurs connecter, (sans auteurs),
    Comment forcer le plugin à fonctionner sans être loger ?

    Merci

    Warning : Illegal string offset ’id_auteur’ in ..../www/plugins/auto/formulaireupload/v1.0.5/formulaires/upload.php on line 20

    • Salut, ce n’est pas pris en charge par le plugin, mais comme indiqué dans la documentation, tu peux utiliser la fonctionnalité d’upload des documents dans les forums.

      Si vous cherchez uniquement à autoriser vos visiteurs à ajouter des documents sur les forums d’article, utilisez directement la fonction native proposée dans SPIP 3.

      Sinon, tu peux aussi y arriver en mettant les mains dans le code à l’aide de l’API CVT Upload : http://plugins.spip.net/cvtupload.html

    • La balise native SPIP #FORMULAIRE_JOINDRE_DOCUMENT te permet d’uploader un document depuis l’espace public sans être authentifié.

      Sinon, tu peux assouplir les autorisations dans le plugin Formulaire Upload. Dans l’exemple ci-dessous, on permet à un visiteur (statut 6forum) d’uploader des fichiers (alors que normalement il faut au moins être rédacteur) :

      Modifier le fichier formulaire upload_autorisations.php qui se trouve à la racine du répertoire du plugin, et remplacer la ligne :

      return  autoriser_joindredocument_dist($faire, $type, $id, $qui, $opt);

      par la ligne

      if ($qui['statut'] == '6forum'){
      		return true;
      	}
      	else {
      	return  autoriser_joindredocument_dist($faire, $type, $id, $qui, $opt);
      	}

    Répondre à ce message

  • Teenoo

    Chouette petit plug pour un intranet :) Tite question ! Possibilité de permettre d’adjoindre des mots-clés ? Facile à intégrer ?

    Répondre à ce message

  • 2
    Spipmalion

    Lorsque je ne suis pas connecté, j’obtiens ceci à la place du formulaire :

    Warning : Illegal string offset ’id_auteur’ in \plugins\formulaire_upload_3_0\formulaires\upload.php on line 20

    • Tu peux corriger le plugin ? À la ligne en question rajouter un test d’existence (isset) ou ignorer l’erreur avec un @.

    • Spipmalion

      J’ai fait la modif et testé en local sur le trunk et sur mon site local, l’erreur n’apparaît plus
      On me demande un login/mdp pour pouvoir la commit
      J’ai fait une demande sur la liste rezo

    Répondre à ce message

  • 2

    D’après ce que j’en ai compris, ce plugin permet de faire 3 choses :

    1. il affiche les documents
    2. il permet d’en supprimer
    3. il permet d’en rajouter

    Mais ça, seulement si l’auteur a un droit de modification sur la rubrique.

    J’ai un cas d’usage où ces formulaires ne sont montrés que dans des zones d’accès restreint. Mais si l’auteur n’est pas en plus admin (ou admin restreint) de la rubrique, alors rien ne s’affiche.

    Est-ce que je peux modifier le plugin pour que ça affiche systématiquement la liste (1), mais 2) et 3) seulement si y’a les autorisations pour ?

    • Hop, si tu as déjà le patch, poste le quelque part pour qu’on y jette un œil. Sinon, envoie le commit et on gueulera après ;)

    • Spipmalion

      Bonjour RealET,

      Est-ce que tu as pu ajouter les modifs pour les rubriques restreintes au plugin ?

    Répondre à ce message

  • Est-ce que ce plugin pourrait être utilisé pour remplacer le formulaire d’ajout de document dans les forums publics, car il n’est possible de joindre qu’un seul document en réaction au forum ?

    Répondre à ce message

  • Pour les nuls, en complément à Ben et Beurt méthode 2 (méthode 1 ? qd à celle de g0uZ ?!...)
    « Pour que le formulaire #FORMULAIRE_JOINDRE_DOCUMENT fonctionne correctement » :
    ajouter dans /inclure/head.html

    [(#REM) 1'. complément CSS formulaire_joindre_document]
    <link rel="stylesheet" href="prive/themes/spip/clear.css" type="text/css" />

    et dans article.html :

    <div class="none-js; ajax display:none;">
    #FORMULAIRE_JOINDRE_DOCUMENT{new,#ENV{id_article},'article','auto'} <!--et non {new,article,#ID_ARTICLE} -->
    </div>

    mais on n’a pas ainsi accès à la médiathèque depuis le site public ...

    Répondre à ce message

  • 1

    En SPIP3, pour ceux qui aimerait avoir la possibilité d’uploader un fichier dans un formulaire CVT :

    coté PHP, ajouter dans votre fonction traiter() :

    	    // Gérer les pièces jointes
                include_spip('inc/joindre_document');
                $files = joindre_trouver_fichier_envoye();
                if (is_array($files)) {     
                    $ajouter_documents = charger_fonction('ajouter_documents', 'action');
                    $nouveaux_doc = $ajouter_documents($id_document, $files, "solution", $id_solution, 'document');                
                }

    ou « id_solution » / solution à l’identifiant auquel vous souhaitez voir rattaché votre document.

    Coté HTML, ajouter dans votre formulaire :

    <input type="file" name="fichier" />
    <input type="hidden" name="joindre_upload" value="1" />

    L’attribut name de l’input de type file est libre.

    Vous pourrez donc uploader un fichier via votre formulaire CVT et l’avoir (ou non, modulo une petite adaptation) attaché a votre objet éditorial perso.

    • Delorimier

      Comment faire pour les logos d’articles svp ?

    Répondre à ce message

  • bonjour,
    Quel balise faut coller dans l’espace privé pour afficher ce formulaire ?? j’ai essayé

    <?php include_once("/opt/nursit/sys/home/nursit/matrice/public/4.2/07/spip/ecrire/balise/formulaire_.php"); if ($lang_select = "fr") $lang_select = lang_select($lang_select); inserer_balise_dynamique(balise_FORMULAIRE__dyn(arguments_balise_dyn_depuis_modele('FORMULAIRE_UPLOAD')), array('', '', '', '', 'fr', '1')); if ($lang_select) lang_select(); ?>

    mais marche pas.....Merci de votre aide

    Répondre à ce message

  • Bonjour,

    Apparemment il n’est pas possible de déposer des documents dans sa rubrique pour un rédacteur.

    Une idée ??? J’ai essayé de surcharger les autorisations mais je patine un peut...

    Merci de votre aide et pour ce plugin

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom