Bug #2928
ferméErreur de redirection sur des espaces ayant des looks différents
70%
Description
Quand on a un look personnalisé (<lookClient>) de l'application et que l'on créé un espace avec un look natif (SilverpeasV5 ou SilverpeasLight), il y a une erreur de redirection au niveau de l'application.
En effet, lorsqu'on clique sur un espace n'ayant pas le look actuel, l'adresse de redirection devient http://localhost/<lookClient>/jsp/MainFrame<LookClient>.jsp
Après quelques tests, nous avons vu qu'il y avait un problème de cohérence entre la redirection faite par la méthode javascript openSpace et le contenu de la page MainFrameSilverpeasV5.jsp
En effet, on trouve ceci dans navigation.js :
try { mainFrame = getMainFrame(); if (!mainFrame.startsWith('/')) { mainFrame = '/admin/jsp/' + mainFrame; } } catch(err) { mainFrame = "/admin/jsp/MainFrameSilverpeasV5.jsp"; } if (spaceLook != currentLook) { top.location = getContext() + mainFrame + "?RedirectToSpaceId=" + spaceId; // le contexte a été rajouté }
et dans MainFrameSilverpeasV5.jsp :
if (!"MainFrameSilverpeasV5.jsp".equalsIgnoreCase(helper.getMainFrame())) { session.setAttribute("RedirectToSpaceId", spaceIdFromRedirect); %> <script type="text/javascript"> top.location="<%=helper.getMainFrame()%>"; // la redirection se fait sans contexte </script> <% }
Lorsqu'on rajoute le contexte au niveau de top.location, cela semble se corriger mais pas entièrement.
De plus, nous n'avons pas trouvé la fonction javascript getMainFrame() dans le code et l'ajouter dans la page MainFrame<LookClient>.jsp ne semble pas résoudre le problème.
Mis à jour par Emmanuel Hugonnet il y a presque 13 ans
- Statut changé de New à Feedback
votre fonction javascript getMainFrame() renvoie le helper.getMainFrame() ?
dans votre configuration, cela devrait etre "/${rootArtifactId}/jsp/MainFrame${className}.jsp
Mis à jour par Andry Rabemanantsoa il y a presque 13 ans
Nous avons effectivement essayé de lui faire renvoyer helper.getMainFrame() sans succès.
Nous avons constaté le même problème sur le lien en haut à gauche dans l'administration. En effet, lorsqu'on prend un look différent du look initial, le lien renvoie vers la page MainFrameSilverpeasV5.jsp, et comme indiqué la redirection de celle-ci n'est pas bonne (il manque le contexte).
Pour comparaison, l'archetype du look génère le code suivant :
if (!"/${rootArtifactId}/jsp/MainFrame${className}.jsp".equalsIgnoreCase(helper.getMainFrame())) { session.setAttribute("RedirectToSpaceId", spaceIdFromRedirect); %> <script type="text/javascript"> top.location="<c:url><%=helper.getMainFrame()%></c:url>"; </script> <% }
c:url assure l'ajout du contexte.
Mis à jour par Emmanuel Hugonnet il y a presque 13 ans
Le look client n'a pas été testé dans le cadre d'un retour au look initial silvpereas sur un espace car habituellement le look client est utilisé pour l'ensemble de l'application.
En fait si on changeait la configuration du look SilverpeasLight pour qu'il renvoi /admin/jsp/MainFrameSilverpeasV5.jsp au lieu de MainFrameSilverpeasV5.jsp cela devrait avoir le 'bon' comportement non ?
Mis à jour par Andry Rabemanantsoa il y a plus de 12 ans
Je n'en suis pas sûr puisque tant qu'il y a cette ligne dans MainFrameSilverpeasV5.jsp:top.location="<%=helper.getMainFrame()%>"
ça risque de ne pas marcher.
Il faut la changer par top.location="<c:url><%=helper.getMainFrame()%></c:url>";
et ajouter l'import des taglibs correspondant.
Mis à jour par Andry Rabemanantsoa il y a plus de 12 ans
Je reviens sur ce sujet car nous avons découvert que le fil d'ariane souffrait du même problème.
En effet, le lien parent qui ouvre l'espace redirige aussi vers http://localhost/<lookClient>/jsp/MainFrame<LookClient>.jsp
Mis à jour par Emmanuel Hugonnet il y a plus de 12 ans
En fait dans MainFrameSilverpeasV5.jsp je pense qu'il faudrait plutôt
if (!"MainFrameSilverpeasV5.jsp".equalsIgnoreCase(helper.getMainFrame()) && ! "/admin/jsp/MainFrameSilverpeasV5.jsp".equalsIgnoreCase(helper.getMainFrame())) { session.setAttribute("RedirectToSpaceId", spaceIdFromRedirect); String topLocation = gef.getLookFrame(); if(!topLocation.startsWith("/")) { topLocation = "/admin/jsp/" + topLocation; } %> <c:set var="topLocation"><%=topLocation%></c:set> <script type="text/javascript"> top.location="<c:url value="${topLocation}" />"; </script> <% }
Mis à jour par Emmanuel Hugonnet il y a plus de 12 ans
- Assigné à mis à Emmanuel Hugonnet
- % réalisé changé de 0 à 70
Mis à jour par Andry Rabemanantsoa il y a plus de 12 ans
Je suis tombé sur une boucle de redirection.
Nous avons mis en place cette correction :
if (!"MainFrameSilverpeasV5.jsp".equalsIgnoreCase(helper.getMainFrame())) { session.setAttribute("RedirectToSpaceId", spaceIdFromRedirect); %> <script type="text/javascript"> top.location.href="<%=m_sContext%><%=helper.getMainFrame()%>"; </script> <% }
Cela règle les problèmes entre les espaces mais nous avons encore quelques problèmes lorsque l'utilisateur a choisi un look dans ses préférences.
Mis à jour par Andry Rabemanantsoa il y a plus de 12 ans
Après tests, les problèmes que nous rencontrons lorsque l'utilisateur choisi un look viennent du fait que la page MainFrameSilverpeasV5 essaie de récupérer le paramètre defaultHomePage du look.
Hors à la génération du projet depuis l'archétype, le fichier properties du look ne contient pas ce paramètre.
Mis à jour par David Lesimple il y a environ 10 ans
- Statut changé de Feedback à Closed
- Assigné à
Emmanuel Hugonnetsupprimé
SilverpeasSettings permet depuis quelques temps déja d'ajouter un paramètre (exemple: defaultHomePage) au fichier de properties du look