actions redacteur depuis une page publique

bonjour, j’utilise le plugins « emplois »
j’ai configuré un rédacteur spécifique qui possède des droits d’administrateur restreint pour la rubrique qui contient les différentes annonces d’emplois rédigées par ce rédacteur.
Ce rédacteur, depuis son interface privée, peut dans le formulaire des emplois changer le statut des annonces et notamment « valider » une offre.

Cependant, pour des raisons pratiques, je souhaite que ce rédacteur puisse « editer, supprimer ou valider » ses annonces depuis le site public, j’ai mis en service des articles et squeletes publics dans une rubrique restreinte à ce rédacteur.
( ? qui je crois avoir compris qu’ils ne puissent pas être utiliser par les visiteurs ? )

J’ai donc créé un article appelant un squelette affichant les offres d’emplois en cours

[(#REM) squelettes/content/lister_offres.html ]
<B_offres>

	<tr>
	<td>#STATUT</td>
	<td><a href="[(#URL_PAGE{supprimer_offre,#ARRAY{id_offre,#ID_OFFRE}})]" class="btn">Supprimer</a></div> </:emplois:supprimer_offre:></td>
	<td><a href="[(#URL_PAGE{editer_offre,#ARRAY{id_offre,#ID_OFFRE}})]" class="btn">Editer</a></div></:emplois:editer_offre:></td>
	<td><a href="[(#URL_PAGE{valider_offre,#ARRAY{id_offre,#ID_OFFRE}})]" class="btn">Valider</a></div></:emplois:editer_offre:></td>
	<td>#ID_OFFRE</td>
	<td>#TITRE</td>
	<td>[(#DATE_FIN|affdate{'j-m-Y'})]</td>
	</tr>
</BOUCLE_offres>	
</tbody>

</table>
[(#REM) ajouter une offre ]

</B_offres>

Cependant, malgré que le rédacteur soit connecté, depuis le site public
je ne comprends pas comment peut-il changer le statut de l’offre, en effet s’il peut bien modifier le contenu d’une offre, celle-ci après modification passe en statut « prop »

doc ou exemple serait bien venu

Merci

<:emplois:statut:> <:emplois:action_supprimer:> <:emplois:action_modifier:> <:emplois:action_valider:> <:emplois:numero:> <:emplois:titre:> <:emplois:date_cloture:>

Bonjour,

ta question concerne les autorisations.
Elles sont définies dans le plugin Emplois dans le fichier emplois_autorisations.php.
Si tu as besoin de doc à ce propos, tu en trouveras ici :

Peetdu

Bonjour peetdu
Merci de ta réponse, j’avais un peu progressé sur ces autorisations et donc ma gestion des offres fonctionnent comme je le souhaite.

Cependant j’ai touché aux fichiers du plugins (emplois_autorisations.php entre autres), quelle serait la bonne pratique pour prendre en charge mes autorisations sans éditer les fichiers du plugins ?

Merci

Hello,

Voir Surcharger une fonction _dist - Programmer avec SPIP 4.0

1 « J'aime »

hello,
/o\ c’est hard … pour la surcharge des fonctions ça devrait le faire, merci
par contre j’ai voulu simplifier mes traitement avec la balise #BOUTON_ACTION

donc voilà j’ai une page lister_offres depuis laquelle je peux « éditer » les offres (reste à voir la surcharge des fonctions du plugins… suivant tes remarques)

[(#REM) squelettes/content/lister_offres.html ]
<B_offres>
<div>
	<table class='spip liste'>
	<thead>
		<tr class='first_row'>
			<th class='action' scope='col'><:emplois:statut:></th>
			<th class='action' scope='col'><:emplois:action_modifier:></th>
			<th class='action' scope='col'><:emplois:action_supprimer:></th>
			<th class='action' scope='col'><:emplois:action_valider:></th>
			<th class='id' scope='col'><:emplois:numero:></th>
			<th class='titre' scope='col'><:emplois:titre:></th>
			<th class='cloture' scope='col'><:emplois:date_cloture:></th>
		</tr>
	</thead>
	<tbody>
	<BOUCLE_offres(OFFRES){tout}>

		<tr>
		<td>[(#STATUT|=={publie}|oui) <span class="badge badge-success">En ligne</span>][(#STATUT|=={poubelle}|oui) <span class="badge badge-dark">Poubelle</span>]</td>
		<td><a href="[(#URL_PAGE{editer_offre,#ARRAY{id_offre,#ID_OFFRE}})]" class="btn">Editer</a></div></:emplois:editer_offre:></td>
		<td>[(#STATUT|=={poubelle}|non) <a href="[(#URL_PAGE{supprimer_offre,#ARRAY{id_offre,#ID_OFFRE}})]" class="btn">Supprimer</a></div> </:emplois:supprimer_offre:>]</td>
		<td>[(#STATUT|=={publie}|non) <a href="[(#URL_PAGE{valider_offre,#ARRAY{id_offre,#ID_OFFRE}})]" class="btn">Publier</a></div></:emplois:editer_offre:>]</td>
		<td>#ID_OFFRE</td>
		<td>#TITRE</td>
		<td>[(#DATE_FIN|affdate{'j-m-Y'})]</td>
		</tr>
	</BOUCLE_offres>	
	</tbody>

	</table>
</div>
[(#REM) ajouter une offre ]
<div><a href="[(#URL_PAGE{editer_offre})]" class="btn">Ajouter une offre</a></div>

</B_offres>

Par contre je pensais pouvoir utiliser la balise #BOUTON_ACTION pour supprimer ou publier qui consiste au changement de statut de la table offres
qquechose comme
sql_updateq('spip_offres', array('statut' => 'publie'), 'id_offre='.intval($id_offre));

donc j’ai créé le squelette content/supprimer_offre.html

<BOUCLE_principale(OFFRES){id_offre}>
	<h1 class="#EDIT{titre} surlignable entry-title">[(#LOGO_OFFRE|image_reduire{150,*}) ]#TITRE</h1>
	<h2 class="#EDIT{texte_offre} surlignable entry-title">Descriptif</h2>
		[<div class="#EDIT{texte} texte surlignable clearfix">(#TEXTE_OFFRE|image_reduire{672,*})</div>]
	<h2 class="#EDIT{texte_offre} surlignable entry-title">Profil recherché</h2>			
		[<div class="#EDIT{texte} texte surlignable clearfix">(#PROFIL)</div>]
	<div>[(#EMETTEUR) - ]<time pubdate>[(#DATE|affdate)]</time></div>
		[<div><:offre:champ_date_fin_label:> : <time pubdate>(#DATE_FIN|affdate)</time></div>]
				
	[(#REM) Gestion des documents ]
		[(#INCLURE{fond=inclure/document_emploi,id_offre, titre=#TITRE, env})]
		[<div class="notes"><hr />(#NOTES)</div>]

[(#REM) #SESSION{statut}|=={0minirezo}|oui) #FORMULAIRE_SUPPRIMER_OFFRE{#ENV{id_offre}} ]
[(#AUTORISER{modifier,offre,#ID_OFFRE})
[(#BOUTON_ACTION{<:offre:icone_supprimer_offre:>,#URL_ACTION_AUTEUR{supprimer_offre,#ID_OFFRE,#SELF}})]
]

	<hr/>
</BOUCLE_principale>

qui affiche l’offre concernée avec un bouton pour la supprimer , mais j’ai une erreur

Fichier supprimer_offre introuvable malgré que j’ai essayé de créer des fichiers (supprimer_offre.php ou html ) dans les dossiers action (du plugin ou de squelettes…)

Donc mes questions
? la piste BOUTON_ACTION est-elle la bonne piste ?
si oui où créer ce(s) fichier(s) de fonction ?

merci encore

Hello Marc,

comme ça je dirais oui, BOUTON_ACTION est une bonne piste.
Après comme d’hab, voir la doc

Hello Peetdu,

Un dernier conseil :wink:
donc mon bouton action, dans la page où est affichée l’offre d’emploi visée, appelle l’action « offre_supprimer »
pour laquelle je veux mettre à jour le statut par

dans action/offre_supprimer.php

/* traitements supplémentaires si formulaire public */
if (!test_espace_prive()) {
  if ( autoriser('supprimer','offre', $id_offre) ) {
    sql_updateq('spip_offres', array('statut' => 'poubelle'), 'id_offre='.intval($id_offre));
...

les autorisations semblent correctes, mais le champ dans la base offre n’est pas modifiée :frowning:

le log partiel

2022-03-31 22:44:32 82.66.71.116 (pid 45230) ecrire/inc_version.php:L546:include_once()::Pub:debug: POST spip.php?action=offre_supprimer&amp;arg=1&amp;hash=8a24be9a9d282b62a61bb7b0a683ebe09ceaa2c0&amp;redirect=spip.php%3Fpage%3Dlister_offres - config/connect.php
2022-03-31 22:44:32 82.66.71.116 (pid 45230) ecrire/inc/autoriser.php:L162:autoriser_dist()::Pub:debug: autoriser supprimer offre $id_offre (pjpdec) ?
2022-03-31 22:44:32 82.66.71.116 (pid 45230) ecrire/inc/autoriser.php:L207:autoriser_dist()::Pub:debug: autoriser_offre_supprimer_dist(supprimer, offre, $id_offre, pjpdec) : OK
2022-03-31 22:44:32 82.66.71.116 (pid 45230) ecrire/inc/headers.php:L111:redirige_par_entete()::Pub:info: redirige 302: https://aof.plandecuques.fr/spip.php?page=lister_offres

qu’est-ce qui coince ? dois-je réouvrir la base ?..

encore merci