Development #49585
Changer facilement l'ordre des pages d'un formulaire
0%
Description
Si on souhaite reprendre un formulaire dans Publik, on peut se retrouver à devoir ré-organiser le formulaire en modifiant l'ordre des pages, ce qui n'est pas rapide (et potentiellement source d'erreurs) car il faut alors drag-and-drop le champ "Page" mais aussi tous les champs à l'intérieur de celui-ci. Un moyen qui permettrait de déplacer le champ avec les champs de cette page serait parfait.
Ceci pourrait être de la forme d'une option comme ce fut ajouté pour la suppression :
Vous allez supprimer la page « Parents ». Supprimer tous les champs de la page ❏Un autre mode de traitement qui me plairait bien :
- un mode d'affichage "sommaire" qui n'afficherait que les seuls champs pages
- on basculerait dans ce mode d'affichage via un bouton en tête de formulaire tel "Limiter l'affichage aux pages"
- dans ce mode d'affichage, le drag-and-drop d'un champ page entraînerait avec lui tous les champs à l'intérieur de la page
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a plus de 3 ans
- Lié à Development #1686: Le drag & drop d'un champ page devrait déplacer aussi tous ses fils ajouté
Mis à jour par Lauréline Guérin il y a environ 3 ans
vu avec Fred: pas de mode sommaire, on déplace la page et ses champs tout le temps
Mis à jour par Frédéric Péters il y a environ 3 ans
Oui j'imagine bien des moments pénibles mais comme je n'arrivais pas concrètement à capter le moment "page mal placée" je me suis dit qu'on verrait à l'usage.
L'usage que j'avais c'était sur du debug, utiliser une page pour petit à petit réduire le nombre de champs affichés sur la précédente.
Je ne suis pas favorable à l'improvisation d'un mode "sommaire", et on fait quand même assez bien sans déplacement de page (cf #1686).
Mis à jour par Marie Kuntz il y a environ 3 ans
Je ne vais pas me battre mais je pressens que ça va être plus pénible que ça ne va apporter en confort. Je le pose là pour pouvoir dire "told you so" dans quelques semaines ;)
Mis à jour par Frédéric Péters il y a environ 3 ans
- Fichier Screenshot_2021-01-05 Backoffice de Auquo - multipages.png Screenshot_2021-01-05 Backoffice de Auquo - multipages.png ajouté
De mon côté j'ai laissé #1686 de côté depuis 8 ans pour éviter ce "told you so"...
Mais à réfléchir une proposition de comportement pour avancer, ça devient un peu plus compliqué mais ça serait après avoir déplacé une page avoir un bandeau pas gênant avec dedans la possibilité de cliquer sur un "déplacer également les champs", un peu comme on a sur la multi-sélection dans les tableaux de traitement "Exécuter l’action choisie sur toutes les pages".
Dans la pratique technique je verrais ça ainsi : modifier la vue update_order pour retourner du json et dedans, quelque chose comme
{"success": "ok", "additional-action": { "message": "Déplacer également les champs de la page ?", "url": ".../update_order?fields=1,2,3&page=5" } }
et le js créerait un <div> avec ça; pour info à ce sujet ma capture d'écran le code donnait ça :
<div style="position: absolute;z-index: 10000;top: 33px; left: 20px;background: white;padding: 5px 1rem;border: 1px solid #666;border-radius: 5px;"> <a href="..." style="width: auto;display: inline;" class="">Déplacer également les champs de la page</a> <a style="display: inline;margin-left: 1em;text-decoration: none;border: none;" class="">×</a> </div>
+ le js pour que le faire de l'ajax sur le premier <a> (ou même on peut se dire que dans ce cas il vaut peut-être mieux un vrai clic avec vrai affichage de page, plutôt qu'avoir à également gérer le déplacement des champs dessous).
+ le js pour supprimer le <div> au clic sur la croix.
Mis à jour par Marie Kuntz il y a environ 3 ans
Ca me paraît bien, est-ce que les autres CPF ont un avis là-dessus ?
Mis à jour par Marie Kuntz il y a environ 3 ans
J'ajoute que l'idée du sommaire me paraît non seulement sympa, mais aussi trèèèès utile pour les longs formulaires (type APA, FLS etc), idée à conserver dans un coin
Mis à jour par Lauréline Guérin il y a environ 3 ans
- Fichier 0001-admin-option-to-move-fields-when-a-page-is-moved-495.patch 0001-admin-option-to-move-fields-when-a-page-is-moved-495.patch ajouté
- Statut changé de Nouveau à En cours
- Patch proposed changé de Non à Oui
première itération:
- j'ai choisi de refresh la page après le déplacement des champs, plutôt que de le gérer en JS
- j'ai volontairement pas géré le js et les css de la popup qui propose de déplacer les champs: à la place j'ai posé une modale moche, et je demanderai de l'aide pour améliorer ça si le reste est validé
Mis à jour par Thomas Jund il y a environ 3 ans
Proposition qui a l'avantage de demander peu de JS. Ça fait le job.
Est-ce le rafraîchissement est juste pour replacer les champs ?
Si on garde cette idée je vais essayé d'améliorer un peu le layout de la modale.
Autre proposition :
On pourrait aussi proposer une 2e icône à côté de l'actuelle pour les pages uniquement qui permettrait de déplacer directement la page et les champs, sans avoir besoin d'une 2e action via modale.
Ça demande plus de JS mais donne une information graphique sur cette nouvelle action, où il suffit d'amender la légende du dessus pour l'expliquer.
Mis à jour par Thomas Jund il y a environ 3 ans
- Fichier 0001-initialize-dialog-juste-one-time.patch 0001-initialize-dialog-juste-one-time.patch ajouté
- Fichier 0001-scss-add-.oneline-dialog-modificator-for-jqueryUI-di.patch 0001-scss-add-.oneline-dialog-modificator-for-jqueryUI-di.patch ajouté
- Statut changé de En cours à Solution proposée
Voilà mes modifs apportées au code de Laureline
- création d'une class CSS modificateur 'oneline-dialog' pour jqueryUI dialog permettant de positionner le bouton close à gauche du contenu.
- petite refacto du JS pour instancier le widget dialog une seule fois au chargement de la page plutôt qu'à chaque déplacement.
- ajout d'une transition sur la couleur de l'ombre pour un meilleur feedback visuel à l'ouverture de la modal.
Mis à jour par Frédéric Péters il y a environ 3 ans
Ok ne pas oublier de faire passer le 0001 de Thomas dans gadjo.
Je retirerais le point d'interogation puisque cliquer sur le lien va faire l'action.
Mis à jour par Lauréline Guérin il y a environ 3 ans
- Fichier 0001-admin-option-to-move-fields-when-a-page-is-moved-495.patch 0001-admin-option-to-move-fields-when-a-page-is-moved-495.patch ajouté
intégration du patch de Thomas + suppression du point d'interrogation
Mis à jour par Frédéric Péters il y a environ 3 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Lauréline Guérin il y a environ 3 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 67abf4f379c9544ce0d5376c56650f1c1299ffb3 Author: Lauréline Guérin <zebuline@entrouvert.com> Date: Thu Jan 7 14:42:01 2021 +0100 admin: option to move fields when a page is moved (#49585)
patch gadjo intégré également
Mis à jour par Frédéric Péters il y a environ 3 ans
- Statut changé de Résolu (à déployer) à Solution déployée
admin: option to move fields when a page is moved (#49585)