Projet

Général

Profil

Actions

Bug #2928

fermé

Erreur de redirection sur des espaces ayant des looks différents

Ajouté par Andry Rabemanantsoa il y a presque 13 ans. Mis à jour il y a environ 10 ans.

Statut:
Closed
Priorité:
Normal
Assigné à:
-
Catégorie:
Look
Version cible:
-
Début:
10/02/2012
Echéance:
% réalisé:

70%

Temps estimé:
Navigateur:
Tous
Votre version de Silverpeas:
5.8
Système d'exploitation:
Votre base de données:
PostgreSQL
Livraison en TEST:
Livraison en PROD:

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/&lt;lookClient&gt;/jsp/MainFrame&lt;LookClient&gt;.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/&lt;lookClient&gt;/jsp/MainFrame&lt;LookClient&gt;.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 Hugonnet supprimé

SilverpeasSettings permet depuis quelques temps déja d'ajouter un paramètre (exemple: defaultHomePage) au fichier de properties du look

Actions

Formats disponibles : Atom PDF