svn commit: r832294 - in /ofbiz/trunk: applications/marketing/config/ applications/marketing/webapp/sfa/WEB-INF/ applications/marketing/widget/sfa/ applications/marketing/widget/sfa/forms/ applications/party/entitydef/ applications/party/servicedef/ ap...

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r832294 - in /ofbiz/trunk: applications/marketing/config/ applications/marketing/webapp/sfa/WEB-INF/ applications/marketing/widget/sfa/ applications/marketing/widget/sfa/forms/ applications/party/entitydef/ applications/party/servicedef/ ap...

hansbak-2
Author: hansbak
Date: Tue Nov  3 03:59:01 2009
New Revision: 832294

URL: http://svn.apache.org/viewvc?rev=832294&view=rev
Log:
Jira issue: https://issues.apache.org/jira/browse/OFBIZ-3128
1. New SFA Account/contact/lead find/list screens replacing ftl/partysearch with form/performfind.
2. SFA now compatible with the party manager with the 'all' option still have the previous 'my' option
3. added new widget property: 'text find' to set the default here and not in the xsl
4. added 'container' as a field to the form in order to insert forms dynamically with an ajax request
5. fix bug for using radio field.
6. Implemented comments on this jira issue including using the find decorator

Contribution by Chattree, an employee of Antwebsystems Co.Ltd.


Modified:
    ofbiz/trunk/applications/marketing/config/MarketingUiLabels.xml
    ofbiz/trunk/applications/marketing/webapp/sfa/WEB-INF/controller.xml
    ofbiz/trunk/applications/marketing/widget/sfa/AccountScreens.xml
    ofbiz/trunk/applications/marketing/widget/sfa/ContactScreens.xml
    ofbiz/trunk/applications/marketing/widget/sfa/LeadScreens.xml
    ofbiz/trunk/applications/marketing/widget/sfa/SfaMenus.xml
    ofbiz/trunk/applications/marketing/widget/sfa/forms/AccountForms.xml
    ofbiz/trunk/applications/marketing/widget/sfa/forms/ContactForms.xml
    ofbiz/trunk/applications/marketing/widget/sfa/forms/LeadForms.xml
    ofbiz/trunk/applications/party/entitydef/entitymodel.xml
    ofbiz/trunk/applications/party/servicedef/services.xml
    ofbiz/trunk/applications/party/webapp/partymgr/WEB-INF/controller.xml
    ofbiz/trunk/framework/widget/config/widget.properties
    ofbiz/trunk/framework/widget/dtd/widget-form.xsd
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/fo/FoFormRenderer.java
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/FormStringRenderer.java
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/MacroFormRenderer.java
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/text/TextFormRenderer.java
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/xml/XmlFormRenderer.java
    ofbiz/trunk/framework/widget/templates/htmlFormMacroLibrary.ftl

Modified: ofbiz/trunk/applications/marketing/config/MarketingUiLabels.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/marketing/config/MarketingUiLabels.xml?rev=832294&r1=832293&r2=832294&view=diff
==============================================================================
--- ofbiz/trunk/applications/marketing/config/MarketingUiLabels.xml (original)
+++ ofbiz/trunk/applications/marketing/config/MarketingUiLabels.xml Tue Nov  3 03:59:01 2009
@@ -510,6 +510,15 @@
         <value xml:lang="fr">Rechercher les comptes de ventes</value>
         <value xml:lang="it">Ricerca utenze SFA</value>
         <value xml:lang="zh">查找销售管理账户</value>
+        <value xml:lang="th">ค้นหา Account</value>
+    </property>
+    <property key="MarketingFindContacts">
+        <value xml:lang="en">Find SFA Contacts</value>
+        <value xml:lang="th">ค้นหา Contact</value>
+    </property>
+    <property key="MarketingFindLeads">
+        <value xml:lang="en">Find SFA Leads</value>
+        <value xml:lang="th">ค้นหา Lead</value>
     </property>
     <property key="MarketingMainPage">
         <value xml:lang="de">Haupt</value>
@@ -1701,6 +1710,10 @@
         <value xml:lang="th">วิธีการติดต่อ</value>
         <value xml:lang="zh">优先使用的联系方式</value>
     </property>
+    <property key="SfaAssignToMe">
+        <value xml:lang="en">Assign To Me</value>
+        <value xml:lang="th">กำหนดให้ฉัน</value>
+    </property>
     <property key="SfaAcccounts">
         <value xml:lang="en">Accounts</value>
         <value xml:lang="fr">Comptes</value>
@@ -1715,6 +1728,14 @@
         <value xml:lang="it">Nome utente</value>
         <value xml:lang="zh">账户名称</value>
     </property>
+    <property key="SfaAllAccounts">
+        <value xml:lang="en">All Accounts</value>
+        <value xml:lang="th">Account ทั้งหมด</value>
+    </property>
+    <property key="SfaMyAccounts">
+        <value xml:lang="en">My Accounts</value>
+        <value xml:lang="th">Account ของฉัน</value>
+    </property>
     <property key="SfaAddSalesForecastDetail">
         <value xml:lang="en">Add Sales Forcast Detail</value>
         <value xml:lang="fr">Ajouter le détail de la prévision de ventes</value>
@@ -1793,6 +1814,14 @@
         <value xml:lang="it">Contatti</value>
         <value xml:lang="zh">联系</value>
     </property>
+    <property key="SfaAllContacts">
+        <value xml:lang="en">All Contacts</value>
+        <value xml:lang="th">Contact ทั้งหมด</value>
+    </property>
+    <property key="SfaMyContacts">
+        <value xml:lang="en">My Contacts</value>
+        <value xml:lang="th">Contact ของฉัน</value>
+    </property>
     <property key="SfaConvertLead">
         <value xml:lang="en">Convert Lead</value>
         <value xml:lang="es">Convertir lead</value>
@@ -1936,6 +1965,14 @@
         <value xml:lang="it">Leads</value>
         <value xml:lang="zh">线索</value>
     </property>
+    <property key="SfaAllLeads">
+        <value xml:lang="en">All Leads</value>
+        <value xml:lang="th">Lead ทั้งหมด</value>
+    </property>
+    <property key="SfaMyLeads">
+        <value xml:lang="en">My Leads</value>
+        <value xml:lang="th">Lead ของฉัน</value>
+    </property>
     <property key="SfaListSalesForecastDetail">
         <value xml:lang="en">List Sales Forecast Details</value>
         <value xml:lang="fr">Liste des détails de prévision de ventes</value>

Modified: ofbiz/trunk/applications/marketing/webapp/sfa/WEB-INF/controller.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/marketing/webapp/sfa/WEB-INF/controller.xml?rev=832294&r1=832293&r2=832294&view=diff
==============================================================================
--- ofbiz/trunk/applications/marketing/webapp/sfa/WEB-INF/controller.xml (original)
+++ ofbiz/trunk/applications/marketing/webapp/sfa/WEB-INF/controller.xml Tue Nov  3 03:59:01 2009
@@ -59,7 +59,7 @@
     <!-- Account Entry Requests -->
     <request-map uri="FindAccounts">
         <security https="true" auth="true"/>
-        <response name="success" type="view" value="FindAccounts"/>
+        <response name="success" type="view" value="FindAccounts" save-home-view="true"/>
     </request-map>
     <request-map uri="NewAccount">
         <security https="true" auth="true"/>
@@ -75,11 +75,15 @@
         <security https="true" auth="true"/>
         <response name="success" type="view" value="AssignAccountToMe"/>
     </request-map>
+    <request-map uri="ContactMechTypeOnly">
+        <security https="true" auth="true"/>
+        <response name="success" type="view" value="ContactMechTypeOnly"/>
+    </request-map>
 
     <!-- Lead Requests -->
     <request-map uri="FindLeads">
         <security https="true" auth="true"/>
-        <response name="success" type="view" value="FindLeads"/>
+        <response name="success" type="view" value="FindLeads" save-home-view="true"/>
     </request-map>
     <request-map uri="NewLead">
         <security https="true" auth="true"/>
