[opencms-dev] Inherit a parameter over several pages?
Ivan Biddles
ivanb at scientology.net
Sat Dec 21 21:08:28 CET 2002
Hi Alex,
I don't see it in the 5.0 Beta 2 of CmsObject, but I'm glad to see that
it is in RC1. I am just upgrading our servers to RC1 so I will be able
to remove my custom code.
Thanks,
Ivan
-----Original Message-----
From: owner-opencms-dev at www.opencms.org
[mailto:owner-opencms-dev at www.opencms.org] On Behalf Of Alexander
Kandzior
Sent: Saturday, December 21, 2002 09:45
To: opencms-dev at www.opencms.org
Subject: RE: [opencms-dev] Inherit a parameter over several pages?
Ivan,
that excat functionality is in fact a core feature now (at least since
5.0rc1, maybe it also was in 5.0b2 already, I forgot).
There are now 3 methods
CmsObject.readProperty(String resourceName, String propertyName)
CmsObject.readProperty(String resourceName, String propertyName, boolean
search)
CmsObject.readProperty(String resourceName, String propertyName, boolean
search, String defaultValue)
The JavaDoc of this methods has all the information, but basically you
can just set "search" to "true" and the CmsObject will try to "search
upwards" for the selected property.
Best Regards,
Alex.
Alexander Kandzior
OpenCms Group / Alkacon Software
> -----Original Message-----
> From: owner-opencms-dev at www.opencms.org
> [mailto:owner-opencms-dev at www.opencms.org] On Behalf Of Ivan Biddles
> Sent: Saturday, December 21, 2002 6:22 PM
> To: opencms-dev at www.opencms.org
> Subject: RE: [opencms-dev] Inherit a parameter over several pages?
>
>
> Hi Thomas,
>
> I had this same issue and so I wrote a getInheritedProperty
> method which goes on up the tree until it finds a defined
> value. I added the capability of saying "none" at any level
> in the tree to override a parameter defined at a parent level.
>
> I have pasted the code below, with my custom logging code removed.
>
> I don't know if this is the best way to do it but it definitely works.
>
> Best wishes,
> Ivan
>
> (The StringHelper.isNullOrEmpty method is just a utility
> method that returns true if the supplied string is either
> null or an empty string. SITE_ROOT is a constant that defines
> how far up the tree I want to go.
>
> -------------------------------------------------------------------
> public static final String SITE_ROOT = "/myroot/";
>
> private String getParentUri (
> String aRequestedUri
> )
> {
> String myParentUri = "";
> int myLength = aRequestedUri.length ();
> int myLastDelimiter = (aRequestedUri.substring (0,
> (myLength -
> 1))).lastIndexOf ("/");
>
> if (myLastDelimiter >= 0) {
> myParentUri = aRequestedUri.substring (0, (myLastDelimiter +
> 1));
> if (myParentUri.endsWith (SITE_ROOT)) {
> myParentUri = "";
> }
> }
> return (myParentUri);
> }
>
> public String readProperty (
> CmsObject aCmsObject,
> String aRequestedUri,
> String aPropertyKey
> )
> {
> String myValue = null;
> try {
> myValue = aCmsObject.readProperty (aRequestedUri,
> aPropertyKey);
> }
>
> catch (Throwable myThrowable) {
> // LOG
> }
> return ((myValue == null) ? "" : myValue);
> }
>
> public String getProperty (
> CmsObject aCmsObject,
> String aPropertyKey
> )
> {
> String myRequestedUri = (aCmsObject.getRequestContext ()).getUri
> ();
> String myValue = readProperty (aCmsObject, myRequestedUri,
> aPropertyKey);
> return ((myValue == null) ? "" : myValue);
> }
>
> public String getInheritedProperty (
> CmsObject aCmsObject,
> String aPropertyKey
> )
> {
> String myRequestedUri = (aCmsObject.getRequestContext ()).getUri
> ();
> String myValue = null;
> while (StringHelper.isNullOrEmpty (myValue)) {
> myValue = readProperty (aCmsObject, myRequestedUri,
> aPropertyKey);
> if (StringHelper.isNullOrEmpty (myValue)) {
> myRequestedUri = getParentUri (myRequestedUri);
> }
> if (StringHelper.isNullOrEmpty (myRequestedUri)) {
> break;
> }
> }
> if ("NONE".equalsIgnoreCase (myValue)) {
> return ("");
> }
> return ((myValue == null) ? "" : myValue);
> }
>
> -----Original Message-----
> From: owner-opencms-dev at www.opencms.org
> [mailto:owner-opencms-dev at www.opencms.org] On > Behalf Of
> Thomas Gick
> Sent: Saturday, December 21, 2002 06:00
> To: opencms-dev at www.opencms.org
> Subject: [opencms-dev] Inherit a parameter over several pages?
>
> Hi,
>
> to display pages i extended a own class from CmsXmlTemplate.
> In this class i would like to have control over a language
> parameter which should be inherited to all following choosen
> pages. To do this this parameter must be added to all
> internal links automatically too.
>
> Does anyone knows a solution?
>
> regards,
> Thomas
>
More information about the opencms-dev
mailing list