Group the screen settings by screen name. Use the user preferences services to get all settings for the current screen. The service returns a Map, where the key is the setting's name, and the value is the setting's value.

-Adrian


Bruno Busco wrote:
Sorry, for sure I am missing something but...

if the prim-key is
     <prim-key field="userLoginId"/>
     <prim-key field="userPrefTypeId"/>
and we want to use:

userLoginId -> to specify the user the setting belongs to (i.e. admin)
userPrefTypeId -> to specify the screen setting name (i.e.
ProductKeywordsPanel_collapsed)
userPrefGroupTypeId -> to specify the screen where the settings
belongs to, how can we have two settings (i.e. keywordsearchbox)

how can I have two different settings with the same name but different
screen, that is what the change is all about?

-Bruno

2009/12/8 Adrian Crum <adri...@hlmksw.com>:
No. The userPrefGroupTypeId field is optional, therefore it cannot be part
of the primary key. Use the user preference services to get preference
groups.

I believe most (if not all) widget model classes have a getName() method.

-Adrian

Bruno Busco wrote:
Hi Adrian,
I am trying to implement as you suggested but I found two difficulties:

1) the entity UserPreference has the following prim-key:
     <prim-key field="userLoginId"/>
     <prim-key field="userPrefTypeId"/>

while it should be
     <prim-key field="userLoginId"/>
     <prim-key field="userPrefGroupTypeId"/>
     <prim-key field="userPrefTypeId"/>

to do what you propose. Should we change it?

2) how to retrieve the screen name from a screenlet widget rendering code?
I mean I need to pass the screen name to the ftl macro in the
MacroScreenRendered.java like this:
...
       StringWriter sr = new StringWriter();
       sr.append("<@renderScreenletBegin ");
       sr.append("screenName=\"");
       sr.append(screen.name);
       sr.append("\" id=\"");
       sr.append(screenlet.getId(context));
       sr.append("\" title=\"");
       sr.append(title);
       sr.append("\" collapsible=");
       sr.append(Boolean.toString(collapsible));
...
but how to retrieve the screen.name ?

Many thanks for any help.
-Bruno

2009/12/7 Adrian Crum <adri...@hlmksw.com>:
Then do the same thing in the model widget code.

-Adrian

Bruno Busco wrote:
This would mean to change all the screens! :-(

2009/12/7 Adrian Crum <adri...@hlmksw.com>:
<screen name="MyScreen">
 <section>
     <actions>
         <service service-name="getUserPreferenceGroup">
             <field-map field-name="userPrefGroupTypeId"
value="MyScreen"/>
         </service>
         <set field="screenSettings" from-field="userPrefMap"/>
     </actions>
     ...
 </section>
</screen>


Bruno Busco wrote:
Adrian,
sorry for the bad sentence, I couldn't even read myself.
I meant that GLOBAL_PREFERENCES gets already loaded in the
ApplicationDecorator.

So now we have two options to have screenlets with the same id saved
indipendently:
1) Use a screen related userPrefGroupTypeId.
2) Combine the screen name for the preference key

I will work on it...

Thank you,
-Bruno


2009/12/7 Bilgin Ibryam <bibr...@gmail.com>:
Bruno Busco wrote:
Thank you Adrian,
but then how to the theme loaded easily? The global ones are already
loaded along the selected theme etc.

-Bruno

Or you can combine the screen name and sceenlet id for the preference
key,
instead of  (screenlet.id+"_collapsed" )

Bilgin



Reply via email to