15 de diciembre de 2016

:: Alfresco. Crear estructura de carpetas a partir de plantilla

En ocasiones es necesario crear un sitio en Alfresco con una estructura de carpetas predeterminada. Para ello, podemos crear en las "plantillas de espacio".


Los pasos a seguir son los siguientes:

1.- Seleccionaremos la opción "Repositorio" > "Diccionario de datos" > "Plantillas de espacio"

2.- Crearemos la estructura de carpetas correspondientes y le asignaremos un nombre

3.- Una vez creado el sitio correspondiente, y seleccionar la "biblioteca de documentos", pulsaremos sobre la opción "Crear" > "Crear carpeta a partir de plantilla"

4.- Seleccionaremos la plantilla configurada

Por ejemplo podemos crear una nueva plantilla para proyectos de calidad con la siguiente estructura:
1.- Manual y procedimientos
1.1.- Anexos: Mapa de procesos y política de calidad
1.2.- Procedimientos
1.3.- Instrucciones
1.4.- Procedimientos técnicos
1.5.- Protocolos
1.6.- Documentos y registros del manual
1.6.1.- Comunicaciones
1.6.2.- Documentación
1.6.3.- Formación
1.6.4.- Mantenimiento de infraestructuras
1.6.5.- No conformidades
1.6.6.- Evaluación del riesgo
1.6.7.- Organigrama
1.6.8.- Plan de calidad
1.6.9.- Proveedores
1.6.10.- Satisfacción del cliente
1.6.11.- Gestión medioambiental
1.6.12.- Seguridad y salud
1.6.13.- Indice del manual
1.6.14.- Histórico documentación

2.- Comisión de calidad

3.- Informes de auditoría

4.- Legislación y normativa

5.- Manual y procedimientos escaneados


La ventaja del uso de plantillas es que podemos definir los permisos y reglas necesarios sobre la estructura de carpetas de la plantilla, de forma que todos estos comportamientos se heredarán al crear un nuevo contenido basado en la plantilla.

11 de diciembre de 2016

:: Moodle Cloud

Si estás pensando en desarrollar o ya trabajas con Moodle, podemos disponer de un hosting gratuito con capacidad para 200MB y 50 usuarios, y llevar a cabo nuestras pruebas.

Para disponer de este alojamiento gratis, tan sólo tendremos que registrarnos y comenzar a disfrutar del mismo para nuestra plataforma de formación Moodle.

4 de diciembre de 2016

:: Alfresco. Deshabilitar la opción de compartir "Quick Share"

En Alfresco es posible compartir un determinado documento para usuarios anónimos mediante el enlace mostrado en el detalle o propiedades del mismo.

De esta manera, podríamos copiar el enlace que nos ofrece Alfresco y remitirlo al interesado para que consulte el documento o también compartir en redes sociales.


En algunas implementaciones de Alfresco puede ser necesario que no exista esta opción de compartir un documento, para lo que será necesario deshabilitarlo a nivel del fichero: "alfresco-global.properties" añadiendo la siguiente línea:

### Deshabilitar la opción de compartir
system.quickshare.enabled=true

30 de noviembre de 2016

:: Alfresco. Restringir los tipos de fichero a subir

En algunas implantaciones de Alfresco es habitual que el cliente necesite restringir el tipo de ficheros permitidos a cargar.

Por ejemplo, en el caso de que los ficheros a restringir sean DLL's y ficheros ejecutables, podemos realizarlo de la siguiente manera (aunque no sea la más elegante).

Sobre la carpeta o carpetas necesarias, definiremos un javascript que será el encargado de hacer que "falle" la subida del fichero. Lo llamaremos: "com.netic360.restricted-file.js" y su contenido será:
throw "Formato no permitido";

A continuación, sobre la carpeta o carpetas necesarias definiremos dos reglas, una que se ejecute cuando el usuario trate de subir un fichero con extensión ".exe" y otra para el caso de ficheros con extensión ".dll".

La regla será como se muestra en la siguiente imagen:


La acción asociada a esta regla, será la ejecución del script definido anteriormente.

Otro posible javascript que podríamos utilizar, sería uno que borre el documento subido, por lo que el código que contendría el fichero ".js" sería:
document.remove;

24 de noviembre de 2016

:: Alfresco. Cuotas de disco

En la solución de Gestión Documental Alfresco es posible establecer cuotas de disco para los usuarios, de forma que una vez superado este valor, los usuarios no podrán subir nuevos documentos.

Esta restricción se realiza desde la edición de la ficha de un usuario, estableciendo el valor oportuno en: "Cuota" (KB, MB, GB).


Es importante tener en cuenta que estas cuotas establecidas deben estar habilitadas a nivel de la instancia de Alfresco, por lo que en el fichero de configuración: "alfresco-global.properties" debe existir una línea:
system.usages.enables=true

Tras llevar a cabo esta modificación y reiniciar el servicio, estas restricciones tendrán efecto, ya que de lo contrario, aunque -para un usuario- hayamos establecido restricciones, este podrá subir toda la información sin límite alguno.

24 de octubre de 2016

:: Tablero Scrum en MantisBT

Para integrar un tablero Scrum en nuestro "gestor de incidencias" Mantis, los pasos que seguiremos son los siguientes:

.- Procedemos a descargar el plugin siguiente:
https://github.com/mantisbt-plugins/scrum

.- Copiamos los fuentes en nuestra instalación de Mantis BT, bajo la carpeta "plugins"

.- Nos loguearemos en Mantis BT e iremos a la opción: "Administración" > "Administrar Plugins"

.- En la lista de plugins disponibles nos aparecerá el nuevo plugin añadido, por lo que pulsaremos sobre el enlace "Instalar"

.- Una vez instalado este plugin, nos aparecerá una nueva entrada de menú denominada "Scrum board"

.- Sobre los estilos css del plugin podríamos llevar a cabo modificaciones, de forma que integre visualmente con nuestra instalación de Mantis BT

