Modificar Opcion Previsualizar documentos

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

Modificar Opcion Previsualizar documentos

Hola a todos.

Quiero plantear una duda que tengo o más bien ayuda para poder modificar una parte del Alfresco. Paso a contarles :

Cuando hago una búsqueda de documentos en mi alfresco, puedo observar un icono (i) para ver la ficha de cada documento, en la cual aparecen los metadatos por defecto (autor, fecha de creación, etc…) y un preview en el cual se puede observar las primeras líneas del documento.

Mi consulta es la siguiente : Mis documentos serán pdf escaneados anteriormente, y me gustaría poder mostrar en esa pantalla, en la parte de preview, la primera página de mi documento escaneado….Lo que voy a hacer es crearme un nuevo wizard para eso…y así no tcoar el de Alfresco, aunque me basaré en él.

Alguien me puede decir como debería hacerlo o alguien ha realizado algo parecido?

Gracias de antemano y un abrazo para todos
2 Replies
ajv
Member II

Re: Modificar Opcion Previsualizar documentos

Hola txakin!

He estado haciendo tareas de investigador "alfresquiano" y creo que han dado sus frutos  :lol:
A ver te cuento: Existe un tag denominado nodeInfo que permite encapsular a otro componente para mostrar en un panel popup información sobre éste. Este tag es el que se emplea para previsualizar la información de los contenidos.

Tras darle un repasillo al código fuente de Alfresco, encontré la clase que implementa la previsualización en cuestión: org.alfresco.web.bean.ajax.NodeInfoBean.
En esta clase está el método sendNodeInfo, que básicamente procesa una plantilla flt para mostrar la información del contenido. La plantilla en cuestión está ubicada en: tomcat\webapps\alfresco\WEB-INF\classes\alfresco\templates\client y su nombre es: node_summary_panel.ftl
Si echas un vistazo a la plantilla en cuestión, verás al final de todo el siguiente fragmento de código:
      <#if node.isDocument && !isImage && !isVideo>
         <#assign c=cropContent(node.properties.content, 512)>
         <#if c?length != 0>
            <tr>
               <td colspan='2'>Preview:</td>
            </tr>
            <tr>
               <td colspan='2'>
                  ${c?html?replace('$', '<br>', 'rm')}<#if (c?length >= 512)>…</#if>
               </td>
            </tr>
         </#if>
      </#if>
Como no me he podido resistir Smiley Very Happy, he ampliado los parámetros 512 a 1024, y he comprobado que la previsualización de los documentos es justamente el doble Smiley Very Happy
Ahora lo único que me faltaba por "descubrir" es de dónde se había sacado la función cropContent, pues no es una función propia de Freemarker…
Revisando de nuevo la clase org.alfresco.web.bean.ajax.NodeInfoBean encontré la solución: A la plantilla es posible pasarle como "modelo" un conjunto de información, incluyendo funciones aplicables. Una de ellas era el cropContent:
model.put("cropContent", new CropContentMethod());
Para ver lo que hace este método, debemos echarle un vistazo a la clase org.alfresco.repo.template.CropContentMethod, que básicamente es esto:

            if (arg0 instanceof BeanModel && arg1 instanceof TemplateNumberModel)
            {
                Object wrapped = ((BeanModel)arg0).getWrappedObject();
                if (wrapped instanceof TemplateContentData)
                {
                   int bytes = ((TemplateNumberModel)arg1).getAsNumber().intValue();
                  
                   result = ((TemplateContentData)wrapped).getContentAsText(bytes);
                }
            }
Donde arg1 representa el nº de bytes y arg0 el contenido a cortar…
Por tanto, en tu caso podrías basarte en esto mismo!
La idea sería modificar la plantilla de forma que te capturase los primeros bytes de la página…Lo que no se me ocurre es cómo saber los bytes que ocupan una página  :?

Bueno, espero que te haya servido el enfoque y los descubrimientos  Smiley Tongue
Hasta otra!!
robegf
Member II

Re: Modificar Opcion Previsualizar documentos

Buenas.

Yo estaba haciendo lo mismo que Txakin, pero lo que queria era cambiar la plantilla 'node_summary_panel.ftl' por una 'custom'. Se puede? Donde se especifica que hay que usar esa plantilla para los 'summaries' (he encontrado otras plantillas que hacen referencia a 'portlet_node_summary_panel.ftl', pero ninguna referencia a 'node_summary_panel.ftl')?

Gracias, y un saludo.