<?xml
version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom"
>

<channel xml:lang="fr">
	<title>Geekographie Ma&#239;eulesque</title>
	<link>https://geekographie.maieul.net/</link>
	<description>Ce site est consacr&#233; &#224; quelques unes des mes geekeries. J'y donne des conseils, des r&#233;flexions, sur les logiciels et les langages que je connais ou que j'apprends.
J'y parle notamment de l'usage de LaTeX en sciences humaines et sociales, en particulier pour la gestion de la bibliographie.
Le contenu peut &#234;tre sous la forme d'articles d&#233;taill&#233;s ou de simples notes.
L'ensemble du contenu est, sauf pr&#233;cision contraire, sous licence Cr&#233;ative Commons Paternit&#233;-Partage des Conditions Initiales &#224; l'identique France.</description>
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>
	<atom:link href="https://geekographie.maieul.net/spip.php?id_rubrique=5&amp;page=backend" rel="self" type="application/rss+xml" />




<item xml:lang="fr">
		<title>G&#233;rer le statut des articles directement depuis le site public sous SPIP 3</title>
		<link>https://geekographie.maieul.net/97</link>
		<guid isPermaLink="true">https://geekographie.maieul.net/97</guid>
		<dc:date>2012-08-12T19:43:32Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Ma&#239;eul</dc:creator>



		<description>
&lt;p&gt;J'avais publi&#233; il y a plus d'un an et demi un article sur la mani&#232;re de g&#233;rer directement le statut des articles depuis le site public. Voici son adaptation pour &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; 3. Comme vous pourrez le voir, le code est beaucoup plus simple. Il suffit en effet de mettre dans son squelette, dans la boucle (&lt;span class=&#034;caps&#034;&gt;ARTICLES&lt;/span&gt;)&#160;: [(#AUTORISERpublier,article,#ID_ARTICLE|oui) #FORMULAIRE_INSTITUER_OBJETarticle,#ID_ARTICLE,#&lt;span class=&#034;caps&#034;&gt;SELF&lt;/span&gt;|parametre_urlvar_mode,preview ] L. 1 et 3&#160;: On v&#233;rifie que la personne connect&#233;e&#160;(&#8230;)&lt;/p&gt;


-
&lt;a href="https://geekographie.maieul.net/Formulaires" rel="directory"&gt;Formulaires&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;J'avais publi&#233; il y a plus d'un an et demi un article sur la mani&#232;re de &lt;a href='https://geekographie.maieul.net/10' class=&#034;spip_in&#034;&gt;g&#233;rer directement le statut des articles depuis le site public&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Voici son adaptation pour &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; 3. Comme vous pourrez le voir, le code est beaucoup plus simple.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Il suffit en effet de mettre dans son squelette, dans la boucle &lt;code&gt;(ARTICLES)&lt;/code&gt;&#160;:&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class='spip'&gt;&lt;code&gt;[(#AUTORISER{publier,article,#ID_ARTICLE}|oui)
#FORMULAIRE_INSTITUER_OBJET{article,#ID_ARTICLE,#SELF|parametre_url{var_mode,preview}}
]&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; L. 1 et 3&#160;: On v&#233;rifie que la personne connect&#233;e &#224; bien le droit de publier l'article en question. Voir la documentation sur &lt;a href=&#034;http://programmer.spip.net/La-balise-AUTORISER&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;&lt;code&gt;#AUTORISER&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li&gt; L. 2&#160;: appel du formulaire permettant de changer le statut d'un objet. Ici on pr&#233;cise que l'on veut pouvoir modifier le statut d'un article, dont l'identifiant est &lt;code&gt;#ID_ARTICLE&lt;/code&gt; Le troisi&#232;me argument &lt;code&gt;SELF|parametre_url{var_mode,preview}&lt;/code&gt; sert &#224; ne pas tomber sur une erreur 404 si on d&#233;publie l'article&#160;: il indique qu'apr&#232;s l'ex&#233;cution du formulaire on retourne sur la m&#234;me page, en mode &lt;code&gt;previsualisation&lt;/code&gt;&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb1&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;Attention, cela ne fonctionne pas si l'on passe le statut &#224; &#171;&#160;refus&#233;&#160;&#187; ou &#171; (&#8230;)&#034; id=&#034;nh1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#034;nb1&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh1&#034; class=&#034;spip_note&#034; title=&#034;Notes 1&#034; rev=&#034;appendix&#034;&gt;1&lt;/a&gt;] &lt;/span&gt;Attention, cela ne fonctionne pas si l'on passe le statut &#224; &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;refus&#233;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187; ou &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#224; la poubelle&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>G&#233;rer le statut des articles directement depuis le site public</title>
		<link>https://geekographie.maieul.net/10</link>
		<guid isPermaLink="true">https://geekographie.maieul.net/10</guid>
		<dc:date>2010-12-07T23:20:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Ma&#239;eul</dc:creator>



		<description>