El aspecto del tablero Scrum en nuestra instalación de Mantis sería algo similar a esto:



22 de septiembre de 2016

:: Tip Alfresco. Buscar todos los usuarios

A menudo, una pregunta recurrente en Alfresco es cómo buscar u obtener la relación completa de usuarios definidos.
Normalmente se tiende a utilizar el carácter "*", no devolviendo ningún resultado.

Los caracteres que debemos utilizar son:
\* (caracter escapado)
%

El carácter más ampliamente utilizado es "%" por lo que al añadirlo en el cajetín de búsqueda de los usuarios, obtendremos la relación de aquellos definidos en el sistema.

31 de agosto de 2016

:: Alfresco. Habilitar el modo "debug"

Para habilitar el modo "debug" en Alfresco 5, los pasos a seguir son los siguientes:
.- Editaremos el fichero "share-config-custom.xml" ubicado en: "${alfresco}\tomcat\shared\classes\alfresco\web-extension"

.- Modificamos el valor que aparece en la siguiente línea y lo establecemos a "true"
< client-debug >false< /client-debug >

Tras reiniciar el servicio de Alfresco, en el menú principal tendremos acceso a una nueva entrada denominada "Debug Menu " con las siguientes entradas:

  • Update Logging Preferences
  • Show Pub/Sub Log
  • Show Data Model
  • Toggle Developer View


Para cada una de estas opciones, disponemos además de la opción de una configuración rápida en cuanto a la información a mostrar en los logs:

  • Debug Logging
  • Show All Logs
  • Show Warning Messages
  • Show Error Messages

25 de agosto de 2016

:: Alfresco. Proceso de borrado de documentos

Aunque pueda parecer obvio, a menudo se suele afirmar que Alfresco "no elimina los documentos", con lo que esta pregunta se hace recurrente por parte del cliente: "¿Pero es que Alfresco nunca elimina los documentos?.

Por este motivo y para explicar un poco el funcionamiento del proceso de borrado o la vida de un documento en Alfresco, mostramos el siguiente gráfico.


1.- El documento está visible en Alfresco
2.- El usuario elimina el documento seleccionado, pasando este a la papelera de reciclaje (este aún es visible)
3.- El usuario vacía la papelera de reciclaje, por lo que el documento ya no está visible, pero podríamos recuperarlo sin los metadatos asociados
4.- El usuario administrador elimina el ContentStore por lo que el documento es eliminado junto a todas sus referencias y ya no podrá ser recuperado

