lunes, 23 de abril de 2012

Creando un "custom content type"

Antes de comenzr se me ocurre hacer una pequeña reflexión que se me pasó por la cabeza anoche en la cama repasando que había conseguidpo y que quería hacer hoy con la plataforma: Cuando eres capaz de repasar de memoria el directorio de archivos de Alfresco, es que ¡te estás metiendo hasta el fondo!

En fin, después de ese breve comentario paso a comentaros en que he estado liado hasta ahora, y que aunque se encuentra descrito en los maravillosos foros de Alfresco, blogs de otr@s cracks del panorama, pués yo espero darle una pequeña aportación y quizás tu que estás aprendiendo te sirva.

¿Como declaro metadatos adicionales en Alfresco?
Imaginemonos que necesitamos la fecha de creación de un determinado artículo, pero nosotros al subirlo a nuestro repositorio lo único que tendremos es la fecha en que se subio al mismo. Pues bien, a mi hasta el día de hoy no se me ha ocurrido mejor manera que declarar el campo fecha de creación.

Hoy en nuestra cocina necesitamos irnos a tomcat\shared\classes\alfresco\extension y nos creamos un fichero al que llamaremos prensaModel.xml y web-client-config-custom.xml. Muy probablemente nos encontremos este último con la extensión .sample, pues nos hacemos una nueva copia y se la quitamos.

¿Qué perseguimos realmente?
  • Cuando subamos un fichero podamos elegir de que tipo es: Articulo de prensa, Fotografía, Maqueta,... lo que nosotros definamos.
  • Poder introducir los metadatos que queramos, por ejemplo la fecha de creación del fichero, que supondremos que es un artículo de prensa.
  • Permitir hacer búsquedas por este tipo de ficheros.
Fichero prensaModel.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- Es importante el como se llame el modelo que estamos definiendo. Cuidado con las mayúsculas y las minúsculas -->
<model name="iabook:prensa" xmlns="http://www.alfresco.org/model/dictionary/1.0">
<!-- Son descriptores a nuestra elección -->
<description>Articulos de prensa</description>
<author>Juan Palomo</author>
<version>1.0</version>
<!-- Hay que hacer estas importaciones -->
<imports>
<import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/>
<import uri="http://www.alfresco.org/model/content/1.0" prefix="cm"/>
</imports>
<namespaces>
<!-- Siento deciros que esto aún no se porque lo tengo puesto... pero con ello me ha funcionado -->
<namespace uri="http://www.infoaxon.com/book/models/catalogue/1.0" prefix="iabook"/>
</namespaces>
<types>
<!-- El nombre que tendrá el aspecto -->
<type name="iabook:prensa">
<title>Articulo de prensa</title>
<parent>cm:content</parent>
<properties>
<!-- un campo de texto adicional que creamos -->
<property name="iabook:sku">
<title>Articulo SKU</title>
<type>d:text</type>
<mandatory>true</mandatory>
</property>  


<!-- Aquí vamos a introducir el campo fecha --> 
<property name="iabook:fecha">
<title>Fecha de publicacion de la noticia</title>
<type>d:date</type>
<mandatory>true</mandatory>
</property>

</properties>




<!-- Es necesario para la definición -->
<mandatory-aspects>
<aspect>iabook:relacArticulos</aspect>
</mandatory-aspects>

</type>
</types>

<aspects>
<aspect name="iabook:relacArticulos">
<title>Relacion de articulos</title>
<associations>
<association name="iabook:relacArticulosList">
<title>Lista de Articulos relacionados</title>
<source>
<mandatory>false</mandatory>
<many>true</many>
</source>
<target>
<class>iabook:prensa</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
</association>
</associations>
</aspect>
</aspects>

</model>

Fichero web-client-config-custom.xml

<alfresco-config>
<config evaluator="string-compare" condition="Content Wizards">
<content-types>
<type name="iabook:prensa"/>
</content-types>
</config>

<config evaluator="node-type" condition="iabook:prensa">
<property-sheet>
<show-property name="name" />
<show-property name="mimetype" display-label-id="content_type" component-generator="MimeTypeSelectorGenerator" />
<show-property name="encoding" display-label-id="encoding" ignore-if-missing="false" component-generator="CharsetSelectorGenerator" />
<show-property name="size" display-label-id="size" converter="org.alfresco.faces.ByteSizeConverter" show-in-edit-mode="false" />
<show-property name="title" display-label-id="title" ignore-if-missing="false" />
<show-property name="description" display-label-id="description" ignore-if-missing="false" component-generator="MultilingualTextAreaGenerator" />
<show-property name="iabook:sku" />
<show-property name="iabook:fecha" />
</property-sheet>
</config>