@@ -144,7 +148,7 @@
     <!-- Contact Requests -->
     <request-map uri="FindContacts">
         <security https="true" auth="true"/>
-        <response name="success" type="view" value="FindContacts"/>
+        <response name="success" type="view" value="FindContacts" save-home-view="true"/>
     </request-map>
     <request-map uri="NewContact">
         <security https="true" auth="true"/>
@@ -252,6 +256,7 @@
     <view-map name="FindAccounts" type="screen" page="component://marketing/widget/sfa/AccountScreens.xml#FindAccounts"/>
     <view-map name="NewAccount" type="screen" page="component://marketing/widget/sfa/AccountScreens.xml#NewAccount"/>
     <view-map name="AssignAccountToMe" type="screen" page="component://marketing/widget/sfa/AccountScreens.xml#AssignAccountToMe"/>
+    <view-map name="ContactMechTypeOnly" type="screen" page="component://marketing/widget/sfa/AccountScreens.xml#ContactMechTypeOnly"/>
 
     <view-map name="FindLeads" type="screen" page="component://marketing/widget/sfa/LeadScreens.xml#FindLeads"/>
     <view-map name="NewLead" type="screen" page="component://marketing/widget/sfa/LeadScreens.xml#NewLead"/>

Modified: ofbiz/trunk/applications/marketing/widget/sfa/AccountScreens.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/marketing/widget/sfa/AccountScreens.xml?rev=832294&r1=832293&r2=832294&view=diff
==============================================================================
--- ofbiz/trunk/applications/marketing/widget/sfa/AccountScreens.xml (original)
+++ ofbiz/trunk/applications/marketing/widget/sfa/AccountScreens.xml Tue Nov  3 03:59:01 2009
@@ -24,7 +24,6 @@
         <section>
             <actions>
                 <set field="titleProperty" value="MarketingFindAccounts"/>
-                <set field="partyRelationshipTypeId" value="ACCOUNT"/>
                 <set field="currentUrl" value="FindAccounts"/>
                 <set field="headerItem" value="Accounts"/>
             </actions>
@@ -32,19 +31,38 @@
                 <decorator-screen name="main-decorator" location="${parameters.mainDecoratorLocation}">
                     <decorator-section name="body">
                         <section>
-                            <actions>
-                                <service service-name="findParty" auto-field-map="true"/>
-                            </actions>
                             <widgets>
                                 <include-menu name="AccountSubTabBar" location="component://marketing/widget/sfa/SfaMenus.xml"/>
                                 <section>
                                     <widgets>
-                                        <platform-specific>
-                                            <html>
-                                                <html-template location="component://marketing/webapp/sfa/party/findSfaParty.ftl"/>
-                                                <html-template location="component://marketing/webapp/sfa/account/ListAccounts.ftl"/>
-                                            </html>
-                                        </platform-specific>
+                                        <container style="no-clear">
+                                            <decorator-screen name="FindScreenDecorator" location="component://common/widget/CommonScreens.xml">
+                                                <decorator-section name="search-options">
+                                                    <include-menu name="AccountFindTabBar" location="component://marketing/widget/sfa/SfaMenus.xml"/>
+                                                    <include-form name="FindAccounts" location="component://marketing/widget/sfa/forms/AccountForms.xml"/>
+                                                </decorator-section>
+                                                <decorator-section name="search-results">
+                                                    <section>
+                                                        <condition>
+                                                            <or>
+                                                                <if-empty field="parameters.all"/>
+                                                                <if-compare field="parameters.all" operator="equals" value="true"/>
+                                                            </or>
+                                                        </condition>
+                                                        <widgets>
+                                                            <!-- list all accounts -->
+                                                            <label style="h1" text="${uiLabelMap.SfaAllAccounts}"/>
+                                                            <include-form name="ListAccounts" location="component://marketing/widget/sfa/forms/AccountForms.xml"/>
+                                                        </widgets>
+                                                        <fail-widgets>
+                                                            <!-- list my accounts -->
+                                                            <label style="h1" text="${uiLabelMap.SfaMyAccounts}"/>
+                                                            <include-form name="ListMyAccounts" location="component://marketing/widget/sfa/forms/AccountForms.xml"/>
+                                                        </fail-widgets>
+                                                    </section>
+                                                </decorator-section>
+                                            </decorator-screen>
+                                        </container>
                                     </widgets>
                                 </section>
                             </widgets>
@@ -99,4 +117,105 @@
             </widgets>
         </section>
     </screen>
+    <screen name="ContactMechTypeOnly">
+        <section>
+            <actions>
+                <property-map resource="PartyUiLabels" map-name="uiLabelMap" global="true"/>
+            </actions>
+            <widgets>
+                <section>
+                    <condition>
+                        <if-compare field="parameters.contactMechTypeId" operator="equals" value="ELECTRONIC_ADDRESS"/>
+                    </condition>
+                    <widgets>
+                        <include-form location="component://marketing/widget/sfa/forms/AccountForms.xml" name="FindInfoStringContactMech"/>
+                    </widgets>
+                </section>
+                <section>
+                    <condition>
+                        <if-compare field="parameters.contactMechTypeId" operator="equals" value="POSTAL_ADDRESS"/>
+                    </condition>
+                    <widgets>
+                        <section>
+                            <actions>
+                                <entity-condition list="states" entity-name="Geo">
+                                    <condition-list combine="or">
+                                        <condition-expr field-name="geoTypeId" value="STATE"/>
+                                        <condition-expr field-name="geoTypeId" value="PROVINCE"/>
+                                        <condition-expr field-name="geoTypeId" value="TERRITORY"/>
+                                    </condition-list>
+                                    <order-by field-name="geoName"/>
+                                </entity-condition>
+                                <entity-condition list="countries" entity-name="Geo">
+                                    <condition-list combine="or">
+                                        <condition-expr field-name="geoTypeId" value="COUNTRY"/>
+                                    </condition-list>
+                                    <order-by field-name="geoName"/>
+                                </entity-condition>
+                            </actions>
+                            <widgets>
+                                <include-form location="component://marketing/widget/sfa/forms/AccountForms.xml" name="FindPostalAddress"/>
+                            </widgets>
+                        </section>
+                    </widgets>
+                </section>
+                <section>
+                    <condition>
+                        <if-compare field="parameters.contactMechTypeId" operator="equals" value="TELECOM_NUMBER"/>
+                    </condition>
+                    <widgets>
+                        <include-form location="component://marketing/widget/sfa/forms/AccountForms.xml" name="FindTelecomNumber"/>
+                    </widgets>
+                </section>
+                <section>
+                    <condition>
+                        <if-compare field="parameters.contactMechTypeId" operator="equals" value="EMAIL_ADDRESS"/>
+                    </condition>
+                    <widgets>
+                        <include-form location="component://marketing/widget/sfa/forms/AccountForms.xml" name="FindInfoStringContactMech"/>
+                    </widgets>
+                </section>
+                <section>
+                    <condition>
+                        <if-compare field="parameters.contactMechTypeId" operator="equals" value="IP_ADDRESS"/>
+                    </condition>
+                    <widgets>
+                        <include-form location="component://marketing/widget/sfa/forms/AccountForms.xml" name="FindInfoStringContactMech"/>
+                    </widgets>
+                </section>
+                <section>
+                    <condition>
+                        <if-compare field="parameters.contactMechTypeId" operator="equals" value="DOMAIN_NAME"/>
+                    </condition>
+                    <widgets>
+                        <include-form location="component://marketing/widget/sfa/forms/AccountForms.xml" name="FindInfoStringContactMech"/>
+                    </widgets>
+                </section>
+                <section>
+                    <condition>
+                        <if-compare field="parameters.contactMechTypeId" operator="equals" value="WEB_ADDRESS"/>
+                    </condition>
+                    <widgets>
+                        <include-form location="component://marketing/widget/sfa/forms/AccountForms.xml" name="FindInfoStringContactMech"/>
+                    </widgets>
+                </section>
+                <section>
+                    <condition>
+                        <if-compare field="parameters.contactMechTypeId" operator="equals" value="INTERNAL_PARTYID"/>
+                    </condition>
+                    <widgets>
+                        <include-form location="component://marketing/widget/sfa/forms/AccountForms.xml" name="FindInfoStringContactMech"/>
+                    </widgets>
+                </section>
+                <section>
+                    <condition>
+                        <if-compare field="parameters.contactMechTypeId" operator="equals" value="LDAP_ADDRESS"/>
+                    </condition>
+                    <widgets>
+                        <include-form location="component://marketing/widget/sfa/forms/AccountForms.xml" name="FindInfoStringContactMech"/>
+                    </widgets>
+                </section>
+            </widgets>
+        </section>
+    </screen>
 </screens>
