Para generar el opencms.war desde el código fuente que OpenCms pone a nuestra disposición en GitHub aunque en la documentación pone que haya que hacer un «ant war» esto os generará un war sin los módulos, con lo cual el opencms se queda tan limpio que no se puede usar. Si bien podemos instalarlos desde el CmsShell mi recomendación es realizar antes del «ant war», hacer un «ant bindist» que generará los ficheros de los módulos y los incluirá en el war.
Autor: davidrod
OpenCms. Compilar versión 9
Si nos costó compilar la MS 9.4.1, también cuesta la versión 9 del Github del día 28 de Enero. Aquí os dejamos una guía paso a paso.
Lo primero, bajar el eclipse para Java EE, aunque con el clásico valdría.
Lo segundo, como usa Gradle, debemos instalar el plugin para eclipse. Esta nueva versión trae en el menú->Help el Marketplace que nos permite instalar el plugin de una manera sencilla.
Después nos bajamos de github la última versión del acacia-editor, un zip que tras descomprimir debemos importar en nuestro workplace como proyecto Gradle.
Seguimos pulsando el botón derecho sobre el proyecto de acacia editor, en el menú que nos aparece, elegimos «Gradle->Refresh Dependencies». Esto nos descargará las librerías necesarias para su compilación.
A continuación, os recomiendo activar la vista «Gradle Task», en el menú->Window->Show view->other …y en Gradle la tenemos. Así podemos lanzar fácilmente las compilaciones. Lanzamos la tarea «clean» y luego la tarea «install». Todo debería ir bien aunque aparezca algún mensaje de error.
A continuación bajamos el minestrone 9.4.1 de opencms, descomprimimos el zip y lo importamos en nuestro workplace como proyecto Gradle.
Debemos hacer un pequeño cambio en el fichero dependencias.gradle ya que no le gusta la librería gwt-dev. Debemos pulsando con el botón derecho en el proyecto importado de opencms, en «Java Build Path», en «Libraries» añadimos la librería buscándola en la carpeta lib, y luego compile.
Ya casi terminando, con el botón derecho sobre el proyecto de opencms, en el menú que nos aparece, elegimos «Gradle->Refresh Dependencies»
Con todos estos pasos, ya podríamos ejecutar en la ventana de «Gradle Task» la tarea «bindist» y no debería darnos problemas en generar en la carpeta «BuildCms/distributions» un opencms.war perfecto.
Espero que os sirva y muchas gracias a Montse por la ayuda, que esto debería estar contándolo ella ^_^
OpenCms. Compilar Milestone 9.4.1
Llevamos unos días peleándo con la compilación para generar el war con los módulos del Opencms MS 9.4.1. Aquí os dejamos una guía paso a paso.
Lo primero, bajar el eclipse para Java EE, aunque con el clásico valdría.
Lo segundo, como usa Gradle, debemos instalar el plugin para eclipse. Esta nueva versión trae en el menú->Help el Marketplace que nos permite instalar el plugin de una manera sencilla.
Después nos bajamos de github la última versión del acacia-editor, un zip que tras descomprimir debemos importar en nuestro workplace como proyecto Gradle.
Seguimos pulsando el botón derecho sobre el proyecto de acacia editor, en el menú que nos aparece, elegimos «Gradle->Refresh Dependencies». Esto nos descargará las librerías necesarias para su compilación.
A continuación, os recomiendo activar la vista «Gradle Task», en el menú->Window->Show view->other …y en Gradle la tenemos. Así podemos lanzar fácilmente las compilaciones. Lanzamos la tarea «clean» y luego la tarea «install». Todo debería ir bien aunque aparezca algún mensaje de error.
A continuación bajamos el minestrone 9.4.1 de opencms, descomprimimos el zip y lo importamos en nuestro workplace como proyecto Gradle.
Debemos hacer un pequeño cambio en el fichero dependencias.gradle ya que no le gusta la librería server-api. Debemos comentar la línea «compile group: ‘javax.servlet’, name: ‘servlet-api’, version: ‘2.4’» y añadir a continuación «compile files(‘lib/compile/servlet-api.jar’)».
A continuación, pulsando con el botón derecho en el proyecto importado de opencms, en «Java Build Path», en «Libraries» añadimos la librería buscándola en la carpeta lob, y luego compile.
Ya casi terminando, con el botón derecho sobre el proyecto de opencms, en el menú que nos aparece, elegimos «Gradle->Refresh Dependencies»
Con todos estos pasos, ya podríamos ejecutar en la ventana de «Gradle Task» la tarea «bindist» y no debería darnos problemas en generar en la carpeta «BuildCms/distributions» un opencms.war perfecto.
Espero que os sirva y muchas gracias a Montse por la ayuda.
NOTA: Si durante la compilación os da problemas de «Java Heap Space» debéis cambiar en el fichero «grade.properties» el valor «max_heap_size» a un valor mas alto. Yo tengo puesto «max_heap_size=4096m»
OpenCms 9 Release Candidate
Ya está aquí el release de OpenCms 9
Hay muchas novedades y algunos contenidos nuevos, junto con un template muy sencillo, y cosas que echábamos en falta en la 8.5
Leer más
Problemas con el editor visual en WordPress 3.6.1
Tras los problemas de la actualización puede que se arregle cambiando esto en el fichero wp-content/plugins/symple-shortcodes/includes/mce/js/symple_shortcodes_tinymce.js
[code]
image: sympleShortcodesVars.template_url +»/images/shortcodes.png»,
[/code]
por esto
[code]
image: «/wp-content/plugins/symple-shortcodes/includes/mce/images/shortcodes.png»,
[/code]
OpenCms no permite mas de 100 elementos en un contenedor
Si intentáis meter más de 100 contenidos en un contenedor mediante ADE veréis que al pasar de 100 al meter uno nuevo el último desaparece.
Esto es así porque en OpenCms lo han decidido, pero siempre podemos tunearlo cambiando el código si somos valientes:
[code]
public static final String DEFAULT_MAX_ELEMENTS = «100»;
[/code]
dentro de org.opencms.jsp.CmsJspTagContainer
aunque la opción más sencilla es definir en el contenedor el parámetro «maxElements» con un número mayor que 100:
[code]
cms:container name=»leftcontainer» type=»column» width=»230″ maxElements=»200″
[/code]
Opencms: Borrar un Locale
Para borrar un locale determinado de una página podemos hacerlo por código de la siguiente manera.
[code]
//Elegimos el locale a borrar
Locale locale=new Locale(«en»);
//Cogemos el recurso
CmsResource r = cmso.readResource(«/prueba.html»);
//Comprobamos que sea un contenido XML
I_CmsResourceType resType = OpenCms.getResourceManager().getResourceType(r.getTypeId());
if (resType instanceof CmsResourceTypeXmlContent) {
//Obtenemos el contenido XML
CmsXmlContent resourceDocument = CmsXmlContentFactory.unmarshal(cmso, cmso.readFile(r));
//Borramos el locale
resourceDocument.removeLocale(locale);
//Establecemos el XML
resourceDocument.getFile().setContents( resourceDocument.marshal() );
//Bloqueamos el recurso
cmso.lockResource( «/prueba.html» );
//Guardamos los cambios
cmso.writeFile(resourceDocument.getFile());
}
[/code]
También podemos de esta forma borrar algún elemento del XML con [code]resourceDocument.removeValue(«ELEMENTO»,locale,0);[/code]
Como siempre, espero que os sirva. Os dejo el código competo de una página JSP que recorre recursivamente buscando los index.html para borrar el locale «en»
[code]
<%@ page contentType=»text/html» pageEncoding=»UTF-8″%>
<%@ page import=»java.util.*» %>
<%@ page import=»java.util.Locale» %>
<%@ page import=»java.text.SimpleDateFormat» %>
<%@ page import=»org.opencms.file.CmsResource» %>
<%@ page import=»org.opencms.file.CmsObject» %>
<%@ page import=»org.opencms.util.CmsUUID» %>
<%@ page import=»org.opencms.util.CmsStringUtil» %>
<%@ page import=»org.opencms.main.*» %>
<%@ page import=»org.opencms.jsp.*» %>
<%@ page import=»org.opencms.file.*» %>
<%@ page import=»org.opencms.file.types.*» %>
<%@ page import=»org.opencms.xml.*» %>
<%@ page import=»org.opencms.xml.content.*» %>
<%@ page import=»org.opencms.xml.types.*» %>
<%@ page import=»org.opencms.lock.*» %>
<%@ page import=»org.opencms.db.CmsResourceState» %>
<%@ page import=»org.opencms.xml.content.CmsXmlContent» %>
<%!
//FUNCION RECURSIVA
@SuppressWarnings({«unchecked»})
static void showFolder(CmsObject cmso,CmsJspActionElement cms, JspWriter out, CmsJspNavBuilder nav, List<CmsJspNavElement> filesInFolder,String folder) throws Exception {
String name;
Locale len=new Locale(«en»);
out.println(«SHOWFOLDER «+folder+»<br>»);
List<CmsJspNavElement> filesInSub;
for (CmsJspNavElement sub : filesInFolder) {
name = sub.getResourceName();
out.println(«RECURSO «+name+»<br>»);
name = sub.getResourceName();
if (!sub.isFolderLink()) {
if (name.endsWith(«.config»)) {
} else {
out.println(name+» ES INDEX «+»<br>»);
CmsResource r = cmso.readResource(sub.getResourceName());
I_CmsResourceType resType = OpenCms.getResourceManager().getResourceType(r.getTypeId());
if (resType instanceof CmsResourceTypeXmlContent) {
try {
CmsXmlContent resourceDocument = CmsXmlContentFactory.unmarshal(cmso, cmso.readFile(r));
resourceDocument.removeLocale(len);
resourceDocument.getFile().setContents( resourceDocument.marshal() );
cmso.lockResource( sub.getResourceName() );
cmso.writeFile(resourceDocument.getFile());
} catch (CmsXmlException e) {
out.println(«ERROR AL BORRAR LOCALE EN «+sub.getResourceName()+»<br>»);
}
}
}
}
if ((!sub.getResourceName().endsWith(«_documentos/»))&&(!sub.getResourceName().endsWith(«_imagenes/»))) {
if (sub.isFolderLink()) {
filesInSub = nav.getNavigationForFolder(sub.getResourceName(),org.opencms.jsp.CmsJspNavBuilder.Visibility.all,org.opencms.file.CmsResourceFilter.ONLY_VISIBLE);
if (filesInSub.size() > 0) {
showFolder(cmso,cms, out, nav, filesInSub,sub.getResourceName());
}
}
}
}
}
%>
<%
Locale les=new Locale(«es»);
Locale len=new Locale(«en»);
Set<String> elementos = new HashSet<String>();
elementos.add(«Containers»);
CmsJspActionElement cms = new CmsJspActionElement(pageContext, request, response);
CmsJspNavBuilder nav = cms.getNavigation();
CmsObject cmso = cms.getCmsObject();
showFolder(cmso,cms,out,nav,nav.getNavigationForFolder(«/uva/»),»/uva/»);
List list = cms.getNavigation().getNavigationForFolder(«/uva/»);
Iterator i = list.iterator();
while (i.hasNext()) {
org.opencms.jsp.CmsJspNavElement ne = (org.opencms.jsp.CmsJspNavElement)i.next();
out.println(ne.getResourceName()+»<br>»);
}
%>
[/code]
Saber qué ha hecho un usuario en OpenCms
A veces no basta con consultar los históricos desde el Workplace. En este caso estamos consultando la tabla CMS_LOG para ver que hizo un usuario.
Leer más
Actualización de Opencms 8.5.2
Hemos actualizado el servidor de desarrollo a la 8.5.2 arreglando algunos problemas que teníamos con la 8.5.1