J'ai créé un modèle de contenu personnel mais tous...

cancel
Showing results for 
Search instead for 
Did you mean: 
bch
Member II

J'ai créé un modèle de contenu personnel mais tous...

Bonjour,

J'ai créé un modèle de contenu personnel mais tous les contenus s'affichent avec le même icone (_default.gif). Ce nom de fichier est renvoyé par resolveFileType16 et resolveFileType32 dans la classe BrowseBean. j'ai donc créé une nouvelle classe pour changer le comportement traditionnel. mais je ne sais pas quoi faire ensuite pour indiquer qu'il faut utiliser ma classe.

Pour choisir l'icone, je teste les 3 premières lettres.

package org.alfresco.bluexml;

import org.alfresco.web.bean.BrowseBean;
import org.alfresco.web.bean.repository.Node;
import org.alfresco.web.bean.repository.NodePropertyResolver;
import org.alfresco.web.ui.common.Utils;

public class CustomBrowseBean extends BrowseBean {

   public CustomBrowseBean() {
      super();
      resolverFileType16 = new NodePropertyResolver() {
         public Object get(Node node) {
            String deft = Utils.getFileTypeImage(node.getName(), true);
            if (node.getName().substring(0, 3).equalsIgnoreCase("sem")) {
               deft.replace("_default", node.getName().replace(":", "_"));
            }
            return deft;
         }

      };
      
      resolverFileType32 = new NodePropertyResolver() {
         public Object get(Node node) {
            String deft = Utils.getFileTypeImage(node.getName(), false);
            if (node.getName().substring(0, 3).equalsIgnoreCase("sem")) {
               deft.replace("_default", node.getName().replace(":", "_"));
            }
            return deft;
         }

      };
   }

}
Avez vous une idée ?

Merci d'avance
11 Replies
rivarola
Active Member

Re: J'ai créé un modèle de contenu personnel mais tous...

Il faut faire la même chose que ce qu'à fait Alfresco dans faces-config-beans.xml : à savoir redéfinir le bean appelé BrowseBean avec ta nouvelle classe. On a le faces-config-custom.xml pour ça. Voir http://wiki.alfresco.com/wiki/Packaging_And_Deploying_Extensions#JSF_configuration_files pour ne pas tomber dans les pièces des priorités en cas de définition multiple du même bean.
pdubois
Active Member

Re: J'ai créé un modèle de contenu personnel mais tous...

La réponse de Philippe est exacte, je rajouterai juste que c'est dans META-INF que votre fichier "faces-config-beans.xml" devra se trouver.  META-INF sera dans votre .jar.
rivarola
Active Member

Re: J'ai créé un modèle de contenu personnel mais tous...

Philippe, je pense plutôt que dans le cas du BrowseBean il faut mettre le faces-config-custom.xml dans le WEB-INF pour qu'il soit prioritaire, comme expliqué dans la doc dont j'ai fourni le lien :

Overriding managed beans    |    faces-config-custom.xml in WEB-INF
Tu confirmes ?
bch
Member II

Re: J'ai créé un modèle de contenu personnel mais tous...

Bonjour,

Merci de vos précisions mais j'ai toujours qqs problèmes :
1. J'ai ma classe CustomBrowseBean qui hérite de BrowseBean :
package org.alfresco.bluexml;

public class CustomBrowseBean extends BrowseBean {

   private static Logger logger = Logger.getLogger(BrowseBean.class);
   
   public CustomBrowseBean() {
      super();
      
      resolverFileType16 = new NodePropertyResolver() {
         public Object get(Node node) {
            logger.error("INITIALISATION");
            String deft = Utils.getFileTypeImage(node.getName(), true);
            if (node.getType().toPrefixString().substring(0, 3).equalsIgnoreCase("crm")) {
               deft.replace("_default", node.getType().toPrefixString().replace(":", "_"));
            }
            return deft;
         }

      };
      
      resolverFileType32 = new NodePropertyResolver() {
         public Object get(Node node) {
            logger.error("INITIALISATION");
            String deft = Utils.getFileTypeImage(node.getName(), false);
            if (node.getName().substring(0, 3).equalsIgnoreCase("crm")) {
               deft.replace("_default", node.getType().toPrefixString().replace(":", "_"));
            }
            return deft;
         }

      };
   }   
}
2. J'ai ensuite un fichier "faces-config.xml" dans un répertoire "WEB-INF" (même problème si c'est META-INF)
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
                              "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