\ No newline at end of file

Modified: ofbiz/trunk/applications/marketing/widget/sfa/ContactScreens.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/marketing/widget/sfa/ContactScreens.xml?rev=832294&r1=832293&r2=832294&view=diff
==============================================================================
--- ofbiz/trunk/applications/marketing/widget/sfa/ContactScreens.xml (original)
+++ ofbiz/trunk/applications/marketing/widget/sfa/ContactScreens.xml Tue Nov  3 03:59:01 2009
@@ -23,26 +23,44 @@
     <screen name="FindContacts">
         <section>
             <actions>
-                <set field="partyRelationshipTypeId" value="CONTACT_REL"/>
-                <set field="roleTypeId" value="CONTACT"/>
-                <set field="partyTypeId" value="PERSON"/>
+                <set field="titleProperty" value="MarketingFindContacts"/>
+                <set field="currentUrl" value="FindContacts"/>
                 <set field="headerItem" value="Contacts"/>
             </actions>
             <widgets>
                 <decorator-screen name="main-decorator" location="${parameters.mainDecoratorLocation}">
                     <decorator-section name="body">
                         <section>
-                            <actions>
-                                <service service-name="findParty" auto-field-map="true"/>
-                            </actions>
                             <widgets>
                                 <include-menu name="ContactSubTabBar" location="component://marketing/widget/sfa/SfaMenus.xml"/>
-                                <platform-specific>
-                                    <html>
-                                        <html-template location="component://marketing/webapp/sfa/party/findContactParty.ftl"/>
-                                        <html-template location="component://marketing/webapp/sfa/contact/ListContacts.ftl"/>
-                                    </html>
-                                </platform-specific>
+                                <container style="no-clear">
+                                    <decorator-screen name="FindScreenDecorator" location="component://common/widget/CommonScreens.xml">
+                                        <decorator-section name="search-options">
+                                            <include-menu name="ContactFindTabBar" location="component://marketing/widget/sfa/SfaMenus.xml"/>
+                                            <include-form name="FindContacts" location="component://marketing/widget/sfa/forms/ContactForms.xml"/>
+                                        </decorator-section>
+                                        <decorator-section name="search-results">
+                                            <section>
+                                                <condition>
+                                                    <or>
+                                                        <if-empty field="parameters.all"/>
+                                                        <if-compare field="parameters.all" operator="equals" value="true"/>
+                                                    </or>
+                                                </condition>
+                                                <widgets>
+                                                    <!-- list all contacts -->
+                                                    <label style="h1" text="${uiLabelMap.SfaAllContacts}"/>
+                                                    <include-form name="ListContacts" location="component://marketing/widget/sfa/forms/ContactForms.xml"/>
+                                                </widgets>
+                                                <fail-widgets>
+                                                    <!-- list my contacts -->
+                                                    <label style="h1" text="${uiLabelMap.SfaMyContacts}"/>
+                                                    <include-form name="ListMyContacts" location="component://marketing/widget/sfa/forms/ContactForms.xml"/>
+                                                </fail-widgets>
+                                            </section>
+                                        </decorator-section>
+                                    </decorator-screen>
+                                </container>
                             </widgets>
                         </section>
                     </decorator-section>

Modified: ofbiz/trunk/applications/marketing/widget/sfa/LeadScreens.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/marketing/widget/sfa/LeadScreens.xml?rev=832294&r1=832293&r2=832294&view=diff
==============================================================================
--- ofbiz/trunk/applications/marketing/widget/sfa/LeadScreens.xml (original)
+++ ofbiz/trunk/applications/marketing/widget/sfa/LeadScreens.xml Tue Nov  3 03:59:01 2009
@@ -23,11 +23,9 @@
      <screen name="FindLeads">
         <section>
             <actions>
-                <set field="partyRelationshipTypeId" value="LEAD_OWNER"/>
-                <set field="partyTypeId" value="ANY"/>
+                <set field="titleProperty" value="MarketingFindLeads"/>
                 <set field="currentUrl" value="FindLeads"/>
                 <set field="headerItem" value="Leads"/>
-                <service service-name="findParty" auto-field-map="true"/>
             </actions>
             <widgets>
                 <decorator-screen name="main-decorator" location="${parameters.mainDecoratorLocation}">
@@ -36,12 +34,32 @@
                             <widgets>
                                 <include-menu name="LeadSubTabBar" location="component://marketing/widget/sfa/SfaMenus.xml"/>
                                 <container style="no-clear">
-                                    <platform-specific>
-                                        <html>
-                                            <html-template location="component://marketing/webapp/sfa/party/findSfaParty.ftl"/>
-                                            <html-template location="component://marketing/webapp/sfa/lead/ListLeads.ftl"/>
-                                        </html>
-                                    </platform-specific>
+                                    <decorator-screen name="FindScreenDecorator" location="component://common/widget/CommonScreens.xml">
+                                        <decorator-section name="search-options">
+                                            <include-menu name="LeadFindTabBar" location="component://marketing/widget/sfa/SfaMenus.xml"/>
+                                            <include-form name="FindLeads" location="component://marketing/widget/sfa/forms/LeadForms.xml"/>
+                                        </decorator-section>
+                                        <decorator-section name="search-results">
+                                            <section>
+                                                <condition>
+                                                    <or>
+                                                        <if-empty field="parameters.all"/>
+                                                        <if-compare field="parameters.all" operator="equals" value="true"/>
+                                                    </or>
+                                                </condition>
+                                                <widgets>
+                                                    <!-- list all leads -->
+                                                    <label style="h1" text="${uiLabelMap.SfaAllLeads}"/>
+                                                    <include-form name="ListLeads" location="component://marketing/widget/sfa/forms/LeadForms.xml"/>
+                                                </widgets>
+                                                <fail-widgets>
+                                                    <!-- list my leads -->
+                                                    <label style="h1" text="${uiLabelMap.SfaMyLeads}"/>
+                                                    <include-form name="ListMyLeads" location="component://marketing/widget/sfa/forms/LeadForms.xml"/>
+                                                </fail-widgets>
+                                            </section>
+                                        </decorator-section>
+                                    </decorator-screen>
                                 </container>
                             </widgets>
                         </section>

Modified: ofbiz/trunk/applications/marketing/widget/sfa/SfaMenus.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/marketing/widget/sfa/SfaMenus.xml?rev=832294&r1=832293&r2=832294&view=diff
==============================================================================
--- ofbiz/trunk/applications/marketing/widget/sfa/SfaMenus.xml (original)
+++ ofbiz/trunk/applications/marketing/widget/sfa/SfaMenus.xml Tue Nov  3 03:59:01 2009
@@ -72,9 +72,6 @@
         <menu-item name="NewAccounts" title="${uiLabelMap.PageTitleCreateAccount}">
             <link target="NewAccount"/>
         </menu-item>
-        <menu-item name="AssignAccountToMe" title="${uiLabelMap.PageTitleAssignAccountFromExisting}">
-            <link target="AssignAccountToMe"/>
-        </menu-item>
         <menu-item name="ViewSfaCommEvent" title="${uiLabelMap.PartyCommunications}">
             <condition>
                 <not><if-empty field="partyId"/></not>
@@ -85,6 +82,27 @@
             </link>
         </menu-item>
     </menu>
