Carnet Wiki

Astuces Actions et Boutons

Pour gérer des actions dans des pages de l’espace public et/ou des formulaires,
on utilise souvent des #BOUTON_ACTION.

-  Voir aussi #URL_ACTION_AUTEUR
-  Documentation : http://www.spip.net/fr_article4583.html
-  Codage d’une action, authentification et passage de paramètre à une action : https://programmer.spip.net/-Action-, https://programmer.spip.net/Les-act..., https://programmer.spip.net/Fonctio...

Cette page porte sur les actions et l’usage des balises #BOUTON_ACTION et URL_ACTION_AUTEUR

Rappel de syntaxe

 #BOUTON_ACTION { libellé, url, class ,message de confirmation,title,callback } 
Paramètre Description
$libelle texte du bouton
$url url d’action
$class class css a ajouter
$confirm message de confirmation oui/non avant l’action
$title info-bulle au survol
$callback callback js à appeler après confirmation éventuelle (si $confirm est non vide) et avant exécution de l’action. Si la callback renvoie false, elle annule le déclenchement de l’action

Exemples

Utilisation du callback

[(#BOUTON_ACTION{Demande de publication,
    #URL_ACTION_AUTEUR{demande_publi,#ENV{id_professionnel}},
    ajax btn-demande_publi,
    '',
    '',
    '(function(){jQuery(".btn-demande_publi").hide("slow", function(){jQuery(".demande_publi_ok").show(500);});return true;})()'})]

Supprimer un article
Cf http://forum.spip.net/fr_231977.html#forum231978 :

#URL_ACTION_AUTEUR{instituer_article,[(#ENV{id_article})]/poubelle,#URL_AUTEUR{#SESSION{id_auteur}}}

Supprimer un document
Cf http://forum.spip.net/fr_231679.html#forum231692

Dans une boucle documents de l’espace public :

[(#BOUTON_ACTION{<:tonplugin:supprimer:>,
        #URL_ACTION_AUTEUR{documenter,
                -#ID_ARTICLE/article/#ID_DOCUMENT,
                #SELF|parametre_url{var_mode,calcul}
        }
})]

Utiliser le résultat d’un calcul fait dans une action

Cf https://discuter.spip.net/t//174414

Comment afficher quelque chose calculé par une action activée par un #BOUTON_ACTION ? Ci après 2 solutions : 1) en utilisant un lien plutôt qu’un bouton 2) en modifiant le redirect dans l’action

1) Utiliser un lien js avec ajax plutôt qu’un bouton

<script type="text/javascript">
// solution 1
let url = window.location.protocol + '//' + window.location.hostname + '/spip.php?action=mon_fichier';
// solution 2
let url = "[(#VAL{mon_}|generer_url_action{"", 1})]";

$.ajax({
    url: url,
}).done(function(mon_retour){
    console.log('r : ', mon_retour);
});
</script>

2) Dans l’action, modifier le redirect et l’enrichir avec le résultat des calculs à afficher ensuite :

set_request(
    'redirect', 
    parametre_url(_request('redirect'), 'untruqenplus', $letruqissudetonAPI));

Pour ne passer le détail de la valeur entière dans l’url, tu peux, dans l’action, la ranger dans une globale persistante, et aller l’y chercher ensuite dans le squelette de redirect.
Par exemple en utilisant un casier (ou un sous-casier) de config SPIP ce qui donnerait genre :

$cle = uniqid('moncalcul_', true); 
ecrire_config($cle, $moncalculdetruqapi); 
set_request( 'redirect', parametre_url(_request('redirect'), 'ma_cle', $cle) );

Et dans le squelette appelé tu accèdes la valeur avec #CONFIG{#MA_CLE} puis tu vides ce casier devenu inutile.

Archives

Supprimé « Forcer le statut d’un article dès la saisie en ajoutant un hidden dans le formulaire : http://forum.spip.net/fr_213485.html »

YannX - Mise à jour :6 février 2024 à 22h18min