Avoir un système générique de pré-action à confirmer
Dans la continuité de #3247 mais ce n'est pas que pour les suppressions, c'est pour tout action quelconque.
Ça fait plusieurs années que j'ai ça en tête : actuellement à chaque fois qu'on a besoin de confirmation, c'est juste une boite JS, ce qui pose clairement problème, ça ne marche pas pour tout le monde, si jamais JS désactivé ou bugué, ya plus de confirmation du tout.
Donc ce qu'il faudrait c'est système générique de réelle confirmation (pas spécialement que pour les suppressions quoi) : une pré-action qui va amener sur une page avec un message intermédiaire et un bouton Confirmer et un Annuler. Et après en amélioration progressive on peut voir à charger le "content" de cette page dans une box pour pas partir sur une autre page. Ça existe dans d'autres CMS, Drupal, Typo3, et je trouve ça très bien.
Comme le message doit pouvoir être personnalisé, les labels des boutons (si c'est pas que pour supprimer faut pouvoir mettre "Migrer", "Confirmer le déplacement", etc n'importe quoi), on va pas passer ça en GET visible, donc j'ai plutôt l'impression qu'il faudrait que le système soit forcément un bouton-formulaire pour envoyer ça en POST plus caché. Si on peut avoir quelques phrases, chaines, par défaut pour ne pas avoir à personnaliser aussi (mais je vois pas comment ça pourrait être générique pour l'instant).
Du genre :
#BOUTON_CONFIRMATION{
#URL_ACTION{choseafaire, arg, etc},
#ARRAY{
message, "Voulez-vous vraiment dansez grand-mère ?", // Là je vois pas comment avoir un défaut
label_confirmer, "Oui je veux valser grand-père", // "Confirmer" ou "Je confirme" ou "OK" par défaut ?
label_annuler, "Non une soupe et au lit", // "Annuler" par défaut
url_retour, #AUTRE_URL, // la page d'origine par défaut
}
}
Par défaut ça amènerait sur une page dédiée, qui génère alors une #BOUTON_ACTION avec l'action fournie en paramètre, et les deux boutons. Mais on pourrait en amélioration charger ça dans une box en JS (avec zajax) afin de rester sur la page de départ.
Moins urgent mais à réfléchir : normalement tous nos formulaires et action sont normalement utilisables ailleurs, donc est-ce qu'on permet ce système dans le site public aussi ? Et dans ce cas comment ? On pourrait détecter d'où s'est fait la demande de départ et diriger autrement suivant admin ou public. Genre une page d'admin (chargée en zajax si JS ok) si on est en admin, et une page=spip_confirmiation si dans le site… minipres par défaut, mais surchargeable (tout comme on fait en z-core pour 404, page=login, etc). Ça me parait faisable.