Existen desarrollos específicos en el marketplace de Alfresco (https://addons.alfresco.com/) para realizar la gestión de los elementos presentes en la papelera de reciclaje.

20 de agosto de 2016

:: Tip HTML. ¿Para qúe sirve la etiqueta rel="Publisher"?


Este tipo de marcado de autoría es utilizado para beneficiar a tu marca, y debería apuntar a la página definida en Google+.

La existencia de esta etiqueta en tu web asegura que tu organización aparezca nombrada en los SERPs, frente a otros resultados que únicamente disponen del marcado de autoría rel="Author".

16 de agosto de 2016

:: Alfresco. Configuración del LDAP

La vinculación de la solución de Gestión Documental Alfresco -en su versión 5- con el LDAP (como en el resto de versiones) se realiza siguiendo los pasos siguientes:


1.- Debemos editar el fichero alfresco-global.properties ubicado en "Alfresco/tomcat/shared/classes"
2.- Añadiremos la siguiente configuración al fichero:

##LDAP
authentication.chain=alfinst:alfrescoNtlm,ldap1:ldap-ad
ntlm.authentication.sso.enabled=false
ldap.authentication.allowGuestLogin=false

ldap.authentication.userNameFormat=%s
#your login is the same like user name in windows
ldap.synchronization.active=true
ldap.authentication.java.naming.security.authentication=simple
ldap.authentication.java.naming.provider.url=ldap://xxxx.local/:389
ldap.authentication.defaultAdministratorUserNames=xxxx
ldap.synchronization.java.naming.security.principal=xxxx@xxxx.local
ldap.synchronization.java.naming.security.credentials=xxxxx
ldap.synchronization.userSearchBase=ou\=xxxx,ou\=xxxx,dc\=xxxx,dc\=xxxx

Tras configurar el ldap en este fichero y una vez guardados los cambios, procederemos a reiniciar el servicio.

Cuando el usuario acceda al login, el proceso de validación se realizará contra el directorio activo.

13 de agosto de 2016

:: Alfresco. Deshabilitar enlace al repositorio

En implantaciones de la solución de gestión documental Alfresco, en ocasiones uno de los requisitos consiste en deshabilitar/ocultar una entrada de menú.
En este caso particular, si se desea ocultar la entrada "Repositorio" para usuarios no administradores, los pasos a seguir son los mostrador a continuación.

Buscaremos el fichero "share-config-custom.xml" ubicado en: "${alfresco}\tomcat\shared\classes\alfresco\web-extension" y modificaremos el código en negrita.
<!-- Repository Library config section -->
   <config evaluator="string-compare" condition="RepositoryLibrary" replace="true">
      <!--
         Root nodeRef or xpath expression for top-level folder.
         e.g. alfresco://user/home, /app:company_home/st:sites/cm:site1
         If using an xpath expression, ensure it is properly ISO9075 encoded here.
     -- >
      <root-node >alfresco://company/home</root-node>
     <tree>
         <!--
            Whether the folder Tree component should enumerate child folders or not.
            This is a relatively expensive operation, so should be set to "false" for Repositories with broad folder structures.
         -->
         <evaluate-child-folders>false
        
         <!--
            Optionally limit the number of folders shown in treeview throughout Share.
         -->
         <maximum-folder-count >500< /maximum-folder-count>
      </tree>
      <!--
         Whether the link to the Repository Library appears in the header component or not.
      -->
      <visible >false</visible>
   </config>
De esta manera, el enlace al repositorio no estará disponible para usuarios que no sean administradores.

8 de agosto de 2016

:: Alfresco. Restringir el tipo de ficheros a subir a la biblioteca de documentos

En un proyecto de implantación de Alfresco como solución de getión documental es habitual que uno de los requisitos del cliente sean que no desea que suban "ficheros ejecutables".

Una posible solución, para evitar que suban ficheros de un determinado tipo a una carpeta sería siguiendo los siguientes pasos:

.- Definiremos un fichero .js al que llamaremos "netic360_block_document.js" y que subiremos a: "Repositorio" > "Diccionario de datos" > "Scripts"
function main()
{
    var name = document.name;
    var siteName = document.siteShortName;
    var parent = document.parent;
    throw "Formato de fichero no soportado";
}
main();

.- En la carpeta sobre la que deseamos aplicar esta restricción definiremos una regla encargada de ejecutar el script en el caso de que el "mimetype" del documento sea un "fichero binario".


De esta manera, a la hora de subir un fichero binario, no se completará el proceso al ser identificado como un formato no permitido.

4 de agosto de 2016

:: Alfresco. Creación de un grupo

Para crear un nuevo grupo de usuarios en Alfresco, seleccionaremos la entrada de menú "Herramientas administrativas" > "Grupos".
Nos aparecerá un cajetín donde realizar una búsqueda por un determinado literal; en nuestro caso - y puesto que vamos a crear un nuevo grupo- pulsaremos sobre el botón "Examinar".

Para proceder a la creación, pulsaremos sobre el botón "+" y cumplimentaremos los datos del formulario.

Una vez pulsemos sobre el botón "Crear grupo" nos aparecerá la relación de grupos disponibles, momento tras el que pasaremos a crear o asociar un usuario a un determinado grupo.

30 de julio de 2016

:: Alfresco. Crear carpeta desde plantilla

En ocasiones puede ser interesante crear una carpeta dentro de la que se siga una determinada estructura pre-establecida. Para estos casos, suele ser bastante cómoda la creación de una carpeta a partir de una plantilla.

La siguiente pregunta sería, ¿cómo puedo definir una plantilla que pueda utilizar en la biblioteca de documentos?
Para dar respuesta a la pregunta anterior, debemos seguir los pasos siguientes:
.- Accedemos al "Repositorio" > "Diccionario de datos" > "Plantillas de espacio"

.- En este punto crearemos una carpeta denominada "Expediente Netic360" y dentro de esta, la estructura que necesitemos; en nuestro caso crearemos dos subcarpetas a las que denominaremos:
  • Documentación técnica
  • Documentación administrativa



.- Al regresar a la biblioteca de documentos y al pulsar sobre el enlace "Crear" > "Crear carpeta a partir de plantilla" nos aparecerá la nueva "plantilla" que hemos creado: "Expediente Netic360"

.- Lo interesante sería crear una "carpeta" de un tipo personalizado que tengamos definido y que a su vez contenga la estructura acordada.
Para ello, sobre la carpeta que hemos creado dentro de las plantillas de espacio, seleccionaremos la opción "Cambiar tipo" y seleccionaremos el tipo asociado a esta carpeta. De esta manera, cuando en la biblioteca de documentos creemos una carpeta basada en esta plantilla, será del tipo seleccionado, por ejemplo "Expediente", siendo este un tipo personalizado previamente definido que hereda de cm:folder.


25 de julio de 2016

:: Alfresco. Búsqueda simple sobre tipos de datos personalizados

Una vez hayamos definido tipos de datos personalizados, para que el proceso de búsqueda se realice también sobre estos, es necesario llevar a cabo alguna configuración adicional.


.- Copiaremos los ficheros siguientes a la siguiente ubicación: "${alfresco}\tomcat\shared\classes\alfresco\extension\templates\webscripts\org\alfresco\slingshot\search"
  • live-search-docs.get.config.xml
  • search.get.config.xml
En la versión 5 de Alfresco, estos no aparecen directamente en el sistema de ficheros, por lo que podemos extraerlos del .JAR ubicado en:
tomcat/webapps/alfresco/WEB-INF/lib/alfresco-remote-api-5.0.2.1.jar (el número de versión puede variar según la que tengamos instalada)


.- Editaremos el fichero "live-search-docs.get.config.xml" y añadiremos los campos correspondientes a los nuevos tipos de datos que queramos incluir en el proceso de búsqueda
< search >
    < default-operator >AND< /default-operator >
    < default-query-template >%(cm:name cm:title cm:description  fact:nfactura con:ncontrato TEXT TAG)

< /search >

.- Editaremos el fichero "search.get.config.xml" y añadiremos - de la misma manera - los campos correspondientes a los nuevos tipo de datos que queramos incluir en el proceso de búsqueda
< search >
    < default-operator >AND< /default-operator >
    < default-query-template >%(cm:name cm:title cm:description fact:nfactura con:ncontrato  ia:whatEvent ia:descriptionEvent lnk:title lnk:description TEXT TAG)< /default-query-template >
< /search >

Tras reiniciar el servicio de Alfresco, la búsqueda se realizará sobre los campos especificados de los tipos de datos personalizados que habíamos definido.

Aunque ya existía un post relacionado, quizás quede más clara la implementación concreta con la descripción anterior.

NOTA: En este momento nuestro Alfresco Share no arrancará correctamente si no hemos definido en el fichero "share-config-custom.xml" el nuevo tipo de datos.

20 de julio de 2016

:: Alfresco. Crear webscript que añada enlace a la carpeta personal

En este caso vamos a crear un webscript que nos incluya un enlace a la carpeta personal del usuario logueado, desde el dashlet denominado "Mi perfil".


Los pasos a seguir son los siguientes:

1.- Crearemos el fichero correspondiente al descriptor del WebScript, y lo nombraremos como: "userhome.get.desc.xml" con el siguiente contenido:

< webscript >
   < shortname >Get User Home< /shortname >
   < description >Get the userHome field from alfresco< /description >
   < url >/getuserhome< /url >
   < format default="json" />
   < authentication >user< /authentication >
< /webscript >

El fichero anterior lo copiaremos en: "Repositorio>Diccionario de datos>Web Scripts"

2.- Definimos la plantilla asociada, que en este caso será en formato json, y lo nombramos: "userhome.get.json.ftl"
{
    "userhome":"${userhome.properties.name}"
}

El fichero lo copiaremos en la misma ubicación que el anterior: "Repositorio>Diccionario de datos>Web Scripts"

3.- Definimos el fichero javascript encargado de llevar a cabo esta tarea; lo nombraremos como "my-profile.get.js":
function main()
{   
    var userHome = "NOT_FOUND";
    // Getting user home
    var resultCall = remote.call("/getuserhome");
    var nodeTmp = eval('(' + resultCall + ')');
    if(nodeTmp != null){
        userHome = nodeTmp.userhome;
    }
    model.userHomeFolderName = userHome;
}
main();

4.- Modificaremos la plantilla encargada de mostrar el perfil del usuario logueado. El fichero a modificar es: "my-profile.get.html.ftl"


A este fichero le añadiremos (donde corresponda) el código correspondiente al enlace al espacio personal del usuario:
< a class="sitio_personal" href="https://www.blogger.com/share/page/site/Usuarios/documentlibrary#filter=path%7C/${userHomeFolderName?url}" title="Mi carpeta personal" >Mi carpeta personal< /a >

En el tema que utilicemos definiríamos (en el fichero presentation.css) los estilos correspondientes para mostrar este enlace al espacio personal.

Este fichero debemos copiarlo en la ruta siguiente: "${alfresco}\tomcat\shared\classes\alfresco\web-extension\site-webscripts\org\alfresco\components\dashlets"

5.- Para habilitar el webscript accederemos a la url: "http://localhost:8080/alfresco/service/index" y tras especificar las credenciales de acceso actualizaremos la lista de webscripts disponibles.
Seleccionaremos la entrada "Browse all Web Scripts" y comprobaremos que nuestro webscript se encuentra en la lista.

Tras reiniciar el servicio, en el dashlet de mi perfil tendremos un enlace para que el usuario acceda al sitio personal.

13 de julio de 2016

:: Alfresco. Crear un WebScript para subir ficheros


Para definir un WebScript que nos permita subir un fichero al repositorio, seguiremos los siguientes pasos:

.- Crearemos el fichero correspondiente al descriptor del WebScript, y lo nombraremos como: "upload.get.desc.xml" con el siguiente contenido:
< webscript >
  < shortname >Subida de ficheros. Netic360< /shortname >
  < description >Formulario para subida de ficheros de contenido y metadaros al repositorio< /description >
  < url>/netic360/upload< /url >
  < authentication >user< /authentication >
< /webscript >

El fichero anterior lo copiaremos en: "Repositorio>Diccionario de datos>Web Scripts"

.- Crearemos el fichero correspondiente a la plantilla o vista del WebScript, y lo nombraremos como: "upload.get.html.ftl"
El contenido de este fichero será el siguiente:

< html >
 < head >
   < title >Upload Web Script Sample< /title >
   < link rel="stylesheet" href="${url.context}/css/main.css" TYPE="text/css">
 < /head >
 < body >
   < table >
     < tr >
       < td >Alfresco

       < td >WebScript para upload de ficheros
     < /tr >
     < tr >< td >< td >Alfresco ${server.edition} v${server.version}
   < /table >
   < p >
   < table >
    
       < tr >< td >File:< /td >< td >< input type="file" name="file" >< /td >< /tr >
       < tr >< td >Title:< /td >< td >< input name="title" >< /td >< /tr >
       < tr >< td >Description:< /td >< td >< input name="desc" >< /td >< /tr >
       < tr >< td >

       < tr >< td >< input type="submit" name="submit" value="Upload" >< /td >< /tr >
     < /form >
   < /table >
 < /body >
< /html >

.- Crearemos el fichero correspondiente al descriptor del WebScript para el método "POST". El fichero lo llamaremos: "upload.post.desc.xml"
Este fichero tendrá el siguiente contenido:
< webscript >
  < shortname >File Upload Sample< /shortname >
  < description >Upload file content and meta-data into Repository< /description >
  < url >/netic360/upload< /url >
  < authentication >user< /authentication >
< /webscript >

.- Crearemos el fichero correspondiente al script a ejecutar, y lo llamaremos: "upload.post.js"
El contenido de este fichero será el siguiente:

var filename = null;
var content = null;
var title = "";
var description = "";

// locate file attributes
for each (field in formdata.fields)
{
  if (field.name == "title")
  {
    title = field.value;
  }
  else if (field.name == "desc")
  {
    description = field.value;
  }
  else if (field.name == "file" && field.isFile)
  {
    filename = field.filename;
    content = field.content;
  }
}

// ensure mandatory file attributes have been located
if (filename == undefined || content == undefined)
{
  status.code = 400;
  status.message = "Uploaded file cannot be located in request";
  status.redirect = true;
}
else
{
  // create document in company home for uploaded file
  upload = companyhome.createFile("upload" + companyhome.children.length + "_" + filename) ;
 
  upload.properties.content.write(content);
  upload.properties.content.setEncoding("UTF-8");
  upload.properties.content.guessMimetype(filename);
 
  upload.properties.title = title;
  upload.properties.description = description;
  upload.save();

  // setup model for response template
  model.upload = upload;
}

.- Por último crearemos el fichero correspondiente a la vista tras subir el fichero. El nombre del fichero será: "upload.post.html.ftl"
Este tendrá el siguiente contenido:
< html >
 < head >
   < title >Upload Web Script Sample< /title >
   < link rel="stylesheet" href="${url.context}/css/main.css" TYPE="text/css" >
 < /head >
 < body >
   < table >
     < tr >
       < td >< img src="${url.context}/images/logo/AlfrescoLogo32.png" alt="Alfresco" />< /td >
       < td >< nobr >Upload Web Script Sample< /nobr >< /td >
     < /tr >
     < tr >< td >Alfresco ${server.edition} v${server.version}< /td >< /tr >
     < tr >
< /td >< /tr >
     < tr >< td >Uploaded < a href="${url.serviceContext}/sample/folder${upload.displayPath}" >${upload.name}< /a > of size ${upload.properties.content.size}.< /td >< /tr >
   < /table >
 < /body >
< /html >

.- Para invocar al webscript insertaremos en el navegador la siguiente url:
localhost:8080/alfresco/service/netic360/upload

Más información: http://docs.alfresco.com/5.0/concepts/ws-webscripts.html

10 de julio de 2016

:: Alfresco. Búsqueda avanzada sobre tipos de datos personalizados

Tras definir los tipos de datos personalizados que necesitábamos, es necesario configurar el buscador avanzado para que podamos llevar a cabo búsquedas sobre este nuevo tipo de datos.
Para ello, modificaremos el fichero "share-config-custom.xml" ubicado en: "${alfresco}\tomcat\shared\classes\alfresco\web-extension" (previamente haremos un backup de este fichero).

Añadimos los siguientes contenidos a este fichero: "share-config-custom.xml"

.- Buscador avanzado
< !-- Mostrar nuevos tipos de datos en el buscador avanzado //-- >
< config replace="false" evaluator="string-compare" condition="AdvancedSearch" >
< advanced-search >
< !-- Forms for the advanced search type list - ->
< forms >
< form labelId="type.fact_factura" descriptionId="search.form.desc.fact_factura" >fact:factura< /form >
< form labelId="type.con_contrato" descriptionId="search.form.desc.con_contrato" >con:contrato< /form >
< /forms >
< /advanced-search >
< /config >
< !--                                 //-- >

< !-- Campos a mostrar en los formularios de la búsqueda avanzada //-- >
< config evaluator="string-compare" condition="Advanced Search" >
      < advanced-search >
         
< type name="fact:factura" / >
< type name="con:contrato" / >
        < /content-types >
         < custom-properties >
            < !-- Facturas //-- >
< meta-data type="fact:factura" property="fact:nfactura" / >
< meta-data type="fact:factura" property="fact:anio" / >
< meta-data type="fact:factura" property="fact:fecha" / >
< meta-data type="fact:factura" property="fact:nif" / >
< meta-data type="fact:factura" property="fact:nproveedor" / >
< !-- Contratos //-- >
< meta-data type="con:contrato" property="con:tipo" / >
< meta-data type="con:contrato" property="con:ncontrato" / >
< meta-data type="con:contrato" property="con:aniocontrato" / >
< meta-data type="con:contrato" property="con:delegacion" / >
< meta-data type="con:contrato" property="con:coddelegacion" / >
< meta-data type="con:contrato" property="con:nclientecontrato" / >
         < /custom-properties >
      < /advanced-search >
   < /config >

.- Buscador simple
< !-- Busquedas simples - ->
   < config >
< clien t>
< simple-search-additional-attributes >
< qname >{fact.model}nfactura< /qname >
< qname>{con.model}ncontrato
< /simple-search-additional-attributes >
< /client >
   < /config >

8 de julio de 2016

:: Alfresco. Creación de un webscript sencillo (Tip conceptual)

Los WebScripts son elementos que proporciona Alfresco como una forma de desarrollar funcionalidades. De esta manera nos permiten construir servicios web para la gestión de contenidos accesibles vía HTTP.

Estos WebScripts pueden crearse haciendo uso de JavaScript y Freemarker.

Tipos de WebSripts

Podemos distinguir dos tipos:
Webcripts de datos: Estos encapsulan el acceso o modificación del contenido del repositorio, proporcionando un ainterfaz a aplicaciones cliente. Alfresco incluye algun ejemplo de Web Scripts de datos que sirven para: añadir tags a los documentos, actividades, etc.
   
Webscripts de presentación: Permiten construir interfaces de usuario como por ejemplo: dashlets para Alfresco, portlets para un portal (siguiendo el estándar JSR-168), un portal Web o una aplicación a medida.

A continuación se muestra la arquitectura de un webscript en Alfresco

Elementos de un webscripts

Documento de descripción:  identifica la URI que instancia el script, un nombre corto, descripción y requisitos de autenticación y transacciones.
   
Script: actúa de controlador. Escrito en Javascript puede realizar tareas como consultas al repositorio de Alfresco, actualizar el repositorio, etc. El script tiene acceso a todos los argumentos de la URI, a los servicios de Alfresco y a los datos del repositorio.
   
Plantillas o vistas de respuesta. Normalmente desarrolladas en Freemaker, encargadas de renderizar la respuesta en el formato adecuado: HTML, ATOM, XML, RSS, JSON, CSV, etcétera.

Pasos para crear un webscript

.- Nos loguearemos en Alfresco y accederemos al "Repositorio" > "Diccionario de datos" > "WebScripts"
Para extender la funcionalidad de un webscript existente, copiaremos los ficheros originales y los copiaremos en la carpeta "Repositorio > Diccionario de datos > Extensiones de web scripts"

.- Crearemos el descriptor del WebScript (fichero XML), al que llamaremos: "hello.get.desc.xml" con el siguiente contenido:
< webscript >
  < shortname >Hola< /shortname >
  < description >Ejemplo de webScript< /description >
  < url >/hello< / url >
< /webscript >
.- Crearemos la plantilla para el WebScript (fichero ftl), al que llamaremos "hello.get.html.ftl" con el siguiente contenido:
Hola que tal !!!

.- Para registrar nuestro WebScript en Alfresco, abriremos la siguiente url en una nueva pestaña: "http://localhost:8080/alfresco/service/index"
Nos pedirá las credenciales de acceso y si son correctas nos mostrará un listado de los tipos de WebScripts disponibles.


.- Seleccionamos la entrada "Browse All Scripts" y buscaremos si aparece nuestro webscript recientemente creado. A continuación pulsaremos el botón "Registrar todos"


.- Para comprobar el funcionamiento de este WebScript invocaremos a la siguiente url: "http://localhost:8080/alfresco/service/hello"

El nombrado de los ficheros es muy importante:
hello.get.desc.xml
  • hello: id del servicio (previamente podría llevar un descriptor del paquete)
  • get: método utilizado (GET)
  • desc.xml: Indica a Alfresco que se trata de un descriptor de WebScripts

hello.get.html.ftl
  • hello: id del servicio (previamente podría llevar un descriptor del paquete)
  • get: método utilizado (GET)
  • html: formato de respuesta
  • .ftl: plantilla freemaker

Más información: http://www.juntadeandalucia.es/servicios/madeja/contenido/recurso/45

3 de julio de 2016

:: Alfresco. Modificar el pie de las páginas

Dentro de los "tips" para personalizar la interfaz de usuario de Alfresco, describiremos a continuación cómo adaptar el pie de las páginas a nuestras necesidades.


1.- En la ubicación "${alfresco}\tomcat\webapps\share\WEB-INF\classes\alfresco\site-webscripts\org\alfresco\components\footer" buscamos los siguientes ficheros:
  • footer.get.desc.xml
  • footer.get.head.ftl
  • footer.get.html.ftl
  • footer.get.properties
2.- Copiaremos estos ficheros a la siguiente ruta: "${alfresco}\tomcat\shared\classes\alfresco\web-extension\site-webscripts\org\alfresco\components\footer\"

3.- Editaremos los ficheros siguientes, modificándolos según nuestras necesidades:
  • footer.get.html.ftl
  • footer.get.properties
4.- El logo a mostrar en el pie, denominado "alfresco-share-logo.png" podemos ubicarlo en la carpeta "${alfresco}\tomcat\webapps\share\components\images" y sobrescribiremos el fichero existente.

5.- Desde el logo mostrado en el pie de página se accederá al diálogo correspondiente al "Acerca de" de la aplicación.
Para modificar este diálogo, copiaremos el siguiente fichero ubicado en: "${alfresco}\tomcat\webapps\share\WEB-INF\classes\alfresco\site-webscripts\org\alfresco\modules" a la carpeta: "${alfresco}\tomcat\shared\classes\alfresco\web-extension\site-webscripts\org\alfresco\modules\"

  • about-share.get.html.ftl
Los estilos que queramos sobrescribir por ejemplo en el "Acerca de", podemos hacerlo en el fichero "presentation.css" del tema. Por ejemplo, cambiar el margen respecto a la parte superior del copyright.

6.- Modificaremos los estilos y la plantilla como corresponda.

7.- La imagen a utilizar como fondo en el "Acerca de", nombrada como "about-bg", la copiaremos en la siguiente ruta: "${alfresco}\tomcat\webapps\share\modules\images" (El logo que aparece forma parte de la misma imagen de fondo)

8.- La imagen a mostrar en el pie de página correspondiente al logo, nombrada como "alfresco-share-logo.png", la copiaremos en la siguiente ruta: "${alfresco}\tomcat\webapps\share\components\images"


Tras reiniciar el servicio de Alfresco, los cambios estará disponibles.


30 de junio de 2016

:: Alfresco. Deshabilitar la creación de sitios para usuarios no administradores

Para deshabilitar la opción de "crear sitio" a todos aquellos usuarios que no sean administradores, debemos seguir los pasos siguientes:


1.- Buscaremos el fichero "sites.get.html.ftl" ubicado en la siguiente ruta "C:\Alfresco\tomcat\webapps\share\WEB-INF\classes\alfresco\site-webscripts\org\alfresco\modules\header" y lo copiaremos a la ruta: "c:\alfresco\tomcat\shared\classes\alfresco\web-extension\site-webscripts\org\alfresco\modules\header"

2.- Editamos este fichero y buscamos el  código siguiente: "< ul class="create-site-menuitem" >". El código que tenemos que controlar es el siguiente:
<#if showCreateSite>
 <ul class="create-site-menuitem">
<li>
<a href="#" onclick="Alfresco.util.ComponentManager.get('${id_js}').showCreateSite(); return false;">${msg("label.create-site")}</a>
</li>
 </ul>
</#if>


Añadiremos la comprobación para que esta acción sea ejecutada únicamente por los usuarios administradores.
<#if user.isAdmin>
< #if showCreateSite >
 < ul class="create-site-menuitem" >
< li >
< a href="#" onclick="Alfresco.util.ComponentManager.get('${id_js}').showCreateSite(); return false;">${msg("label.create-site")}< /a>
< /li >
 < /ul >
< /#if >
</#if>


3.- Buscamos el fichero "my-sites.get.html.ftl" ubicado en la siguiente ruta "${alfresco}\tomcat\webapps\share\WEB-INF\classes\alfresco\site-webscripts\org\alfresco\components\dashlets" y lo copiamos en la siguiente ubicación "${alfresco}\tomcat\shared\classes\alfresco\web-extension\site-webscripts\org\alfresco\componentes\dashlests\"

4.- Editamos el fichero que hemos copiado y buscamos el código "createSite-button" y lo modificaremos de la siguiente manera:
< #if showCreateSite >
< span class="first-child" >
< #if user.isAdmin >
< a href="#" id="${id}-createSite-button" class="theme-color-1 " >
< img src="${url.context}/res/components/images/site-16.png" style="vertical-align: text-bottom" />
${msg("link.createSite")}< /a >
< /#if >
< /span >
< /#if >




28 de junio de 2016

:: Alfresco. Modificar la página de login

En el siguiente "Tip" describiré los pasos a seguir para personalizar la página de login (adaptación gráfica sin grandes cambios), para lo que debemos seguir los siguientes pasos:


1.- Necesitamos mostrar una imagen de fondo.
En el tema que hemos creado, buscaremos en el fichero "presentation.css" los estilos correspondientes al login.
body.alfresco-guest
{
   background: none;
 }

Modificamos estos estilos según nuestras necesidades, por ejemplo:
body.alfresco-guest
{
   background: transparent url('./images/alfresco-logo-bg.jpg') no-repeat;
   background-position: center center;
   -webkit-background-size: cover;
   -moz-background-size: cover;
   -o-background-size: cover;
   background-size: cover;
 }

La imagen de fondo, a la que la hemos llamado "alfresco-logo-bg.jpg" debemos copiarla en la  carpeta "images" de nuestro tema.

2.- Cambiaremos el logo de la organización.
Para ello copiaremos el logo, al que hemos llamado: "logo.png" en la carpeta "images" de nuestro tema.

3.- Otras imágenes que deberemos modificar son las siguientes:
  • app-logo.png
  • app-logo-48.png
  • app-logo-share.png

Algunos de los pasos anteriores ya habían sido descritos en otro post donde indicábamos cómo crear un nuevo tema.

27 de junio de 2016

:: Alfresco. Cómo añadir nuevos literales a Share

Como vimos en otros posts anteriores correspondientes a la creación de tipos personalizados de datos, a la hora de utilizarlos en Share no disponíamos de las traducciones de las etiquetas, por lo que describiremos a continuación los pasos necesarios para que sean reconocidas por Share.

Debemos crear el fichero denominado "custom-slingshot-application-context.xml" en la carpeta "${alfresco}/tomcat/shares/classes/alfresco/web-extension/" con el siguiente contenido (podemos copiar el fichero "custom-slingshot-application-context.xml.sample" y modificarlo).
< beans >
    < bean class="org.alfresco.i18n.ResourceBundleBootstrapComponent" 
         id="NETIC360slingshot.resources" >
        < property name="resourceBundles" >
            < list >
  < value >alfresco.web-extension.messages.NETIC360slingshot< /value >
            
< /property > < /bean > < /beans >

Mediante este fichero le indicamos a Alfresco que debe buscar el fichero "NETIC360slingshot.properties" del que extraerá las traducciones de los literales especificados.

En la siguiente ruta "${alfresco}/tomcat/shared/classes/alfresco/web-extension/messages/" crearemos el fichero "NETIC360slingshot.properties" (fichero de texto) con los literales a utilizar. Por ejemplo:
### Traducciones NETIC360

type.exp_expedienteNETIC360=Expedientes NETIC360

search.form.desc.exp_expedienteNETIC360=Busca todos los expedientes


Tras reiniciar el servicio de Alfresco - y si todo ha ido bien (comprobación de los logs) - los nuevos literales se mostrarán en Alfresco Share con las traducciones especificadas.

NOTA: Para el problema de las tildes y caracteres acentuados, los ficheros con los literales los crearemos con la codificación: ANSI

26 de junio de 2016

:: Alfresco. Crear un tema en la versión 5

A menudo en los proyectos de implantación de alfresco se hace necesaria una personalización de la interfaz del gestor documental para adaptarla a la línea gráfica del cliente.

Por este motivo para llevar a cabo esta adaptación realizaremos una serie de pasos.

Creación de un tema

Para llevar a cabo la creación de un nuevo tema, partiremos de uno ya disponible. Para ello copiamos por ejemplo la carpeta: "greenTheme" ubicado en: "${alfresco}\tomcat\webapps\share\themes".

Renombramos esta carpeta greenTheme al nombre de nuestro tema, por ejemplo: "netic360Theme".
En el fichero "presentation.css" y skin.css sustituiremos el literal "-greenTheme" por "-netic360Theme".
Además en la carpeta : "images" modificaremos todas aquellas que sea necesario, manteniendo su nombre para no tener que llevar a cabo modificaciones adicionales.

Estructura del fichero .AMP

La estructura del fichero AMP correspondiente al tema es la siguiente:
module.properties
file-mapping.properties
config
     alfresco
          site-data
               themes
                    netic360.xml
web
     favicon.ico
     componentes
          images
               alfresco-share-logo.png
               alfresco-logo-bg.png
     modules
         images
              about-bg.png
     themes
          netic360
               presentation.css
               images
               yui
                    assets  

module.properties: Se definen una serie de propiedades del tema que estamos creando. Además en este fichero se podrían establecer las versiones máximas y mínimas de Alfresco para el que es válido este tema.
El contenido de este fichero podría ser algo similar a lo siguiente:
# Netic360 Theme module properties
module.id=org.alfresco.module.netic360
module.version=0.1
module.title=Alfresco Share Netic360 Theme
module.description=Alfresco Share Netic360 Theme

file-mapping.properties: Fichero donde se mapea la estructura que tendrá el fichero .AMP
Podría ser algo similar a lo siguiente:
###Netic360
include.default=true

/web=/
/config=/WEB-INF/classes/

La línea "include.default=true" indica que la estructura del fichero .AMP es la establecida por defecto.

netic360.xml: Fichero necesario donde se define el literal que aparecerá al seleccionar el tema a aplicar.
El contenido de este fichero es XML es el siguiente:
< ?xml version='1.0' encoding='UTF-8'? >
< theme >
    < title >Netic360< /title >
< /theme >

favicon.ico: Representará el favicon de nuestro Alfresco ya que lo sobreescribiremos en el momento de desplegar el fichero .amp

alfresco-logo-bg.png: Imagen a mostrar como fondo de página en el control de acceso. La renombramos de esta manera para no tener que llevar a cabo modificaciones adicionales

alfresco-share-logo.png: Imagen a mostrar en el pie de página. La renombraremos de esta manera para no tener que llevar a cabo modificaciones adicionales

about-bg.png: Imagen que se mostrará como fondo en el "Acerca de" de la aplicación

Dentro de la carpeta "web>themes>netic360" se encuentra la estructura del tema del que partimos por lo que modificaremos todas aquellas imágenes que sea necesario.
Otro de los ficheros principales a modificar es:
presentacion.css: Fichero donde se definen los estilos para los distintos elementos del tema que nos ocupa

Como desplegar un fichero AMP

Para desplegar el tema que hemos creado de acuerdo a la estructura anteriormente descrita, ejecutamos la sentencia:

"java –jar  alfresco-mmt.jar netic360-theme.amp share.war –verbose"

Puede que sea posible utilizar la opción -force para "forzar" sobrescribir los ficheros necesarios.

Posteriormente tendremos que llevar a cabo otras modificaciones para personalizar el "Acerca de", el pie de las páginas, etcétera, pero el fichero AMP básico correspondiente a la definición de un tema es el descrito anteriormente.

23 de junio de 2016

:: Google Nik Collection. Ahora gratis

Hace unos meses Google anunció que comenzaba a ofrecer de manera gratuita esta suite de herramientas para procesamiento de imágenes.
Esta suite, que Google compró a una empresa hace años y que posteriormente comercializaba por unos 150$, está compuesta por una serie de herramientas:
  • Analog Efex Pro. Permite emular los resultados obtenidos con cámaras y películas analógicas
  • Color Efex Pro. Filtros para retocar colores y obtener efectos cromáticos interesantes
  • Silver Efex Pro. Herramienta para el revelado en blanco y negro
  • Viveza. Nos permite trabajar de forma precisa con el color y las tonalidades.
  • HDR Efex Pro. Permite generar imágenes HDR (High Dynamic Range)
  • Sharpener Pro. Permite manejar el nivel de nitidez de las imágenes
  • Dfine. Permite reducir el ruido de las imágenes preservando la definición

Más información y descarga en la web oficial de Google Nik Collection

21 de junio de 2016

:: Liferay. Modificar la instancia por defecto

Sobre una misma instalación de Liferay es posible mostrar distintos portales, organizados estos en instancias. Normalmente existe definida una instancia por defecto, por lo que si en un momento determinado necesitamos modificar cual de los portales será el establecido por defecto, debemos insertar el siguiente código en el fichero: "portal-ext.properties"

company.default.web.id=otroIdentificador

14 de junio de 2016

:: Liferay. Deshabilitar la suplantación de usuarios

Desde el panel de administración de Liferay, el usuario puede llevar a cabo la tarea de suplantar la identidad de un usuario definido en la plataforma, por diversos motivos (comunmente para comprobar permisos asignados).



En el caso de que necesitemos deshabilitar la suplantación de usuarios en nuestro portal, especificaremos la siguiente línea en el fichero: "portal-ext.properties".
portal.impersonation.enable=false

Tras añadir la línea anterior y reiniciar el servicio, la opción de "suplantar usuario" ya no estará disponible.


Por otro lado, si necesitásemos modificar el comportamiento del botón “suplantar”, buscaremos el fichero siguiente: “\html\portlet\enterprise_admin\user_action.jsp” y eliminaremos, comentaremos o modificaremos el siguiente código según nuestras necesidades:
< liferay-ui:icon
            image="impersonate_user"
            target="_blank"
            url="< %= impersonateUserURL % >"
/>



10 de junio de 2016

:: Listen Video. Alternativa para escuchar música gratis

Después de llevar un tiempo utilizando este servicio, podemos decir que va bastante bien y nos permite buscar entre un amplio repertorio y estilos de música. La web listenvideo.com es una mezcla de Spotify y YouTube.

Este portal, hace uso de la API de YouTube para reproducir los audios de millones de canciones, con la posibilidad de ver -bajo demanda- el vídeo. Además, cuenta con posibilidades para crear listas, compartirlas, seguir a nuestros grupos favoritos,... , siendo la interfaz de usuario muy sencilla y usable.

Puedes utilizarlo desde ya en: listenvideo.com

7 de junio de 2016

:: Alfresco. Obtener el modelo de datos

En multitud de ocasiones es útil obtener el modelo de datos de una aplicación para determinar las tablas, consultas, relaciones,...
En este caso, si necesitamos obtener el modelo de datos de Alfresco, podemos seguir los siguientes pasos:

1.- Descargaremos la aplicación gratuita DBVisualizer y procederemos a instalarla (Existen otras similares, pero esta es bastante útil y sencilla para nuestras necesidades)
Descarga DBVisualizer

2.- Una vez instalada, procedemos a configurar la conexión a nuestro Alfresco especificando todos los datos requeridos.
  • Crearemos una nueva conexión
  • Seleccionaremos el driver oportuno
  • Insertaremos los datos de conexión
Para probar si disponemos de conectividad con la base de datos de Alfresco, pulsaremos sobre el botón "Ping Server".


3.- Si la conexión se ha podido establecer correctamente veremos bajo nuestra conexión la distinta información recuperada (tablas, índices, vistas,...).
Al pulsar sobre "Tablas" veremos un gráfico con las tablas -y sus relaciones- que componen el modelo de datos de Alfresco.

Este mismo procedimiento nos serviría para obtener cualquier modelo de datos al que tengamos acceso, ya que disponer de una imagen de las relaciones entre tablas -a veces- puede resultarnos de utilidad.

:: Cookies de nuestra página web. ¿Para qué sirve cada una?

A menudo una pregunta que nos hacen es qué cookies se están utilizando en mi página y para qué sirven. Para ver las cookies, podemos selecci...