<config evaluator="aspect-name" condition="iabook:relacArticulos">
<property-sheet>
<show-association name="iabook:relacArticulosList" />
</property-sheet>
</config>

<config evaluator="string-compare" condition="Action Wizards">
      <aspects>
         <aspect name="iabook:relacArticulos"/>      </aspects>
   </config>
 
<!-- Hacemos que aparezca el campo SKU en la búsqueda avanzada -->                     
<config evaluator="string-compare" condition="Advanced Search">
<advanced-search>
<content-types>
<type name="iabook:prensa" />
</content-types>
<custom-properties>
<meta-data type="iabook:prensa" property="iabook:sku" />
</custom-properties>
</advanced-search>
</config>

</alfresco-config>

Se me olvidaba comentaros un importante detalle: hay que reiniciar el servicio de Alfresco ante cada cambio para que tengan efecto.

Siento no poner comentarios a todas las lineas, y me gustaría pero las prisas por seguir me pueden.

Solo comentar un detalle, espero que no se os escape que la idea será después mediante Javascript automatizar este proceso, nadie ha hablado de hacer esto a mano para 1000 documentos distintos!

Un saludo!

domingo, 22 de abril de 2012

Modificando y personalizando la ventana About del Share

Aunque anteriormente no lo he comentado, para todas las pruebas estoy usando Firefox (en su última versión siempre) además del pluggin  Firebug. Para más información de Firebug googlea ;)

Lo que quiero hacer en este post es explicaros como he cambiado la información que se muestra al pinchar en el icono del Share que tenemos arriba a la derecha.
  • Cambiar el icono 
La imagen se encuentra en esta ruta tomcat\webapps\share\themes\default\images con el nombre app-logo.png, aunque como es lógico es la del tema por defecto. Si no lo estais empleando buscad en vuestro sistema ese fichero.

  • Cambiar el contenido de 'la ventana de información'
Yo en mi Alfresco Community 3.4.d me he ido a \tomcat\webapps\share\WEB-INF\classes\alfresco\site-webscripts\org\alfresco\modules y he copiado about-share.get.html.ftl a \tomcat\shared\classes\alfresco\web-extension\site-webscripts\org\alfresco\modules. Ya os podeis abrir el documento con vuestro editor favorito y moficarlo a gusto.

Si quereis una personalización mayor solo teneis que 'jugar' con la hoja de estilo about-share.css que se encuentra originalmente en \tomcat\webapps\share\modules. Lo más interesante quizás sea la línea 10 con background: url('images/about-bg.png') no-repeat scroll 0 0;
Efectivamente, como os estais imaginando ahí está descrita cual es la imagen de fondo que se empleará.

Bueno, espero que os haya resultado útil. Un saludo!

¿No puedes ejecutar el debugger de Javascript?

Pues éste es tu post, no me cabe la menor duda. Vayamos al lio:
Se supone que en el mundo perfecto al intentar acceder desde la máquina con la copia de Alfresco instalada (es decir, desde localhost) e ir a la dirección http://localhost/alfresco/service/api/javascript/debugger te debe salir una consola para ejecutar tus propios Javascript y hacer tus pruebas... un debugger como siempre lo hemos conocido. Pues bien, a mi no me funciona. ¿Porqué? Pués la explicación no debe ser sencilla porque ni en la versión 4.0.d ni en la 3.4.d lo he conseguido. Hoy (23 de Abril) me he dado cuenta de que lo que tengo instalado es Alfresco 3.4.e.

La solución pasa por instalar una consola de Javascript, ¿de dónde? Pues de esta Wiki. Como habreis podido ver teneis hasta un video, por lo que la instalación y puesta a punto es intuitiva. Por último comentar que, tal y como se recoje en dicha web, es compatible tanto con Alfresco 3.4.X como con 4.0.X hoy por hoy, y que instalarlo es tan solo tomar el javascript-console-0.4.3.jar en tomcat/shared/lib. Si no existe pues creais el directorio Lib.

Pensad siempre que en el 99,9% de los casos 'eso raro' que os sucede no es la primera vez que sucede. Seguro que alguien más ha pasado por vuestra experiencia, y en ese caso Google es vuestro amigo ;)

Fuente

Quitar y/o modificar el pie de página 'por defecto'

Para quitar/modificar el pie de página en la versión 3.4.d he descubierto 3 opciones, veámoslas:


      1.    Debemos ir a \tomcat\webapps\share\components\footer\ y en el footer.css cambiar lo siguiente:

