Thank you Adrian, but then how to the theme loaded easily? The global ones are already loaded along the selected theme etc.
-Bruno 2009/12/7 Adrian Crum <[email protected]>: > Bruno, > > Don't forget the UserPreference entity also has a userPrefGroupTypeId field, > so you could group the collapsed settings by screen. That would solve the > shared id problem. > > -Adrian > > [email protected] wrote: >> >> Author: buscob >> Date: Mon Dec 7 17:24:21 2009 >> New Revision: 888030 >> >> URL: http://svn.apache.org/viewvc?rev=888030&view=rev >> Log: >> Added a new feature that allows to save the screenlet collapsed/expanded >> status as a userPreference. (OFBIZ-3271) >> By default screenlets status are saved. A new "save-collapsed" screenlet >> attribute (default=true) can be used to disable this feature for selected >> screenlets. >> An userPreference with key = screenlet.id+"_collapsed" is used to save the >> status. >> Screenlets that share the same ID, share the same saved status also (i.e. >> all searchOptions screenlets used in the FindScreenDecorator use the same >> status). In order to have them separated a different ID should be specified. >> >> Modified: >> ofbiz/trunk/framework/common/entitydef/entitymodel.xml >> ofbiz/trunk/framework/common/webcommon/WEB-INF/common-controller.xml >> ofbiz/trunk/framework/images/webapp/images/selectall.js >> ofbiz/trunk/framework/widget/dtd/widget-screen.xsd >> >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenRenderer.java >> >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java >> ofbiz/trunk/framework/widget/templates/csvScreenMacroLibrary.ftl >> ofbiz/trunk/framework/widget/templates/foScreenMacroLibrary.ftl >> ofbiz/trunk/framework/widget/templates/htmlScreenMacroLibrary.ftl >> ofbiz/trunk/framework/widget/templates/textScreenMacroLibrary.ftl >> ofbiz/trunk/framework/widget/templates/xmlScreenMacroLibrary.ftl >> >> Modified: ofbiz/trunk/framework/common/entitydef/entitymodel.xml >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/entitydef/entitymodel.xml?rev=888030&r1=888029&r2=888030&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/common/entitydef/entitymodel.xml (original) >> +++ ofbiz/trunk/framework/common/entitydef/entitymodel.xml Mon Dec 7 >> 17:24:21 2009 >> @@ -540,7 +540,7 @@ >> other data types by specifying a java data type in the >> userPrefDataType field. >> </description> >> <field name="userLoginId" type="id-vlong-ne"></field> >> - <field name="userPrefTypeId" type="id-ne"><description>A unique >> identifier for this preference</description></field> >> + <field name="userPrefTypeId" type="id-long-ne"><description>A >> unique identifier for this preference</description></field> >> <field name="userPrefGroupTypeId" type="id-long"><description>Used >> to assemble groups of preferences</description></field> >> <field name="userPrefValue" type="value"><description>Contains the >> value of this preference</description></field> >> <field name="userPrefDataType" type="id-long"><description>The java >> data type of this preference (empty = >> java.lang.String)</description></field> >> >> Modified: >> ofbiz/trunk/framework/common/webcommon/WEB-INF/common-controller.xml >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/webcommon/WEB-INF/common-controller.xml?rev=888030&r1=888029&r2=888030&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/common/webcommon/WEB-INF/common-controller.xml >> (original) >> +++ ofbiz/trunk/framework/common/webcommon/WEB-INF/common-controller.xml >> Mon Dec 7 17:24:21 2009 >> @@ -116,6 +116,12 @@ >> <response name="error" type="request" value="main"/> >> </request-map> >> + <request-map uri="ajaxSetUserPreference"> >> + <security https="true" auth="true"/> >> + <event type="service" invoke="setUserPreference"/> >> + <response name="success" type="none"/> >> + </request-map> >> + >> <request-map uri="ajaxAutocompleteOptions"> >> <security https="true" auth="true"/> >> <response name="success" type="view" >> value="ajaxAutocompleteOptions"/> >> >> Modified: ofbiz/trunk/framework/images/webapp/images/selectall.js >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/selectall.js?rev=888030&r1=888029&r2=888030&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/images/webapp/images/selectall.js (original) >> +++ ofbiz/trunk/framework/images/webapp/images/selectall.js Mon Dec 7 >> 17:24:21 2009 >> @@ -383,16 +383,22 @@ >> * @param expandTxt Localized 'Expand' text >> * @param collapseTxt Localized 'Collapse' text >> */ >> -function toggleScreenlet(link, areaId, expandTxt, collapseTxt){ >> +function toggleScreenlet(link, areaId, saveCollapsed, expandTxt, >> collapseTxt){ >> toggleCollapsiblePanel(link, areaId, expandTxt, collapseTxt); >> var container = $(areaId); >> var screenlet = container.up('div'); >> if(container.visible()){ >> var currentParam = screenlet.id + "_collapsed=false"; >> var newParam = screenlet.id + "_collapsed=true"; >> + if(saveCollapsed=='true'){ >> + >> setUserLayoutPreferences('GLOBAL_PREFERENCES',screenlet.id+"_collapsed",'true'); >> + } >> } else { >> var currentParam = screenlet.id + "_collapsed=true"; >> var newParam = screenlet.id + "_collapsed=false"; >> + if(saveCollapsed=='true'){ >> + >> setUserLayoutPreferences('GLOBAL_PREFERENCES',screenlet.id+"_collapsed",'false'); >> + } >> } >> var paginationMenus = $$('div.nav-pager'); >> paginationMenus.each(function(menu) { >> @@ -496,3 +502,22 @@ >> } >> } >> } >> + >> +//calls ajax request for storing user layout preferences >> +function setUserLayoutPreferences(userPrefGroupTypeId, userPrefTypeId, >> userPrefValue){ >> + new Ajax.Request('ajaxSetUserPreference',{ >> + method: "post", >> + parameters: {userPrefGroupTypeId: userPrefGroupTypeId, >> userPrefTypeId: userPrefTypeId, userPrefValue: userPrefValue}, >> + onLoading: function(transport){ >> + }, >> + >> + onSuccess: function(transport){ >> + }, >> + >> + onComplete: function(transport){ >> + } >> + }); >> +} >> + >> +function toggleLeftColumn(){ >> +} >> >> Modified: ofbiz/trunk/framework/widget/dtd/widget-screen.xsd >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-screen.xsd?rev=888030&r1=888029&r2=888030&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/widget/dtd/widget-screen.xsd (original) >> +++ ofbiz/trunk/framework/widget/dtd/widget-screen.xsd Mon Dec 7 17:24:21 >> 2009 >> @@ -930,6 +930,15 @@ >> </xs:restriction> >> </xs:simpleType> >> </xs:attribute> >> + <xs:attribute name="save-collapsed" default="true"> >> + <xs:annotation><xs:documentation>When set to true, screenlet >> collapse status is saved as user preference. Defaults to >> true.</xs:documentation></xs:annotation> >> + <xs:simpleType> >> + <xs:restriction base="xs:token"> >> + <xs:enumeration value="true"/> >> + <xs:enumeration value="false"/> >> + </xs:restriction> >> + </xs:simpleType> >> + </xs:attribute> >> <xs:attribute name="padded" default="true"> >> <xs:annotation><xs:documentation>When set to true, screenlet >> content will be padded. Defaults to true.</xs:documentation></xs:annotation> >> <xs:simpleType> >> >> Modified: >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenRenderer.java >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenRenderer.java?rev=888030&r1=888029&r2=888030&view=diff >> >> ============================================================================== >> --- >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenRenderer.java >> (original) >> +++ >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenRenderer.java >> Mon Dec 7 17:24:21 2009 >> @@ -662,6 +662,8 @@ >> sr.append(title); >> sr.append("\" collapsible="); >> sr.append(Boolean.toString(collapsible)); >> + sr.append(" saveCollapsed="); >> + sr.append(Boolean.toString(screenlet.saveCollapsed())); >> sr.append(" collapsibleAreaId=\""); >> sr.append(collapsibleAreaId); >> sr.append("\" expandToolTip=\""); >> >> Modified: >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java?rev=888030&r1=888029&r2=888030&view=diff >> >> ============================================================================== >> --- >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java >> (original) >> +++ >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java >> Mon Dec 7 17:24:21 2009 >> @@ -333,6 +333,7 @@ >> protected Form navigationForm = null; >> protected boolean collapsible = false; >> protected boolean initiallyCollapsed = false; >> + protected boolean saveCollapsed = true; >> protected boolean padded = true; >> protected List<ModelScreenWidget> subWidgets; >> @@ -344,6 +345,9 @@ >> if (this.initiallyCollapsed) { >> this.collapsible = true; >> } >> + // By default, for a collapsible screenlet, the >> collapsed/expanded status must be saved >> + this.saveCollapsed = >> !("false".equals(screenletElement.getAttribute("save-collapsed"))); >> + this.padded = >> !"false".equals(screenletElement.getAttribute("padded")); >> if (this.collapsible && UtilValidate.isEmpty(this.name) && >> idExdr.isEmpty()) { >> throw new IllegalArgumentException("Collapsible screenlets >> must have a name or id [" + this.modelScreen.getName() + "]"); >> @@ -387,7 +391,7 @@ >> @Override >> public void renderWidgetString(Appendable writer, Map<String, >> Object> context, ScreenStringRenderer screenStringRenderer) throws >> GeneralException, IOException { >> - boolean collapsed = initiallyCollapsed; >> + boolean collapsed = getInitiallyCollapsed(context); >> if (this.collapsible) { >> String preferenceKey = getPreferenceKey(context) + >> "_collapsed"; >> Map<String, Object> requestParameters = >> UtilGenerics.checkMap(context.get("requestParameters")); >> @@ -414,11 +418,21 @@ >> public boolean collapsible() { >> return this.collapsible; >> } >> - >> - public boolean initiallyCollapsed() { >> + + //initially-collapsed status, which may be overriden by >> user preference >> + public boolean getInitiallyCollapsed(Map<String, Object> context) >> { >> + String screenletId = this.getId(context) + "_collapsed"; >> + Map<String, ? extends Object> userPreferences = >> UtilGenerics.checkMap(context.get("userPreferences")); >> + if (userPreferences != null && >> userPreferences.containsKey(screenletId)) { >> + return >> Boolean.valueOf((String)userPreferences.get(screenletId)).booleanValue() ; + >> } >> + return this.initiallyCollapsed; >> } >> + public boolean saveCollapsed() { >> + return this.saveCollapsed; >> + } >> public boolean padded() { >> return this.padded; >> } >> >> Modified: ofbiz/trunk/framework/widget/templates/csvScreenMacroLibrary.ftl >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/templates/csvScreenMacroLibrary.ftl?rev=888030&r1=888029&r2=888030&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/widget/templates/csvScreenMacroLibrary.ftl >> (original) >> +++ ofbiz/trunk/framework/widget/templates/csvScreenMacroLibrary.ftl Mon >> Dec 7 17:24:21 2009 >> @@ -48,7 +48,7 @@ >> <#macro renderImage src id style wid hgt border alt urlString></#macro> >> <#macro renderContentFrame fullUrl width height border></#macro> >> -<#macro renderScreenletBegin id title collapsible collapsibleAreaId >> expandToolTip collapseToolTip fullUrlString padded menuString showMore >> collapsed javaScriptEnabled></#macro> >> +<#macro renderScreenletBegin id title collapsible saveCollapsed >> collapsibleAreaId expandToolTip collapseToolTip fullUrlString padded >> menuString showMore collapsed javaScriptEnabled></#macro> >> <#macro renderScreenletSubWidget></#macro> >> <#macro renderScreenletEnd></#macro> >> >> Modified: ofbiz/trunk/framework/widget/templates/foScreenMacroLibrary.ftl >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/templates/foScreenMacroLibrary.ftl?rev=888030&r1=888029&r2=888030&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/widget/templates/foScreenMacroLibrary.ftl >> (original) >> +++ ofbiz/trunk/framework/widget/templates/foScreenMacroLibrary.ftl Mon >> Dec 7 17:24:21 2009 >> @@ -62,7 +62,7 @@ >> <#macro renderImage></#macro> >> <#macro renderContentFrame></#macro> >> -<#macro renderScreenletBegin id title collapsible collapsibleAreaId >> expandToolTip collapseToolTip fullUrlString padded menuString showMore >> collapsed javaScriptEnabled></#macro> >> +<#macro renderScreenletBegin id title collapsible saveCollapsed >> collapsibleAreaId expandToolTip collapseToolTip fullUrlString padded >> menuString showMore collapsed javaScriptEnabled></#macro> >> <#macro renderScreenletSubWidget></#macro> >> <#macro renderScreenletEnd></#macro> >> >> Modified: >> ofbiz/trunk/framework/widget/templates/htmlScreenMacroLibrary.ftl >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/templates/htmlScreenMacroLibrary.ftl?rev=888030&r1=888029&r2=888030&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/widget/templates/htmlScreenMacroLibrary.ftl >> (original) >> +++ ofbiz/trunk/framework/widget/templates/htmlScreenMacroLibrary.ftl Mon >> Dec 7 17:24:21 2009 >> @@ -129,16 +129,16 @@ >> </#macro> >> <#macro renderContentFrame fullUrl width height border><iframe >> src="${fullUrl}" width="${width}" height="${height}" <#if >> border?has_content>border="${border}"</#if> /></#macro> >> -<#macro renderScreenletBegin id title collapsible collapsibleAreaId >> expandToolTip collapseToolTip fullUrlString padded menuString showMore >> collapsed javaScriptEnabled> >> +<#macro renderScreenletBegin id title collapsible saveCollapsed >> collapsibleAreaId expandToolTip collapseToolTip fullUrlString padded >> menuString showMore collapsed javaScriptEnabled> >> <div class="screenlet"<#if id?has_content> id="${id}"</#if>><#rt/> >> <#if showMore> >> <div class="screenlet-title-bar"><ul><#if title?has_content><li >> class="h3">${title}</li></#if> >> <#if collapsible> >> <li class="<#rt/> >> <#if collapsed> >> -collapsed"><a <#if >> javaScriptEnabled>onclick="javascript:toggleScreenlet(this, >> '${collapsibleAreaId}', '${expandToolTip}', >> '${collapseToolTip}');"<#else>href="${fullUrlString}"</#if><#if >> expandToolTip?has_content> title="${expandToolTip}"</#if> >> +collapsed"><a <#if >> javaScriptEnabled>onclick="javascript:toggleScreenlet(this, >> '${collapsibleAreaId}', '${saveCollapsed?string}', '${expandToolTip}', >> '${collapseToolTip}');"<#else>href="${fullUrlString}"</#if><#if >> expandToolTip?has_content> title="${expandToolTip}"</#if> >> <#else> >> -expanded"><a <#if >> javaScriptEnabled>onclick="javascript:toggleScreenlet(this, >> '${collapsibleAreaId}', '${expandToolTip}', >> '${collapseToolTip}');"<#else>href="${fullUrlString}"</#if><#if >> expandToolTip?has_content> title="${expandToolTip}"</#if> >> +expanded"><a <#if >> javaScriptEnabled>onclick="javascript:toggleScreenlet(this, >> '${collapsibleAreaId}', '${saveCollapsed?string}', '${expandToolTip}', >> '${collapseToolTip}');"<#else>href="${fullUrlString}"</#if><#if >> expandToolTip?has_content> title="${expandToolTip}"</#if> >> </#if> >> > </a></li> >> </#if> >> >> Modified: >> ofbiz/trunk/framework/widget/templates/textScreenMacroLibrary.ftl >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/templates/textScreenMacroLibrary.ftl?rev=888030&r1=888029&r2=888030&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/widget/templates/textScreenMacroLibrary.ftl >> (original) >> +++ ofbiz/trunk/framework/widget/templates/textScreenMacroLibrary.ftl Mon >> Dec 7 17:24:21 2009 >> @@ -48,7 +48,7 @@ >> <#macro renderImage src id style wid hgt border alt urlString></#macro> >> <#macro renderContentFrame fullUrl width height border></#macro> >> -<#macro renderScreenletBegin id title collapsible collapsibleAreaId >> expandToolTip collapseToolTip fullUrlString padded menuString showMore >> collapsed javaScriptEnabled></#macro> >> +<#macro renderScreenletBegin id title collapsible saveCollapsed >> collapsibleAreaId expandToolTip collapseToolTip fullUrlString padded >> menuString showMore collapsed javaScriptEnabled></#macro> >> <#macro renderScreenletSubWidget></#macro> >> <#macro renderScreenletEnd></#macro> >> >> Modified: ofbiz/trunk/framework/widget/templates/xmlScreenMacroLibrary.ftl >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/templates/xmlScreenMacroLibrary.ftl?rev=888030&r1=888029&r2=888030&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/widget/templates/xmlScreenMacroLibrary.ftl >> (original) >> +++ ofbiz/trunk/framework/widget/templates/xmlScreenMacroLibrary.ftl Mon >> Dec 7 17:24:21 2009 >> @@ -52,7 +52,7 @@ >> </#macro> >> <#macro renderContentFrame fullUrl width height border></#macro> >> -<#macro renderScreenletBegin id title collapsible collapsibleAreaId >> expandToolTip collapseToolTip fullUrlString padded menuString showMore >> collapsed javaScriptEnabled> >> +<#macro renderScreenletBegin id title collapsible saveCollapsed >> collapsibleAreaId expandToolTip collapseToolTip fullUrlString padded >> menuString showMore collapsed javaScriptEnabled> >> </#macro> >> <#macro renderScreenletSubWidget></#macro> >> <#macro renderScreenletEnd></#macro> >> >> >> >
