Objectifs de cet article
Gallery est un logiciel de gestions de photos qui commence à être très connu. Avec la version 2.0, de nouvelles possibilités d’intégration avec des serveurs d’application externes sont apparues. Cet article décrit un squelette qui permet cette intégration de manière très simple, y compris la création automatique d’utilisateurs dans Gallery 2.0, afin de ne devoir gérer qu’une seule base d’utilisateurs.
Avant toute autre chose, je crois qu’un bon exemple vaut bien des explications : faites un tour à cette adresse : notresupersafariaukenya.com. C’est un site à propos d’un voyage (je vous laisse deviner où), qui combine journal de voyage, photos, etc. 100% Spip/Gallery, bien sûr.
En deuxième partie de l’article, vous trouverez la description d’une balise spip supplémentaire qui permet d’insérer de manière très simple des photos de Gallery à l’intérieur d’articles Spip.
Pour terminer, il est intéressant de noter que tout ceci est réalisé sans modifier une seule ligne de code, ni dans Spip, ni dans Gallery !
Note : je suis conscient que ce code n’est pas aussi propre qu’il devrait l’être quant au traitement des conditions d’erreur, mais il est tout de même relativement costaud : il est utilisé en production avec un site de quelques centaines d’articles, plus d’une dizaine de milliers de photos, et des visiteurs "non geek" sans aucun problème.
Note 2 : Cet article présume que le lecteur a un bon niveau Spip général, je ne détaille pas les opérations de base telles que création d’un squelette, etc.
Problématique de la gestion des utilisateurs
Gallery 2.0 a une notion d’utilisateurs et d’admnistrateurs, ce qui permet de gérer des droits d’édition sur les albums de photos et les photos, de la même façon que Spip gère des visiteurs, des rédacteurs et des administrateurs.
Dans le cadre d’une intégration complète de Gallery à Spip, il est donc nécessaire de synchroniser la base d’utilisateurs afin de pouvoir donner aux rédacteurs et/ou administrateurs Spip la possibilité d’éditer le contenu des albums photo.
Il est important de noter que si un utilisateur de Spip est un administrateur, il ne sera pas automatiquement admnistrateur sur Gallery : ce statut devra être attribué via l’interface d’admin de Gallery. Une réplication automatique n’est pas souhaitable, car la notion d’admin restreint n’existe pas dans Gallery.
Squelette Gallery 2.0
Le code ci-dessous devra être mis dans le squelette à l’intérieur d’un fichier "gallery2.html". Le fichier associé, "gallery2.php3" devra être créé suivant la méthode habituelle :
<?php
// gallery2.php3
$fond = "gallery2";
$delais = 3600;
include("inc-public.php3");
?>Le fichier gallery2.html, doit quant à lui être placé dans votre dossier de squelettes :
Notes importantes sur ce code :
Il est important que Spip n’affiche rien avant l’appel "handleRequest" de gallery, car dans certains cas, gallery demande une redirection, et dans d’autres cas les données affichées ne sont pas du HTML, mais par exemple des photos ou autres données binaires. C’est la raison du test "isDone" juste avant le code d’affichage.
Les utilisateurs Gallery 2.0 sont créés automatiquement à leur première visite, mais ils ne sont jamais effacés. Ceci ne devrait pas avoir une grande importance, car les utilisateurs "effacés" dans Spip ne sont jamais supprimés de la base de données, et leur ID reste unique.
Avec ce bout de squelette, on peut désormais utiliser gallery 2.0 à l’intérieur de n’importe quel site Spip.
Installation
Je ne détaille pas ici comment installer le squelette gallery, ceci est documenté un peu partout.
La procédure à suivre pour intégrer Gallery 2.0 est la suivante :
Installer Gallery 2.0 dans la hierarchie du site web. Dans notre exemple, gallery 2.0 est installé dans un répertoire appelé "gallery_ng"
Suivre la procédure de setup décrité dans la documentation d’installation de Gallery 2.0. Notez bien le mot de passe de l’admnistrateur !
Une fois que gallery 2.0 fonctionne correctement en standalone, vous pouvez alors tester à travers votre squelette spip.
Pour cela, allez à l’URL http://votre site/gallery2.php3 . Vous devriez vous trouver sur la page d’acceuil de gallery 2
Si à ce moment vous n’êtes pas identifié sous Spip, vous aurez accès à Gallery en mode ’guest’
Si vous vous authentifiez sous Spip, vous serez également authentifié sous Gallery (l’utilisateur Gallery sera créé lors de votre première visite dans Gallery)
Afin de pouvoir administrer vos albums, il suffit de visiter Gallery au moins une fois en étant identifié comme administrateur Spip. Ensuite, vous devez vous connecter directement à gallery (c’est à dire gallery en standaline, pas à travers Spip et gallery2.php3) en tant qu’admin Gallery, et donner les droits d’admin à votre nom d’utilisateur/admnistrateur Spip qui vient d’être créé par votre visite précédente. Heu... suis-je bien clair ?
Une fois que votre nom d’utilisateur Spip est créé, vous pouvez désactiver l’accès à Gallery 2.0 en "standalone" en changeant l’option correspondante dans le fichier "config.php" de Gallery 2.0 :
$gallery->setConfig(’mode.embed.only’,true) ;
Utiliser gallery 2.0 pour insérer des images dans les articles
Une fonction intéressante, une fois que Gallery2 est inséré à l’intérieur de Spip, est de l’utiliser pour illustrer ses articles.
Chaque photo ou album de Gallery 2.0 possède un identifiant unique (itemID). La balise ci-dessous utilise cet identifiant pour insérer une photo à l’intérieur de spip, suivant la syntaxe suivante :
<albItem_itemID|alignement>
itemID est l’itemID de l’élément à afficher (photo, film, album, etc
alignement peut être : left, center, right, comme pour une image.
Le code de cette balise — ci dessous — doit être installé dans le fichier "/ecrire/mes_options.php3". Ce fichier permet d’installer ses propres balises et n’est pas modifié par les mises à jour de Spip.
Cette nouvelle fonction devra être appelée par la fonction "apres_propre", également définie dans mes_options.php3. Si la fonction "apres_propre" n’existe pas, il faudra la créer comme suit :
<?php
function apres_propre($texte) {
$texte = apres_propre_galery($texte);
return $texte;
}
?>Sinon, il suffit simplement de placer $texte = apres_propre_galery($texte) ; au début de cette fonction.
Améliorations futures
Cette intégration dans les squelettes Spip permet seulement d’afficher les pages de Gallery et d’insérer des photos provenant d’albums dans Spip : elle n’introduit pas de nouvelles boucles Spip permettant d’utiliser les photos et les albums comme des éléments parfaitement intégrés à la structure des objets gérés par Spip, comme les articles, rubriques et document.
Tout ceci demandera un certain travail de développement, mais les bases décrites ici sont une première étape !
En espérant que cela vous aura plu,
Edouard