+    <menu name="AccountFindTabBar" extends="CommonTabBarMenu" extends-resource="component://common/widget/CommonMenus.xml">
+        <menu-item name="all" title="${uiLabelMap.SfaAllAccounts}">
+            <condition>
+                <if-compare field="parameters.all" operator="equals" value="false"/>
+            </condition>
+            <link target="${parameters._LAST_VIEW_NAME_}">
+                <parameter param-name="all" value="true"/>
+            </link>
+        </menu-item>
+        <menu-item name="my" title="${uiLabelMap.SfaMyAccounts}">
+            <condition>
+                <or>
+                    <if-compare field="parameters.all" operator="equals" value="true"/>
+                    <if-empty field="parameters.all"/>
+                </or>
+            </condition>
+            <link target="${parameters._LAST_VIEW_NAME_}">
+                <parameter param-name="all" value="false"/>
+            </link>
+        </menu-item>
+    </menu>
 
     <menu name="LeadTabBar" extends="CommonTabBarMenu" extends-resource="component://common/widget/CommonMenus.xml">
         <menu-item name="profile" title="${uiLabelMap.PartyProfile}">
@@ -121,9 +139,6 @@
         <menu-item name="NewLeadFromVCard" title="${uiLabelMap.PageTitleCreateLeadFromVCard}">
             <link target="NewLeadFromVCard"/>
         </menu-item>
-        <menu-item name="AssignLeadToMe" title="${uiLabelMap.PageTitleAssignLeadFromExisting}">
-            <link target="AssignLeadToMe"/>
-        </menu-item>
         <menu-item name="ViewSfaCommEvent" title="${uiLabelMap.PartyCommunications}">
             <condition>
                 <not><if-empty field="partyId"/></not>
@@ -134,6 +149,28 @@
             </link>
         </menu-item>
     </menu>
+    
+    <menu name="LeadFindTabBar" extends="CommonTabBarMenu" extends-resource="component://common/widget/CommonMenus.xml">
+        <menu-item name="all" title="${uiLabelMap.SfaAllLeads}">
+            <condition>
+                <if-compare field="parameters.all" operator="equals" value="false"/>
+            </condition>
+            <link target="${parameters._LAST_VIEW_NAME_}">
+                <parameter param-name="all" value="true"/>
+            </link>
+        </menu-item>
+        <menu-item name="my" title="${uiLabelMap.SfaMyLeads}">
+            <condition>
+                <or>
+                    <if-compare field="parameters.all" operator="equals" value="true"/>
+                    <if-empty field="parameters.all"/>
+                </or>
+            </condition>
+            <link target="${parameters._LAST_VIEW_NAME_}">
+                <parameter param-name="all" value="false"/>
+            </link>
+        </menu-item>
+    </menu>
 
     <menu name="ContactTabBar" extends="CommonTabBarMenu" extends-resource="component://common/widget/CommonMenus.xml">
         <menu-item name="profile" title="${uiLabelMap.PartyProfile}">
@@ -163,6 +200,27 @@
             </link>
         </menu-item>
     </menu>
+    <menu name="ContactFindTabBar" extends="CommonTabBarMenu" extends-resource="component://common/widget/CommonMenus.xml">
+        <menu-item name="all" title="${uiLabelMap.SfaAllContacts}">
+            <condition>
+                <if-compare field="parameters.all" operator="equals" value="false"/>
+            </condition>
+            <link target="${parameters._LAST_VIEW_NAME_}">
+                <parameter param-name="all" value="true"/>
+            </link>
+        </menu-item>
+        <menu-item name="my" title="${uiLabelMap.SfaMyContacts}">
+            <condition>
+                <or>
+                    <if-compare field="parameters.all" operator="equals" value="true"/>
+                    <if-empty field="parameters.all"/>
+                </or>
+            </condition>
+            <link target="${parameters._LAST_VIEW_NAME_}">
+                <parameter param-name="all" value="false"/>
+            </link>
+        </menu-item>
+    </menu>
     <menu name="SalesForecastTabBar" extends="CommonTabBarMenu" extends-resource="component://common/widget/CommonMenus.xml">
         <menu-item name="EditSalesForecast" title="${uiLabelMap.SfaSalesForecast}">
             <link target="EditSalesForecast">

Modified: ofbiz/trunk/applications/marketing/widget/sfa/forms/AccountForms.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/marketing/widget/sfa/forms/AccountForms.xml?rev=832294&r1=832293&r2=832294&view=diff
==============================================================================
--- ofbiz/trunk/applications/marketing/widget/sfa/forms/AccountForms.xml (original)
+++ ofbiz/trunk/applications/marketing/widget/sfa/forms/AccountForms.xml Tue Nov  3 03:59:01 2009
@@ -75,5 +75,132 @@
         <field name="partyId" parameter-name="partyIdTo"><lookup target-form-name="LookupAccount"/></field>
         <field name="assign"><submit/></field>
     </form>
+    
+    <form name="FindAccounts" id="FindAccounts" target="FindAccounts" title="" type="single" default-map-name="parameters"
+        header-row-style="header-row" default-table-style="basic-table">
+        <field name="all"><hidden/></field>
+        <field name="partyId" title="${uiLabelMap.PartyPartyId}"><text-find/></field>
+        <field name="groupName" title="${uiLabelMap.PartyPartyGroupName}"><text-find/></field>
+        <field name="contactMechTypeId" event="onchange" action="javascript:ajaxUpdateAreas('contactMechContainer,ContactMechTypeOnly,contactMechTypeId=' + this.value);">
+            <drop-down>
+                <option key="" description="${uiLabelMap.CommonNone}"/>
+                <entity-options entity-name="ContactMechType" key-field-name="contactMechTypeId" description="${description}"/>
+            </drop-down>
+        </field>
+        <field name="contactMechContainer" id-name="contactMechContainer" title=" "><container/></field>
+        <field name="noConditionFind"><hidden value="Y"/><!-- if this isn't there then with all fields empty no query will be done --></field>
+        <field name="submitButton" title="${uiLabelMap.CommonFind}" widget-style="smallSubmit">
+            <submit button-type="button"/>
+        </field>
+    </form>
+    <form name="ListAccounts" type="list" paginate-target="FindAccounts" list-name="listIt"
+        odd-row-style="alternate-row" header-row-style="header-row-2" default-table-style="basic-table hover-bar" separate-columns="true">
+        <actions>
+            <set field="roleTypeIdFrom" value="OWNER"/>
+            <set field="roleTypeIdTo" value="ACCOUNT"/>
+            <set field="partyRelationshipTypeId" value="ACCOUNT"/>
+            <set field="parameters.roleTypeId" from-field="roleTypeIdTo"/>
+            <set field="fieldList" value="${groovy:[&quot;partyId&quot;,&quot;roleTypeId&quot;]}" type="List"/>
+            <service service-name="performFind" result-map="result" result-map-list="listIt">
+                <field-map field-name="inputFields" from-field="parameters"/>
+                <field-map field-name="entityName" value="PartyRoleAndContactMechDetail"/>
+                <field-map field-name="orderBy" value="partyId"/>
+                <field-map field-name="distinct" value="Y"/>
+                <field-map field-name="fieldList" from-field="fieldList"/>
+                <field-map field-name="viewIndex" from-field="viewIndex"/>
+                <field-map field-name="viewSize" from-field="viewSize"/>
+            </service>
+        </actions>
+        <row-actions>
+            <entity-one entity-name="Party" value-field="party">
+                <field-map field-name="partyId"/>
+            </entity-one>
+            <set field="partyType" default-value="${groovy:party.getRelatedOne(&quot;PartyType&quot;).get(&quot;description&quot;, locale)}"/>
+            <set field="partyName" value="${groovy:org.ofbiz.party.party.PartyHelper.getPartyName(party, true)}"/>
+            <set field="partyStatusId" from-field="party.statusId"/>
+            <entity-and entity-name="PartyRelationship" list="existRelationships" filter-by-date="true">
+                <field-map field-name="roleTypeIdTo"/>
+                <field-map field-name="partyRelationshipTypeId"/>
+                <field-map field-name="partyIdFrom" from-field="userLogin.partyId"/>
+                <field-map field-name="partyIdTo" from-field="partyId"/>
+            </entity-and>
+            <set field="existRelationship" from-field="existRelationships[0]"/>
+        </row-actions>
+        <field name="partyId" title="${uiLabelMap.PartyPartyId}">
+            <hyperlink target="viewprofile" description="${partyId}">
+                <parameter param-name="partyId"/>
+            </hyperlink>
+        </field>
+        <field name="partyName" title="${uiLabelMap.PartyName}">
+            <hyperlink target="viewprofile" description="${partyName}">
+                <parameter param-name="partyId"/>
+            </hyperlink>
+        </field>
+        <field name="partyType" title="${uiLabelMap.PartyType}">
+            <display description="${partyType}"/>
+        </field>
+        <field name="assignToMe" use-when="existRelationship==null&amp;&amp;!&quot;false&quot;.equals(parameters.get(&quot;all&quot;))"
+                title="${uiLabelMap.SfaAssignToMe}" widget-style="buttontext">
+            <hyperlink target="createPartyRelationshipAndRole" description="${uiLabelMap.SfaAssignToMe}">
+                <parameter param-name="partyId" from-field="userLogin.partyId"/>
+                <parameter param-name="roleTypeId" from-field="roleTypeIdFrom"/>
+                <parameter param-name="roleTypeIdFrom"/>
+                <parameter param-name="roleTypeIdTo"/>
+                <parameter param-name="partyRelationshipTypeId"/>
+                <parameter param-name="partyIdTo" from-field="partyId"/>
+            </hyperlink>
+        </field>
+    </form>
+    <form name="ListMyAccounts" extends="ListAccounts">
+        <actions>
+            <set field="parameters.partyIdFrom" from-field="userLogin.partyId"/>
+            <set field="parameters.roleTypeIdFrom" value="OWNER"/>
+            <set field="parameters.roleTypeIdTo" value="ACCOUNT"/>
+            <set field="parameters.partyRelationshipTypeId" value="ACCOUNT"/>
+            <set field="fieldList" value="${groovy:[&quot;partyIdFrom&quot;,&quot;partyId&quot;]}" type="List"/>
+            <service service-name="performFind" result-map="result" result-map-list="listIt">
+                <field-map field-name="inputFields" from-field="parameters"/>
+                <field-map field-name="entityName" value="PartyRelationshipAndContactMechDetail"/>
+                <field-map field-name="orderBy" value="partyId"/>
+                <field-map field-name="distinct" value="Y"/>
+                <field-map field-name="fieldList" from-field="fieldList"/>
+                <field-map field-name="viewIndex" from-field="viewIndex"/>
+                <field-map field-name="viewSize" from-field="viewSize"/>
+            </service>
+        </actions>
+        <field name="assignToMe"><hidden/></field>
+    </form>
 
