#FORMULAIRE_EDITER_ARTICLE statut publié

Bonjour

J'ai installé un formulaire pour l'édition d'article du côté public dans
une sous-sous-rubrique (avec composition, rubrique_questionnaire.html et
.xml)

[(#SESSION{id_auteur}|oui)
#FORMULAIRE_EDITER_ARTICLE{#ID_ARTICLE, #ID_RUBRIQUE, #SELF}
]

et je voudrais que:

1. L'article soit publié directement dans la sous-sous-rubrique ou le
formulaire est installé sans que l'administrateur restreint ait à
choisir cette rubrique

2. Que l'article ait tout de suite le statut publié et s'affiche dans la
liste des articles de la rubrique

3. Que l'article ait automatiquement le mot-clé «question_on»

Merci

RP

Le 22/02/2018 à 22:16, Renée Picard a écrit :

Bonjour

J'ai installé un formulaire pour l'édition d'article du côté public dans
une sous-sous-rubrique (avec composition, rubrique_questionnaire.html et
.xml)

[(#SESSION{id_auteur}|oui)
#FORMULAIRE_EDITER_ARTICLE{#ID_ARTICLE, #ID_RUBRIQUE, #SELF}
   ]

et je voudrais que:

1. L'article soit publié directement dans la sous-sous-rubrique ou le
formulaire est installé sans que l'administrateur restreint ait à
choisir cette rubrique

2. Que l'article ait tout de suite le statut publié et s'affiche dans la
liste des articles de la rubrique

3. Que l'article ait automatiquement le mot-clé «question_on»

Merci

RP

pour le 1 normalement cela devraitr deja être le cas
pour 2 et 3 la seule solution est d'utiliser la pipeline _traiter, qui permettra, après l'enregistrement de l'article en base
1. De etester la rubrique de l'article
2. le cas échéant de publier et d'ajouter le mot clef

Merci

Je suis en SPIP 3.2.0

Je viens d'aller lire pipeline _traiter
https://programmer.spip.net/Effectuer-des-traitements
Je ne comprends pas comment faire ?

J'ai trouvé ceci
https://www.spip.net/fr_article3896.html#AUTORISER

dans config/ mes_options.php

// Utilisation du pipeline pre_insertion
$GLOBALS['spip_pipeline']['pre_insertion'] .= "|ma_fonction_pre_insertion";

// Les nouveaux articles seront automatiquement publiés
function ma_fonction_pre_insertion($flux){
if ($flux['args']['table']=='spip_articles'){
   $flux['data']['statut'] = 'publie';
}
return $flux;
}

Mais lorsque je fais cela j'ai cette écriture en haut de toutes les pages et cela ne fonctionne pas

Je voudrais que tous les nouveaux articles (par un administrateur restreint) soient publiés directement dans la rubrique où est placé le formulaire
Le 18-02-22 à 16:45, Maïeul a écrit :
Le 22/02/2018 à 22:16, Renée Picard a écrit :
Bonjour

J'ai installé un formulaire pour l'édition d'article du côté public dans
une sous-sous-rubrique (avec composition, rubrique_questionnaire.html et
.xml)

[(#SESSION{id_auteur}|oui)
#FORMULAIRE_EDITER_ARTICLE{#ID_ARTICLE, #ID_RUBRIQUE, #SELF}
   ]

et je voudrais que:

1. L'article soit publié directement dans la sous-sous-rubrique ou le
formulaire est installé sans que l'administrateur restreint ait à
choisir cette rubrique

2. Que l'article ait tout de suite le statut publié et s'affiche dans la
liste des articles de la rubrique

3. Que l'article ait automatiquement le mot-clé «question_on»

Merci

RP

pour le 1 normalement cela devraitr deja être le cas
pour 2 et 3 la seule solution est d'utiliser la pipeline _traiter, qui permettra, après l'enregistrement de l'article en base
1. De etester la rubrique de l'article
2. le cas échéant de publier et d'ajouter le mot clef

_______________________________________________
liste spip
spip@rezo.net<mailto:spip@rezo.net> - désabonnement : envoyer un mail à spip-off@rezo.net<mailto:spip-off@rezo.net>

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc
.

J'avais oublié le <?php devant le code

Donc avec <?php
// Utilisation du pipeline pre_insertion
$GLOBALS['spip_pipeline']['pre_insertion'] .= "|ma_fonction_pre_insertion";

// Les nouveaux articles seront automatiquement publiés
function ma_fonction_pre_insertion($flux){
if ($flux['args']['table']=='spip_articles'){
   $flux['data']['statut'] = 'publie';
}
return $flux;
}
L'article est directement publiée

Est-ce que c'est correct de faire cela comme cela?
Merci
RP

Le 18-02-22 à 17:22, Renée Picard a écrit :
Merci

Je suis en SPIP 3.2.0

Je viens d'aller lire pipeline _traiter
https://programmer.spip.net/Effectuer-des-traitements
Je ne comprends pas comment faire ?

J'ai trouvé ceci
https://www.spip.net/fr_article3896.html#AUTORISER

dans config/ mes_options.php

// Utilisation du pipeline pre_insertion
$GLOBALS['spip_pipeline']['pre_insertion'] .= "|ma_fonction_pre_insertion";

// Les nouveaux articles seront automatiquement publiés
function ma_fonction_pre_insertion($flux){
if ($flux['args']['table']=='spip_articles'){
   $flux['data']['statut'] = 'publie';
}
return $flux;
}

Mais lorsque je fais cela j'ai cette écriture en haut de toutes les pages et cela ne fonctionne pas

Je voudrais que tous les nouveaux articles (par un administrateur restreint) soient publiés directement dans la rubrique où est placé le formulaire
Le 18-02-22 à 16:45, Maïeul a écrit :
Le 22/02/2018 à 22:16, Renée Picard a écrit :
Bonjour

J'ai installé un formulaire pour l'édition d'article du côté public dans
une sous-sous-rubrique (avec composition, rubrique_questionnaire.html et
.xml)

[(#SESSION{id_auteur}|oui)
#FORMULAIRE_EDITER_ARTICLE{#ID_ARTICLE, #ID_RUBRIQUE, #SELF}
   ]

et je voudrais que:

1. L'article soit publié directement dans la sous-sous-rubrique ou le
formulaire est installé sans que l'administrateur restreint ait à
choisir cette rubrique

2. Que l'article ait tout de suite le statut publié et s'affiche dans la
liste des articles de la rubrique

3. Que l'article ait automatiquement le mot-clé «question_on»

Merci

RP

pour le 1 normalement cela devraitr deja être le cas
pour 2 et 3 la seule solution est d'utiliser la pipeline _traiter, qui permettra, après l'enregistrement de l'article en base
1. De etester la rubrique de l'article
2. le cas échéant de publier et d'ajouter le mot clef

_______________________________________________
liste spip
spip@rezo.net<mailto:spip@rezo.net> - désabonnement : envoyer un mail à spip-off@rezo.net<mailto:spip-off@rezo.net>

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc
.

_______________________________________________
liste spip
spip@rezo.net<mailto:spip@rezo.net> - désabonnement : envoyer un mail à spip-off@rezo.net<mailto:spip-off@rezo.net>

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

Le 23/02/2018 à 03:50, Renée Picard a écrit :

J'avais oublié le <?php devant le code

Donc avec <?php
// Utilisation du pipeline pre_insertion
$GLOBALS['spip_pipeline']['pre_insertion'] .= "|ma_fonction_pre_insertion";

// Les nouveaux articles seront automatiquement publiés
function ma_fonction_pre_insertion($flux){
if ($flux['args']['table']=='spip_articles'){
$flux['data']['statut'] = 'publie';
}
return $flux;
}
L'article est directement publiée

Est-ce que c'est correct de faire cela comme cela?
Merci
RP

tu a la base, il faut juste que tu ajoute un test pour ne faire ton $flux['data']['statut'] = 'publie'; que si c'est dans la rubrique qui t'intéresse.

C'est pour un administrateur restreint
J'ai mis ceci dans le squelette de la rubrique
[(#SESSION{id_auteur}|oui)
#FORMULAIRE_EDITER_ARTICLE{#ID_ARTICLE, #ID_RUBRIQUE, #SELF}
]

Pour ce qui est du php, je n'y comprends rien.
Il est donc très difficile d'écrire le code.
Je suis bonne à faire du copier coller lorsque je comprends que le code
va générer ce que je veux, code glâné sur le forum de spip et ici.

Le 18-02-23 à 04:41, Maïeul a écrit :

Le 23/02/2018 à 03:50, Renée Picard a écrit :

J'avais oublié le <?php devant le code

Donc avec <?php
// Utilisation du pipeline pre_insertion
$GLOBALS['spip_pipeline']['pre_insertion'] .=
"|ma_fonction_pre_insertion";

// Les nouveaux articles seront automatiquement publiés
function ma_fonction_pre_insertion($flux){
if ($flux['args']['table']=='spip_articles'){
$flux['data']['statut'] = 'publie';
}
return $flux;
}
L'article est directement publiée

Est-ce que c'est correct de faire cela comme cela?
Merci
RP

tu a la base, il faut juste que tu ajoute un test pour ne faire ton
$flux['data']['statut'] = 'publie'; que si c'est dans la rubrique qui
t'intéresse.

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc
.

Je pense que ce sera mieux protégé avec ceci:

[(#SESSION{statut}|=={0minirezo}|oui)
#FORMULAIRE_EDITER_ARTICLE{#ID_ARTICLE, #ID_RUBRIQUE, #SELF}
]

Le 18-02-23 à 04:41, Maïeul a écrit :

Le 23/02/2018 à 03:50, Renée Picard a écrit :

J'avais oublié le <?php devant le code

Donc avec <?php
// Utilisation du pipeline pre_insertion
$GLOBALS['spip_pipeline']['pre_insertion'] .=
"|ma_fonction_pre_insertion";

// Les nouveaux articles seront automatiquement publiés
function ma_fonction_pre_insertion($flux){
if ($flux['args']['table']=='spip_articles'){
$flux['data']['statut'] = 'publie';
}
return $flux;
}
L'article est directement publiée

Est-ce que c'est correct de faire cela comme cela?
Merci
RP

tu a la base, il faut juste que tu ajoute un test pour ne faire ton
$flux['data']['statut'] = 'publie'; que si c'est dans la rubrique qui
t'intéresse.

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc
.

Ce code entre en conflit avec DUPLICATOR
DUPLICATOR duplique bien tout le contenu de la rubrique mais la
duplication n'est pas publié en ligne
Sur une discussion de Plugin Duplicator - SPIP-Contrib il est
écrit de prendre le code de
https://core.spip.net/projects/spip/repository/entry/spip/ecrire/action/editer_article.php#L278
J'ai donc mis ceci dans mes options.php
<?php
function instituer_article($id_article, $c, $calcul_rub = true) {
return article_instituer($id_article, $c, $calcul_rub);
}

J'obtiens une erreur 500 lorsque j'essaie de dupliquer

Le 18-02-23 à 11:23, Renée Picard a écrit :

Donc avec <?php
// Utilisation du pipeline pre_insertion
$GLOBALS['spip_pipeline']['pre_insertion'] .=
"|ma_fonction_pre_insertion";

// Les nouveaux articles seront automatiquement publiés
function ma_fonction_pre_insertion($flux){
if ($flux['args']['table']=='spip_articles'){
$flux['data']['statut'] = 'publie';
}
return $flux;
}
L'article est directement publiée

Le 18-02-23 à 11:23, Renée Picard a écrit :

[(#SESSION{statut}|=={0minirezo}|oui)
#FORMULAIRE_EDITER_ARTICLE{#ID_ARTICLE, #ID_RUBRIQUE, #SELF}

ou est-ce ceci à mettre dans mes_options ?

<?php
// Utilisation du pipeline pre_insertion
$GLOBALS['spip_pipeline']['pre_insertion'] .=
"|ma_fonction_pre_insertion";

// Les nouveaux articles seront automatiquement publiés
function ma_fonction_pre_insertion($flux){
if ($flux['args']['table']=='spip_articles'){
$flux['data']['statut'] = 'publie';
}
return $flux;
}
function autoriser_ecrire($faire, $type, $id, $qui, $opt) {
return in_array($qui['statut'], array('0minirezo'));
}

Le 23/02/2018 à 20:26, Renée Picard a écrit :

Ce code entre en conflit avec DUPLICATOR
DUPLICATOR duplique bien tout le contenu de la rubrique mais la
duplication n'est pas publié en ligne
Sur une discussion de Plugin Duplicator - SPIP-Contrib il est
écrit de prendre le code de
https://core.spip.net/projects/spip/repository/entry/spip/ecrire/action/editer_article.php#L278
J'ai donc mis ceci dans mes options.php
<?php
function instituer_article($id_article, $c, $calcul_rub = true) {
   return article_instituer($id_article, $c, $calcul_rub);
}

J'obtiens une erreur 500 lorsque j'essaie de dupliquer

A mon avis il faut revoir la façon de publier l'article (à priori si on veut que Duplicator fasse correctement son travail)
et transformer ta fonction qui utilise le pipeline pre_insertion pour utiliser le pipeline post_insertion et avoir quelque chose comme ca :

<?php
// Utilisation du pipeline post_insertion
$GLOBALS['spip_pipeline']['post_insertion'] .=
"|ma_fonction_post_insertion";

// Les nouveaux articles seront automatiquement publiés
function ma_fonction_post_insertion($flux){
   if ($flux['args']['table']=='spip_articles'){
     include_spip('action/editer_article');
     article_instituer($flux['args']['id_objet'],array('statut' => 'publie', id_rubrique = $flux['data']['id_rubrique'], $calcul_rub = true);
   }
   return $flux;
}

désolé pour la mise en forme du code, je n'arrive pas à régler mon Thunderbird pour qu'il ne me retourne pas à la ligne trop tôt...

Le 24/02/2018 à 10:09, Chourak a écrit :

A mon avis il faut revoir la façon de publier l'article (à priori si on veut que Duplicator fasse correctement son travail)
et transformer ta fonction qui utilise le pipeline pre_insertion pour utiliser le pipeline post_insertion et avoir quelque chose comme ca :

<?php
// Utilisation du pipeline post_insertion
$GLOBALS['spip_pipeline']['post_insertion'] .=
"|ma_fonction_post_insertion";

// Les nouveaux articles seront automatiquement publiés
function ma_fonction_post_insertion($flux){
if ($flux['args']['table']=='spip_articles'){
include_spip('action/editer_article');
article_instituer($flux['args']['id_objet'],array('statut' => 'publie', id_rubrique = $flux['data']['id_rubrique'], $calcul_rub = true);
}
return $flux;
}

Le seul souci que ca peut amener en l'état c'est que TOUS les articles crées ou dupliqués vont être publiés automatiquement, si tu veux faire ca plus proprement il faudrait pouvoir cibler / filtrer (sur une rubrique ou un secteur par exemple)

Lorsque je mets cela dans config\mes_options.php je ne peux pas ouvrir
le site car il y a une erreur 500

Le 18-02-24 à 04:18, Chourak a écrit :

<?php
// Utilisation du pipeline post_insertion
$GLOBALS['spip_pipeline']['post_insertion'] .=
"|ma_fonction_post_insertion";

// Les nouveaux articles seront automatiquement publiés
function ma_fonction_post_insertion($flux){
if ($flux['args']['table']=='spip_articles'){
include_spip('action/editer_article');
article_instituer($flux['args']['id_objet'],array('statut' =>
'publie', id_rubrique = $flux['data']['id_rubrique'], $calcul_rub =
true);
}
return $flux;
}

Le 25/02/2018 à 16:31, Renée Picard a écrit :

Lorsque je mets cela dans config\mes_options.php je ne peux pas ouvrir
le site car il y a une erreur 500

Le 18-02-24 à 04:18, Chourak a écrit :

<?php
// Utilisation du pipeline post_insertion
$GLOBALS['spip_pipeline']['post_insertion'] .=
"|ma_fonction_post_insertion";

// Les nouveaux articles seront automatiquement publiés
function ma_fonction_post_insertion($flux){
if ($flux['args']['table']=='spip_articles'){
include_spip('action/editer_article');
article_instituer($flux['args']['id_objet'],array('statut' =>
'publie', id_rubrique = $flux['data']['id_rubrique'], $calcul_rub =
true);
}
return $flux;
}

Oui en fait j'ai fait une erreur dans le tableau passé dans la fonction article_instituer
correction :
function ma_fonction_post_insertion($flux){
      if ($flux['args']['table']=='spip_articles'){
        include_spip('action/editer_article');
        article_instituer($flux['args']['id_objet'],array('statut' =>
  'publie', 'id_rubrique' => $flux['data']['id_rubrique'], $calcul_rub =
  true);
      }
      return $flux;
  }

Le 18-02-25 à 10:58, Chourak a écrit :
J'ai mis ceci et il y a encore une erreur 500
<?php
// Utilisation du pipeline post_insertion
$GLOBALS['spip_pipeline']['post_insertion'] .=
"|ma_fonction_post_insertion";

function ma_fonction_post_insertion($flux){
if ($flux['args']['table']=='spip_articles'){
include_spip('action/editer_article');
article_instituer($flux['args']['id_objet'],array('statut' =>
'publie', 'id_rubrique' => $flux['data']['id_rubrique'], $calcul_rub =
true);
}
return $flux;