You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by er...@apache.org on 2012/06/05 12:17:18 UTC

svn commit: r1346330 [1/7] - in /ofbiz/branches/20120329_portletWidget: framework/common/widget/ framework/images/webapp/images/ framework/minilang/src/org/ofbiz/minilang/method/ framework/webtools/webapp/webtools/WEB-INF/actions/portlet/ framework/wid...

Author: erwan
Date: Tue Jun  5 10:17:15 2012
New Revision: 1346330

URL: http://svn.apache.org/viewvc?rev=1346330&view=rev
Log:
Adding a bunch of missing help pages and some corrections

Added:
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_Decorator.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_Decorator_FR.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_devel.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_devel_FR.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_docbook_FR.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_help.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_help_FR.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_helpfile.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_helpfile_FR.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_main_FR.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_pages.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_pages_FR.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_portlets.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_portlets_FR.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_Empty.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_Empty_FR.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_PPAGE_MGMT.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_PPAGE_MGMT_FR.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_PPAGE_NEW.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_PPAGE_NEW_FR.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_PPAGE_RECAP.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_PPAGE_RECAP_FR.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_Screenlet.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_ScreenletList.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_ScreenletList_FR.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_Screenlet_FR.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_iconsList.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_iconsList_FR.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_portletattrs.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_portletattrs_FR.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_portletcats.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_portletcats_FR.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_portletfields.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_portletfields_FR.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_portlettypes.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_portlettypes_FR.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/script/org/ofbiz/example/ExampleWactions.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/webapp/example/WEB-INF/controller-portlet.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/webapp/example/images/portal_generalities.ep
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/widget/CommonScreens.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/widget/ExampleFeatureForms.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/widget/ExampleFeatureMenus.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/widget/ExampleFeatureScreens.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/widget/ExampleForms.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/widget/ExampleMenus.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/widget/ExampleScreens.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/widget/example/LookupForms.xml   (with props)
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/widget/example/LookupScreens.xml   (with props)
Modified:
    ofbiz/branches/20120329_portletWidget/framework/common/widget/CommonScreens.xml
    ofbiz/branches/20120329_portletWidget/framework/images/webapp/images/selectall.js
    ofbiz/branches/20120329_portletWidget/framework/minilang/src/org/ofbiz/minilang/method/MethodContext.java
    ofbiz/branches/20120329_portletWidget/framework/webtools/webapp/webtools/WEB-INF/actions/portlet/RetrievePortletAttributes.groovy
    ofbiz/branches/20120329_portletWidget/framework/widget/dtd/widget-screen.xsd
    ofbiz/branches/20120329_portletWidget/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/config/ExampleUiLabels.xml
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/ExamplePortalSeedData.xml
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/ExamplePortletData.xml
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE.xml
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_FR.xml
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_docbook.xml
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_main.xml
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/script/org/ofbiz/example/example/ExampleServices.xml
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/servicedef/services.xml
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/webapp/example/WEB-INF/controller.xml
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/widget/example/CommonScreens.xml
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/widget/example/ExampleForms.xml
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/widget/example/ExampleMenus.xml
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/widget/example/ExampleScreens.xml
    ofbiz/branches/20120329_portletWidget/specialpurpose/example/widget/example/PortletScreens.xml

Modified: ofbiz/branches/20120329_portletWidget/framework/common/widget/CommonScreens.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/framework/common/widget/CommonScreens.xml?rev=1346330&r1=1346329&r2=1346330&view=diff
==============================================================================
--- ofbiz/branches/20120329_portletWidget/framework/common/widget/CommonScreens.xml (original)
+++ ofbiz/branches/20120329_portletWidget/framework/common/widget/CommonScreens.xml Tue Jun  5 10:17:15 2012
@@ -186,14 +186,11 @@ under the License.
                         <set field="appbarOpenTemplateLocation" from-field="layoutSettings.VT_NAV_OPEN_TMPLT[0]" />
                         <set field="appbarCloseTemplateLocation" from-field="layoutSettings.VT_NAV_CLOSE_TMPLT[0]" />
                         <set field="messagesTemplateLocation" from-field="layoutSettings.VT_MSG_TMPLT_LOC[0]" />
-<<<<<<< .courant
                         <!--#Bam# icons-purpose-->
                         <set field="iconsPurposeProp" from-field="layoutSettings.VT_ICONS_PURP[0]" default-value="iconsPurpose"/>
                         <property-map resource="${iconsPurposeProp}" map-name="iconsPurpose" global="true" />
                         <!--#Eam# icons-purpose-->
-=======
-                        <set field="layoutSettings.suppressTab" value="ofbizsetup"/><!-- diseable ofbiz setup by default -->                        
->>>>>>> .fusion-droit.r1340379
+                        <set field="layoutSettings.suppressTab" value="ofbizsetup"/><!-- diseable ofbiz setup by default -->
                     </actions>
                     <widgets />
                 </section>
@@ -717,7 +714,7 @@ under the License.
         </section>
     </screen>
 
-    <!--#Bam# portletExample and is used by portletUiLabelDecorator : manage standard portlet decorator -->
+    <!--#Bam# portletUiLabelDecorator : manage standard portlet decorator -->
     <screen name="uiLabelDecorator">
         <section>
             <actions>
@@ -751,7 +748,6 @@ under the License.
         </section>
     </screen>
 
-    <!--#Bam# portletExample, can be use for all portalPage build like exampleMgmt -->
     <screen name="portletUiLabelDecorator">
       <section>
         <widgets>
@@ -763,6 +759,7 @@ under the License.
         </widgets>
       </section>
     </screen>
+    <!--  can be use for all portalPage build like exampleMgmt  -->
     <screen name="ShowCommonDetailPortlet">
         <section>
             <actions>
@@ -782,5 +779,5 @@ under the License.
             </widgets>
         </section>
     </screen>
-    <!--#Eam# portletExample -->
+    <!--#Eam# portletUiLabelDecorator -->
 </screens>

Modified: ofbiz/branches/20120329_portletWidget/framework/images/webapp/images/selectall.js
URL: http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/framework/images/webapp/images/selectall.js?rev=1346330&r1=1346329&r2=1346330&view=diff
==============================================================================
--- ofbiz/branches/20120329_portletWidget/framework/images/webapp/images/selectall.js (original)
+++ ofbiz/branches/20120329_portletWidget/framework/images/webapp/images/selectall.js Tue Jun  5 10:17:15 2012
@@ -269,7 +269,7 @@ function ajaxUpdateAreas(areaCsvString) 
         // not nice but works
         targetParams = targetParams.replace('#','');
         targetParams = targetParams.replace('?','');
-        /*Begin addon modification portletWidget wait-spinner working*/
+        /*#Bam# portletWidget wait-spinner working*/
         var UPDATE_OP = {};
         UPDATE_OP.areaId = areaId;
         UPDATE_OP.target = target;
@@ -302,7 +302,7 @@ function ajaxUpdateAreas(areaCsvString) 
             error: function(data) {waitSpinnerHide()}
         });
         */
-        /*Begin addon modification portletWidget wait-spinner working*/
+        /*#Eam# portletWidget wait-spinner working*/
     }
 }
 
