AnsweredAssumed Answered

Problème: Customisation de la sidebar

Question asked by jhoueix on Apr 4, 2008
Latest reply on Apr 9, 2008 by jhoueix
Bonjour à tous!  :D

Je souhaite customiser la sidebar d'Alfresco afin qu'au lieu d'afficher soit le navigateur, soit le panneau latéral, soit opensearch, elle affiche les trois éléments à la suite l'un en dessous de l'autre.

Pour cela j'ai donc essayé de modifié la classe Java UISideBar qui génère cet élément.

Mon problème est le suivant:

La méthode qui génère la sidebar est la suivante:
   @Override
   public void encodeChildren(FacesContext context) throws IOException
   {
      if (!isRendered()) return;
     
      // there should be 3 children, the modelist, the actions
      // and the plugin, get them individually and render
     
      if (getChildren().size() == 4)
      {
         ResponseWriter out = context.getResponseWriter();

         out.write("<table border='0' cellpadding='6' cellspacing='0' width='100%'><tr><td>");
        
         // render the list
         UIModeList modeList = (UIModeList)getChildren().get(0);
         Utils.encodeRecursive(context, modeList);
        
         out.write("</td><td align='right'>");

         // render the actions
         UIActions actions = (UIActions)getChildren().get(1);
         Utils.encodeRecursive(context, actions);
        
         out.write("</td></tr></table>");
        
         // render the end of the header panel
         String cxPath = context.getExternalContext().getRequestContextPath();
         out.write("</td><td style=\"background-image: url(");
         out.write(cxPath);
         out.write("/images/parts/sidebar_top_grey_end.gif)\" width=5 align=right valign=top>" +
                   "<img src=\"");
         out.write(cxPath);
         out.write("/images/parts/sidebar_grey_03.gif\" width=5 height=5></td></tr>" +
                   "<tr><td colspan='3'>");
        
         // render the plugin
         out.write("<div id=\"pluginBox\">");
         UIComponent plugin = (UIComponent)getChildren().get(2);
         Utils.encodeRecursive(context, plugin);
         out.write("</div>");        
      }
   }

C'est le bout de code
         // render the plugin
         out.write("<div id=\"pluginBox\">");
         UIComponent plugin = (UIComponent)getChildren().get(2);
         Utils.encodeRecursive(context, plugin);
         out.write("</div>");      
qui génère le contenu de la sidebar (opensearch, panneau latéral, ou navigateur). Cependant je ne vois à aucun moment dans le code où est ajouté le composant "plugin" dans la liste ("(UIComponent)getChildren()"). Il me suffirait d'ajouter les autres éléments dans la liste pour les afficher pour effectuer ma customisation. Quelqu'un pourrait il me renseigner afind e savoir ou dans le code est ajouté le plugin? Merci d'avance de votre aide, je suis malheureux loin d'être un expert JSF…

Outcomes