Gérer le statut des articles directement depuis le site public

mercredi 8 décembre 2010, mise à jour dimanche 12 août 2012, par Maïeul
Suivre la vie du site RSS 2.0 Forum

Cet article est obsolète. Soit qu’il existe une manière plus « moderne » de procéder, soit que j’ai trouvé une autre méthode plus appropriée.
Voyez plutôt la nouvelle version : Gérer le statut des articles directement depuis le site public sous SPIP 3.

J’utilise sur ce site le plugin de prévisualisation en cours de rédaction, qui me permet de voir le résultat de ma rédaction sur le site public, avant que l’article soit publié.

Du coup j’ai voulu pouvoir changer le statut de l’article directement sur le site public.

Remarque : sous SPIP 3, c’est beaucoup plus simple.

Pour ce faire, je me suis rendu dans l’espace privé de spip, et j’ai ajouté un &var_mode=inclure sur la page d’un article. J’ai ainsi reperé que le bloc qui m’intéressait se situait dans prive/infos/article.html.

En ouvrant ce fichier, j’ai reperé la ligne qui m’intéressait :

[(#ID_ARTICLE|instituer_article{#ID_RUBRIQUE,#STATUT})]

Cela affiche le bloc de changement de statut.

J’ai donc recopier cela dans mon squelette article.html [1].

Mais comme je ne voulais pas que n’importe qui voit ce bloc, j’ai testé l’autorisation

[(#AUTORISER{instituer,article,#ID_ARTICLE}|oui)
	[(#ID_ARTICLE|instituer_article{#ID_RUBRIQUE,#STATUT})]]

Seulement voilà, le filtre |instituer_article n’existe pas dans tout SPIP. Il est défini dans le fichier prive/statuts/article_fonctions.php, ce qui veut dire qu’il n’existe que pour le squelette prive/infos/article.html.

function instituer_article($id_article, $id_rubrique, $statut){
	$instituer_article = charger_fonction('instituer_article', 'inc');
	return $instituer_article($id_article, $statut,	$id_rubrique);
}

J’ai donc recopié cela dans un fichier article_fonctions.php [2]

Le problème est que la fonction instituer_article() renvoi des liens dans l’espace privé, et non le lien de l’article dans l’espace public. Du coup, après avoir changé le statut d’un article, je me retrouvais sur page 404 du type : http://http://geekographie.maieul.net/ecrire/ecrire/?exec=articles&id_article=10, ce qui était génant.

Comme il n’existe pas de pipeline pour cette fonctions, j’ai du faire quelquechose de « sale », en modifiant son résultat.

Et du coup mon fichier articles_fonctions.php contient :

function instituer_article($id_article, $id_rubrique, $statut){
	$instituer_article = charger_fonction('instituer_article', 'inc');
	return str_replace('ecrire%2Fecrire%2F%3Fexec%3Darticles%26id_article%3D','spip.php%3Farticle',$instituer_article($id_article, $statut,	$id_rubrique));
}

Par ailleurs, la fonction instituer_article de inc contient un appel à fonction puce_statut(). Il a donc fallu que je rajoute une inclusion supplémentaire auparavent.

include_spip('inc/puce_statut');

Et voilà, cela fonctionne ! Je peux modifier le statut d’un article depuis le site public, mais les autres ne voient pas ce bouton.

En résumé

Dans le fichier article.html, à l’endroit souhaité

[(#AUTORISER{instituer,article,#ID_ARTICLE}|oui)
	[(#ID_ARTICLE|instituer_article{#ID_RUBRIQUE,#STATUT})]]

Dans le fichier article_fonctions.php

<?php
include_spip('inc/puce_statut');
function instituer_article($id_article, $id_rubrique, $statut){
	$instituer_article = charger_fonction('instituer_article', 'inc');
	return str_replace('ecrire%2Fecrire%2F%3Fexec%3Darticles%26id_article%3D','spip.php%3Farticle',$instituer_article($id_article, $statut,	$id_rubrique));
}
?>

P.-S.

Évidement, avec la balise #AUTORISER, cela double le cache de article/extra.html : un cache pour moi connecté, un pour les visiteurs non connectés.

Notes

[1En fait comme j’ai un squelette « Z », j’ai mis dans extra/article.html, mais cela ne change pas grand chose.

[2En fait extra/article_fonctions.php.

Qui êtes-vous ?

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.

Acheter XeLaTeX appliqué aux sciences humaines

À propos

Titulaire d’un doctorat en théologie et d’un doctorat en histoire, sous la direction conjointe de Frédéric Amsler et d’Élisabeth_Malamut, je commence à partir du 1er août 2017 un travail d’édition critique des Actes de Barnabé.

Dans le cadre de la rédaction de mon mémoire de master puis de ma thèse de doctorat, j’ai été emmené à utiliser LaTeX, et j’ai donc décider de partager mes techniques. En effet, au cours de mes premiers apprentissages, j’ai découvert que les ressources indiquant les outils pour l’utilisation de LaTeX en sciences humaines étaient rares. Ceci m’a conduit à maintenir ou créer plusieurs packages LaTeX et à donner plusieurs formations.

J’ai reçu en 2018 le prix DANTE e.V pour mon travail autour de LaTeX, en particulier autour de reledmac et reledpar.

Par ailleurs, je suis membre actif de la communauté SPIP, au sein de laquelle j’administre le site Spip-Contrib. Je propose sur ce site quelques notes sur SPIP, en général à destination de webmestre.

Il m’arrive également de faire un petit peu de Python, de temps en temps.

Enfin, je tiens un blog de réflexions politiques et religieuses.

Maïeul