Blog

Módulo de optimización de Opencms de Alkacon

Nos hemos puesto a instalar el módulo de Alkacon para la optimización y ofuscación de la web (http://www.alkacon.com/en/modules/downloads/oamp-webopt-2.0.0.html), pero nos hemos encontrado que no funciona.

El motivo está en el código, por ejemplo en com.alkacon.opencms.v8.weboptimization.CmsOptimizationJs.java

[code]

/** Optimized js resource type constant. */

protected static final int RESOURCE_TYPE_JS = 762;

[/code]

pero en el opencms-modules tiene el identificador 282.

La forma de solucionarlo es cambiar los identificadores de los tipos en el opencms-modules.xml para el v8-alkacon-optimized-js, v8-alkacon-optimized-css y v8-alkacon-sprite. Tras el cambio recordad que hay que reiniciar el contexto.

[code]

<resourcetypes>
<type class=»org.opencms.file.types.CmsResourceTypeXmlContent» name=»v8-alkacon-optimized-js» id=»762″>
<properties>
<property>
<name>template-elements</name>
<value type=»shared»><![CDATA[/system/modules/com.alkacon.opencms.v8.weboptimization/pages/optimized-js.jsp]]></value>
</property>
</properties>
<param name=»schema»>/system/modules/com.alkacon.opencms.v8.weboptimization/schemas/optimized-js.xsd</param>
</type>
<type class=»org.opencms.file.types.CmsResourceTypeXmlContent» name=»v8-alkacon-optimized-css» id=»763″>
<properties>
<property>
<name>template-elements</name>
<value type=»shared»><![CDATA[/system/modules/com.alkacon.opencms.v8.weboptimization/pages/optimized-css.jsp]]></value>
</property>
</properties>
<param name=»schema»>/system/modules/com.alkacon.opencms.v8.weboptimization/schemas/optimized-css.xsd</param>
</type>
<type class=»org.opencms.file.types.CmsResourceTypeXmlContent» name=»v8-alkacon-sprite» id=»764″>
<properties>
<property>
<name>template-elements</name>
<value type=»shared»><![CDATA[/system/modules/com.alkacon.opencms.v8.weboptimization/pages/sprite.jsp]]></value>
</property>
</properties>
<param name=»schema»>/system/modules/com.alkacon.opencms.v8.weboptimization/schemas/sprite.xsd</param>
</type>
</resourcetypes>

[/code]

 

si ya habéis instalado el módulo y tenéis algún contenido con los viejos identificadores, la solución es actualizarlo en la base de datos:

[code]

update CMS_OFFLINE_RESOURCES set RESOURCE_TYPE=762 WHERE RESOURCE_TYPE=282;

update CMS_OFFLINE_RESOURCES set RESOURCE_TYPE=763 WHERE RESOURCE_TYPE=283;

update CMS_OFFLINE_RESOURCES set RESOURCE_TYPE=764 WHERE RESOURCE_TYPE=284;

[/code]

Un saludo

Importar en Opencms desde el CmsShell

Para importar contenidos tenemos las funciones de CmsShell siguientes:

[code]

importResources (String absoluteFilePath, String importPath)

importResources (String absoluteFilePath, String importPath, boolean KeepPermisions)

importResourcesWithTempProject(StringabsoluteFilePath)

[/code]

La tercera símplemente nos crea un proyecto temporal donde mete los contenidos.

Para importar es muy sencillo. Después de autenticarnos con login y seleccionar el proyecto con setCurrentProject podemos:

[code]

importResources «/tmp/contenidos.zip» «/»

[/code]

Hemos seleccionado sólo el «/» porque cuando hicimos la copia la hicimos con la ruta completa. Esto dependerá de cómo hayamos hecho la exportación del zip con los contenidos.

Exportar una carpeta desde el ChmShell de Opencms

Para exportar una carpeta, por ejemplo para copias de seguridad, sin tener que usar la parte de administración de OpenCms podemos usar un pequeño fichero para el CmsShell

En el fichero lo primero será autenticarnos, luego seleccionar el proyecto y finalmente exportar la carpeta que queramos en un zip

[code]

login «Admin» «admin»

setCurrentProject «Offline»

exportResources «/tmp/copia.zip» «/sites/default/»

[/code]

Si esto lo guardamos en un fichero llamado copia.opencms, podemos llamar al cmsshell y pasarlo como entrada para ejecutarlo

[code]

cmsshell.sh < copia.opencms

[/code]

Añade el ID del blog en WordPress Multisitios

Uno de los problemas cuando se tiene un WordPress multisitios y de vez en cuando hay que meter mano a la base de datos es que estas están según el identificador del blog, no sobre el nombre, con lo que o revisamos por dentro la base de datos para saber el nombre o podemos tener algún que otro problema.

Por eso, he encontrado este «plugin» que no es más que un fichero PHP que crearemos en nuestra carpeta WP-CONTENT/PLUGINS que nos añadirá en la lista de sitios el identificador del sitio en si.

Leer más

Acceso a opencms basado en CMIS – OpenCMIS

Opencms a partir de su versión 8.5 cumple con la especificación CMIS.

CMIS, que significa Content Management Interoperability Services, es un estándar OASIS  diseñado por por los principales fabricantes de ECM y para la industria de ECM. CMIS permite acceder a los sistemas de gestión de contenidos que implementan CMIS de  una forma normalizada e interoperable.

Con CMIS podemos crear aplicaciones que no tengan que limitarse a un sistema de gestión de contenidos concreto y permite asegurar el futuro de las aplicaciones desarrolladas e integradas con los repositorios con soporte CMIS. El estándar ofrece un catálogo completo de funcionalidades y es capaz de manejar una amplia variedad de sistemas de gestión de contenidos. Con CMIS podemos manejar los contenidos, metadatos de contenidos, control de versiones, contenidos de carpetas, asociaciones y transferencia de ficheros, también contempla un lenguaje de consulta, muy parecido a SQL, que permite hacer búsquedas por contenidos, metadatos, contenido de un documento, etc…

Leer más

No sale elemento cuando se entra en ADE, OpenCMS

Si os deja de aparecer un elemento que introduzcais en el ADE, aunque existen multitud de causas (como revisar el formateador, los DIVs, los CSS, normalmente la causa principal es haber metido dentro un DIV de limpieza.

Es decir, no es conveniente ni por diseño ni por estructura meter en el formateador el tipico DIV con el siguiente estilo:

[code]
float: none;
clear: both;
border-style: none;
[/code]

Ya que al eliminar el float y con el clear el ADE no funciona, vamos, que esconde el elemento si el formateador incluye algo que haga esto justo despues de dibujar la página.

Obtener usuario y grupo que ha modificado un contenido

Para obtener el usuario que modificó un contenido por última vez  y los grupos a los que pertenece podemos usar dentro de una página jsp de OpenCms (que puede ser un template o una función) el siguiente código:

[code]

<%@page buffer=»none» session=»false» taglibs=»c,cms,fn» %>
<%@ page import=»org.opencms.jsp.*» %>
<%@ page import=»org.opencms.file.*» %>
<%@ page import=»org.opencms.util.*» %>
<%@ page import=»java.util.*» %>

CmsJspActionElement cms = new CmsJspActionElement(pageContext, request, response);
CmsJspNavBuilder nav = cms.getNavigation();
String filename = cms.getRequestContext().getUri();
String lm = org.opencms.util.CmsDateUtil.getDateShort(cms.getCmsObject().readFile(filename).getDateLastModified());
CmsResource res=cms.getCmsObject().readFile(filename);
if(lm != null){
out.print(«<div class=\»txtalignright\»>Last Updated: » + lm + «</div>»);
}
if(res != null){
CmsUUID uuid=res.getUserLastModified();
CmsUser user=cms.getCmsObject().readUser(uuid);

out.print(«<div class=\»txtalignright\»>User Last Updated: » + user.getName()+» «+user.getEmail()+ «</div>»);
// out.print(«<div class=\»txtalignright\»>User Last Updated: » + uid + «</div>»);

// Getting the groups of the users
List groups = cms.getCmsObject().getGroupsOfUser(user.getName(),false);
Iterator it= groups.iterator();
while (it.hasNext()) {
CmsGroup cmsGroup = (CmsGroup) it.next();
out.println(«<div class=\»txtalignright\»>GRUPO «+ cmsGroup.getName() + «</div>»);
}
}

[/code]