La galerie SPIP, pour réutiliser facilement les images et documents

Une fonctionnalité intéressante de SPIP, si elle est bien exploitée, est de pouvoir utiliser tout document (ou image) attaché à un article ou une rubrique dans n’importe quel autre élément. Il est ainsi possible de gagner de l’espace disque en évitant les doublons.

Le problème est qu’il faut pour cela connaître l’identifiant du document en question, ce qui peut s’avérer pénible quand on se souvient l’avoir déjà utilisé, mais sans savoir où.

Heureusement, voilà une galerie qui va simplifier la procédure !

L’idée est tout simplement d’ajouter dans la barre d’aide à la saisie un bouton qui lance dans une autre fenêtre une galerie de tous les documents déjà présents dans SPIP.

Depuis cette fenêtre, il est alors possible de se déplacer dans l’arborescence des rubriques et articles du site, et ainsi de visualiser tous les documents qui leurs sont attachés.

Une fois le bon document retrouvé, des liens permettent d’ajouter simplement le bon raccourci typographique à la zone de saisie qui était active.

Démonstration en images

1 - Ouvrez la galerie

Tout d’abord, cliquez sur le nouveau bouton de la barre d’aide à la saisie des raccourcis typographiques :

2 - Naviguez dans l’arborescence

Déplacez-vous dans l’arborescence du site pour y retrouver le document ou l’image qui vous intéresse :

3 - Visualisez l’élément et ses liens d’ajout

Une fois le bon élément retrouvé, cliquez sur le lien correspondant à l’affichahe souhaité :

4 - Continuez à travailler normalement

Après avoir cliqué sur l’un des liens, le code correspondant est ajouté à la zone de saisie et la galerie est refermée :

Installation

Tout d’abord, téléchargez cette archive :

galerie.zip

Elle contient les quatre fichiers suivants :

  • galerie.php3 est le script qui affiche la galerie, il est à placer dans le répertoire ecrire/

  • galerie.png est une nouvelle icône pour la barre, elle est à placer dans le répertoire IMG/icones_barre/, et elle pourra être avantageusement remplacée par une autre plus jolie

  • inc_barre.php3 est une version modifiée de la version fournie avec SPIP 1.7.2. La seule différence est l’ajout des lignes 69 à 72 suivantes :
    // Galerie
    if (!$forum) {
      $ret .= bouton_barre_racc ("javascript:barre_galerie('$champ')",
    'galerie.png', 'Ouvrir la galerie', $formulaire, $texte);
    }
    
  • spip_barre.js est une version modifiée de la version fournie avec SPIP 1.7.2. La seule différence est l’ajout des lignes 89 à 91 de la fonction barre_galerie() :
    function barre_galerie(champ) {
      window.open('galerie.php3?field=' + champ, 'galerie',
    'width=550,height=400,menubar=no,scrollbars=yes')
    }
    

Cette galerie a également été testée avec succès avec la version 1.8 alpha 1 CVS du 7 juin 2004.

If you want to share an error or suggest an enhancement of this content, please edit the source on Github.

17 commentaires

  • Bonsoir
    je trouve cette fonction tres intéressante effectivement. Bravo pour ce travail.

    J'ai implementé cette fonction sur notre Site mais je rencontre un petit problème.Apres le lancement de la fonction par un clic sur l'icone voilà ce que j'obtiens :

    Fatal error : Call to unsupported or undefined function sous_arborescence() in
    ……./ecrire/galerie.php3 on line 15

    je dois faire une erreur, mais ….
    Peut être une aide !

    @+
    " class="spip_mail" rel='nofollow'>gerard

  • La fonction sous_arborescence() est pourtant bien dans le script fourni, je ne vois vraiment pas ce qui peut causer cette erreur, désolé …

  • Bonjour,

    J'ai un problème pour faire fonctionner votre galerie… Lorsque je clique sur Galerie quand je rédige un article, un pop-up s'affiche avec ca :

    Galerie de documents
    showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showDocs() ; function hideAll() hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideDocs() ; function showNice() hideAll() ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showDocs() ; function showDocs() showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; showOne(' ', '') ; function hideDocs() hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; hideOne(' ', '') ; —>

    Puis il affiche la liste des rubriques. Et quand je clique sur droite, centré ou gauche rien ne se passe….

  • J'ai eu le meme probleme que ci-dessus apres l'installation de la "gallerie SPIP".

    J'ai trifouille dans le code PHP du fichier « gallerie.php3 » pour chercher cette erreur.
    J'ai pu facilement identifier l'erreur ! Tout fonctionne parfaitement sur un site SPIP (qui est en construction).
    Pour obtenir ce fichier corrigé merci de m'ecrire un mail en citant : “ fichier gallerie.php3 pour la Gallerie SPIP ”.

    J'espere vous etre utile. :)

  • Desole j'ai oublie de preciser mon adresse mail pour obtenir le fichier corrige : j.gaujard [at] laposte [dot] net

  • Salut Jacques,

    j'avoue ne pas avoir touché à ce code depuis sa publication ici, n'étant d'ailleurs finalement pas utilisateur moi-même…

    Fil avait trouvé l'idée intéressante, mais ça n'a une fois de plus rien donné, malheureusement.

  • Salut,

    Plutôt que de donner ton mail, tu aurais pu donner un lien vers le fichier à télécharger, ou expliquer directement dans ce forum comment tu as corrigé.

    Je t'envoie un mail pour voir si tu réponds.

    Paul

  • L'erreur était dans a déclaration du js.. bizarre bizarre.
    Sinon, moi j'en ai eu une autre (d'erreur) avec le source "corrigé". que j'ai "résolu" en remplaçant :
    $v = str_replace('<script type="text/javascript"><!--', ', $v);

    par $v = str_replace('<script type="text/javascript" ><!--', ', $v);
    un simple espace m'a enlevé beaucoup de bruit….

  • J'ai voulu installer la galerie sur un spip 1.8.3
    avec sarka spip

    j'ai ce message d'erreur

    Galerie de documents

    Fatal error : Call to undefined function : texte_vignette_document() in /home.1/g/i/r/girondin/www/ecrire/galerie.php3 on line 179

    Merci pour votre aide

  • Je pense qu'il y a un bug dans galerie.php3 - function sous_arborescence($id_rubrique)
    ligne 270

    while (list(, $article) = each($listeArticles))


    que devrait-il y avoir avant la virgule de 'list(, ' ?

  • oui, j'ai un plantage en essayant d'adapter cette contrib à spip192.
    le programme stop à la fonction 'list'
    pb transmis par email…

  • Bonsoir,
    Bravo pour avoir eu l'initiative de lancer ce plug-in qui mériterait d'être soutenu et peaufiné davantage.
    Nous l'avons fait tourner correctement sur la 1.9.2, mais intégré au plug-in 'Barre Typo V2 pour 1.9.2 et suivantes' Version 2.4.1, il reste un problème de javascript dans certains environnements. Ce bug est bien frustrant tant la fonction peut être attendue par certains, je dis ça pour encourager les développeurs à poursuivre leur effort, pas pour râler ! ;-)
    Une piste d'amélioration :
    Il faudrait afficher le numéro identifiant de l'article quelque-part en regard de chaque image ou document disponible dans le repository.
    Ainsi on aurait pas forcément à cliquer sur le lien pour exploiter le fichier (à la mano via un raccourci customisé par ex).