<faces-config>

   <managed-bean>
      <description>
         The bean that holds folder browse state.
      </description>
      <managed-bean-name>CustomBrowseBean</managed-bean-name>
      <managed-bean-class>org.alfresco.bluexml.CustomBrowseBean</managed-bean-class>
      <managed-bean-scope>session</managed-bean-scope>
      <managed-property>
         <property-name>navigator</property-name>
         <value>#{NavigationBean}</value>
      </managed-property>
      <managed-property>
         <property-name>nodeService</property-name>
         <value>#{NodeService}</value>
      </managed-property>
      <managed-property>
         <property-name>searchService</property-name>
         <value>#{SearchService}</value>
      </managed-property>
      <managed-property>
         <property-name>lockService</property-name>
         <value>#{LockService}</value>
      </managed-property>
      <managed-property>
         <property-name>dictionaryService</property-name>
         <value>#{DictionaryService}</value>
      </managed-property>
      <managed-property>
         <property-name>fileFolderService</property-name>
         <value>#{FileFolderService}</value>
      </managed-property>
   </managed-bean>

</faces-config>
3. Jai tout çà dans un fichier JAR que j'ai mis dans le dossier lib de tomcat (tomcatwebappsalfrescoWEB-INFlib).

Mais çà ne marche pas.

Avez vous une idée ? Ai je oublié quelque chose ?

Merci
bmagnier
Member II

Re: J'ai créé un modèle de contenu personnel mais tous...

Bonjour,

votre nouveau bean devant remplacer le BrowseBean actuel, il doit être déclaré sous le nom "BrowseBean", et ce dans le fichier faces-config-custom.xml, comme expliqué par rivarola.

Bertrand.
bch
Member II

Re: J'ai créé un modèle de contenu personnel mais tous...

Bonjour,

J'ai donc 3 fichiers :
- Ma classe Java : org.alfresco.bluexml.CustomBrowseBean.java
- Mon fichier de propriété : alfresco.module.BlueXMLBrowseBean/module.properties
module.id=BlueXMLBrowseBean
module.title=BlueXML Browse Icon
module.description=BlueXML Browse Icon
module.version=1.0
- La définition de mon bean dans : WEB-INF/faces-config-custom.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
                              "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
<faces-config>

   <managed-bean>
      <description>
         The bean that holds folder browse state.
      </description>
      <managed-bean-name>BrowseBean</managed-bean-name>
      <managed-bean-class>org.alfresco.bluexml.CustomBrowseBean</managed-bean-class>
      <managed-bean-scope>session</managed-bean-scope>
      <managed-property>
         <property-name>navigator</property-name>
         <value>#{NavigationBean}</value>
      </managed-property>
      <managed-property>
         <property-name>nodeService</property-name>
         <value>#{NodeService}</value>
      </managed-property>
      <managed-property>
         <property-name>searchService</property-name>
         <value>#{SearchService}</value>
      </managed-property>
      <managed-property>
         <property-name>lockService</property-name>
         <value>#{LockService}</value>
      </managed-property>
      <managed-property>
         <property-name>dictionaryService</property-name>
         <value>#{DictionaryService}</value>
      </managed-property>
      <managed-property>
         <property-name>fileFolderService</property-name>
         <value>#{FileFolderService}</value>
      </managed-property>
   </managed-bean>

</faces-config>
Ces 3 fichiers sont dans un JAR que je mets dans le dossier lib. Je lance Alfresco, je vois qu'il charge mon module mais il ne l'utilise pas.

Où est mon erreur ?

Merci
bmagnier
Member II

Re: J'ai créé un modèle de contenu personnel mais tous...

Il faut faire la modification dans le fichier faces-config-custom.xml d'Alfresco, dans le répertoire WEB-INF.
C'est à ma connaissance le seul endroit où l'on peut surcharger les beans Alfresco (contrairement à la définition de nouveaux beans pouvant se faire dans le jar).

Bertrand.
bch
Member II

Re: J'ai créé un modèle de contenu personnel mais tous...

Je vous remercie énormément, c'est exactement mon problème !

Mercie encore
bch
Member II

Re: J'ai créé un modèle de contenu personnel mais tous...

J'ai encoreun petite question. J'ai mon module qui fonctionne qui remplace l'icone en fonction du type de noeud mais maintenant je souhaiterai que le module soit configurable par un fichier.

Je m'explique, je souhaiterai avoir un fichier CustomBrowseBean.properties dans le répertoire sharedclassesalfrescoextension dans lequel je liste les types de docs pour lesquels je dois changer l'icone.

Dans ma classe Java, je dois donc récupérer ce fichier de propriété mais je ne ais pas comment faire !

Merci