@@ -378,7 +378,7 @@ function ajaxSubmitFormUpdateAreas(form,
        jQuery('#content-messages').remove();
    }
    updateFunction = function(data) {
-       /*Begin addon modification genericPortlet*/
+       /*#Bam# portletWidget*/
        if ((data._ERROR_MESSAGE_LIST_ != undefined || data._ERROR_MESSAGE_ != undefined) 
                && (data.responseMessage == undefined || data.responseMessage != "fail")) {
           showMessages('errorMessage',data._ERROR_MESSAGE_,data._ERROR_MESSAGE_LIST_);
@@ -409,7 +409,7 @@ function ajaxSubmitFormUpdateAreas(form,
            }
            else if(jQuery('#content-messages').text()) {
                jQuery('#content-messages').remove();
-           /*End addon modification genericPortlet*/
+           /*#Eam# portletWidget*/
            }
            ajaxUpdateAreas(areaCsvString);
        }

Modified: ofbiz/branches/20120329_portletWidget/framework/minilang/src/org/ofbiz/minilang/method/MethodContext.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/framework/minilang/src/org/ofbiz/minilang/method/MethodContext.java?rev=1346330&r1=1346329&r2=1346330&view=diff
==============================================================================
--- ofbiz/branches/20120329_portletWidget/framework/minilang/src/org/ofbiz/minilang/method/MethodContext.java (original)
+++ ofbiz/branches/20120329_portletWidget/framework/minilang/src/org/ofbiz/minilang/method/MethodContext.java Tue Jun  5 10:17:15 2012
@@ -29,6 +29,7 @@ import javax.servlet.http.HttpServletRes
 import javolution.util.FastMap;
 
 import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.UtilGenerics;
 import org.ofbiz.base.util.UtilHttp;
 import org.ofbiz.base.util.UtilMisc;
 import org.ofbiz.base.util.collections.FlexibleMapAccessor;
@@ -67,9 +68,21 @@ public class MethodContext implements It
     private int traceLogLevel = Debug.INFO;
     protected GenericValue userLogin;
 
-    public MethodContext(DispatchContext ctx, Map<String, ? extends Object> context, ClassLoader loader) {
+    // constructor to use minilang as script call in screen action 
+    public MethodContext(DispatchContext ctx, Map<String, ? extends Object> context) {
         this.methodType = MethodContext.SERVICE;
+        Map<String, Object> parametersCtx = UtilGenerics.checkMap(context.get("parameters"));
+        this.parameters = UtilMisc.makeMapWritable(parametersCtx);
+        //putAllEnv(context);
+        loadThis(ctx, context, null);
+    }
+
+    public MethodContext(DispatchContext ctx, Map<String, ? extends Object> context, ClassLoader loader) {
         this.parameters = UtilMisc.makeMapWritable(context);
+        loadThis(ctx, context, loader);
+    }
+    private void loadThis(DispatchContext ctx, Map<String, ? extends Object> context, ClassLoader loader) {
+        this.methodType = MethodContext.SERVICE;
         this.loader = loader;
         this.locale = (Locale) context.get("locale");
         this.timeZone = (TimeZone) context.get("timeZone");

Modified: ofbiz/branches/20120329_portletWidget/framework/webtools/webapp/webtools/WEB-INF/actions/portlet/RetrievePortletAttributes.groovy
URL: http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/framework/webtools/webapp/webtools/WEB-INF/actions/portlet/RetrievePortletAttributes.groovy?rev=1346330&r1=1346329&r2=1346330&view=diff
==============================================================================
--- ofbiz/branches/20120329_portletWidget/framework/webtools/webapp/webtools/WEB-INF/actions/portlet/RetrievePortletAttributes.groovy (original)
+++ ofbiz/branches/20120329_portletWidget/framework/webtools/webapp/webtools/WEB-INF/actions/portlet/RetrievePortletAttributes.groovy Tue Jun  5 10:17:15 2012
@@ -1,16 +1,22 @@
-import org.ofbiz.widget.screen.ModelScreenWidget;
-import org.ofbiz.base.util.UtilValidate;
+/*
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied.  See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
 
-if (UtilValidate.isNotEmpty(parameters.portalPortletId)) {
-    context.portalPortletId = parameters.portalPortletId;
-    if (UtilValidate.isNotEmpty(parameters.portalPageId)) {
-        context.portalPageId = parameters.portalPageId;
-    }
-    if (UtilValidate.isNotEmpty(parameters.portletSeqId)) {
-        context.portletSeqId = parameters.portletSeqId;
-    }
-    ModelScreenWidget.PortalPage.retrievePortletAttributes(context);
-}
 import org.ofbiz.widget.screen.ModelScreenWidget;
 import org.ofbiz.base.util.UtilValidate;
 

Modified: ofbiz/branches/20120329_portletWidget/framework/widget/dtd/widget-screen.xsd
URL: http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/framework/widget/dtd/widget-screen.xsd?rev=1346330&r1=1346329&r2=1346330&view=diff
==============================================================================
--- ofbiz/branches/20120329_portletWidget/framework/widget/dtd/widget-screen.xsd (original)
+++ ofbiz/branches/20120329_portletWidget/framework/widget/dtd/widget-screen.xsd Tue Jun  5 10:17:15 2012
@@ -1124,14 +1124,14 @@ under the License.
                 </xs:restriction>
             </xs:simpleType>
         </xs:attribute>
-        <!-- Begin addon modification : genericPortlet -->
+        <!-- #Bam# : portletWidget -->
         <xs:attribute type="xs:string" name="portalPortletId">
             <xs:annotation><xs:documentation>Retrieve only the attributes for this portalPortlet</xs:documentation></xs:annotation>
         </xs:attribute>
         <xs:attribute type="xs:string" name="portletSeqId">
             <xs:annotation><xs:documentation>Specify the portletSeqId of the portalPortlet to look for when retrieving the attributes</xs:documentation></xs:annotation>
         </xs:attribute>
-        <!-- End addon modification : genericPortlet -->
+        <!-- #Eam# : portletWidget -->
     </xs:attributeGroup>
 
     <xs:element name="sub-content" substitutionGroup="AllWidgets">

Modified: ofbiz/branches/20120329_portletWidget/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java?rev=1346330&r1=1346329&r2=1346330&view=diff
==============================================================================
--- ofbiz/branches/20120329_portletWidget/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java (original)
+++ ofbiz/branches/20120329_portletWidget/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java Tue Jun  5 10:17:15 2012
@@ -1681,16 +1681,16 @@ public abstract class ModelScreenWidget 
                 if (UtilValidate.isNotEmpty(portalPortletId)) {
                     GenericValue portletValue = null;
                     if ( UtilValidate.isNotEmpty(portletSeqId)) {
-                        portletValue = delegator.findByPrimaryKey("PortalPagePortletView", UtilMisc.toMap("portalPageId", actualPortalPageId, "portalPortletId", portalPortletId, "portletSeqId", portletSeqId));
+                        portletValue = delegator.findOne("PortalPagePortletView", UtilMisc.toMap("portalPageId", actualPortalPageId, "portalPortletId", portalPortletId, "portletSeqId", portletSeqId), false);
                     } else {
-                        List<GenericValue> portletValues = delegator.findByAnd("PortalPagePortletView", UtilMisc.toMap("portalPageId", actualPortalPageId, "portalPortletId", portalPortletId));
+                        List<GenericValue> portletValues = delegator.findByAnd("PortalPagePortletView", UtilMisc.toMap("portalPageId", actualPortalPageId, "portalPortletId", portalPortletId), null, false);
                         if (UtilValidate.isNotEmpty(portletValues)) {
                             portletValue = EntityUtil.getFirst(portletValues);
                             portletSeqId = portletValue.getString("portletSeqId");
                         }
                     }
                     if ( UtilValidate.isEmpty(portletValue)) {
-                        portletValue = delegator.findByPrimaryKey("PortalPortlet", UtilMisc.toMap("portalPortletId", portalPortletId));
+                        portletValue = delegator.findOne("PortalPortlet", UtilMisc.toMap("portalPortletId", portalPortletId), false);
                     }
 
                     if (UtilValidate.isNotEmpty(portletValue)) {
@@ -1868,7 +1868,7 @@ public abstract class ModelScreenWidget 
             String portalPortletId = (String) context.get("portalPortletId");
             GenericValue portletValue = (GenericValue) context.remove("portletValue");
             if (UtilValidate.isEmpty(portletValue)) {
-                portletValue = delegator.findByPrimaryKey("PortalPortlet", UtilMisc.toMap("portalPortletId", portalPortletId));
+                portletValue = delegator.findOne("PortalPortlet", UtilMisc.toMap("portalPortletId", portalPortletId), false);
             }
             String portletSeqId= (String) context.get("portletSeqId");
 

Modified: ofbiz/branches/20120329_portletWidget/specialpurpose/example/config/ExampleUiLabels.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/specialpurpose/example/config/ExampleUiLabels.xml?rev=1346330&r1=1346329&r2=1346330&view=diff
==============================================================================
--- ofbiz/branches/20120329_portletWidget/specialpurpose/example/config/ExampleUiLabels.xml (original)
+++ ofbiz/branches/20120329_portletWidget/specialpurpose/example/config/ExampleUiLabels.xml Tue Jun  5 10:17:15 2012
@@ -19,6 +19,91 @@
     under the License.
 -->
 <resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    
+      <!-- #Bam# Begin Addon modification portletExample -->
+    <property key="ExampleApplicationPortal">
+        <value xml:lang="en">Portal Example Application</value>
+        <value xml:lang="fr">Application exemple Portail</value>
+        <value xml:lang="it">Applicazione Esempi</value>
+        <value xml:lang="ro">Aplicatie Exemple</value>
+        <value xml:lang="ru">Приложение Пример</value>
+        <value xml:lang="th">ตัวอย่างโปรแกรมคอมพิวเตอร์</value>
+        <value xml:lang="zh">样例应用</value>
+    </property>
+    <property key="ExampleMessageCreateExampleIsSuccess">
+        <value xml:lang="en">One Example is created</value>
+        <value xml:lang="fr">Un exemple est créé</value>
+    </property>
+    <property key="ExampleMessageExampleTypeCannotBeEmpty">
+        <value xml:lang="en">Example Type is mandatory</value>
+        <value xml:lang="fr">Le type d'exemple ne peut pas être vide</value>
+    </property>
+    <property key="ExampleMessageExampleStatusIs">
+        <value xml:lang="en">it's status is {0}</value>
+        <value xml:lang="fr">son statut est {0}</value>
+    </property>
+    <property key="ExampleStatusHistory">
+        <value xml:lang="en">Status History</value>
+        <value xml:lang="fr">Historique statut</value>
+    </property>
+    <property key="FormFieldTitle_exampleId">
+        <value xml:lang="en">Example ID</value>
+        <value xml:lang="fr">Réf. exemple</value>
+        <value xml:lang="it">Codice esempio</value>
+        <value xml:lang="ro">Cod Exemplu</value>
+        <value xml:lang="ru">Код примера</value>
+        <value xml:lang="th">รหัสตัวอย่าง</value>
+        <value xml:lang="zh">样例标识</value>
+    </property>
+    <property key="FormFieldTitle_exampleItemSeqId">
+        <value xml:lang="en">Example Item ID</value>
+        <value xml:lang="fr">Réf. lg. exemple</value>
+    </property>
+    <property key="PageTitleCreateExample">
+        <value xml:lang="en">Create an example</value>
+        <value xml:lang="fr">Création d'un exemple</value>
+    </property>
+    <property key="PageTitleExampleItems">
+        <value xml:lang="en">List Example Items</value>
+        <value xml:lang="fr">Liste des lignes d'exemple</value>
+    </property>
+    <property key="PageTitleExampleDetailsMenu">
+        <value xml:lang="en">Summary &amp; Menu</value>
+        <value xml:lang="fr">Résumé &amp; menu</value>
+    </property>
+    <property key="PageTitleExampleFeatureAppls">
+        <value xml:lang="en">List Example Features Appl</value>
+        <value xml:lang="fr">Liste des caratéristiques associées d'exemple</value>
+    </property>
+    <property key="PageTitleExampleStatus">
+        <value xml:lang="en">List Example Statuses</value>
+        <value xml:lang="fr">Historique des statuts d'exemple</value>
+    </property>
+    <property key="PageTitleFindExampleMgmt">
+        <value xml:lang="en">Find Example</value>
+        <value xml:lang="fr">Rechercher des exemples</value>
+    </property>
+    <property key="PageTitleListExample">
+        <value xml:lang="en">List Examples</value>
+        <value xml:lang="fr">Liste des exemples</value>
+    </property>
+    <property key="PageTitleListExampleFeature">
+        <value xml:lang="en">List Example Feature</value>
+        <value xml:lang="fr">Liste des caractérisques exemples</value>
+    </property>
+    <property key="PageTitleLookupExample">
+        <value xml:lang="en">Lookup Example</value>
+        <value xml:lang="fr">Rechercher un exemple</value>
+    </property>
+    <property key="PageTitleSelectExample">
+        <value xml:lang="en">Select an Example</value>
+        <value xml:lang="fr">Sélectionner un exemple</value>
+    </property>
+    <property key="PageTitleShowExample">
+        <value xml:lang="en">Show Example</value>
+        <value xml:lang="fr">Afficher l'exemple</value>
+    </property>
+    <!-- #Eam# portletExample -->
     <property key="ExampelsJackrabbitDownloadFile">
         <value xml:lang="de">Datei herunterladen</value>
         <value xml:lang="en">Download file</value>
@@ -869,4 +954,59 @@
         <value xml:lang="de">Sie haben den Wert in der Select Box geändert.</value>
         <value xml:lang="en">You have changed the value in the select box</value>
     </property>
+
+    <!--#Bam# icons-purpose-->
+    <property key="BestPractice_IconAddItem">
+        <value xml:lang="en">BP: Used to add an object on an item of a list</value>
+        <value xml:lang="fr">BP: Utilisé pour ajouter un object à un item d'une liste</value>
+    </property>
+    <property key="BestPractice_IconAppNext">
+        <value xml:lang="en">BP: Next item in a naviguation menu or dependancy after. Add a iconTitle each time you use it</value>
+        <value xml:lang="fr">BP: Elément suivant lors de naviguation ou dépendance après. Ajouter un iconTitle à chaque usage</value>
+    </property>
+    <property key="BestPractice_IconAppPrev">
+        <value xml:lang="en">BP: Previous item in a naviguation menu or dependancy before. Add a iconTitle each time you use it</value>
+        <value xml:lang="fr">BP: Elément précédent lors de naviguation ou dépendance avant. Ajouter un iconTitle à chaque usage</value>
+    </property>
+    <property key="BestPractice_IconCategory">
+        <value xml:lang="en">BP: Categories (Product categories, Party classification, Task purposes, ...)</value>
+        <value xml:lang="fr">BP: Catégories (de produit, de classification d'acteur, d'usage de tâche, ...)</value>
+    </property>
+    <property key="BestPractice_IconContact">
+        <value xml:lang="en">BP: Person associated List (most of time with contact mech details)</value>
+        <value xml:lang="fr">BP: Liste des personnes associées (affiche des élements de coordonnées, la plupart du temps)</value>
+    </property>
+    <property key="BestPractice_IconHierarchy">
+        <value xml:lang="en">BP: Rollup (product, parties, party groups, project, ...</value>
+        <value xml:lang="fr">BP: Hiérarchie (de produits, d'acteurs, de groupe d'acteurs, projet, ...)</value>
+    </property>
+    <property key="BestPractice_IconParty">
+        <value xml:lang="en">BP: Parties associated List (most of time show PartyRole list), so Person or Group or Company</value>
+        <value xml:lang="fr">BP: Liste des acteurs associés (affiche une liste d'acteur- rôle, la plupart du temps), personne, groupe ou société</value>
+    </property>
+    <property key="BestPractice_IconPDF">
+        <value xml:lang="en">BP: For generate or show (download) a PDF file</value>
+        <value xml:lang="fr">BP: Pour générer ou afficher (télécharger) un document PDF</value>
+    </property>
+    <property key="BestPractice_IconPrint">
+        <value xml:lang="en">Print</value>
+        <value xml:lang="fr">Imprimer directement sur l'imprimante (paramètré selon votre utilisateur de connexion)</value>
+    </property>
+    <property key="BestPractice_IconRefresh">
+        <value xml:lang="en">Refresh</value>
+        <value xml:lang="fr">re-Afficher les données (selon les critères de sélection) sans prendre en compte la saisie en cours</value>
+    </property>
+    <property key="BestPractice_IconSynchronize">
+        <value xml:lang="en">BP: Used to apply modification from an object to another. Add a iconTitle each time you use it</value>
+        <value xml:lang="fr">BP: Utilisé pour appliquer une modification d'un object à un autre (synchronisation). Ajouter un iconTitle à chaque usage !</value>
+    </property>
+    <property key="BestPractice_Icons">
+        <value xml:lang="en">When Icon explanation start with BP (Best Practice), put the mouse on icon to read the end-user label </value>
+        <value xml:lang="fr">Quand l'explication de l'icône est précédée par BP (Bonne Pratique), positionner la souris sur l'icone pour visualiser ce que l'utilisateur verra</value>
+    </property>
+    <property key="PageTitleIconsList">
+        <value xml:lang="en">Icons list</value>
+        <value xml:lang="fr">Liste des icônes</value>
+    </property>
+    <!--#Eam# icons-purpose-->
 </resource>

Modified: ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/ExamplePortalSeedData.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/ExamplePortalSeedData.xml?rev=1346330&r1=1346329&r2=1346330&view=diff
==============================================================================
--- ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/ExamplePortalSeedData.xml (original)
+++ ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/ExamplePortalSeedData.xml Tue Jun  5 10:17:15 2012
@@ -33,4 +33,44 @@ under the License.
     <PortalPage portalPageId="EXAMPLE2"  sequenceNum="200" parentPortalPageId="EXAMPLE" portalPageName="Example Portal Page 2" description="Portal page 2" ownerUserLoginId="_NA_"/>
     <PortalPageColumn portalPageId="EXAMPLE2" columnSeqId="00001"/>
     <PortalPagePortlet portalPageId="EXAMPLE2" portalPortletId="EXAMPLE_1" portletSeqId="00001" columnSeqId="00001" sequenceNum="1"/>
+    <!--#Bam# icons-purpose -->
+    <PortalPage portalPageId="IconsList" sequenceNum="400" parentPortalPageId="EXAMPLE" portalPageName="List all icons available" description="List all icons available" ownerUserLoginId="_NA_"/>
+    <PortalPageColumn portalPageId="IconsList" columnSeqId="00001"/>
+    <PortalPagePortlet portalPageId="IconsList" portalPortletId="IconsList" portletSeqId="00001" columnSeqId="00001" sequenceNum="1"/>
+    <!--#Eam# icons-purpose -->
+
+
+<!--#Bam# portletExample -->
+    <PortalPage portalPageId="ExampleMgmt" sequenceNum="200" parentPortalPageId="" portalPageName="Example management" description="Search, list, navigation menu, edit area" ownerUserLoginId="_NA_"/>
+    <PortalPageColumn portalPageId="ExampleMgmt" columnSeqId="00001" columnWidthPercentage="25"/>
+    <PortalPagePortlet portalPageId="ExampleMgmt" portalPortletId="FindExample" portletSeqId="00001" columnSeqId="00001" sequenceNum="1"/>
+    <PortalPagePortlet portalPageId="ExampleMgmt" portalPortletId="ExampleDetailsMenu" portletSeqId="00001" columnSeqId="00001" sequenceNum="10"/>
+    <PortalPageColumn portalPageId="ExampleMgmt" columnSeqId="00002"/>
+    <PortalPagePortlet portalPageId="ExampleMgmt" portalPortletId="ListExample" portletSeqId="00001" columnSeqId="00002" sequenceNum="20"/>
+    <PortalPagePortlet portalPageId="ExampleMgmt" portalPortletId="ExampleDetail" portletSeqId="00001" columnSeqId="00002" sequenceNum="30"/>
+
+    <PortalPage portalPageId="ExampleRecap" sequenceNum="250" parentPortalPageId="ExampleMgmt" portalPageName="Example summary" description="Select, summary, view on major relations" ownerUserLoginId="_NA_"/>
+    <PortalPageColumn portalPageId="ExampleRecap" columnSeqId="00001" columnWidthPercentage="25"/>
+    <PortalPagePortlet portalPageId="ExampleRecap" portalPortletId="SelectExample" portletSeqId="00001" columnSeqId="00001" sequenceNum="1"/>
+    <PortalPagePortlet portalPageId="ExampleRecap" portalPortletId="ExampleStatus" portletSeqId="00001" columnSeqId="00001" sequenceNum="5"/>
+    <PortalPageColumn portalPageId="ExampleRecap" columnSeqId="00002"/>
+    <PortalPagePortlet portalPageId="ExampleRecap" portalPortletId="ShowExample" portletSeqId="00001" columnSeqId="00002" sequenceNum="20"/>
+    <PortalPagePortlet portalPageId="ExampleRecap" portalPortletId="ExampleItems" portletSeqId="00001" columnSeqId="00002" sequenceNum="30"/>
+    <PortalPagePortlet portalPageId="ExampleRecap" portalPortletId="ExampleFeatureAppls" portletSeqId="00001" columnSeqId="00002" sequenceNum="35"/>
+
+    <PortalPage portalPageId="ExampleNew" sequenceNum="300" parentPortalPageId="ExampleMgmt" portalPageName="Create a new Example" description="Create an Example and for some détails" ownerUserLoginId="_NA_"/>
+    <PortalPageColumn portalPageId="ExampleNew" columnSeqId="00001" columnWidthPercentage="25"/>
+    <PortalPagePortlet portalPageId="ExampleNew" portalPortletId="FindExample" portletSeqId="00001" columnSeqId="00001" sequenceNum="1"/><!-- TODO: search has to return on ExampleMgmt page, need to find a fix -->
+       <PortletAttribute portalPageId="ExampleNew" portalPortletId="FindExample" attrName="initiallyCollapsed" attrValue="true" portletSeqId="00001"/>
+    <PortalPageColumn portalPageId="ExampleNew" columnSeqId="00002"/>
+    <PortalPagePortlet portalPageId="ExampleNew" portalPortletId="CreateExample" portletSeqId="00001" columnSeqId="00002" sequenceNum="20"/>
+    <PortalPagePortlet portalPageId="ExampleNew" portalPortletId="ExampleItems" portletSeqId="00001" columnSeqId="00002" sequenceNum="30"/>
+
+    <PortalPage portalPageId="ExampleFeatureNew" sequenceNum="305" parentPortalPageId="ExampleMgmt" portalPageName="Create a new ExampleFeature" description="Create an ExampleFeature and some details" ownerUserLoginId="_NA_"/>
+    <PortalPageColumn portalPageId="ExampleFeatureNew" columnSeqId="00001" columnWidthPercentage="25"/>
+    <PortalPagePortlet portalPageId="ExampleFeatureNew" portalPortletId="FindExampleFeature" portletSeqId="00001" columnSeqId="00001" sequenceNum="1"/>
+    <PortalPageColumn portalPageId="ExampleFeatureNew" columnSeqId="00002"/>
+      <PortalPagePortlet portalPageId="ExampleFeatureNew" portalPortletId="ListExampleFeature" portletSeqId="00001" columnSeqId="00002" sequenceNum="20"/>
+
+<!--#Eam# portletExample -->
 </entity-engine-xml>

Modified: ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/ExamplePortletData.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/ExamplePortletData.xml?rev=1346330&r1=1346329&r2=1346330&view=diff
==============================================================================
--- ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/ExamplePortletData.xml (original)
+++ ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/ExamplePortletData.xml Tue Jun  5 10:17:15 2012
@@ -42,4 +42,102 @@ under the License.
     <PortletPortletCategory portalPortletId="EXAMPLE_1" portletCategoryId="EXAMPLE"/>
     <PortletPortletCategory portalPortletId="EXAMPLE_2" portletCategoryId="EXAMPLE"/>
     <PortletPortletCategory portalPortletId="EXAMPLE_3" portletCategoryId="EXAMPLE"/>
+    <!--#Bam# icons-purpose -->
+    <PortalPortlet portalPortletId="IconsList" portletName="List all icons usable in portlet with iconsPurpose and IconsTooltips_" 
+                   description="List all icons usable in portlet with iconsPurpose and IconsTooltips_"
+       portletTypeId="Screenlet" component="example" subComponent="Example" />
+    <PortletPortletCategory portalPortletId="IconsList" portletCategoryId="EXAMPLE"/>
+
+
+     <!-- Begin Addon modification portletExample -->
+    <PortletCategory portletCategoryId="EXAMPLE_PORTLET_TYPE" description="Example Portlet(s) using portletType"/>
+
+    <PortalPortlet portalPortletId="FindExample"
+       portletName="Find Example (with portletType and showPortlet)" description="portlet to define search criteria for Example list"
+       portletTypeId="Screenlet"  component="example" subComponent="Example" helpName="HELP_Screenlet"/>
+    <PortalPortlet portalPortletId="SelectExample"
+       portletName="Select one Example" description="portlet to select one Example for the current portal page"
+       portletTypeId="Screenlet"  component="example" subComponent="Example" helpName="HELP_Screenlet"/>
+
+    <!-- Use directly a form (no screen for default value, only form, see ShowPortalPortlet view) -->
+    <PortalPortlet portalPortletId="ListExample"
+       portletName="List Examples (with portletType and showPortlet)" description="portlet to list example depending on search criteria, this portlet is call by FindExample"
+       portletTypeId="ScreenletList" component="example" subComponent="Example" useScript="Y" helpName="HELP_ScreenletList"/>
+
+    <!-- Use a screen (default value name, see ShowPortalPortlet view) -->
+    <PortalPortlet portalPortletId="ExampleDetailsMenu" 
+       portletName="Example summary and details menu (with portletType and showPortlet)" description="Example summary and menu to see all details portlet in the ExampleDetail contener"
+       portletTypeId="Screenlet" component="example" subComponent="Example" useMenu="Y" useScreen="Y" useScript="Y"
+       titleLabel="CommonEmptyHeader" pkIdName="exampleId" scriptName="component://example/script/org/ofbiz/example/ExampleWactions.xml#EditExample" helpName="HELP_Screenlet"/>
+
+    <!-- Empty area for portlet injected by DetailMenu -->
+    <PortalPortlet portalPortletId="ExampleDetail" 
+       portletName="Container to show Example portlet detail (with portletType and showPortlet)" description="Use this portlet to say where detail portlet call from a menu will be show"
+       portletTypeId="Empty" component="example" subComponent="Example" helpName="DETAIL_dtExampleId"/>
+
+    <!-- Use a screen (default value name, see ShowPortalPortlet view) -->
+    <PortalPortlet portalPortletId="ShowExample"
+       portletName="Display Example (all fields) (with portletType and showPortlet)" description="Same as Edit but with only display field, if necessary could show some informations coming from link entities"
+       portletTypeId="Screenlet" component="example" subComponent="Example" 
+       useMenu="Y" helpName="HELP_Screenlet"/>
+
+    <!-- Use directly a form (no screen for default value, only form, see ShowPortalPortlet view) -->
+    <PortalPortlet portalPortletId="CreateExample"
+       portletName="Create Example Form (with portletType and showPortlet)" description="Used to add Example"
+       portletTypeId="Screenlet" component="example" subComponent="Example" helpName="HELP_Screenlet"/>
+
+    <!-- edit is not call by portlet but directly by uri
+    <PortalPortlet portalPortletId="EditExample" portletName="Edit Example Form" 
+                   description="Used to modify or add Example"
+       screenName="EditExample"
+       screenLocation="component://example/widget/example/PortletScreens.xml"/> -->
+
+    <PortletPortletCategory portalPortletId="FindExample" portletCategoryId="EXAMPLE_PORTLET_TYPE"/>
+    <PortletPortletCategory portalPortletId="SelectExample" portletCategoryId="EXAMPLE_PORTLET_TYPE"/>
+    <PortletPortletCategory portalPortletId="ListExample" portletCategoryId="EXAMPLE_PORTLET_TYPE"/>
+    <PortletPortletCategory portalPortletId="ExampleDetailsMenu" portletCategoryId="EXAMPLE_PORTLET_TYPE"/>
+    <PortletPortletCategory portalPortletId="ExampleDetail" portletCategoryId="EXAMPLE_PORTLET_TYPE"/>
+    <PortletPortletCategory portalPortletId="ShowExample" portletCategoryId="EXAMPLE_PORTLET_TYPE"/>
+    <PortletPortletCategory portalPortletId="CreateExample" portletCategoryId="EXAMPLE_PORTLET_TYPE"/>
+
+    <PortalPortlet portalPortletId="ExampleItems"
+       portletName="List and manage exampleItems (with portletType and showPortlet)" description="List all exampleItems for one example, subportlet simple"
+       portletTypeId="ScreenletList" component="example" subComponent="Example" 
+       editFormName="GenericEditEditOrShowParam" editFormLocation="component://common/widget/PortletEditForms.xml"
+       pkIdName="exampleId" useMenu="Y" helpName="HELP_ScreenletList"/>
+    <!-- Other portlets : don't appear on a portal page (can done), but used by other portlets for detail information (managed by a menu) -->
+    <PortalPortlet portalPortletId="ExampleStatus"
+       portletName="List ExampleStatus" description="List all ExampleStatus for one example (portlet which use portletType and showPortlet)"
+       portletTypeId="ScreenletList" component="example" subComponent="Example"  
+       editFormName="GenericEditEditOrShowParam" editFormLocation="component://common/widget/PortletEditForms.xml"
+       pkIdName="exampleId" helpName="HELP_ScreenletList"/>
+    <!-- Use a screen (need to add an external menu above the list, so use a screen instead of a form) -->
+    <PortalPortlet portalPortletId="ExampleFeatureAppls"
+       portletName="List and manage ExampleFeatureAppls (with portletType and showPortlet)" description="List all ExampleFeatureAppls for one example, subportlet simple"
+       portletTypeId="Screenlet" component="example" subComponent="ExampleFeature" useScreen="Y"
+       editFormName="GenericEditEditOrShowParam" editFormLocation="component://common/widget/PortletEditForms.xml"
+       pkIdName="exampleId" useMenu="Y" helpName="HELP_Screenlet"/>
+
+    <PortletPortletCategory portalPortletId="ExampleStatus" portletCategoryId="EXAMPLE_PORTLET_TYPE"/>
+    <PortletPortletCategory portalPortletId="ExampleItems" portletCategoryId="EXAMPLE_PORTLET_TYPE"/>
+    <PortletPortletCategory portalPortletId="ExampleFeatureAppls" portletCategoryId="EXAMPLE_PORTLET_TYPE"/>
+
+
+    <!-- Use directly a form (no screen for default value, only form, see ShowPortalPortlet view) -->
+    <PortalPortlet portalPortletId="FindExampleFeature"
+       portletName="Find ExampleFeature (with portletType and showPortlet)" description="portlet to define search criteria for ExampleFeature list"
+       portletTypeId="Screenlet"  component="example" subComponent="ExampleFeature" helpName="HELP_Screenlet"/>
+    <!-- Use directly a form (no screen for default value, only form, see ShowPortalPortlet view) -->
+    <PortalPortlet portalPortletId="ListExampleFeature"
+       portletName="List ExampleFeatures (with portletType and showPortlet)" description="portlet to list example features depending on search criteria"
+       portletTypeId="ScreenletList" component="example" subComponent="ExampleFeature" 
+       useMenu="Y" helpName="HELP_ScreenletList"/>
+
+    <PortletPortletCategory portalPortletId="FindExampleFeature" portletCategoryId="EXAMPLE_PORTLET_TYPE"/>
+    <PortletPortletCategory portalPortletId="ListExampleFeature" portletCategoryId="EXAMPLE_PORTLET_TYPE"/>
+     <!-- End Addon modification portletExample -->
+
+<!--#Bam# portletExample can be use for all portal page build like exampleMgmt-->
+<PortalPortlet portalPortletId="CommonDetail" portletName="Common detail portlet place" description="Use this portlet to say where detail portlet call from a menu will be show" portletTypeId="Empty" component="common" subComponent="Common" securityServiceName="" securityMainAction="VIEW"/>
+<!--#Eam# portletExample -->
 </entity-engine-xml>

Added: ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_Decorator.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_Decorator.xml?rev=1346330&view=auto
==============================================================================
--- ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_Decorator.xml (added)
+++ ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_Decorator.xml Tue Jun  5 10:17:15 2012
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to you under the Apache License, Version
+2.0 (the "License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+http://www.apache.org/licenses/LICENSE-2.0 Unless required by
+applicable law or agreed to in writing, software distributed under the
+License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, either express or implied. See the License for
+the specific language governing permissions and limitations under the
+License.
+-->
+<section xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    version="5.0" xmlns:xl="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude"
+    xsi:schemaLocation="http://docbook.org/ns/docbook"
+    xmlns="http://docbook.org/ns/docbook">
+    <title>Use of the template "Decorator".</title>
+    <para>
+      <mediaobject>
+        <imageobject>
+          <imagedata fileref="/example/images/Decorator.png"/>
+        </imageobject>
+        <textobject><phrase>Decorator portlet Template</phrase></textobject>
+      </mediaobject>
+    </para>
+    <para><link xl:href="showHelp?helpTopic=HELP_portlettypes">Back to "Portlet Types" Menu</link></para>
+
+    <para>The template "Decorator" only contains the decorator that enables the management of translations in the component in which the portlet will be used (loading of the uiLabel files). 
+      This decorator is used by the template "Screenlet" and "ScreenletList".</para>
+
+    <para>The use of this portlet template enables to create a portlet from a screen, without worrying about the uiLabel files. 
+      It is advisable to use it in order to be homogeneous in terms of use of sames uiLabel files structure for every portlet.</para>
+
+    <para>It will be used each time a specific screen is needed.</para>
+    <section>
+      <title>Optional fields of the entity PortalPortlet that are used:</title>
+      <itemizedlist>
+        <listitem><para>uiLabelLocation</para></listitem>
+        <listitem><para>useScreen, value should be Y</para></listitem>
+        <listitem><para>screenName</para></listitem>
+        <listitem><para>screenLocation</para></listitem>
+      </itemizedlist>
+      <para>Go to <link xl:href="showHelp?helpTopic=portletfields">the full list of the fields of a portlet</link></para>
+    </section>
+</section>
\ No newline at end of file

Propchange: ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_Decorator.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_Decorator.xml
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_Decorator.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_Decorator_FR.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_Decorator_FR.xml?rev=1346330&view=auto
==============================================================================
--- ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_Decorator_FR.xml (added)
+++ ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_Decorator_FR.xml Tue Jun  5 10:17:15 2012
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to you under the Apache License, Version
+2.0 (the "License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+http://www.apache.org/licenses/LICENSE-2.0 Unless required by
+applicable law or agreed to in writing, software distributed under the
+License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, either express or implied. See the License for
+the specific language governing permissions and limitations under the
+License.
+-->
+<section xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    version="5.0" xmlns:xl="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude"
+    xsi:schemaLocation="http://docbook.org/ns/docbook"
+    xmlns="http://docbook.org/ns/docbook">
+    <title>Utilisation du type de portlet Decorator</title>
+    <para>
+      <mediaobject>
+        <imageobject>
+          <imagedata fileref="/example/images/Decorator.png"/>
+        </imageobject>
+        <textobject><phrase>type de portlet Decorator</phrase></textobject>
+      </mediaobject>
+    </para>
+    <para><link xl:href="showHelp?helpTopic=HELP_portlettypes">retour au menu "Types de portlet"</link></para>
+    <para>
+      Contient juste, le decorator qui permet la gestion des traductions dans le composant où la portlet sera utilisée (chargement des uiLabel). Ce decorator est utilisé par les portlets type Screenlet et ScreenletList.
+    </para>
+    <para>
+      L'usage de ce type de portlet permet de faire une portlet à partir d'un screen, sans avoir à se soucier du chargement des uiLabels, 
+      il est conseillé de l'utiliser pour être homogène en terme d'usage des uiLabel pour toutes les portlets.</para>
+    <para> Il sera utilisé chaque fois que l'on a besoin d'un screen spécifique</para>
+
+    <section>
+      <title>Champs optionnels de l'entité PortalPortlet utilisés</title>
+      <itemizedlist>
+        <listitem><para>uiLabelLocation</para></listitem>
+        <listitem><para>useScreen, mettre Y</para></listitem>
+        <listitem><para>screenName</para></listitem>
+        <listitem><para>screenLocation</para></listitem>
+      </itemizedlist>
+      <para>Voir <link xl:href="showHelp?helpTopic=portletfields">la liste complète des champs d'une portlet</link></para>
+    </section>
+</section>

Propchange: ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_Decorator_FR.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_Decorator_FR.xml
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_Decorator_FR.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Modified: ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE.xml?rev=1346330&r1=1346329&r2=1346330&view=diff
==============================================================================
--- ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE.xml (original)
+++ ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE.xml Tue Jun  5 10:17:15 2012
@@ -15,7 +15,7 @@ License.
 -->
 <section xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     version="5.0" xmlns:xl="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude"
-    xsi:schemaLocation="http://docbook.org/ns/docbook ../../../../applications/content/dtd/docbook.xsd"
+    xsi:schemaLocation="http://docbook.org/ns/docbook"
     xmlns="http://docbook.org/ns/docbook">
   <title>The Example Main Help page.</title>
   <para>
@@ -27,7 +27,7 @@ License.
 
   <section>
     <title>Help file organization</title>
-    <para>Help is managed by using content component functionality.</para>
+    <para>Help is managed by using content component functionality. For more detail, look at the example help sub tree.</para>
     <para>Help can be for :
       <itemizedlist>
         <listitem><para>one component or sub-component, access is possible by navigation in help index tree and select it, contentId is associated to
@@ -48,6 +48,7 @@ License.
       main shortcut :
       <itemizedlist>
         <listitem><para>How is organize <link xl:href="showHelp?helpTopic=DOCUMENTATION_SYSTEM">The Apache OFBiz documentation system</link></para></listitem>
+        <listitem><para><link xl:href="showHelp?helpTopic=EXAMPLE_devel">Best practices for development</link></para></listitem>
         <listitem><para><link xl:href="showHelp?helpTopic=EXAMPLE_docbook">What it's possible to do in help file</link></para></listitem>
       </itemizedlist>
     </para>

Modified: ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_FR.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_FR.xml?rev=1346330&r1=1346329&r2=1346330&view=diff
==============================================================================
--- ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_FR.xml (original)
+++ ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_FR.xml Tue Jun  5 10:17:15 2012
@@ -15,28 +15,30 @@ License.
 -->
 <section xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     version="5.0" xmlns:xl="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude"
-    xsi:schemaLocation="http://docbook.org/ns/docbook ../../../../applications/content/dtd/docbook.xsd"
+    xsi:schemaLocation="http://docbook.org/ns/docbook"
     xmlns="http://docbook.org/ns/docbook">
     <title>Page principale de l'aide du composant Exemple</title>
     <para>
       L'application exemple vous permet de découvrir les possibilités pour créer une application contenant, entre autres, des
       boîtes de recherche, des listes et beaucoup d'autres choses.
     </para>
-    <para>
-      Cette application peut être utilisée pour avoir un aperçu des bonnes pratiques d'interface utilisateur pour OFBiz.</para>
-    <para>
-      Par exemple, si vous voulez voir comment vous pouvez ajouter des textes d'aide, vous pouvez regarder les fichiers contenus dans le
-      répertoire data/heldata dans le composant Example et dans le fichier contenu dans data/ExempleHelpData.xml au niveau de l'application
-      content
-    </para>
+    <para>Cette application peut être utilisée pour avoir un aperçu des bonnes pratiques de developpement d'interface utilisateur pour OFBiz.</para>
+    <para>Lisez l'aide de chaque écran, celle-ci vous expliquera quelle partie du développement est utilisé dans ce cas. </para>
+    <para>Par exemple, si vous voulez voir comment vous devez faire pour ajouter un peu d'aide, vous pouvez regarder les fichiers d'aide dans le répertoire data/helpdata
+     du composant example et dans le fichier data/ExempleHelpData.xml dans le composant contenu. </para>
+
+    <section>
+      <title>Organisation des fichiers d'aide</title>
+      <para>L'aide est géré dans le composant contenu, pour plus de détail voir les sous points de l'index de l'aide au niveau de exemple.</para>
+    </section>
 
     <section>
-      <title>Sous-menus dans l'aide</title>
+      <title>Sous-menus de l'aide</title>
       <para>
-        Pour avoir la liste complète, cliquez sur le bouton "Index" et regardez l'arborescence de l'aide. Voici aussi une liste
-        de raccourcis :
+        Pour avoir la liste complète, cliquez sur le bouton "Index" et regardez l'arborescence de l'aide. Voici aussi une liste de raccourcis :
         <itemizedlist>
           <listitem><para>Comment fonctionne <link xl:href="showHelp?helpTopic=DOCUMENTATION_SYSTEM">le système de documentation d'Apache OFBiz</link></para></listitem>
+          <listitem><para><link xl:href="showHelp?helpTopic=EXAMPLE_devel">Les bonnes pratiques de développement avec les portlets</link></para></listitem>
           <listitem><para><link xl:href="showHelp?helpTopic=EXAMPLE_docbook">Ce qu'il est possible de faire dans les fichiers d'aide</link></para></listitem>
         </itemizedlist>
       </para>

Added: ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_devel.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_devel.xml?rev=1346330&view=auto
==============================================================================
--- ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_devel.xml (added)
+++ ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_devel.xml Tue Jun  5 10:17:15 2012
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to you under the Apache License, Version
+2.0 (the "License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+http://www.apache.org/licenses/LICENSE-2.0 Unless required by
+applicable law or agreed to in writing, software distributed under the
+License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, either express or implied. See the License for
+the specific language governing permissions and limitations under the
+License.
+-->
+<section xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    version="5.0" xmlns:xl="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude"
+    xsi:schemaLocation="http://docbook.org/ns/docbook"
+    xmlns="http://docbook.org/ns/docbook">
+    <title>Practices of development</title>
+
+    <para>The use of portal pages and of portlets to define the user interfaces is heavily recommended.</para>
+
+    <para>A portal page contains generic or specific portlets, which configurations can completely be changed: title, page arrangement, menus, scripts, ...</para>
+
+    <para>A group of templates has been defined in order to meet the most standard needs during the development of the interfaces.</para>
+
+    <para>Thus, all you have to do, for most of cases, is to define a "Form" at the right place, in the right file. Then, the portlet is straight usable.</para>
+
+    <para>This part aims to describe the tools and recommendations that you have in order to create standard interfaces which configurations can be changed as soon as possible.</para>
+
+    <section>
+      <title>Creation of portal pages and portlets</title>
+
+      <para>First, you have to identify the type of portlet.</para>
+
+      <para>Go, in the index, to "Use of Portlets" - "Types of portlets", or straight to <link>Types of portlets</link></para>
+
+      <para>Once you have chosen the template, you have to configure the portlet according to the needs of your screen.
+        <itemizedlist>
+          <listitem><para>configuration of the portlet's title</para> </listitem>
+          <listitem><para>configuration of the screen or of the "Form" that is used</para></listitem>
+          <listitem><para>use of a script before the loading of the portlet (recovery of a list, data test, various actions)</para> </listitem>
+          <listitem><para>use of a menu (at the top of the title bar of the screenlet)</para> </listitem>
+          <listitem><para>use of a test on a variable in order to, or not to, display the contents of the portlet</para></listitem>
+          <listitem><para>...</para></listitem>
+        </itemizedlist>
+      </para>
+      <para>&amp;nbsp;</para>
+      <para>Most part of the elements which configurations can be changed, on a portlet, have default values that avoid having to define them during the creation of the portlets.</para>
+
+      <para>Thus, when you look at the file ExamplePortletData.xml that defines the portlets, very few fields (mainly the ones regarding the portlet itself) are filled in.
+        <itemizedlist>
+          <listitem><para>configuration of the portlet's title</para> </listitem>
+          <listitem><para>configuration of the screen or of the "Form" that is used</para></listitem>
+          <listitem><para>use of a script before the loading of the portlet (recovery of a list, data test, various actions)</para> </listitem>
+          <listitem><para>use of a menu (at the top of the title bar of the screenlet)</para> </listitem>
+          <listitem><para>use of a test on a variable in order to, or not to, display the contents of the portlet</para></listitem>
+          <listitem><para>...</para></listitem>
+        </itemizedlist>
+      </para>
+      <para>And here are some extracts:
+        <programlisting>
+          &amp;lt;PortalPortlet portalPortletId="FindExample"
+             portletName="Find Example (with portletType and showPortlet)" description="portlet to define search criteria for Example list"
+             portletTypeId="Screenlet"  component="example" subComponent="Example" helpName="HELP_Screenlet"/>
+          &amp;lt;PortalPortlet portalPortletId="ListExample"
+             portletName="List Examples (with portletType and showPortlet)" description="portlet to list example depending on search criteria, this portlet is call by FindExample"
+             portletTypeId="ScreenletList" component="example" subComponent="Example" helpName="HELP_ScreenletList"/>
+        </programlisting>
+      </para>
+    </section>
+
+    <section>
+      <title>Naming rules</title>
+      <para>In order to make the comprehension of the names of the portal pages and of the portlets easier, naming conventions have been established:
+        <itemizedlist>
+          <listitem><para>Portal page:
+            <itemizedlist>
+              <listitem><para>xxxxSummary: it contains a group of portlets to display and/or to manage an object and its associated entities (pages like Actor Profile or Project Summary, for example). <link xl:href="showHelp?helpTopic=HELP_PPAGE_RECAP">For more details</link></para></listitem>
+              <listitem><para>xxxxMgmt: it enables to do a search, to get a list, and, after the selection of an element, to display/manage associated entities by associated entities</para></listitem>
+              <listitem><para>sub...: it is a page used as part of a screen</para></listitem>
+            </itemizedlist></para>
+          </listitem>
+          <listitem><para>Portlet:
+            <itemizedlist>
+              <listitem><para>Findxxxs: search form</para></listitem>
+              <listitem><para>Listxxxs: portlet that lists the record of the entity, often as result of the portlet xxxFind</para></listitem>
+              <listitem><para>xxxRecap: small or medium portlet, only on display, meant to be in a column (25% or 33%) in order to remind the object on which you are working</para></listitem>
+              <listitem><para>xxxDetailsMenu: same contents as in xxxSummary, with a menu enabling to display the details of associated entities somewhere else on the screen</para></listitem>
+              <listitem><para>xxxDetail: empty portlet that enables to define the slot (the container) where the details of associated entities will be displayed (see xxxMenuDetail)</para></listitem>
+              <listitem><para>xxxOverview: medium or big portlet, only on display, meant to be in the main column (50% and more) which presents a general view of the object, if needed from elements of associated entities (synthesis of a Project, Command)</para></listitem>
+              <listitem><para>xxxCreate: creation portlet. Can contain fields linked to associated entities in order to enable to create the object and the associated entities in only one operation. There can be a similarity of form with xxxOverview</para></listitem>
+              <listitem><para>xxxUpdate: update portlet. Only contains fields linked to the object. The update of the associated entities is done via the suitable portlets</para></listitem>
+              <listitem><para>xxxyyyys or xxxyyyysList: xxx is the name of the major entity (the object); yyyy is the name of the associated entity; the s shows that it is a list</para></listitem>
+            </itemizedlist></para>
+          </listitem>
+        </itemizedlist>
+      </para>
+    </section>
+
+    <section>
+      <title>Migration of a standard screen</title>
+      <para>For the migration of an ofbiz standard screen in a portlet, the projective is to use at the maximum:
+        <orderedlist>
+          <listitem><para>the elements of the ofbiz standard</para></listitem>
+          <listitem><para>the available tools, thanks to the addon portletWidget.</para></listitem>
+        </orderedlist>
+      </para>
+    </section>
+
+    <section>
+      <title>Rules to follow:</title>
+      <para>
+        
+        <orderedlist>
+          <listitem><para>If you have any doubt, watch how the portlets' parameters are defined in Example (/ofbiz/framework/data/ExamplePortletData/xml). This corresponds to good practices (a good practice that is not in Example is not a good practice)</para></listitem>
+          <listitem><para>except in very special situations, files' name and location (form, menu, script, screen) should use default values.</para></listitem>
+          <listitem><para>except in very special situations, a portlet should have a portletType (Screenlet, ScreenletList, Decorator or Empty)</para></listitem>
+          <listitem><para>field component, sub-component and webapp must be correclty filled in, webap can be empty</para></listitem>
+          <listitem><para>choose the correct component for the portlet. A portlet coming from a form in projectmgr but which uses workeffort items without projectmgr personalisation
+            should be defined in WorkEffort with component = "WorkEffort" (ex: WorkEffortNotes). It's possible to override a uiLabel in a component, so a specifics title is not a correct reason.
+            If a form drop-down is defined with constraints (parentType = xxx, xxxType= , ...), it's easly resolved by defining and using a portlet attribute.</para></listitem>
+          <listitem><para>except in very special situations, the screenlet title should use an existing label. You must search twice before creating a new one, and if you create it, you must put it in the right component</para></listitem>
+          <listitem><para>if possible, use only one form. If possible, extend the standard (which is used by screen) Form, and override only link fields (edit, remove) by show-portlets, and add an on-event-update-area if a submit button exists</para></listitem>
+          <listitem><para>update and create targets must have to use a return json, so as to have a display of error (or success) messages. </para></listitem>
+          <listitem><para>edition actions (in the editArea area) should be uri, and not portlets (except if EditXXX is used directly as a portlet in an other PortalPage); to be clearer, put screen and form in same place as the portlets that use them.</para></listitem>
+          <listitem><para>currently, for edit actions (or create in sub-list), a "cancel" button or a "refresh" button should exist.</para></listitem>
+          <listitem><para>the json uri (and the edit uri) should be put in portlet-controllers, with ofbiz best practice presentation (request without service call in only one line, ...)</para></listitem>
+          <listitem><para>if possible, use a portlet (mini-lang) script rather than a screen. If the script is a copy from an action screen section, add a comment; Use a script only if it is used in more than one portlet or screen or if the result is used in the menu or title of the screenlet. Otherwise it's better to put it in the action section of the Form.</para></listitem>
+          <listitem><para>any part of the spread code (form, screen, menu, script, java) must own a comment to indicate the origin of the copy and the justification of the copy (think about the one who will need to delete the copy)</para></listitem>
+          <listitem><para>every link to another page (in other components, for example) should be moved to a showPortalPage with portalPageId as a portlet attribute, most of the time it should be xxxxRecap; Of course the editForm should define correctly.</para></listitem>
+          <listitem><para>in every portlet editForm, field's names and tooltips should be very explicit; all attributes should have a default value (portlet should be usable without adding any attribute)</para></listitem>
+          <listitem><para>most of the time, you should add 2 portal pages (xxxMgmt and xxxRecap). Update it each time you add a new portlet</para></listitem>
+          <listitem><para>when it's possible, use icons, and not text for menu. To do that, you should :
+             <itemizedlist>
+              <listitem><para>search the correct icon in the "Icon list" Page, and therefore find the icon's logical name</para></listitem>
+              <listitem><para>give the image-location by using the iconsPurpose map</para></listitem>
+              <listitem><para>if the icon default tooltips (you can see it in the "Icon List" page) is clear in your case, use it via the IconsTooltips_ labels, otherwise use a specific image-title uiLabel.</para></listitem>
+             </itemizedlist></para></listitem>
+        </orderedlist>
+      </para>
+    </section>
+
+    <section>
+      <title>more help</title>
+      <para>
+        For further information, (Portal page type, portlet type), click on the "index" button and go to Example / Development Tree.
+      </para>
+    </section>
+</section>

Propchange: ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_devel.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_devel.xml
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_devel.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_devel_FR.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_devel_FR.xml?rev=1346330&view=auto
==============================================================================
--- ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_devel_FR.xml (added)
+++ ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_devel_FR.xml Tue Jun  5 10:17:15 2012
@@ -0,0 +1,139 @@
+<section xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    version="5.0" xmlns:xl="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude"
+    xsi:schemaLocation="http://docbook.org/ns/docbook"
+    xmlns="http://docbook.org/ns/docbook">
+    <title>Pratiques de développement</title>
+    <para>L'usage des pages portails et des portlets pour définir les interfaces utilisateurs est grandement recommandé.</para>
+    <para>Une page portail contient des portelts génériques ou spécifiques, et ces portlets sont entièrement configurables : 
+        titre, disposition sur la page, menus, script,...
+    </para>
+    <para>Un ensemble de types de portlet a été défini pour répondre aux besoins les plus classiques lors du développement des interfaces.</para>
+    <para>Ainsi dans la plupart des cas, il suffit de définir un "Form" au bon endroit, dans le bon fichier, et la portlet est directement utilisable.</para>
+    <para> Cette partie a pour but de décrire les outils et les recommandations à disposition pour réaliser des interfaces standards et configurables dans les meilleurs délais.</para>
+
+    <section>
+      <title>Création de page portail et portlets</title>
+
+      <para>Il faut d'abord identifier le type de portlet.</para>
+      <para>   Voir dans l'index Utilisation des portlets - Types de portlets ou directement 
+       <link xl:href="showHelp?helpTopic=HELP_portlettypes">Types de portlets</link></para>
+      <para>
+        Une fois son type sélectionné, il va falloir configurer la portlet en fonction des besoins de votre écran :
+        <itemizedlist>
+          <listitem><para>configuration du titre de la portlet</para> </listitem>
+          <listitem><para>configuration du screen ou du form utilisé</para></listitem>
+          <listitem><para>utilisation d'un script avant le chargement de la portlet (récupération d'une liste, test de données, actions diverses)</para> </listitem>
+          <listitem><para>utilisation d'un menu (en haut dans la barre de titre du screenlet)</para> </listitem>
+          <listitem><para>utilisation d'un test sur une variable pour afficher ou non le contenu de la portlet</para></listitem>
+          <listitem><para>...</para></listitem>
+        </itemizedlist>
+      </para>
+      <para>&amp;nbsp;</para>
+      <para>La majorité des éléments configurables sur une portlet ont des valeurs par défaut qui évitent d'avoir à les définir lors de la création des portlets.</para>
+      <para>Ainsi, lorsqu'on regarde le fichier de définition des portlets ExamplePortletData.xml, très peu de champs sont renseignés, principalement ceux concernant la portlet elle-même.
+        <itemizedlist>
+          <listitem><para>configuration du titre de la portlet</para> </listitem>
+          <listitem><para>configuration du screen ou du form utilisé</para></listitem>
+          <listitem><para>utilisation d'un script avant le chargement de la portlet (récupération d'une liste, test de données, actions diverses)</para> </listitem>
+          <listitem><para>utilisation d'un menu (en haut dans la barre de titre du screenlet)</para> </listitem>
+          <listitem><para>utilisation d'un test sur une variable pour afficher ou non le contenu de la portlet</para></listitem>
+          <listitem><para>...</para></listitem>
+        </itemizedlist>
+      </para>
+      <para>Et voici des extraits :
+        <programlisting>
+          &amp;lt;PortalPortlet portalPortletId="FindExample"
+             portletName="Find Example (with portletType and showPortlet)" description="portlet to define search criteria for Example list"
+             portletTypeId="Screenlet"  component="example" subComponent="Example" helpName="HELP_Screenlet"/>
+          &amp;lt;PortalPortlet portalPortletId="ListExample"
+             portletName="List Examples (with portletType and showPortlet)" description="portlet to list example depending on search criteria, this portlet is call by FindExample"
+             portletTypeId="ScreenletList" component="example" subComponent="Example" helpName="HELP_ScreenletList"/>
+        </programlisting>
+      </para>
+    </section>
+
+    <section>
+      <title>Règle de nommage</title>
+      <para>
+        Afin de faciliter la compréhension des noms de page portail et noms de portlet, des conventions de nommage ont été établies :
+        <itemizedlist>
+          <listitem><para>Page portail :
+            <itemizedlist>
+              <listitem><para>xxxxRecap : elle contient un ensemble de portlets pour visualiser et/ou gérer un objet et ses entités associées 
+                (les pages profil d'acteur ou Résumé Projet sont de ce type), plus de <link xl:href="showHelp?helpTopic=HELP_PPAGE_RECAP">détails</link></para></listitem>
+              <listitem><para>xxxxMgmt : elle permet de faire une recherche, d'obtenir une liste puis aprés sélection d'un élément de visualiser/gérer entités associées par entités associées</para></listitem>
+              <listitem><para>sub... : c'est une page qui est utilisée en tant que partie d'écran</para></listitem>
+            </itemizedlist></para>
+          </listitem>
+          <listitem><para>Portlet :
+            <itemizedlist>
+              <listitem><para>Findxxxs : formulaire de recherche</para></listitem>
+              <listitem><para>Listxxxs : portlet listant l'enregistrement de l'entité, souvent en tant que résultat de la portlet xxxFind</para></listitem>
+              <listitem><para>xxxSummary : portlet de petite ou moyenne taille uniquement en affichage, destinée à être dans une colonne (25% ou 33%) pour rappeler l'objet sur lequel on travaille</para></listitem>
+              <listitem><para>xxxDetailsMenu : contenu identique à xxxSummary avec un menu permettant d'afficher dans un autre emplacement de l'écran le détail d'entités associés</para></listitem>
+              <listitem><para>xxxDetail : portlet vide permettant de définir l'emplacement (le container) où s'affiche le détail d'entités associés (cf xxxMenuDetail)</para></listitem>
+              <listitem><para>xxxOverview : portlet de moyenne à grande taille, uniquement en affichage, destinée à être dans la colonne principale (50% et plus) qui présente une vue générale de l'objet, au besoin à partir d'éléments d'entités associées (synthèse Projet, Commande)</para></listitem>
+              <listitem><para>xxxCreate : portlet de création, peut contenir des champs liés à des entités associées afin de permettre de créer l'objet et les entités associées en une seule opération. Il peut y avoir similitude de formulaire HTML (form) avec xxxOverview</para></listitem>
+              <listitem><para>xxxUpdate : portlet de mise à jour, ne contient que des champs liés à l'objet, la mise à jour des entités associés se fait via les portlets adéquates</para></listitem>
+              <listitem><para>xxxyyyys ou xxxyyyysList : xxx c'est le nom de l'entité majeure (l'objet) yyyy le nom de l'entité associée, le s pour signaler que c'est une liste</para></listitem>
+            </itemizedlist></para>
+          </listitem>
+        </itemizedlist>
+      </para>
+    </section>
+
+    <section>
+      <title>Migration d'écran standard</title>
+      <para>
+        Pour la migration d'écran standard ofbiz en portlet, l'objectif est d'utiliser au maximum :
+        <orderedlist>
+          <listitem><para>les éléments du standard ofbiz</para></listitem>
+          <listitem><para>Des portlet avec le minimum de champ définis donc avec l'usage du maximum de champ avec leur valeur par défaut.</para></listitem>
+        </orderedlist>
+      </para>
+    </section>
+
+    <section>
+      <title>Règles à suivre :</title>
+      <para>
+        
+        <orderedlist>
+          <listitem><para>en cas de doute, regarder comment sont paramétrés les portlet dans l'exemple (/ofbiz/specialpurpose/example/data/ExamplePortletData.xml), 
+                          cela correspond aux bonnes pratiques (une bonne pratique qui n'est pas dans exemple n'est pas une bonne pratique)</para></listitem>
+          <listitem><para>sauf cas très particulier, le nom et la location des fichiers (form, menu, script, screen) doivent utiliser les valeurs par défaut</para></listitem>
+          <listitem><para>sauf cas très particulier, une portlet doit avoir un type (Screenlet, ScreenletList, Decorator ou Empty)</para></listitem>
+          <listitem><para>les champs composant, sous-composant et webapp doivent être correctement renseignés (webapp vide ou non)</para></listitem>
+          <listitem><para>mettre dans le bon composant la portlet, une portlet issue d'une form de projectmgr est un élément de WorkEffort s'il n'y a pas de spécificité project. 
+                          Les uiLabels sont surchargeables par composant donc un titre spécifique n'est pas une bonne raison; 
+                          un ou des drop-downs avec des contraintes (parentType = xxx, xxxType= , ...) peuvent facilement être rendus paramétrables.</para></listitem>
+
+          <listitem><para>sauf cas très particulier, le titre de la screenlet doit utiliser un label existant, bien faire une recherche avant d'en créer un, et si création, le mettre dans le bon composant</para></listitem>
+          <listitem><para>dans la mesure du possible, utiliser uniquement une form. Si possible, celle-ci hérite du formulaire HTML (form) standard, les champs de type lien (edit, remove) étant surchargés pour être des show-portlets, et un on-event-update-area est ajouté s'il y a un bouton submit</para></listitem>
+          <listitem><para>les target pour l'update ou le create doivent utiliser un retour json, afin d'avoir un affichage des messages d'erreur ou de retour correct. </para></listitem>
+          <listitem><para>les actions d'édition (dans la zone d'editArea) sont la plupart de temp des uri, pas des portlets (sauf usage en tant que tel par ailleurs); par souci d'homogénéité, il faut mettre screen, form dans les mêmes locations que les portlet les utilisant. De même, si possible faire un héritage de la form standard.</para></listitem>
+          <listitem><para> pour l'instant, il n'y a pas consensus concernant le lieu du bouton "annuler" mais comme qui peut le plus, peut le moins, il faut mettre un bouton annuler dans les formulaires d'édition et un bouton dans le menu (en dernier à droite) qui fait un refresh de la portlet</para></listitem>
+          <listitem><para> les uri json (et les uri d'action d'édition) sont à mettre dans le portlet-controller en respectant les bonnes pratiques OFBiz (request sans appel de service sur une ligne ...)</para></listitem>
+          <listitem><para> dans la mesure du possible, utiliser un script (mini-lang) plutôt qu'un screen, si le script est une copie du pavé action du screen, mettre un commentaire ; le script n'a d'intérêt que s'il est utilisé plusieurs fois ou si le résultat est utilisé dans l'en-tête du screenlet (menu ou titre ), sinon autant le mettre dans le pavé action de la form.</para></listitem>
+          <listitem><para>toute partie de code dupliqué (form, screen, menu, script, java) doit posséder un commentaire pour signaler l'origine de la copie et la justification de la copie (pensez à celui qui voudra supprimer la duplication)</para></listitem>
+          <listitem><para>les addons nommé portlet-nomDunComposantStdOfbiz ont pour objectif d'être reversé à OFBiz, ils ne doivent donc contenir que des éléments standards</para></listitem>
+          <listitem><para>portletWidget a pour objectif d'être reversé à OFBiz, pas genericPortlet ; il faut donc dans les addons portlet-nomDunComposantStdOfbiz migrer les portlets qui n'utiliseraient pas portletWidget</para></listitem>
+          <listitem><para>pour tous les liens hyperlink vers d'autres pages (par exemple d'un autre composant), si possible migrer la target vers un showPortalPage et mettre en paramétrage de la nom de la portalPage, normalement ça doit être une page de type xxxxRecap. Bien entendu, paramétrer ou faire la form d'editAttribue.</para></listitem>
+          <listitem><para>pour toutes les form d'editAttribue de portlet, le nom du champ ou son titre doivent être explicites, et si possible avoir un tooltips ; tout paramètre de portlet doit avoir une valeur par défaut (la portlet doit être utilisable sans avoir besoin de saisir une valeur)</para></listitem>
+          <listitem><para>Il faut au minimum disposer des deux pages portails classiques ( xxxMgmt et xxxRecap), les mettre à jour à chaque ajout de portlet</para></listitem>
+          <listitem><para>Dans la mesure du possible, il faut mettre des icônes à la place de libellé. Pour cela, il faut :
+             <itemizedlist>
+              <listitem><para>chercher la bonne icône dans la page "Liste des icônes", et donc trouver son nom logique</para></listitem>
+              <listitem><para>exprimer l'image-location en utilisant la map iconsPurpose </para></listitem>
+              <listitem><para>si le Tooltips par défaut (celui visible dans la page Liste des portlet) est suffisamment clair pour votre usage, utilisez-le via les labels  IconsTooltips_, sinon personnalisez correctement l'image-title en rédigeant un nouveau Tooltips mieux adapté</para></listitem>
+             </itemizedlist></para></listitem>
+        </orderedlist>
+      </para>
+    </section>
+
+    <section>
+      <title>Suite de l'aide</title>
+      <para>
+        Pour avoir la suite (les types de page portail, les types de portlet), cliquez sur le bouton "Index" et regardez l'arborescence de la rubrique Exemple / Développement.
+      </para>
+    </section>
+</section>

Propchange: ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_devel_FR.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_devel_FR.xml
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/branches/20120329_portletWidget/specialpurpose/example/data/helpdata/HELP_EXAMPLE_devel_FR.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml