Redirect avec SHOW_MOBILE = no

Bonjour,

J’ai paramétré un objet externe avec le code suivant :

Moncompte .display = function(params) {

var link = HTMLTool.getFormURL("Partner", id, "action=update");
return this.sendRedirect(link);

};

Quand le SHOW_MOBILE = yes, cela fonctionne bien en responsive et non responsive
Quand le SHOW_MOBILE = no alors

Le redirect m’affiche dans la page principale le code suivant :

{“type”:“redirect”,“url”:"/ui/obj/form/Partner?inst=the_ajax_Partner&action=update&row_id=3"}

Y a-t-il un moyen de le faire fonctionner en SHOW_MOBILE = no ?

Version : Simplicite 4.0 P23

Comme déjà expliqué dans un autre post les redirect HTTP générés coté serveur sont un pattern old school qui n’ont aucun sens avec la UI responsive qui est une one page

Cela n’est supporté qu’au titre d’une compatibilité avec le passé…

Dans le cas présent il doit y avoir une subtilité qui fait que ce n’est pas correctement géré quand SHOW_MOBILE=no. On va regarder mais franchement, si vous ne ciblez que la UI responsive, arrêtez avec ce pattern d’un autre age et renvoyez du code JavaScript: return this.javascript("$ui.displayForm(...)");

Plus généralement, dans la UI responsive vous devez penser vos objets externes comme des composants one page essentiellement implémentés en JavaScript client. Plus comme des pages HTML standalone générées coté serveur et qui s’affichent dans une iframe comme dans la UI legacy.

Cf. https://docs.simplicite.io/documentation/01-core/externalobject-code-examples.md#responsive

S’agissant des “redirects”, cf. la note du § “Redirects” dans https://docs.simplicite.io/documentation/01-core/externalobject-code-examples.md#redirects

Il doit y avoir un problème de parsing JSON sur l’ancienne UI.

Mais de toute façon SHOW_MOBILE = no ne passera pas l’été, nous n’avons plus de client V4 en UI legacy. Nous prévoyons un grand ménage de printemps (ou d’été).

Merci de justifier de vouloir continuer avec cette vielle UI en V4.

Ah oui désolé j’ai répondu à coté…

Ma réponse vaut pour le cas SHOW_MOBILE=always, le SHOW_MOBILE=no je n’imaginais même pas qu’on puisse encore se mettre dans ce mode…

Je confirme ce que @Francois: la UI legacy vit ses dernières heures, on ne l’a conservé jusqu’ici que pour laisser le temps (plus de 2 ans !) de migrer sur la UI responsive. Ce temps est désormais écoulé. RIP la UI legacy

C’est pour un client en V4 en UI legacy. Nous avons toujours des clients dans ce cas…
Le projet passe en Prod au bout de 4 ans et la migration UI responsive est loin d’étre terminée.

Dans ce cas, vous devrez rester sur la dernière version legacy disponible (P24) le temps de terminer votre migration.

Pour migrer le front :

  • Les objets externes “old school” fonctionnent dans des iframe dans la UI responsive, et peuvent donc migrer plus tard même en étant responsive (devenir des scripts client et non plus code HTML back)
  • A priori seul votre code spécifique Javascript client est à porter en hook responsive.
  • Sachant que principalement le code JS front qu’on devait faire sur la legacy est à supprimer au profit de contraintes Front V4 qui s’exécutent en responsive (formulaire dynamique)
  • Vouloir faire une application dual (qui marche dans les 2 interfaces) est un luxe inutile, et souvent incompatible par conception (onepage/ajax/async vs iframe/post/sync).

Il faudra peut être une prestation de support ad hoc pour vous aider à cette migration au cas par cas de vos objets. Mais on ne peut plus maintenir une UI obsolète des années 2000 encore en production.

C’est bien ce que j’ai pensé, à figer la version en P23 ou P24.
Par contre, vous regarder le problème de parsing JSON ou pas ?

Sébastien

oui si je réssuscite mon clone décédé ;-)

sinon au pire tu peux retourner du javascript client directement qui fait un document.location = url.

La 24 sera la dernière release avec la UI legacy, elle ne sera plus là en P25.

On vise avant cet été pour la P24 et après cet été pour la P25.

Attention: en P24 on retire les vielles JSP (qui ne font plus qu’un forward depuis des lustres) donc il faut tuer dès maintenant tout code qui utiliserait des URLs en dur (ex:ALL_form.jsp?...) au profit des APIs (ex: HTMLTool.getFormURL(...)) (NB: cela aurait dû être fait depuis la 3.0)

J’ai revu une condition pour ne plus envoyer de JSON en cas de redirect sur la UI legacy “seule”, mais un redirect HTTP puisque c’est dans une iframe.

A tester suite à votre mise à jour P23/24.