.footer .copyright
{
   font-size: 0%;
}



Es cierto, no he eliminado el campo de texto, solo lo he reducido al 0%. 

      2.    Ir a \tomcat\webapps\share\WEB-INF\classes\alfresco\site-webscripts\org\alfresco\components\footer\ y en el footer.get.html.ftl borrar la cuarta línea:

<span>${msg("label.copyright")}</span>


      3.   En el mismo directorio que en el caso anterior, cargarnos el contenido de footer.get_es.properties pero como es lógico solo sería para el didioma castellano, habría que hacer eso mismo con todos, por lo que la veo la más lógica.

También podeis escribir vuestro propio mensaje, ya es a gusto del consumidor/a ;)

Saludos!

sábado, 21 de abril de 2012

Continuando con ocultar la opción "crear sitio" de Cristina

Continuando con el día de trabajo me ha dado por probar este post, pero como ví que puso que no le funcionó en la versión 3.4.d busqué en el foro de Alfresco en español y con este post me puse manos a la obra.
  • Copiando sites.get.html.ftl que está en \webapps\share\WEB-INF\classes\alfresco\site-webscripts\org\alfresco\modules\header\
    •  Pegándolo en \shared\classes\alfresco\web-extension\site-webscripts\org\alfresco\modules\header\
  •   my-sites.get.html.ftl  que está en \webapps\share\WEB-INF\classes\alfresco\site-webscripts\org\alfresco\components\dashlets\
    •  Pegándolo en \shared\classes\alfresco\web-extension\site-webscripts\org\alfresco\components\dashlets\  
Esto es lo que he escrito
 sites.get.html.ftl
 <#if user.isAdmin>
      <ul class="create-site-menuitem">
         <li>
            <span><a href="#" onclick='Alfresco.util.ComponentManager.get("${id_js}").showCreateSite(); return false;'>${msg("label.create-site")}</a></span>
         </li>
      </ul></#if>
   </div>
</div>

my-sites.get.html.ftl
<#if user.isAdmin>
            <a href="#" id="${args.htmlid}-createSite-button" class="theme-color-1">${msg("link.createSite")}</a>
</#if>

Y con esto a mi me ha funcionado. ¿Alguna sugerencia?

Continuando con la creación de un Dashboard personalizado de Cristina

Hoy está siendo un día productivo,  o eso es lo que me parece. Estaba trabajando con el artículo que escribio Cristina titulado "Creación de un Dashboard personalizado" y como aquí estamos todos para aprender, los detalles que he ido encontrando los comento por aquí.
  • Estoy utilizando Alfresco Community 3.4.d recien instalado y el documento create-site.get.properties no existía. Ese no es problema, nos lo descargamos de aquí create-site.get.properties
  • En el primer Dash que creemos nos saldrá un error. Sin problema de nuevo, reiniciamos el servicio de Alfresco y de nuevo vamos andando.
  • En el create-site.get.js el parámetro {id: "Proyectos-dashboard", name: msg.get("title.docProyectos")} es el nombre que nos saldrá en la pantalla cuando lo elijamos asique id cambiandolo para los distintos proyectos.
  • Para cada cambio no es necesario que reinicies el servicio de Alfresco ya que estos ficheros solo se leen cuando el motor de Alfresco los necesita, es decir, no están cacheados en memoria (o esa ha sido mi experiencia). Si se cachea, ojo.
  • No he conseguido que aparezcan cuando le das a 'Modificar los detalles del sitio' por lo que los cambios estarán a fuego.
Espero que os sean útiles ;)

El trabajo continua

Buenas a tod@s,
ya hace tiempo desde que escribí mi última entrada. En todo este tiempo me he centrado en leer y estudiar y, como no podía ser menos, aún mas ganas tengo de continuar y aún más dudas voy encontrando por el camino.

Hoy quería dejaros un pequeño compendio de enlaces con los que he estado trabajando. Recordar, esto no es algo que vayamos a conseguir de un día para otro.

No serán muchos pero en cada uno hay material más que de sobra, no me cabe duda.

Yo por mi parte he dado un paso hacia atrás y he pasado de trabajar con la versión Community 4.0.d a la 3.4.d en lo que no se si será un error, pero lo cierto que gran parte de la documentación se encontraba para la versión 3.4.d, y además he conseguido que el arranque en mi máquina virtual sea mucho más rápido y el consumo de recurso, como no podía ser menos, es menor.

Un saludo a tod@s!!