Importar en Opencms desde el CmsShell

Para importar contenidos tenemos las funciones de CmsShell siguientes:


importResources (String absoluteFilePath, String importPath)

importResources (String absoluteFilePath, String importPath, boolean KeepPermisions)

importResourcesWithTempProject(StringabsoluteFilePath)

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:


importResources "/tmp/contenidos.zip" "/"

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


login "Admin" "admin"

setCurrentProject "Offline"

exportResources "/tmp/copia.zip" "/sites/default/"

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


cmsshell.sh < copia.opencms

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:

float: none;
clear: both;
border-style: none;

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:


<%@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>");
}
}

Error javax.servlet.jsp.JspException: In “parseDate”, a parse locale can not be established

Si os sale este error en un fmt:parseDate hay dos soluciones:

1. Incluir el parseLocale en la etiqueta fmt:parseDate:

<pre><fmt:parseDate .... parseLocale="es_ES"/></pre>

2. Definirlo en el web.xml

</div>
<div>
<pre><context-param>
  <param-name>javax.servlet.jsp.jstl.fmt.locale</param-name>
  <param-value>es_ES</param-value>
</context-param>

Espero que os sirva!!

Cambios en las barras del editor WYSING de OpenCMS

Hoy nos hemos encontrado con el problema de quitar la posibilidad de que el usuario pueda usar el subrayado y el tachado del editor WYSING (por ejemplo FCKEditor) del OpenCMS.

La solución es muy sencilla versiones superiores a la OpenCMS 7.5.1. Podemos tener una solución global para todo nuestro gestor de contenidos o particular para un campo.

Para un campo la solución es usar “hidebuttons:underline;strikethrough” en la configuración del elemento dentro del XSD:


<layout element="Texto" widget="HtmlWidget"  configuration="hidebuttons:underline;strikethrough"/>

Como recordatorio, os copio todos los elementos que puede tener el editor (versión 8.0.4 de OpenCMS) que podéis consultar en el JavaDOC de Opencms o directamente http://www.opencms.org/javadoc/core/constant-values.html#org.opencms.widgets.CmsHtmlWidgetOption.BUTTONBAR_DEFAULT%7C

Estos son todos lo elementos posibles:


<code>"[;undo;redo;-;find;replace;-;selectall;removeformat;-;cut;copy;paste;-;bold;italic;underline;strikethrough;-;subscript;superscript;];[;alignleft;aligncenter;alignright;justify;-;orderedlist;unorderedlist;-;outdent;indent;];[;source;-;formatselect;style;editorlink;link;anchor;unlink;];[;imagegallery;downloadgallery;linkgallery;htmlgallery;tablegallery;-;table;-;specialchar;-;print;spellcheck;-;fitwindow;];[;abbr;absolute;acronym;advhr;attribs;backcolor;blockquote;cite;cleanup;del;emotions;fontselect;fontsizeselect;forecolor;hr;ins;insertdate;insertlayer;inserttime;ltr;media;movebackward;moveforward;newdocument;nonbreaking;pagebreak;pastetext;pasteword;rtl;styleprops;template;visualaid;visualchars;];"</code>

Para los cambios en todo nuestro gestor, debemos cambiar la clase org.opencms.widgets.CmsHTMLWidgetOption.BUTTONBAR_DEFAULT

¡¡Espero que os sirva!!