En esta entrada vamos a crear nuestro primer tipo de contenido, que llamaremos tipo texto, con un título y un párrafo de texto libre.
Empezaremos creando un módulo para este tipo. Para ello vamos al interfaz de administrador -> Gestión de módulos -> Módulo nuevo. En nuestro caso será el paquete «es.uva.web.portal.tipos.texto»
Después nos vamos al explorador y cambiamos el sitio a «/». A partir de aquí debemos ir a la carpeta del nuevo módulo creado: /system/modules/es.uva.web.portal.tipos.texto/ donde tendremos tantas carpetas como hayamos indicado al crear el módulo. En nuestro caso sólo usaremos tres: classes, schemas y formatters.
1. En primer lugar, en classes tendremos que crear dentro de «classes/es/uva/web/portal/tipos/texto/» un contenido de texto plano con el nombre «workplace.properties» donde guardaremos las propiedades del módulo. Nosotros lo usaremos para definir las propiedades de nuestro nuevo tipo de contenidos. Tendrá el siguiente contenido:
[code]
fileicon.texto = Texto
title.texto = Nuevo Texto
desc.texto = Texto libre
[/code]
2. En segundo lugar, en schemas tendremos que crear un contenido de texto plano con el nombre «texto.xsd» donde definimos la estructura del nuevo tipo de contenido. En nuestro caso tendrá un título y un párrafo de texto. Tendrá el siguiente contenido:
[code]
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xsd:include schemaLocation=»opencms://opencms-xmlcontent.xsd»/>
<xsd:element name=»Textos» type=»OpenCmsTextos»/>
<xsd:complexType name=»OpenCmsTextos»>
<xsd:sequence>
<xsd:element name=»Texto» type=»OpenCmsTexto» minOccurs=»0″ maxOccurs=»unbounded»/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name=»OpenCmsTexto»>
<xsd:sequence>
<xsd:element name=»Titulo» type=»OpenCmsString» />
<xsd:element name=»Parrafo» type=»OpenCmsHtml» />
</xsd:sequence>
<xsd:attribute name=»language» type=»OpenCmsLocale» use=»required»/>
</xsd:complexType>
<xsd:annotation>
<xsd:appinfo>
<resourcebundles>
<xmlbundle name=»es.uva.web.portal.tipos.texto.workplace.xml»>
<bundle locale=»es»>
<resource key=»label.Texto.Titulo»>Titulo</resource>
<resource key=»label.Texto.Titulo.help»>Titulo del texto</resource>
<resource key=»label.Texto.Parrafo»>Parrafo</resource>
<resource key=»texto.default.Titulo»>Nuevo texto</resource>
<resource key=»texto.default.Parrafo»>Edita el texto del parrafo</resource>
</bundle>
<bundle locale=»en»>
<resource key=»label.Texto.Titulo»>Title</resource>
<resource key=»label.Texto.Titulo.help»>Title</resource>
<resource key=»label.Texto.Parrafo»>Paragraph</resource>
<resource key=»texto.default.Titulo»>New Text</resource>
<resource key=»texto.default.Parrafo»>Edit the text</resource>
</bundle>
</xmlbundle>
</resourcebundles>
<mappings>
<mapping element=»Titulo» mapto=»property:Title» />
<mapping element=»Titulo» mapto=»urlName» />
</mappings>
<defaults>
<default element=»Titulo» value=»%(key.texto.default.Titulo)» />
<default element=»Parrafo» value=»%(key.texto.default.Parrafo)» />
</defaults>
<layouts>
</layouts>
<validationrules/>
<formatters>
<formatter minwidth=»400″ uri=»/system/modules/es.uva.web.portal.tipos.texto/formatters/detalle.jsp» searchcontent=»true» />
</formatters>
<settings>
</settings>
</xsd:appinfo>
</xsd:annotation>
</xsd:schema>
[/code]
3. Definimos el formateador. Ya tenemos una referencia en la definición del tipo en el esquema, «/system/modules/es.uva.web.portal.tipos.texto/formatters/detalle.jsp». En formatters tendremos que crear un contenido de página jsp con el nombre «detalle.jsp» donde definimos el formateador para el título y el párrafo de contenido de tipo texto. Tendrá el siguiente contenido:
[code]
<%@page buffer="none" session="false" taglibs="c,cms" %>
<cms:formatter var="content" val="value">
<div class="texto-${cms.element.settings.boxschema}">
<%-- Title of the article --%>
<h2>${value.Titulo}</h2>
<h3>${value.Parrafo}</h3>
</div>
</cms:formatter>
[/code]
4. Ya para terminar definimos la configuración del módulo. Dentro de «/system/modules/es.uva.web.portal.tipos.texto/» creamos un contenido de configuración de módulo o «Module configuration» con el nombre «.config» siendo importante el punto al comienzo. Una vez creado, al editarlo lo rellenaremos de la siguiente forma:
Con esto hemos terminado la creación del módulo. Ahora tenemos que registrar el nuevo tipo de contenido en OpenCms.
5. Para ello entramos en el sistema, donde tenemos instalado el opencms, y en la carpeta «WEB-INF/config» tendremos el fichero opencms-modules.xml. Debemos buscar la definición de nuestro módulo «es.uva.portal.tipos.texto» y sustituirlo por lo siguiente:
[code]
<module>
<name>es.uva.web.portal.tipos.texto</name>
<nicename><![CDATA[texto]]></nicename>
<class/>
<description/>
<version>0.1</version>
<authorname><![CDATA[xx]]></authorname>
<authoremail><![CDATA[xx]]></authoremail>
<datecreated/>
<userinstalled/>
<dateinstalled/>
<dependencies/>
<exportpoints>
<exportpoint uri="/system/modules/es.uva.web.portal.tipos.texto/classes/" destination="WEB-INF/classes/"/>
</exportpoints>
<resources>
<resource uri="/system/modules/es.uva.web.portal.tipos.texto/"/>
</resources>
<parameters/>
<resourcetypes>
<type class="org.opencms.file.types.CmsResourceTypeXmlContent" name="texto" id="301">
<param name="schema">/system/modules/es.uva.web.portal.tipos.texto/schemas/texto.xsd</param>
</type>
</resourcetypes>
<explorertypes>
<explorertype name="texto" key="fileicon.texto" icon="texto.png" bigicon="texto_big.png" reference="xmlcontent">
<newresource page="structurecontent" uri="newresource_xmlcontent.jsp?newresourcetype=texto" order="110" autosetnavigation="false" autosettitle="false" info="desc.texto"/>
<accesscontrol>
<accessentry principal="ROLE.WORKPLACE_USER" permissions="+r+v+w+c"/>
</accesscontrol>
</explorertype>
</explorertypes>
</module>
[/code]
A continuación reiniciamos opencms (o el tomcat) y nos encontraremos con nuestro nuevo tipo de contenido al entrar en el workplace.
He siguido los pasos descritos y no me funciona 👿
Conseguido, ya funcionó 😛
he seguido los pasos yo también solo cambiando el nombre del módulo por el mio propio pero cuando voy a guardar los cambios del opencms-modules.xml no me deja guardarlos. He parado tomcat he cerrado todas las pestañas y ya no sé que error puede dar :S