+    <form name="FindPostalAddress" type="single">
+        <field name="paToName" title="${uiLabelMap.PartyAddrToName}"><text-find/></field>
+        <field name="paAttnName" title="${uiLabelMap.PartyAddrAttnName}"><text-find/></field>
+        <field name="paAddress1" title="${uiLabelMap.FormFieldTitle_paAddress1}"><text-find/></field>
+        <field name="paAddress2" title="${uiLabelMap.FormFieldTitle_paAddress2}"><text-find/></field>
+        <field name="paCity" title="${uiLabelMap.PartyCity}"><text-find/></field>
+        <field name="paStateProvinceGeoId" title="${uiLabelMap.FormFieldTitle_stateProvince}">
+            <drop-down allow-empty="true">
+                <list-options key-name="geoId" description="${geoName}" list-name="states"/>
+            </drop-down>
+        </field>
+        <field name="paPostalCode"><text-find/></field>
+        <field name="paCountryGeoId" title="${uiLabelMap.PartyCountry}">
+            <drop-down allow-empty="true">
+                <list-options key-name="geoId" description="${geoName}" list-name="countries"/>
+            </drop-down>
+        </field>
+    </form>
+    <form name="FindTelecomNumber" type="single">
+        <field name="tnCountryCode" title="${uiLabelMap.PartyCountryCode}"><text-find/></field>
+        <field name="tnAreaCode" title="${uiLabelMap.PartyAreaCode}"><text-find/></field>
+        <field name="tnContactNumber" title="${uiLabelMap.PartyContactNumber}"><text-find/></field>
+        <field name="tnExtension" title="${uiLabelMap.PartyExtension}"><text-find/></field>
+    </form>
+    <form name="FindInfoStringContactMech" type="single">
+        <actions>
+            <entity-one entity-name="ContactMechType" value-field="contactMechType">
+                <field-map field-name="contactMechTypeId" from-field="parameters.contactMechTypeId"/>
+            </entity-one>
+        </actions>
+        <field name="infoString" title="${contactMechType.description}"><text-find/></field>
+    </form>
 </forms>
\ No newline at end of file

Modified: ofbiz/trunk/applications/marketing/widget/sfa/forms/ContactForms.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/marketing/widget/sfa/forms/ContactForms.xml?rev=832294&r1=832293&r2=832294&view=diff
==============================================================================
--- ofbiz/trunk/applications/marketing/widget/sfa/forms/ContactForms.xml (original)
+++ ofbiz/trunk/applications/marketing/widget/sfa/forms/ContactForms.xml Tue Nov  3 03:59:01 2009
@@ -21,31 +21,67 @@
 <forms xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/widget-form.xsd">
 
-    <form name="ListContacts" type="list" list-name="partyList" list-entry-name="partyRow" paginate-target="FindContact"
-        odd-row-style="alternate-row" default-table-style="basic-table hover-bar" separate-columns="true">
-        <row-actions>
-            <entity-one entity-name="Person" value-field="person">
-                <field-map field-name="partyId" from-field="partyRow.partyId"/>
-            </entity-one>
-            <entity-one entity-name="PartyType" value-field="partyType">
-                <field-map field-name="partyTypeId" from-field="partyRow.partyTypeId"/>
-            </entity-one>
-        </row-actions>
-        <field name="partyId" title="${uiLabelMap.PartyPartyId}">
-            <hyperlink target="viewprofile" description="${partyRow.partyId}">
-                <parameter param-name="partyId" from-field="partyRow.partyId"/>
-            </hyperlink>
-        </field>
-        <field name="partyName" title="${uiLabelMap.PartyName}">
-            <hyperlink target="viewprofile" description="${person.lastName}, ${person.firstName}">
-                <parameter param-name="partyId" from-field="partyRow.partyId"/>
-            </hyperlink>
-        </field>
+    <form name="FindContacts" target="FindContacts" extends="FindAccounts" extends-resource="component://marketing/widget/sfa/forms/AccountForms.xml">
+        <field name="groupName"><hidden/></field>
+        <field name="firstName" title="${uiLabelMap.PartyFirstName}"><text-find/></field>
+        <field name="lastName" title="${uiLabelMap.PartyLastName}"><text-find/></field>
+        <sort-order>
+            <sort-field name="partyId"/>
+            <sort-field name="firstName"/>
+            <sort-field name="lastName"/>
+            <sort-field name="contactMechTypeId"/>
+            <sort-field name="contactMechContainer"/>
+            <sort-field name="submitButton"/>
+        </sort-order>
+    </form>
+    <form name="ListContacts" paginate-target="FindContacts"
+            extends="ListAccounts" extends-resource="component://marketing/widget/sfa/forms/AccountForms.xml">
+        <actions>
+            <set field="roleTypeIdFrom" value="ACCOUNT"/>
+            <set field="roleTypeIdTo" value="CONTACT"/>
+            <set field="partyRelationshipTypeId" value="EMPLOYMENT"/>
+            <set field="parameters.roleTypeId" from-field="roleTypeIdTo"/>
+            <set field="fieldList" value="${groovy:[&quot;partyId&quot;,&quot;roleTypeId&quot;]}" type="List"/>
+            <service service-name="performFind" result-map="result" result-map-list="listIt">
+                <field-map field-name="inputFields" from-field="parameters"/>
+                <field-map field-name="entityName" value="PartyRoleAndContactMechDetail"/>
+                <field-map field-name="orderBy" value="partyId"/>
+                <field-map field-name="distinct" value="Y"/>
+                <field-map field-name="fieldList" from-field="fieldList"/>
+                <field-map field-name="viewIndex" from-field="viewIndex"/>
+                <field-map field-name="viewSize" from-field="viewSize"/>
+            </service>
+        </actions>
+        <field name="partyType"><hidden/></field>
         <field name="export" title="${uiLabelMap.SfaVCard}">
             <hyperlink target="createVCardFromContact" description="${uiLabelMap.SfaVCard}">
