I have added a new ScreenCondition in the ModelScreenCondition.java as follows:
public static class IfEmptyDecoratorSection extends ScreenCondition {
protected FlexibleStringExpander decoratorSectionExdr;
public IfEmptyDecoratorSection(ModelScreen modelScreen,
Element condElement) {
super (modelScreen, condElement);
this.decoratorSectionExdr =
FlexibleStringExpander.getInstance(condElement.getAttribute("decorator-section"));
}
@Override
public boolean eval(Map<String, Object> context) {
Debug.logWarning("if-empty-decorator-section TEST", module);
return false;
}
}
but I do not understand how to actually check for the decorator
section being empty or not.
Could somebody help me?
Thank you,
Bruno
2009/11/28 Bruno Busco <[email protected]>:
> Hi list,
> could someone please tell me if there is any way to check in a screen
> condition if a decorator section is empty?
>
> I would like to do something similar to this:
>
> <container style="contentarea">
> <decorator-section-include name="pre-body"/>
> <container id="column-container">
> <section>
> <condition>
> <if-decorator-section-empty decorator-section="left-bar"/>
> </condition>
> <widgets>
> <container id="content-main-section">
> <decorator-section-include name="body"/>
> </container>
> </widgets>
> <fail-widgets>
> <container style="left">
> <decorator-section-include name="left-bar"/>
> </container>
> <container id="content-main-section" style="leftonly">
> <decorator-section-include name="body"/>
> </container>
> </fail-widgets>
> </section>
> </container>
>
> Basically this is used to have the leftbar filled using a new
> decorator-section defined in the GlobalDecorator and not using any
> more the leftbarScreenName and leftbarScreenLocation so that for
> instance the CommonCatalogDecorator would change from
>
> <screen name="CommonCatalogDecorator">
> <section>
> <actions>
> <set field="leftbarScreenName" value="leftbar"/>
> <set field="leftbarScreenLocation"
> value="component://product/widget/catalog/CommonScreens.xml"/>
> <set field="MainColumnStyle" value="leftonly"/>
> </actions>
> <widgets>
> <decorator-screen name="main-decorator"
> location="${parameters.mainDecoratorLocation}">
> <decorator-section name="pre-body">
> <section>
> <!-- do check for CATALOG, _VIEW permission -->
> <condition>
> <and>
> ..................
> to
>
> <screen name="CommonCatalogDecorator">
> <section>
> <widgets>
> <decorator-screen name="main-decorator"
> location="${parameters.mainDecoratorLocation}">
> <decorator-section name="left-bar">
> <include-screen name="leftbar"/>
> </decorator-section>
> <decorator-section name="pre-body">
> <section>
> <!-- do check for CATALOG, _VIEW permission -->
> <condition>
> <and>
>
> The problem I have found is that the GlobalDecorator needs to apply
> the "leftonly" style to the <container id="content-main-section"> only
> if the leftbar does include content.
>
> Any thought about this?
>
> Thank you so much,
> Bruno
>