[opencms-dev] Adding a user-defined relation
Michael Moossen
m.moossen at alkacon.com
Wed Aug 26 09:20:32 CEST 2009
Hi Paul-Inge!
great job!
-------------------
Michael Moossen
Alkacon Software GmbH - The OpenCms Experts
http://www.alkacon.com - http://www.opencms.org
Paul-Inge Flakstad schrieb:
> Self-replying. :-)
>
> This was easy to do once I found out how, but actually finding out how was
> a little tricky. I couldn't find much on the web and had to resolve to
> the old
> "browse-the-source-code-you-f**ing-noob" to get a grip. I haven't tested
> this
> much, so I don't know if I'm actually doing it right, but so far it
> seems to
> be working.
> ---
>
> To add a user-defined custom relation type, you'll have to edit
> opencms-vfs.xml.
> (opencms-vfs.xml is one of OpenCms' configuration files, and is found in:
> $TOMCAT_HOME/webapps/$OPENCMS_WEBAPP_NAME/WEB-INF/config/)
>
> Find the <resources> node in this file, and add your relation inside it
> like this:
>
> <resources>
> ....
> <relationtypes>
> <relationtype name="YOUR_RELATIONTYPE_NAME" type="strong" /><!--
> the type can be either strong or weak -->
> </relationtypes>
> ...
> </resources>
>
> (Note that the <relationtypes> element does not exist out of the box. It
> does not
> matter where you decide to put it, as long as it becomes an "immediate
> child"
> to the <resources> element. I placed mine directly after </mimetypes>.)
>
> In order for these changes to take effect, re-initialize OpenCms
> (restart Tomcat).
>
> You can test that your new relation type exists by listing all relation
> types.
> Use a simple JSP like this one to do that:
>
> <%@ page import="org.opencms.relations.*, java.util.*" session="true" %>
> <%
> List relationTypesAll = CmsRelationType.getAll();
> CmsRelationType rt = null;
> Iterator i = relationTypesAll.iterator();
> out.print("<ul>");
> while (i.hasNext()) {
> rt = (CmsRelationType)i.next();
> out.print("<li>NAME: " + rt.getName() + ", TYPE: " + rt.getType());
> }
> out.print("</ul>");
> %>
>
>
> To use a relation programatically:
> CmsRelationType rt = CmsRelationType.valueOf("YOUR_RELATIONTYPE_NAME");
> yourCmsObjectInstance.addRelationToResource(fromResourcePath,
> toResourcePath, rt.getName());
>
>
> Cheers,
> Paul
>
> ------------------------------------------------------------------------
> *From:* opencms-dev-bounces at opencms.org
> [mailto:opencms-dev-bounces at opencms.org] *On Behalf Of *Paul-Inge Flakstad
> *Sent:* 25. august 2009 17:10
> *To:* opencms-dev at opencms.org
> *Subject:* [opencms-dev] Adding a user-defined relation
>
> Hello list!
>
> I've tried to add a user-defined relation to OpenCms using the
> following approaches:
> 1.) in a JSP file by calling the constructor in
> org.opencms.relations.CmsRelationType.
> 2.) by creating a module with an action class, and calling the above
> mentioned constructor
> from the action class' initialize-method.
>
> Approach 1.) produced an error.
> Approach 2.) did not produce any error, but when getting the list of
> relation types from
> CmsRelationType.getAll(), my user-defined relation is not there.
> Also, trying to use
> my user-defined relation with addRelationToResource() does not work.
> It gives an
> exception telling me that:
>
> The value "801" can not be parsed into an enum element of type
> "org.opencms.relations.CmsRelationType"
>
> (Which btw is kinda interesting, sice I actually try to use the
> value "901", not "801", which is
> the ID I assigned my user-defined relation.)
>
> Is anyone able to tell me how to add a user-defined relation?
>
> Thanks,
> Paul
>
>
> ------------------------------------------------------------------------
>
>
> _______________________________________________
> This mail is sent to you from the opencms-dev mailing list
> To change your list options, or to unsubscribe from the list, please visit
> http://lists.opencms.org/mailman/listinfo/opencms-dev
More information about the opencms-dev
mailing list