Amélioration retour formulaire, 2 possibilités

1. Methode 1, la plus simple, seulement le php
- $retours['message_ok'] = gamutable_fermer_modalbox();
2. Methode 2, on modifie le php et le html
- php => $retours['message_ok'] = $id_objet;
- html => <INCLURE{fond=inclure/redirect_form,env}>
This commit is contained in:
Christophe 2021-03-14 10:31:27 +01:00
parent ded13ab3bc
commit 9da7817029
3 changed files with 43 additions and 57 deletions

View file

@ -99,70 +99,20 @@ function prefixPlugin_post_edition($flux){
} }
``` ```
5. Pour utiliser une **mediabox** ou **modalbox** et rechargement total/partiel de la page: on peut demander à vuejs de recharger tout le json ou simplement une ligne dans le cas d'une modification 1. Pour utiliser une **mediabox** ou **modalbox** et rechargement total/partiel de la page: on peut demander à vuejs de recharger tout le json ou simplement une ligne dans le cas d'une modification
1. Dans le json : ajouter un lien avec la classe mediabox ou modalbox (cf ex de json) 1. Dans le json : ajouter un lien avec la classe mediabox ou modalbox (cf ex de json)
```html ```html
"modif" : [(#VAL{<a class="modalbox" href="[(#URL_PAGE{souscrire}|parametre_url{id_souscription,#ID_SOUSCRIPTION}|parametre_url{redirect,gamutable})]"><i class="fa fa-pencil"></i></a>}|json_encode)], "modif" : [(#VAL{<a class="modalbox" href="[(#URL_PAGE{souscrire}|parametre_url{id_souscription,#ID_SOUSCRIPTION}|parametre_url{redirect,gamutable})]"><i class="fa fa-pencil"></i></a>}|json_encode)],
``` ```
2. on charge en ajax le formulaire en l'englobant d'une div avec la classe ajax (du pur spip) dans ce cas, à la validation du form, si pas de `redirect` spécifié alors, retour dans le formualaire, avec le message `$retour['message_ok']` qui s'affiche. 2. On charge en ajax le formulaire en l'englobant d'une div avec la classe ajax (du pur spip)
Détournement de SPIP: dans le message_ok, on fais passer l'id de la cle primaire qui va declencher le rechargement du json QUE pour cette ligne et ca c'est vuejs qui s'en occupe ici (html du formulaire): 3. Dans le traiter du formulaire => supprimer la redirection et on ajoute :
```html
[(#ENV**{message_ok}|=={gamutable}|oui)
<script type="text/javascript">
app.rechargerJson();
$.modalboxclose();
</script>
]
```
3. Dans le traiter du formulaire => supprimer la redirection et ajouter :
```php ```php
if ($retour === 'gamutable') { if ($retour === 'gamutable') {
$res['redirect'] = ""; $res['redirect'] = "";
$res['message_ok'] = "gamutable"; // pour recharger que la ligne $id_patate du tableau
$res['message_ok'] = gamutable_fermer_modalbox($id_patate);
// ou si on veut recharger tout le tableau
$res['message_ok'] = gamutable_fermer_modalbox();
} }
``` ```
4. Dans le html du formulaire, ajouter :
```html
[(#ENV**{message_ok}|=={gamutable}|oui)
<script type="text/javascript">
app.rechargerJson();
$.modalboxclose();
</script>
]
```
*il faut ajouter data-confirm="Confirmez vous ..." si on veut ajouter une popin de confirmation* *il faut ajouter data-confirm="Confirmez vous ..." si on veut ajouter une popin de confirmation*
5. Un exemple plus concret:
- le HTML du formulaire:
```html
[(#ENV**{message_ok}|oui)
<script type="text/javascript">
id = "#ENV**{message_ok}";
id = parseInt(id);
if (id > 0 && id < 9999999999) {
app.rechargerJson(id);
$.modalboxclose();
}
if (id === 9999999999) {
app.rechargerJson();
$.modalboxclose();
}
delete id;
</script>
]
```
- le traiter du PHP:
```php
if ($redirect === "gamutable") {
$retour['redirect'] = "";
$retour['message_ok'] = "$id_auteur";
} elseif ($redirect === 'all'){
// on recharge dans gamuTable tout le tableau car il peut y avoir plusieurs lignes avec le meme souscripteur
$retour['redirect'] = "";
$retour['message_ok'] = "9999999999";
}else {
$retour['redirect'] = $redirect;
}
```

View file

@ -12,3 +12,22 @@
if (!defined('_ECRIRE_INC_VERSION')) { if (!defined('_ECRIRE_INC_VERSION')) {
return; return;
} }
function gamutable_fermer_modalbox($id_objet = 9999999999){
$html = <<<EOJS
<script type="text/javascript">
id = "$id_objet";
id = parseInt(id);
if (id > 0 && id < 9999999999) {
app.rechargerJson(id);
$.modalboxclose();
}
if (id === 9999999999) {
app.rechargerJson();
$.modalboxclose();
}
delete id;
</script>
EOJS;
return $html;
}

View file

@ -0,0 +1,17 @@
#CACHE{0}
[(#ENV**{message_ok}|oui)
<script type="text/javascript">
id = "#ENV**{message_ok}";
id = parseInt(id);
if (id > 0 && id < 9999999999) {
app.rechargerJson(id);
$.modalboxclose();
}
if (id === 9999999999) {
app.rechargerJson();
$.modalboxclose();
}
delete id;
</script>
]