Un login/logout dans le pied qui fait du bien

Nécessite le plugin Balise Session

Ceci est une archive périmée mais qui reste intéressante, parfois autant pour l’article que les commentaires associés.

Permettre à un administrateur ou un rédacteur de se connecter depuis n’importe quelle page du site, par exemple pour modifier un texte avec le plugin Crayons, grâce à 2 icones placées dans le pied de page.

Principe intégré à SPIP2 , plus besoin du plugin session !

[(#SESSION{id_auteur}|non)| 
<a href="[(#URL_PAGE{login}|parametre_url{url,#SELF})]"><:lien_connecter:></a>
]

Présentation

Vous devez obligatoirement avoir activé le plugin balise Session

Le plugin Crayons est optionnel mais si vous l’activez cela vous permettra de tester la modification d’un article sans jamais quitter l’espace public, ce qui est le but de cette contrib ;)

Cette contrib ne fonctionne qu’en spip SVN et future version 1.9.2

Plutôt que de longues explications, voici une image pour montrer ce que cela fait .

Rappel à propos des squelettes SPIP

SPIP propose un jeu de squelettes par defaut plaçé dans le dossier « /dist », ne supprimez pas ces fichiers et ne les modifiez pas, car vos modifications seraient perdues lors de la prochaine mise à jour de spip, inspirez vous seulement des codes.

Pour personnaliser vos squelettes, vous devez créer un dossier à la racine de votre site (comme dist) et le nommer squelettes puis y mettre vos fichiers personnalisés (inspirez vous des fichiers de la dist). Tout fichier placé dans votre dossier « /squelettes » prendra la main sur celui de même nom du dossier /dist. Par exemple, dans cette contrib nous allons dupliquer « dist/inc-pied.html » dans le dossier « /squelettes » (dossier à créer à la racine si il n’existe pas).

Ce tutorial nécessite

  1. la création d’un dossier nommé squelettes à la racine
  2. la modification après duplication depuis le dossier dist de inc-pied.html
  3. la modification après duplication depuis le dossier dist de article.html
  4. la création d’un fichier nommé login-logout.html
    -  tous ces fichiers seront evidemment plaçés dans le dossier squelettes

Modifiez le pied de page

Donc, recopions « dist/inc-pied.html » dans le dossier de squelettes.

On va demander l’inclusion du fichier qui affiche les icones suivant les droits du visiteur, soit login-logout.html, via la session.php (vous devez activer le plugin balise session). On transmet la variable connexion mais aussi id_article ET id_rubrique pour bien rester dans la page sur laquelle on est, puisqu’il y a mise en cache. Puis on va demander l’affichage de la boîte d’identification si on passe par l’url la valeur y dans la variable connexion.

[(#REM) code final de squelettes/inc-pied.html]
<div id="pied">
<small>
	<a href="#URL_PAGE{backend}" title="<:syndiquer_site:>"><img src="#CHEMIN{feed.png}" alt="<:icone_suivi_activite:>" width="16" height="16" class="format_png" />&nbsp;RSS&nbsp;2.0</a>
	| <a href="#URL_PAGE{plan}"><:plan_site:></a>
	| <a href="ecrire/"><:espace_prive:></a>
	| <a href="http://www.spip.net/" title="<:site_realise_avec_spip:>"><img src="#CHEMIN{spip.png}" alt="SPIP" width="48" height="16" class="format_png" /></a>
	| <a href="#ENV{skel}" title="<:voir_squelette:>" rel="nofollow"><:squelette:></a>
	|	<INCLURE(session.php){fond=login-logout}{connexion}{id_article}{id_rubrique}>
</small>
</div>

[(#REM) le bloc s'ouvre en milieu de page, mais bon là si on est sur / faut rediriger proprement bidouille si sommaire...]
[(#ENV{connexion}|=={y}|?{' ',''}) 
<div id="connexion">
[(#SELF|=={?connexion=y}|?{
<!--accueil-->
[(#LOGIN_PUBLIC|?)]
,
<!--autre-->
[(#LOGIN_PUBLIC)]
})]
</div> 
]

[(#REM)
	Cette balise permet de deporter les calculs lourds (indexation etc)
	dans une image cachee, ce qui evite de ralentir l'affichage des pages.
]#SPIP_CRON

Si le visiteur est connecté ou non c’est à dire si une session a été ouverte pour le visiteur, l’inclusion de login-logout.html permet d’activer via la balise #SESSION{id_auteur}, l’appel des icones et des liens correspondants au statut connecté / pas connecté.

Code de login-logout.html

[(#SESSION{id_auteur}|?{' '})
		<a href="#URL_LOGOUT" title="deconnexion">
		<img src="[(#CHEMIN{images/deconnecter-24.gif})]" width="20" height="18" alt="deconnexion" />
		</a>
]


[(#SESSION{id_auteur}|?{'',
&nbsp;
})
		<a href="[(#SELF|parametre_url{connexion,y})]" title="modifier directement la page" rel="nofollow">
		<img src="[(#CHEMIN{images/crayon.png})]" width="20" height="20" class="format_png" alt="Connexion" />
		</a>]

Dans les pages article, rubrique ...

Dans les pages ou vous avez un include de inc-pied si vous souhaitez utiliser cette contrib, vous devez modifier une ligne de code pour transmettre les valeurs des variables, par exemple dans article.html à la place de

[(#REM) Pied de page ]
	<INCLURE{fond=inc-pied}{skel=#SQUELETTE}>


vous mettez

[(#REM) Pied de page ]
<INCLURE{fond=inc-pied}{skel=#SQUELETTE}{connexion}{id_article}>

Toujours sur le principe de duplication des fichiers dist vers le dossier squelettes.

Pour aller plus loin

Dans le style CSS

Modifiez votre feuille de style css pour afficher le bloc d’identification sur votre page en position:absolute;!

<style>#connexion{position:absolute; top:150px; left:150px; width:400px; font-size:0.8em; z-index:1000; background-color:#FFCC66;}</style>

Pour pousser un peu plus, vous pouvez aussi créer un dossier balise dans votre dossier squelettes et y recopier depuis ecrire/balise/login_public.php en modifiant la ligne de rappel ..par ici... Ligne 72 de login_public.php

// return http_href($cible, _T('login_par_ici'));
    return http_href($cible, _T(' '));

Conclusion

J’espère que cette contribution aidera la prise en main de rédacteurs peu amènes à passer par l’interface privé pour utiliser les superbes fonctionnalités de crayons.

Vous trouverez un zip joint pour tester les 3 fichiers nécessaires qui sont à mettre dans un dossier squelettes avec une image de crayon, l’autre image (logout deconnecter-24.gif) existant déjà dans votre site SPIP.

Le test sur ces fichiers se fera en appelant la page
http://example.org/spip.php?page=article-login-logout&id_article=xx