-                <parameter param-name="partyId" from-field="partyRow.partyId"/>
+                <parameter param-name="partyId"/>
             </hyperlink>
         </field>
+        <sort-order>
+            <sort-field name="partyId"/>
+            <sort-field name="partyName"/>
+            <sort-field name="export"/>
+            <sort-field name="assignToMe"/>
+        </sort-order>
+    </form>
+    <form name="ListMyContacts" extends="ListContacts">
+        <actions>
+            <set field="parameters.partyIdFrom" from-field="userLogin.partyId"/>
+            <set field="parameters.roleTypeIdTo" value="CONTACT"/>
+            <set field="parameters.partyRelationshipTypeId" value="EMPLOYMENT"/>
+            <set field="fieldList" value="${groovy:[&quot;partyIdFrom&quot;,&quot;partyId&quot;]}" type="List"/>
+            <service service-name="performFind" result-map="result" result-map-list="listIt">
+                <field-map field-name="inputFields" from-field="parameters"/>
+                <field-map field-name="entityName" value="PartyRelationshipAndContactMechDetail"/>
+                <field-map field-name="orderBy" value="partyId"/>
+                <field-map field-name="distinct" value="Y"/>
+                <field-map field-name="fieldList" from-field="fieldList"/>
+                <field-map field-name="viewIndex" from-field="viewIndex"/>
+                <field-map field-name="viewSize" from-field="viewSize"/>
+            </service>
+        </actions>
+        <field name="assignToMe"><hidden/></field>
     </form>
     <form name="NewContact" type="single" target="createContact" header-row-style="header-row" default-table-style="basic-table">
         <field name="firstName" tooltip="${uiLabelMap.CommonRequired}" widget-style="required"><text/></field>

Modified: ofbiz/trunk/applications/marketing/widget/sfa/forms/LeadForms.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/marketing/widget/sfa/forms/LeadForms.xml?rev=832294&r1=832293&r2=832294&view=diff
==============================================================================
--- ofbiz/trunk/applications/marketing/widget/sfa/forms/LeadForms.xml (original)
+++ ofbiz/trunk/applications/marketing/widget/sfa/forms/LeadForms.xml Tue Nov  3 03:59:01 2009
@@ -164,4 +164,64 @@
         
     </form>
     
+    <form name="FindLeads" target="FindLeads" extends="FindAccounts" extends-resource="component://marketing/widget/sfa/forms/AccountForms.xml">
+        <field name="firstName" title="${uiLabelMap.PartyFirstName}"><text-find/></field>
+        <field name="lastName" title="${uiLabelMap.PartyLastName}"><text-find/></field>
+        <sort-order>
+            <sort-field name="partyId"/>
+            <sort-field name="firstName"/>
+            <sort-field name="lastName"/>
+            <sort-field name="groupName"/>
+            <sort-field name="contactMechTypeId"/>
+            <sort-field name="contactMechContainer"/>
+            <sort-field name="submitButton"/>
+        </sort-order>
+    </form>
+    <form name="ListLeads" paginate-target="FindLeads"
+            extends="ListAccounts" extends-resource="component://marketing/widget/sfa/forms/AccountForms.xml">
+        <actions>
+            <set field="roleTypeIdFrom" value="OWNER"/>
+            <set field="roleTypeIdTo" value="LEAD"/>
+            <set field="partyRelationshipTypeId" value="LEAD_OWNER"/>
+            <set field="parameters.roleTypeId" from-field="roleTypeIdTo"/>
+            <set field="fieldList" value="${groovy:[&quot;partyId&quot;,&quot;roleTypeId&quot;]}" type="List"/>
+            <service service-name="performFind" result-map="result" result-map-list="listIt">
+                <field-map field-name="inputFields" from-field="parameters"/>
+                <field-map field-name="entityName" value="PartyRoleAndContactMechDetail"/>
+                <field-map field-name="orderBy" value="partyId"/>
+                <field-map field-name="distinct" value="Y"/>
+                <field-map field-name="fieldList" from-field="fieldList"/>
+                <field-map field-name="viewIndex" from-field="viewIndex"/>
+                <field-map field-name="viewSize" from-field="viewSize"/>
+            </service>
+        </actions>
+        <field name="partyType"><hidden/></field>
+        <field name="partyStatusId" field-name="statusId" title="${uiLabelMap.CommonStatus}">
+            <display-entity entity-name="StatusItem"/>
+        </field>
+        <sort-order>
+            <sort-field name="partyId"/>
+            <sort-field name="partyName"/>
+            <sort-field name="partyStatusId"/>
+            <sort-field name="assignToMe"/>
+        </sort-order>
+    </form>
+    <form name="ListMyLeads" extends="ListLeads">
+        <actions>
+            <set field="parameters.partyIdFrom" from-field="userLogin.partyId"/>
+            <set field="parameters.roleTypeIdTo" value="LEAD"/>
+            <set field="parameters.partyRelationshipTypeId" value="LEAD_OWNER"/>
+            <set field="fieldList" value="${groovy:[&quot;partyIdFrom&quot;,&quot;partyId&quot;]}" type="List"/>
+            <service service-name="performFind" result-map="result" result-map-list="listIt">
+                <field-map field-name="inputFields" from-field="parameters"/>
+                <field-map field-name="entityName" value="PartyRelationshipAndContactMechDetail"/>
+                <field-map field-name="orderBy" value="partyId"/>
+                <field-map field-name="distinct" value="Y"/>
+                <field-map field-name="fieldList" from-field="fieldList"/>
+                <field-map field-name="viewIndex" from-field="viewIndex"/>
+                <field-map field-name="viewSize" from-field="viewSize"/>
+            </service>
+        </actions>
+        <field name="assignToMe"><hidden/></field>
+    </form>
 </forms>

Modified: ofbiz/trunk/applications/party/entitydef/entitymodel.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/party/entitydef/entitymodel.xml?rev=832294&r1=832293&r2=832294&view=diff
==============================================================================
--- ofbiz/trunk/applications/party/entitydef/entitymodel.xml (original)
+++ ofbiz/trunk/applications/party/entitydef/entitymodel.xml Tue Nov  3 03:59:01 2009
@@ -2365,6 +2365,15 @@
         <key-map field-name="partyId"/>
       </relation>
     </view-entity>
+    <view-entity entity-name="PartyRelationshipAndContactMechDetail" package-name="org.ofbiz.party.party" title="Party Relationship And Contact Mech Details">
+        <member-entity entity-alias="PTYREL" entity-name="PartyRelationshipAndDetail"/>
+        <member-entity entity-alias="PTYCM" entity-name="PartyAndContactMech"/>
+        <alias-all entity-alias="PTYREL"/>
+        <alias-all entity-alias="PTYCM"/>
+        <view-link entity-alias="PTYREL" rel-entity-alias="PTYCM" rel-optional="true">
+            <key-map field-name="partyIdTo" rel-field-name="partyId"/>
+        </view-link>
+    </view-entity>
     <entity entity-name="PartyRole"
             package-name="org.ofbiz.party.party"
             title="Party Role Entity">
@@ -2480,6 +2489,15 @@
             <key-map field-name="partyId"/>
         </view-link>
     </view-entity>
+    <view-entity entity-name="PartyRoleAndContactMechDetail" package-name="org.ofbiz.party.party" title="Party Role And Contact Mech Details">
+        <member-entity entity-alias="PTYRL" entity-name="PartyRoleDetailAndPartyDetail"/>
+        <member-entity entity-alias="PTYCM" entity-name="PartyAndContactMech"/>
+        <alias-all entity-alias="PTYRL"/>
+        <alias-all entity-alias="PTYCM"/>
+        <view-link entity-alias="PTYRL" rel-entity-alias="PTYCM" rel-optional="true">
+            <key-map field-name="partyId" rel-field-name="partyId"/>
+        </view-link>
+    </view-entity>
     <entity entity-name="PartyStatus"
             package-name="org.ofbiz.party.party"
             title="Tracks a history of the status of a Party">

