Development #51688
préremplissage dynamique vers des champs de blocs
0%
Description
(là ça ne passe pas).
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a environ 3 ans
- Lié à Development #51330: préremplissage dynamique d'un champ sur la même page ajouté
Mis à jour par Frédéric Péters il y a environ 3 ans
- Fichier 0001-forms-allow-dynamic-prefill-of-block-sub-fields-5168.patch 0001-forms-allow-dynamic-prefill-of-block-sub-fields-5168.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Voilà, deux endroits concernés, pour passer également sur les champs des blocs :
- le code qui marque les champs à "suivre"
- le code du live, pour fournir dans la réponse json les nouvelles valeurs de préremplissage
+ la petite mise à jour du js pour prendre ça en compte.
Pour être complet je pense qu'il y a un bug sur la situation de plusieurs blocs et uniquement certains à mettre à jour,
if ($widget.is('.widget-prefilled') || $widget.is('.widget-readonly') || data.modified_field == 'user') { $widget.find('input, textarea').val(value.content); }
parce que ça va actualiser toutes les occurences, alors qu'il pourrait y en avoir certaines qui ont été modifiées manuellement.
Mais je souhaiterais ne pas me soucier de cette situation.
Mis à jour par Thomas Noël il y a environ 3 ans
Frédéric Péters a écrit :
parce que ça va actualiser toutes les occurences (...)
Si je pige c'est parce que le selecteur « var $widget = $('[data-field-id="' + value.block_id + '"] [data-field-id="' + value.field_id + '"]'); » va pointer toutes les occurrences ?
Ca sonne un peu bizarre effectivement. On ne pourrait pas se cantonner à la première occurrence ? Parce que dans la gestion de la mise à jour $widget (lignes 310 et suivantes de qommon.forms.js), j'ai l'impression que ça peut faire n'importe quoi si $widget est un sélecteur sur plusieurs champs (genre le « var $select = $widget.find('select'); » il va faire quoi ?).
(disclaimer: pas testé en vrai, juste lu le code)
Mis à jour par Frédéric Péters il y a environ 3 ans
cantonner à la première occurrence
On a changé il y a vraiment peu de temps le préremplissage sur les blocs de champs pour s'appliquer à toutes les lignes, donc plutôt non.
Pour le reste : "je souhaiterais ne pas me soucier de cette situation".
Mis à jour par Frédéric Péters il y a environ 3 ans
(genre le « var $select = $widget.find('select'); » il va faire quoi ?)
Ce qui est attendu, il fournira les "select" enfants des divers widget matchés. (i.e. "ça va actualiser toutes les occurences").
Mis à jour par Thomas Noël il y a environ 3 ans
- Statut changé de Solution proposée à Solution validée
Frédéric Péters a écrit :
(genre le « var $select = $widget.find('select'); » il va faire quoi ?)
Ce qui est attendu, il fournira les "select" enfants des divers widget matchés. (i.e. "ça va actualiser toutes les occurences").
C'est trop fort pour moi Javascript :-)
Mis à jour par Frédéric Péters il y a environ 3 ans
Cela étant, ça me saoulait parce que j'aurais aimé quelque chose comme dans django où on peut "affiner" un queryset, mais j'ai ajouté dans la branche une boucle pour évaluer individuellement chaque ligne :
if (value.content) { - if ($widget.hasClass('comment-field')) { - // replace comment content - $widget.html(value.content); - } else { - // replace text input value - if ($widget.is('.widget-prefilled') || $widget.is('.widget-readonly') || data.modified_field == 'user') { - $widget.find('input, textarea').val(value.content); + $widget.each(function(idx, widget) { + if ($widget.hasClass('comment-field')) { + // replace comment content + $widget.html(value.content); + } else { + // replace text input value + if ($(widget).is('.widget-prefilled') || $(widget).is('.widget-readonly') || data.modified_field == 'user') { + $(widget).find('input, textarea').val(value.content); + } } - } + });
Mis à jour par Frédéric Péters il y a environ 3 ans
- Statut changé de Solution validée à Résolu (à déployer)
Je l'ai poussé ainsi,
commit c6a9bfb5350abd6b551254289a9a474d770dd44e Author: Frédéric Péters <fpeters@entrouvert.com> Date: Fri Mar 5 10:23:56 2021 +0100 forms: allow dynamic prefill of block sub fields (#51688)
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
forms: allow dynamic prefill of block sub fields (#51688)