Don't mind,
I finally found this solution:
public boolean eval(Map<String, Object> context) {
Map<String, Object> sectionsList =
UtilGenerics.toMap(context.get("sections"));
return
!sectionsList.containsKey(this.decoratorSectionExdr.expandString(context));
}
Thank you anyway.
-Bruno
2009/11/29 Bruno Busco <[email protected]>:
> 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
>>
>