Modified: ofbiz/trunk/applications/party/servicedef/services.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/party/servicedef/services.xml?rev=832294&r1=832293&r2=832294&view=diff
==============================================================================
--- ofbiz/trunk/applications/party/servicedef/services.xml (original)
+++ ofbiz/trunk/applications/party/servicedef/services.xml Tue Nov  3 03:59:01 2009
@@ -337,6 +337,14 @@
         <override name="roleTypeIdFrom" optional="true"/>
         <override name="roleTypeIdTo" optional="true"/>
     </service>
+    
+    <service name="createPartyRelationshipAndRole" engine="group" auth="true">
+        <description>Create party's role and party's relationship</description>
+        <group>
+            <invoke name="createPartyRole" result-to-context="true"/>
+            <invoke name="createPartyRelationship" result-to-context="true"/>
+        </group>
+    </service>
 
     <service name="createPartyRelationshipType" engine="java" default-entity-name="PartyRelationshipType"
             location="org.ofbiz.party.party.PartyRelationshipServices" invoke="createPartyRelationshipType" auth="true">

Modified: ofbiz/trunk/applications/party/webapp/partymgr/WEB-INF/controller.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/party/webapp/partymgr/WEB-INF/controller.xml?rev=832294&r1=832293&r2=832294&view=diff
==============================================================================
--- ofbiz/trunk/applications/party/webapp/partymgr/WEB-INF/controller.xml (original)
+++ ofbiz/trunk/applications/party/webapp/partymgr/WEB-INF/controller.xml Tue Nov  3 03:59:01 2009
@@ -694,6 +694,12 @@
         <response name="success" type="view-last" value="EditPartyRelationships"/>
         <response name="error" type="view" value="EditPartyRelationships"/>
     </request-map>
+    <request-map uri="createPartyRelationshipAndRole">
+        <security https="true" auth="true"/>
+        <event type="service" path="" invoke="createPartyRelationshipAndRole"/>
+        <response name="success" type="request-redirect-noparam" value="backHome"/>
+        <response name="error" type="request-redirect-noparam" value="backHome"/>
+    </request-map>
     <request-map uri="createPartyRelationshipContactAccount">
         <security https="true" auth="true"/>
         <event type="service" path="" invoke="createPartyRelationshipContactAccount"/>

Modified: ofbiz/trunk/framework/widget/config/widget.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/config/widget.properties?rev=832294&r1=832293&r2=832294&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/config/widget.properties (original)
+++ ofbiz/trunk/framework/widget/config/widget.properties Tue Nov  3 03:59:01 2009
@@ -26,6 +26,9 @@
 # Default number of items to be displayed per page in a list form
 widget.form.defaultViewSize=20
 
+# Default text find field's option
+widget.form.defaultTextFindOption=contains
+
 # Controls the initial results display in Find screens. If set to Y, the
 # search result list will be populated when the Find screen first appears.
 # If set to N, the search result list will be empty when the Find screen

Modified: ofbiz/trunk/framework/widget/dtd/widget-form.xsd
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-form.xsd?rev=832294&r1=832293&r2=832294&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/dtd/widget-form.xsd (original)
+++ ofbiz/trunk/framework/widget/dtd/widget-form.xsd Tue Nov  3 03:59:01 2009
@@ -557,6 +557,10 @@
             </xs:simpleType>
         </xs:attribute>
     </xs:attributeGroup>
+    <xs:element name="container" substitutionGroup="AllFields">
+        <xs:complexType>
+        </xs:complexType>
+    </xs:element>
     <xs:element name="date-find" substitutionGroup="AllFields">
         <xs:complexType>
             <xs:attributeGroup ref="attlist.date-find"/>
@@ -1083,7 +1087,7 @@
                 </xs:restriction>
             </xs:simpleType>
         </xs:attribute>
-        <xs:attribute name="default-option" default="like">
+        <xs:attribute name="default-option">
             <xs:simpleType>
                 <xs:restriction base="xs:string">
                     <xs:enumeration value="equals"/>

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/fo/FoFormRenderer.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/fo/FoFormRenderer.java?rev=832294&r1=832293&r2=832294&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/fo/FoFormRenderer.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/fo/FoFormRenderer.java Tue Nov  3 03:59:01 2009
@@ -31,6 +31,7 @@
 import org.ofbiz.widget.form.ModelForm;
 import org.ofbiz.widget.form.ModelFormField;
 import org.ofbiz.widget.form.ModelFormField.CheckField;
+import org.ofbiz.widget.form.ModelFormField.ContainerField;
 import org.ofbiz.widget.form.ModelFormField.DateFindField;
 import org.ofbiz.widget.form.ModelFormField.DateTimeField;
 import org.ofbiz.widget.form.ModelFormField.DisplayField;
@@ -416,4 +417,7 @@
 
     public void renderHyperlinkTitle(Appendable writer, Map<String, Object> context, ModelFormField modelFormField, String titleText) throws IOException {
     }
+    
+    public void renderContainerFindField(Appendable writer, Map<String, Object> context, ContainerField containerField) throws IOException {
+    }
 }

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/FormStringRenderer.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/FormStringRenderer.java?rev=832294&r1=832293&r2=832294&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/FormStringRenderer.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/FormStringRenderer.java Tue Nov  3 03:59:01 2009
@@ -90,6 +90,7 @@
     public void renderPasswordField(Appendable writer, Map<String, Object> context, ModelFormField.PasswordField textField) throws IOException;
     public void renderImageField(Appendable writer, Map<String, Object> context, ModelFormField.ImageField textField) throws IOException;
     public void renderBanner(Appendable writer, Map<String, Object> context, ModelForm.Banner banner) throws IOException;
+    public void renderContainerFindField(Appendable writer, Map<String, Object> context, ModelFormField.ContainerField containerField) throws IOException;
     public void renderFieldGroupOpen(Appendable writer, Map<String, Object> context, ModelForm.FieldGroup fieldGroup) throws IOException;
     public void renderFieldGroupClose(Appendable writer, Map<String, Object> context, ModelForm.FieldGroup fieldGroup) throws IOException;
 }

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/MacroFormRenderer.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/MacroFormRenderer.java?rev=832294&r1=832293&r2=832294&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/MacroFormRenderer.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/MacroFormRenderer.java Tue Nov  3 03:59:01 2009
@@ -53,6 +53,7 @@
 import org.ofbiz.widget.ModelWidget;
 import org.ofbiz.widget.WidgetWorker;
 import org.ofbiz.widget.form.ModelFormField.CheckField;
+import org.ofbiz.widget.form.ModelFormField.ContainerField;
 import org.ofbiz.widget.form.ModelFormField.DateFindField;
 import org.ofbiz.widget.form.ModelFormField.DateTimeField;
 import org.ofbiz.widget.form.ModelFormField.DisplayEntityField;
@@ -951,8 +952,9 @@
             if (items.length() >1) {
                 items.append(",");
             }
-            items.append("{'value':'");
+            items.append("{'key':'");
             items.append(optionValue.getKey());
+            items.append("', 'description':'" + optionValue.getDescription());
             items.append("'}");
         }
         items.append("]");
@@ -965,9 +967,9 @@
         sr.append(className);
         sr.append("\" alert=\"");
         sr.append(alert);
-        sr.append(" currentValue=\"");
+        sr.append("\" currentValue=\"");
         sr.append(currentValue);
-        sr.append("\" noCurrentSelectedKey=");
+        sr.append("\" noCurrentSelectedKey=\"");
         sr.append(noCurrentSelectedKey);
         sr.append("\" name=\"");
         sr.append(name);
@@ -1569,7 +1571,6 @@
         String ignoreCase = UtilProperties.getMessage("conditional", "ignore_case", locale);
         boolean ignCase = textFindField.getIgnoreCase();
         boolean hideIgnoreCase = textFindField.getHideIgnoreCase();