&lt;p&gt;J'utilise sur ce site le plugin de pr&#233;visualisation en cours de r&#233;daction, qui me permet de voir le r&#233;sultat de ma r&#233;daction sur le site public, avant que l'article soit publi&#233;. Du coup j'ai voulu pouvoir changer le statut de l'article directement sur le site public. Remarque&#160;: sous &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; 3, c'est beaucoup plus simple. Pour ce faire, je me suis rendu dans l'espace priv&#233; de spip, et j'ai ajout&#233; un &amp;var_mode=inclure sur la page d'un article. J'ai ainsi reper&#233; que le bloc qui&#160;(&#8230;)&lt;/p&gt;


-
&lt;a href="https://geekographie.maieul.net/Autorisation" rel="directory"&gt;Autorisation&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;J'utilise sur ce site le plugin &lt;a href=&#034;http://www.spip-contrib.net/Previsualiser-en-cours-de&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;de pr&#233;visualisation en cours de r&#233;daction&lt;/a&gt;, qui me permet de voir le r&#233;sultat de ma r&#233;daction sur le site public, avant que l'article soit publi&#233;.&lt;/p&gt;
&lt;p&gt;Du coup j'ai voulu pouvoir changer le statut de l'article directement sur le site public.&lt;/p&gt;
&lt;p&gt;Remarque&#160;: sous &lt;a href='https://geekographie.maieul.net/97' class=&#034;spip_in&#034;&gt;&lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; 3, c'est beaucoup plus simple&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Pour ce faire, je me suis rendu dans l'espace priv&#233; de spip, et j'ai ajout&#233; un &lt;code&gt;&amp;var_mode=inclure&lt;/code&gt; sur la page d'un article. J'ai ainsi reper&#233; que le bloc qui m'int&#233;ressait se situait dans &lt;code&gt;prive/infos/article.html&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;En ouvrant ce fichier, j'ai reper&#233; la ligne qui m'int&#233;ressait&#160;:&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class='spip'&gt;&lt;code&gt;[(#ID_ARTICLE|instituer_article{#ID_RUBRIQUE,#STATUT})]&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Cela affiche le bloc de changement de statut.&lt;/p&gt;
&lt;p&gt;J'ai donc recopier cela dans mon squelette &lt;code&gt;article.html&lt;/code&gt;&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb2-1&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;En fait comme j'ai un squelette &#171;&#160;Z&#160;&#187;, j'ai mis dans , mais cela ne change (&#8230;)&#034; id=&#034;nh2-1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Mais comme je ne voulais pas que n'importe qui voit ce bloc, j'ai test&#233; l'autorisation&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class='spip'&gt;&lt;code&gt;[(#AUTORISER{instituer,article,#ID_ARTICLE}|oui) [(#ID_ARTICLE|instituer_article{#ID_RUBRIQUE,#STATUT})]]&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Seulement voil&#224;, le filtre &lt;code&gt;|instituer_article&lt;/code&gt; n'existe pas dans tout &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt;. Il est d&#233;fini dans le fichier &lt;code&gt;prive/statuts/article_fonctions.php&lt;/code&gt;, ce qui veut dire qu'il n'existe que pour le squelette &lt;code&gt;prive/infos/article.html&lt;/code&gt;.&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class='php'&gt;&lt;code&gt;function instituer_article($id_article, $id_rubrique, $statut){ $instituer_article = charger_fonction('instituer_article', 'inc'); return $instituer_article($id_article, $statut, $id_rubrique);
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;J'ai donc recopi&#233; cela dans un fichier &lt;code&gt;article_fonctions.php&lt;/code&gt;&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb2-2&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;En fait .&#034; id=&#034;nh2-2&#034;&gt;2&lt;/a&gt;]&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Le probl&#232;me est que la fonction &lt;code&gt;instituer_article()&lt;/code&gt; renvoi des liens dans l'espace priv&#233;, et non le lien de l'article dans l'espace public. Du coup, apr&#232;s avoir chang&#233; le statut d'un article, je me retrouvais sur page 404 du type&#160;: &lt;code&gt;http://http://geekographie.maieul.net/ecrire/ecrire/?exec=articles&amp;id_article=10&lt;/code&gt;, ce qui &#233;tait g&#233;nant.&lt;/p&gt;
&lt;p&gt;Comme il n'existe pas de pipeline pour cette fonctions, j'ai du faire quelquechose de &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;sale&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;, en modifiant son r&#233;sultat.&lt;/p&gt;
&lt;p&gt;Et du coup mon fichier &lt;code&gt;articles_fonctions.php&lt;/code&gt; contient&#160;:&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class='spip'&gt;&lt;code&gt;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));
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Par ailleurs, la fonction &lt;code&gt;instituer_article&lt;/code&gt; de &lt;code&gt;inc&lt;/code&gt; contient un appel &#224; fonction &lt;code&gt;puce_statut()&lt;/code&gt;. Il a donc fallu que je rajoute une inclusion suppl&#233;mentaire auparavent.&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class='php'&gt;&lt;code&gt;include_spip('inc/puce_statut');&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Et voil&#224;, cela fonctionne&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;! Je peux modifier le statut d'un article depuis le site public, mais les autres ne voient pas ce bouton.&lt;/p&gt;
&lt;h2 class=&#034;h2&#034;&gt;En r&#233;sum&#233;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Dans le fichier &lt;code&gt;article.html&lt;/code&gt;, &#224; l'endroit souhait&#233;&lt;/strong&gt;&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class='spip'&gt;&lt;code&gt;[(#AUTORISER{instituer,article,#ID_ARTICLE}|oui) [(#ID_ARTICLE|instituer_article{#ID_RUBRIQUE,#STATUT})]]&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Dans le fichier article_fonctions.php&lt;/strong&gt;&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class='php'&gt;&lt;code&gt;&lt;?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));
}
?&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div &lt;div class='rss_ps'&gt;&lt;p&gt;&#201;videment, avec la balise #&lt;span class=&#034;caps&#034;&gt;AUTORISER&lt;/span&gt;, cela double le cache de &lt;code&gt;article/extra.html&lt;/code&gt;&#160;: un cache pour moi connect&#233;, un pour les visiteurs non connect&#233;s.&lt;/p&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#034;nb2-1&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh2-1&#034; class=&#034;spip_note&#034; title=&#034;Notes 2-1&#034; rev=&#034;appendix&#034;&gt;1&lt;/a&gt;] &lt;/span&gt;En fait comme j'ai un squelette &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;Z&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;, j'ai mis dans &lt;code&gt;extra/article.html&lt;/code&gt;, mais cela ne change pas grand chose.&lt;/p&gt;
&lt;/div&gt;&lt;div id=&#034;nb2-2&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh2-2&#034; class=&#034;spip_note&#034; title=&#034;Notes 2-2&#034; rev=&#034;appendix&#034;&gt;2&lt;/a&gt;] &lt;/span&gt;En fait &lt;code&gt;extra/article_fonctions.php&lt;/code&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		</content:encoded>


		

	</item>



</channel>

</rss>
