lunes, 29 de agosto de 2011

Alfresco - Combinando WebScripts con Acciones (parte 2)

Ya tenemos creado el webscript, el siguiente paso será crear la acción que lo ejecutará. Además, vamos a necesitar una pantalla de diálogo donde se mostrarán los documentos asociados.

Para empezar modificaremos el fichero web-client-config-custom.xml:

Primero mostramos las asociaciones en las propiedades del documento.

  
         
          
            
         
       
    
        
                 
        
       

    
          
              
         
    

Definimos la acción:

  
    

            
            es.pruebas.evaluator.DocumentosAsociadosEvaluator
           /images/icons/search.gif          
            #{VerDocsAsociadosDialog.setupAction}
            dialog:verDocsAsociadosDialog          
            
                
/sample/docsAsociados
                
Mostrar documentos asociados
                
#{actionContext.nodeRef}
            
        
    
            
       
        
           
        
         
           
         



las funciones de las distintas etiquetas son:

<evaluator> define una clase Evaluator que controla cuando mostrar la acción
<image> icono que se mostrará para la acción
<action-listener>, <action> definimos que es lo que se ejecutará
<params> parámetros que necesitamos en nuestra acción (en nuestro caso la clase diálogo)

Definimos el diálogo:

 
        
           
           
       
    
  


Y por último, registramos el diálogo en alfresco\WEB-INF\faces-config-custom.xml

      
         
            VerDocsAsociadosDialog
            es.pruebas.dialogs.VerDocsAsociadosDialog
           session
        
    


Las dos clases que hemos utilizado son:

VerDocsAsociadosDialog.java

  public class VerDocsAsociadosDialog extends BaseDialogBean {

    /**
     *
     */
    private static final long serialVersionUID = -653745991045332155L;
    private String url;
    private String title;
    private String webscriptUrl;

    private static Log log = LogFactory.getLog(VerDocsAsociadosDialog.class);

    @Override
    protected String finishImpl(FacesContext arg0, String arg1) throws Throwable {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void setupAction(ActionEvent event) {
        UIActionLink link = (UIActionLink) event.getComponent();
        Map params = link.getParameterMap();
     
        NodeRef nodo = new NodeRef(params.get("nodeRef"));      
        String url2 = params.get("webscript-url");     
        String title2 = params.get("title");
     
        if (!"".equals(url2)) {
            this.url = url2 + "?q="+ nodo.toString();
            this.title = title2;       
        }
    }

    @Override
    public String getContainerTitle(){
        return this.title;
    }

    @Override
    public String getCancelButtonLabel(){
        return "Cerrar";
    }
  
    @Override
    public String cancel() {      
        
        return getDefaultCancelOutcome();
    }

    public String getWebscriptUrl() {     
      
        return "/wcservice" + url;
    }

}
 DocumentosAsociadosEvaluator.java

   public class DocumentosAsociadosEvaluator implements ActionEvaluator{
       
        private static Log log = LogFactory.getLog(DocumentosAsociadosEvaluator.class);
        public static final QName ASOCIACION_DOC = QName.createQName("custom.model", "docsAsociados");

        public boolean evaluate(Node node) {

            NodeRef ref = new NodeRef(Repository.getStoreRef(), node.getId());
            FacesContext context = FacesContext.getCurrentInstance();
                   NodeService nodeSvc = Repository.getServiceRegistry(context).getNodeService();

            boolean result = false;      

           List asocs = (List)node.getAssociations().get(ASOCIACION_DOC);


            if(asocs != null && asocs.size() > 0) {
                        return true;
             }

            return result;

        }

        public boolean evaluate(Object arg0) {
            throw new UnsupportedOperationException("Not supported yet.");
        }
    } 


y la jsp que mostrará los resultados verDocsAsociados.jsp

  <%@ taglib uri="/WEB-INF/repo.tld" prefix="r" >
    

    

No hay comentarios:

Publicar un comentario