-
         StringWriter sr = new StringWriter();
         sr.append("<@renderTextFindField ");
         sr.append(" name=\"");
@@ -2842,4 +2843,21 @@
         sr.append("\" />");
         executeMacro(sr.toString());
     }
+    
+    @Override
+    public void renderContainerFindField(Appendable writer,
+            Map<String, Object> context, ContainerField containerField)
+            throws IOException {
+        // TODO Auto-generated method stub
+        String id = "";
+        if (UtilValidate.isNotEmpty(containerField.getId())) {
+            id = containerField.getId();
+        }
+        StringWriter sr = new StringWriter();
+        sr.append("<@renderContainerField ");
+        sr.append("id=\"");
+        sr.append(id);
+        sr.append("\" />");
+        executeMacro(sr.toString());
+    }
 }

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java?rev=832294&r1=832293&r2=832294&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java Tue Nov  3 03:59:01 2009
@@ -220,6 +220,8 @@
                 this.fieldInfo = new PasswordField(subElement, this);
             } else if ("image".equals(subElementName)) {
                 this.fieldInfo = new ImageField(subElement, this);
+            } else if ("container".equals(subElementName)) {
+                this.fieldInfo = new ContainerField(subElement, this);
             } else if ("on-field-event-update-area".equals(subElementName)) {
                 addOnEventUpdateArea(new UpdateArea(subElement));
             } else {
@@ -1438,6 +1440,7 @@
             fieldTypeByName.put("password", Integer.valueOf(18));
             fieldTypeByName.put("image", Integer.valueOf(19));
             fieldTypeByName.put("display-entity", Integer.valueOf(20));
+            fieldTypeByName.put("container", Integer.valueOf(21));
         }
 
         protected int fieldType;
@@ -3363,7 +3366,11 @@
             this.ignoreCase = "true".equals(element.getAttribute("ignore-case"));
             this.hideIgnoreCase = "true".equals(element.getAttribute("hide-options")) ||
                 "ignore-case".equals(element.getAttribute("hide-options")) ? true : false;
-            this.defaultOption = element.getAttribute("default-option");
+            if(element.hasAttribute("default-option")) {
+                this.defaultOption = element.getAttribute("default-option");
+            } else {
+             this.defaultOption = UtilProperties.getPropertyValue("widget", "widget.form.defaultTextFindOption", "like");
+            }
             this.hideOptions = "true".equals(element.getAttribute("hide-options")) ||
                 "options".equals(element.getAttribute("hide-options")) ? true : false;
         }
@@ -3656,4 +3663,41 @@
         }
 
     }
+    
+    public static class ContainerField extends FieldInfo {
+        protected String id;
+
+        public ContainerField() {
+            super();
+            // TODO Auto-generated constructor stub
+        }
+
+        public ContainerField(Element element, ModelFormField modelFormField) {
+            super(element, modelFormField);
+            // TODO Auto-generated constructor stub
+            this.setId(modelFormField.getIdName());
+        }
+
+        public ContainerField(int fieldSource, int fieldType,
+                ModelFormField modelFormField) {
+            super(fieldSource, fieldType, modelFormField);
+            // TODO Auto-generated constructor stub
+        }
+
+        @Override
+        public void renderFieldString(Appendable writer,
+                Map<String, Object> context,
+                FormStringRenderer formStringRenderer) throws IOException {
+            // TODO Auto-generated method stub
+            formStringRenderer.renderContainerFindField(writer, context, this);
+        }
+
+        public String getId() {
+            return id;
+        }
+
+        public void setId(String id) {
+            this.id = id;
+        }
+    }
 }

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java?rev=832294&r1=832293&r2=832294&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java Tue Nov  3 03:59:01 2009
@@ -50,6 +50,7 @@
 import org.ofbiz.widget.form.ModelForm;
 import org.ofbiz.widget.form.ModelFormField;
 import org.ofbiz.widget.form.ModelFormField.CheckField;
+import org.ofbiz.widget.form.ModelFormField.ContainerField;
 import org.ofbiz.widget.form.ModelFormField.DateFindField;
 import org.ofbiz.widget.form.ModelFormField.DateTimeField;
 import org.ofbiz.widget.form.ModelFormField.DisplayEntityField;
@@ -2882,6 +2883,14 @@
              writer.append(titleText);
         }
     }
+    
+    public void renderContainerFindField(Appendable writer, Map<String, Object> context, ContainerField containerField) throws IOException {
+        String id = "";
+        if (UtilValidate.isNotEmpty(containerField.getId())) {
+            id = containerField.getId();
+        }
+        writer.append("<div id=\"" + id + "\"/>");
+    }
 
     /** Create an ajaxXxxx JavaScript CSV string from a list of UpdateArea objects. See
      * <code>selectall.js</code>.

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/text/TextFormRenderer.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/text/TextFormRenderer.java?rev=832294&r1=832293&r2=832294&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/text/TextFormRenderer.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/text/TextFormRenderer.java Tue Nov  3 03:59:01 2009
@@ -31,6 +31,7 @@
 import org.ofbiz.widget.form.ModelForm;
 import org.ofbiz.widget.form.ModelFormField;
 import org.ofbiz.widget.form.ModelFormField.CheckField;
+import org.ofbiz.widget.form.ModelFormField.ContainerField;
 import org.ofbiz.widget.form.ModelFormField.DateFindField;
 import org.ofbiz.widget.form.ModelFormField.DateTimeField;
 import org.ofbiz.widget.form.ModelFormField.DisplayField;
@@ -295,4 +296,7 @@
 
     public void renderHyperlinkTitle(Appendable writer, Map<String, Object> context, ModelFormField modelFormField, String titleText) {
     }
+    
+    public void renderContainerFindField(Appendable writer, Map<String, Object> context, ContainerField containerField) throws IOException {
+    }
 }

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/xml/XmlFormRenderer.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/xml/XmlFormRenderer.java?rev=832294&r1=832293&r2=832294&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/xml/XmlFormRenderer.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/xml/XmlFormRenderer.java Tue Nov  3 03:59:01 2009
@@ -30,6 +30,7 @@
 import org.ofbiz.widget.form.ModelForm;
 import org.ofbiz.widget.form.ModelFormField;
 import org.ofbiz.widget.form.ModelFormField.CheckField;
+import org.ofbiz.widget.form.ModelFormField.ContainerField;
 import org.ofbiz.widget.form.ModelFormField.DateFindField;
 import org.ofbiz.widget.form.ModelFormField.DateTimeField;
 import org.ofbiz.widget.form.ModelFormField.DisplayField;
@@ -335,4 +336,7 @@
 
     public void renderHyperlinkTitle(Appendable writer, Map<String, Object> context, ModelFormField modelFormField, String titleText) throws IOException {
     }
+    
+    public void renderContainerFindField(Appendable writer, Map<String, Object> context, ContainerField containerField) throws IOException {
+    }
 }

Modified: ofbiz/trunk/framework/widget/templates/htmlFormMacroLibrary.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/templates/htmlFormMacroLibrary.ftl?rev=832294&r1=832293&r2=832294&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/templates/htmlFormMacroLibrary.ftl (original)
+++ ofbiz/trunk/framework/widget/templates/htmlFormMacroLibrary.ftl Tue Nov  3 03:59:01 2009
@@ -456,6 +456,7 @@
 <#if rightText?has_content><td align="right"><#if rightStyle?has_content><div class="${rightStyle}"></#if>${rightText}<#if rightStyle?has_content></div></#if></td><#rt/></#if>
 </tr> </table>
 </#macro>
+<#macro renderContainerField id><div id="${id?if_exists}"/></#macro>
 <#macro renderFieldGroupOpen style id title collapsed collapsibleAreaId collapsible expandToolTip collapseToolTip>
 <#if style?has_content || id?has_content || title?has_content>
  <div class="fieldgroup<#if style?has_content> ${style}</#if>"<#if id?has_content> id="${id}"</#if>><div class="fieldgroup-title-bar"><table><tr><td class="collapse"><#rt/>