Author: erwan
Date: Tue Oct 30 21:20:42 2012
New Revision: 1403875
URL: http://svn.apache.org/viewvc?rev=1403875&view=rev
Log:
A patch from Olivier Heintz for portletwidget branch OFBIZ-5060 Add portlet
PartyContents and enhance Jquery-upload
Added:
ofbiz/branches/20120329_portletWidget/framework/images/webapp/images/jquery/plugins/jquery.upload.js
(with props)
Modified:
ofbiz/branches/20120329_portletWidget/applications/party/config/PartyUiLabels.xml
ofbiz/branches/20120329_portletWidget/applications/party/data/PartyPortletData.xml
ofbiz/branches/20120329_portletWidget/applications/party/webapp/partymgr/WEB-INF/controller-portlet-party.xml
ofbiz/branches/20120329_portletWidget/applications/party/widget/ProfileForms.xml
ofbiz/branches/20120329_portletWidget/applications/party/widget/ProfileMenus.xml
ofbiz/branches/20120329_portletWidget/applications/party/widget/ProfileScreens.xml
ofbiz/branches/20120329_portletWidget/applications/party/widget/partymgr/PartyForms.xml
ofbiz/branches/20120329_portletWidget/applications/party/widget/partymgr/ProfileScreens.xml
ofbiz/branches/20120329_portletWidget/framework/common/src/org/ofbiz/common/CommonEvents.java
ofbiz/branches/20120329_portletWidget/framework/common/webcommon/WEB-INF/common-controller.xml
ofbiz/branches/20120329_portletWidget/framework/common/widget/CommonScreens.xml
ofbiz/branches/20120329_portletWidget/framework/images/webapp/images/selectall.js
ofbiz/branches/20120329_portletWidget/framework/widget/src/org/ofbiz/widget/form/MacroFormRenderer.java
ofbiz/branches/20120329_portletWidget/framework/widget/templates/htmlFormMacroLibrary.ftl
Modified:
ofbiz/branches/20120329_portletWidget/applications/party/config/PartyUiLabels.xml
URL:
http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/applications/party/config/PartyUiLabels.xml?rev=1403875&r1=1403874&r2=1403875&view=diff
==============================================================================
---
ofbiz/branches/20120329_portletWidget/applications/party/config/PartyUiLabels.xml
(original)
+++
ofbiz/branches/20120329_portletWidget/applications/party/config/PartyUiLabels.xml
Tue Oct 30 21:20:42 2012
@@ -1071,7 +1071,7 @@
<property key="FormFieldTitle_partyContentTypeId">
<value xml:lang="de">Ãbergeordnete Kontakttyp ID</value>
<value xml:lang="en">Parent Content Type Id</value>
- <value xml:lang="fr">Type de contenu parent</value>
+ <value xml:lang="fr">Usage du contenu</value>
<value xml:lang="hi_IN">à¤à¤à¥à¤(Parent)
सामà¤à¥à¤°à¥(content) पà¥à¤°à¤à¤¾à¤° à¤à¤¾
à¤à¥à¤°à¤®à¤¾à¤à¤</value>
<value xml:lang="it">Tipo contenuto padre</value>
<value xml:lang="pt_BR">Id do tipo de conteúdo superior</value>
Modified:
ofbiz/branches/20120329_portletWidget/applications/party/data/PartyPortletData.xml
URL:
http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/applications/party/data/PartyPortletData.xml?rev=1403875&r1=1403874&r2=1403875&view=diff
==============================================================================
---
ofbiz/branches/20120329_portletWidget/applications/party/data/PartyPortletData.xml
(original)
+++
ofbiz/branches/20120329_portletWidget/applications/party/data/PartyPortletData.xml
Tue Oct 30 21:20:42 2012
@@ -212,6 +212,9 @@
portletTypeId="Screenlet" component="party" subComponent="Profile"
useScreen="Y" useScript="N" useMenu="Y" pkIdName="partyId"
titleLabel="PartyPaymentMethodInformation"
screenshot="/images/portlets/PartyPaymentMethods.png"
securityServiceName="" securityMainAction="VIEW"/>
+ <PortalPortlet portalPortletId="PartyContents" portletName="Contents
associated to Party management" description="List and manage Contents
associated to one party"
+ portletTypeId="ScreenletList" component="party" subComponent="Profile"
useScreen="N" useScript="N" useMenu="Y" pkIdName="partyId"
+ titleLabel="PartyContent" securityMainAction="VIEW"/>
<PortletPortletCategory portalPortletId="PartyInfo"
portletCategoryId="PARTY_PROFILE"/>
<PortletPortletCategory portalPortletId="SelectParty"
portletCategoryId="PARTY_PROFILE"/>
@@ -226,6 +229,7 @@
<PortletPortletCategory portalPortletId="PartyIdentLists"
portletCategoryId="PARTY_PROFILE"/>
<PortletPortletCategory portalPortletId="PartyNotes"
portletCategoryId="PARTY_PROFILE"/>
<PortletPortletCategory portalPortletId="PartyPaymentMethods"
portletCategoryId="PARTY_PROFILE"/>
+ <PortletPortletCategory portalPortletId="PartyContents"
portletCategoryId="PARTY_PROFILE"/>
<PortalPage portalPageId="PartyRecap" sequenceNum="0" portalPageName="Party
Profile overview" description="Party profile page whith a lot of portlet"
ownerUserLoginId="_NA_"/>
@@ -243,7 +247,8 @@
<PortalPagePortlet portalPageId="PartyRecap" portalPortletId="PartyRoles"
portletSeqId="00001" columnSeqId="00002" sequenceNum="2"/>
<PortalPagePortlet portalPageId="PartyRecap"
portalPortletId="PartyAttributes" portletSeqId="00001" columnSeqId="00002"
sequenceNum="3"/>
<PortalPagePortlet portalPageId="PartyRecap"
portalPortletId="PartyAvsSettings" portletSeqId="00001" columnSeqId="00002"
sequenceNum="4"/>
- <PortalPagePortlet portalPageId="PartyRecap" portalPortletId="PartyNotes"
portletSeqId="00001" columnSeqId="00002" sequenceNum="5"/>
+ <PortalPagePortlet portalPageId="PartyRecap"
portalPortletId="PartyContents" portletSeqId="00001" columnSeqId="00002"
sequenceNum="5"/>
+ <PortalPagePortlet portalPageId="PartyRecap" portalPortletId="PartyNotes"
portletSeqId="00001" columnSeqId="00002" sequenceNum="6"/>
<PortalPortlet portalPortletId="PartyLastVisits" portletName="List last
Visits for the Party" description="Last 5 Visits of a certain party"
Modified:
ofbiz/branches/20120329_portletWidget/applications/party/webapp/partymgr/WEB-INF/controller-portlet-party.xml
URL:
http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/applications/party/webapp/partymgr/WEB-INF/controller-portlet-party.xml?rev=1403875&r1=1403874&r2=1403875&view=diff
==============================================================================
---
ofbiz/branches/20120329_portletWidget/applications/party/webapp/partymgr/WEB-INF/controller-portlet-party.xml
(original)
+++
ofbiz/branches/20120329_portletWidget/applications/party/webapp/partymgr/WEB-INF/controller-portlet-party.xml
Tue Oct 30 21:20:42 2012
@@ -351,6 +351,28 @@ under the License.
<response name="success" type="request" value="json"/>
<response name="error" type="request" value="json"/>
</request-map>
+<!--#Bam# jquery-submit-upload-file -->
+ <request-map uri="EditPartyContentPt"><security https="true"
auth="true"/><response name="success" type="view"
value="EditPartyContentPt"/></request-map>
+ <request-map uri="updatePartyContentJson">
+ <security https="true" auth="true"/>
+ <event type="service" invoke="updatePartyContent"/>
+ <response name="success" type="request" value="json"/>
+ <response name="error" type="request" value="json"/>
+ </request-map>
+ <request-map uri="uploadPartyContentJson">
+ <security auth="true" https="true"/>
+ <event type="service" invoke="uploadPartyContentFile"/>
+ <response name="success" type="request" value="jsonUpload"/>
+ <response name="error" type="request" value="jsonUpload"/>
+ </request-map>
+ <request-map uri="removePartyContentJson">
+ <security https="true" auth="true"/>
+ <event type="service" invoke="removePartyContent"/>
+ <response name="success" type="request" value="showPortlet"/>
+ <response name="error" type="request" value="showPortlet"/>
+ </request-map>
+<!--#Eam# jquery-submit-upload-file -->
+
<request-map uri="editPartyAttributePt">
<security https="true" auth="true"/>
@@ -434,6 +456,8 @@ under the License.
<view-map name="EditPartyNotePt" type="screen"
page="component://party/widget/ProfileScreens.xml#EditPartyNote"/>
<view-map name="AssocPartyNotePt" type="screen"
page="component://party/widget/ProfileScreens.xml#AssocPartyNote"/>
+ <view-map name="EditPartyContentPt" type="screen"
page="component://party/widget/ProfileScreens.xml#EditPartyContent"/><!--#Eam#
jquery-submit-upload-file -->
+
<view-map name="editPartyAttributePt" type="screen"
page="component://party/widget/ProfileScreens.xml#EditPartyAttribute"/>
<view-map name="editavsoverridePt" type="screen"
page="component://party/widget/ProfileScreens.xml#editavsoverride"/>
<view-map name="visitdetailPt" type="screen"
page="component://party/widget/VisitScreens.xml#visitdetail"/>
Modified:
ofbiz/branches/20120329_portletWidget/applications/party/widget/ProfileForms.xml
URL:
http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/applications/party/widget/ProfileForms.xml?rev=1403875&r1=1403874&r2=1403875&view=diff
==============================================================================
---
ofbiz/branches/20120329_portletWidget/applications/party/widget/ProfileForms.xml
(original)
+++
ofbiz/branches/20120329_portletWidget/applications/party/widget/ProfileForms.xml
Tue Oct 30 21:20:42 2012
@@ -248,6 +248,7 @@ under the License.
<field name="PartyUserLoginsMenu"> <radio
no-current-selected-key="Y"><option key="Y"/><option key="N"/></radio></field>
<field name="PartyRolesMenu"> <radio
no-current-selected-key="Y"><option key="Y"/><option key="N"/></radio></field>
<field name="PartyNotesMenu"> <radio
no-current-selected-key="Y"><option key="Y"/><option key="N"/></radio></field>
+ <field name="PartyContentsMenu"> <radio
no-current-selected-key="Y"><option key="Y"/><option key="N"/></radio></field>
<field name="PartyPaymentsMenu"> <radio
no-current-selected-key="Y"><option key="Y"/><option key="N"/></radio></field>
<field name="PartyIdentListsMenu"> <radio
no-current-selected-key="Y"><option key="Y"/><option key="N"/></radio></field>
<field name="PartyAttributesMenu"> <radio
no-current-selected-key="Y"><option key="Y"/><option key="N"/></radio></field>
@@ -869,6 +870,97 @@ under the License.
<parameter param-name="partyId"/>
</on-event-update-area>
</form>
+ <form name="PartyContents" type="list" list-name="listIt"
separate-columns="false" odd-row-style="alternate-row"
default-table-style="basic-table hover-bar">
+ <actions>
+ <entity-and entity-name="PartyContentDetail" list="listIt">
+ <field-map field-name="partyId"
from-field="parameters.partyId"/>
+ </entity-and>
+ </actions>
+ <field name="partyId"><hidden/></field>
+ <field name="contentId" title="${uiLabelMap.CommonId}">
+ <show-portlet portlet-id="${portalPortletId}"
target="EditPartyContentPt" area-id="${editAreaDivId}"
description="${contentId}">
+ <parameter param-name="contentId"/>
+ <parameter param-name="partyId"/>
+ <parameter param-name="partyContentTypeId"/>
+ <parameter param-name="fromDate"/>
+ </show-portlet>
+ </field>
+ <field name="contentName"><display/></field>
+ <field name="partyContentTypeId"><display-entity
entity-name="PartyContentType"/></field>
+ <field name="description"><display/></field>
+ <field name="statusId"><display-entity
entity-name="StatusItem"/></field>
+ <field name="localeString"><display-entity entity-name="CountryCode"
key-field-name="countryCode"
description="${countryName}${countryCode}"/></field>
+<!-- <field name="contentTypeId"><display-entity
entity-name="ContentType"/></field>-->
+ <field name="mimeTypeId"><display-entity
entity-name="MimeType"/></field>
+ <field name="dataResourceId"
title="${uiLabelMap.FormFieldTitle_dataResourceName}"
use-when="dataResourceId==null"><display/> </field>
+ <field name="dataResourceId"
title="${uiLabelMap.FormFieldTitle_dataResourceName}"
use-when="dataResourceId!=null">
+ <display-entity entity-name="DataResource"
description="${dataResourceName}"/>
+ </field>
+ <field name="viewLink" title=" " use-when="dataResourceId!=null">
+ <hyperlink target="img/${contentName}" target-type="inter-app"
target-window="upload" image-location="${iconsPurpose.Download}"
image-title="${uiLabelMap.IconsTooltips_Download}">
+ <parameter param-name="imgId" from-field="dataResourceId"/>
+ </hyperlink>
+ </field>
+ <field name="deleteLink" title=" ">
+ <show-portlet portlet-id="${portalPortletId}" area-id="${areaId}"
target="removePartyContentJson" image-location="${iconsPurpose.Delete}"
image-title="${uiLabelMap.IconsTooltips_Delete}" request-confirmation="true"
confirmation-message="${uiLabelMap.CommonConfirmDelete} : ${contentName}">
+ <parameter param-name="contentId"/>
+ <parameter param-name="partyId"/>
+ <parameter param-name="partyContentTypeId"/>
+ <parameter param-name="fromDate"/>
+ </show-portlet>
+ </field>
+ </form>
+
+ <form name="EditPartyContent" target="updatePartyContentJson"
type="upload" default-map-name="content"
+ focus-field-name="contentTypeId" header-row-style="header-row"
default-table-style="basic-table">
+ <actions>
+ <entity-one entity-name="StatusItem" value-field="currentStatus"
auto-field-map="false">
+ <field-map field-name="statusId"
from-field="content.statusId"/>
+ </entity-one>
+ <entity-one entity-name="DataResource" value-field="dataResource"
auto-field-map="false">
+ <field-map field-name="dataResourceId"
from-field="content.dataResourceId"/>
+ </entity-one>
+ </actions>
+ <alt-target use-when="content==null" target="uploadPartyContentJson"/>
+ <field name="partyId" map-name="parameters"><hidden/></field>
+ <field name="dataResourceId" map-name="dataResource"
use-when="content!=null"><hidden/></field>
+ <field use-when="content!=null" name="contentId"
tooltip="${uiLabelMap.CommonNotModifRecreat}"><display/></field>
+ <field name="dataCategoryId"><hidden value="PERSONAL"/></field>
+ <field name="contentTypeId"><hidden value="DOCUMENT"/></field>
+ <field name="statusId"><hidden value="CTNT_PUBLISHED"/></field>
+ <field name="uploadedFile" title="${uiLabelMap.CommonUpload}"
use-when="content==null"><file/></field>
+ <field name="fromDate" use-when="content!=null"><display
type="date-time"/></field>
+ <field name="thruDate" use-when="content!=null"><date-time/></field>
+ <field name="partyContentTypeId">
+ <drop-down allow-empty="false">
+ <entity-options description="${description}"
entity-name="PartyContentType"/>
+ </drop-down>
+ </field>
+ <field name="mimeTypeId" >
+ <drop-down allow-empty="false">
+ <entity-options description="${description}"
entity-name="MimeType"/>
+ </drop-down>
+ </field>
+ <field name="isPublic" title="${uiLabelMap.PartyIsPublic}"
map-name="dataResource">
+ <drop-down no-current-selected-key="N">
+ <option key="N" description="${uiLabelMap.CommonNo}"/>
+ <option key="Y" description="${uiLabelMap.CommonYes}"/>
+ </drop-down>
+ </field>
+ <field name="submitButton" title="${groovy: content==null ?
uiLabelMap.CommonAdd: uiLabelMap.CommonSave}"><submit
button-type="button"/></field>
+ <field name="back" title=" " position="2" widget-style="buttontext">
+ <show-portlet portlet-id="${parameters.portalPortletId}"
area-id="${parameters.areaId}" description="${uiLabelMap.CommonBack}" >
+ <parameter param-name="partyId"
from-field="parameters.partyId"/>
+ </show-portlet>
+ </field>
+ <on-event-update-area event-type="submit"
area-id="${parameters.areaId}" area-target="showPortlet">
+ <parameter param-name="partyId" from-field="parameters.partyId"/>
+ </on-event-update-area>
+ <sort-order>
+ <sort-field name="uploadedFile"/>
+ </sort-order>
+ </form>
+
<form name="PartyAttributes" type="list" odd-row-style="alternate-row"
default-table-style="basic-table hover-bar">
Modified:
ofbiz/branches/20120329_portletWidget/applications/party/widget/ProfileMenus.xml
URL:
http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/applications/party/widget/ProfileMenus.xml?rev=1403875&r1=1403874&r2=1403875&view=diff
==============================================================================
---
ofbiz/branches/20120329_portletWidget/applications/party/widget/ProfileMenus.xml
(original)
+++
ofbiz/branches/20120329_portletWidget/applications/party/widget/ProfileMenus.xml
Tue Oct 30 21:20:42 2012
@@ -143,6 +143,20 @@
<parameter param-name="partyId" from-field="parameters.partyId"/>
</show-portlet>
</menu-item>
+
+ <menu-item name="PartyContents">
+ <condition>
+ <or>
+ <if-empty field="PartyContentsMenu"/>
+ <if-compare field="PartyContentsMenu" operator="equals"
value="Y"/>
+ </or>
+ </condition>
+ <show-portlet portlet-id="PartyContents" target="ShowPartyDetail"
area-id="${areaId}" image-location="${iconsPurpose.Attach}"
+
image-title="${uiLabelMap.IconsTooltips_Attach}">
+ <parameter param-name="partyId" from-field="parameters.partyId"/>
+ </show-portlet>
+ </menu-item>
+
<menu-item name="PartyPayments">
<condition>
<or>
@@ -475,6 +489,24 @@
</menu-item>
</menu>
+ <menu name="PartyContents" extends="CommonTabBarMenu"
extends-resource="component://common/widget/CommonMenus.xml">
+ <actions>
+ <set field="areaId" from-field="parameters.areaId"
default-value="${currentAreaId}"/>
+ </actions>
+ <menu-item name="RefreshPortlet">
+ <show-portlet portlet-id="${portalPortletId}" area-id="${areaId}"
image-location="${iconsPurpose.Refresh}"
image-title="${uiLabelMap.IconsTooltips_Refresh}">
+ <parameter param-name="partyId"
from-field="parameters.partyId"/>
+ </show-portlet>
+ </menu-item>
+ <menu-item name="AddPartyContent">
+ <condition><not><if-empty
field="parameters.partyId"/></not></condition>
+ <show-portlet portlet-id="${portalPortletId}"
target="EditPartyContentPt" area-id="${editAreaDivId}"
image-location="${iconsPurpose.Add}"
image-title="${uiLabelMap.IconsTooltips_Add}">
+ <parameter param-name="partyId"
from-field="parameters.partyId"/>
+ </show-portlet>
+ </menu-item>
+ </menu>
+
+
<menu name="PartyAttributes" extends="CommonTabBarMenu"
extends-resource="component://common/widget/CommonMenus.xml">
<actions>
<set field="areaId" from-field="parameters.areaId"
default-value="${currentAreaId}"/>
Modified:
ofbiz/branches/20120329_portletWidget/applications/party/widget/ProfileScreens.xml
URL:
http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/applications/party/widget/ProfileScreens.xml?rev=1403875&r1=1403874&r2=1403875&view=diff
==============================================================================
---
ofbiz/branches/20120329_portletWidget/applications/party/widget/ProfileScreens.xml
(original)
+++
ofbiz/branches/20120329_portletWidget/applications/party/widget/ProfileScreens.xml
Tue Oct 30 21:20:42 2012
@@ -454,6 +454,25 @@
</section>
</screen>
+ <screen name="EditPartyContent">
+ <section>
+ <condition><not><if-empty
field="parameters.partyId"/></not></condition>
+ <actions>
+ <set field="partyId" from-field="parameters.partyId"/>
+ <set field="contentId" from-field="parameters.contentId"/>
+ <entity-one value-field="content"
entity-name="PartyContentDetail"/>
+ </actions>
+ <widgets>
+ <decorator-screen name="portletUiLabelDecorator"
location="component://party/widget/CommonScreens.xml">
+ <decorator-section name="body">
+ <include-form name="EditPartyContent"
location="component://party/widget/ProfileForms.xml"/>
+ </decorator-section>
+ </decorator-screen>
+ </widgets>
+ </section>
+ </screen>
+
+
<screen name="PartyPaymentMethods">
<section>
<condition><not><if-empty
field="parameters.partyId"/></not></condition>
Modified:
ofbiz/branches/20120329_portletWidget/applications/party/widget/partymgr/PartyForms.xml
URL:
http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/applications/party/widget/partymgr/PartyForms.xml?rev=1403875&r1=1403874&r2=1403875&view=diff
==============================================================================
---
ofbiz/branches/20120329_portletWidget/applications/party/widget/partymgr/PartyForms.xml
(original)
+++
ofbiz/branches/20120329_portletWidget/applications/party/widget/partymgr/PartyForms.xml
Tue Oct 30 21:20:42 2012
@@ -633,6 +633,23 @@ under the License.
<field name="createButton" use-when="content==null"><submit
button-type="button"/></field>
<field name="updateButton" use-when="content!=null"><submit
button-type="button"/></field>
</form>
+<!--#Bam# jquery-submit-upload-file
+ currently not activated, is for : if used uploadJs for screen
+ <form name="UploadPartyContent" extends="AddPartyContent">
+ <actions>
+ <set field="content" from-field="nullField"/>
+ </actions>
+ <alt-target use-when="content==null" target="uploadPartyContentJson"/>
+ <field name="dataResourceName"><ignored/></field>
+ <field name="uploadedFile"
title="${uiLabelMap.CommonUpload}"><file/></field>
+ <on-event-update-area area-target="partyContentList"
event-type="submit" area-id="partyContentList">
+ <parameter param-name="partyId"/>
+ </on-event-update-area>
+ <sort-order>
+ <sort-field name="uploadedFile"/>
+ </sort-order>
+ </form>
+#Eam# jquery-submit-upload-file -->
<form name="ListPartyContents" type="list" separate-columns="false"
odd-row-style="alternate-row" default-table-style="basic-table
hover-bar">
Modified:
ofbiz/branches/20120329_portletWidget/applications/party/widget/partymgr/ProfileScreens.xml
URL:
http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/applications/party/widget/partymgr/ProfileScreens.xml?rev=1403875&r1=1403874&r2=1403875&view=diff
==============================================================================
---
ofbiz/branches/20120329_portletWidget/applications/party/widget/partymgr/ProfileScreens.xml
(original)
+++
ofbiz/branches/20120329_portletWidget/applications/party/widget/partymgr/ProfileScreens.xml
Tue Oct 30 21:20:42 2012
@@ -439,6 +439,12 @@
<html-template
location="component://party/webapp/partymgr/party/profileblocks/Content.ftl"/>
</html>
</platform-specific>
+<!--#Bam# jquery-submit-upload-file
+ currently not activated, is for : if used uploadJs for screen
+ <screenlet title="${uiLabelMap.PageTitleAddPartyContent}">
+ <include-form name="UploadPartyContent"
location="component://party/widget/partymgr/PartyForms.xml"/>
+ </screenlet>
+#Eam# jquery-submit-upload-file -->
</widgets>
</section>
</screen>
Modified:
ofbiz/branches/20120329_portletWidget/framework/common/src/org/ofbiz/common/CommonEvents.java
URL:
http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/framework/common/src/org/ofbiz/common/CommonEvents.java?rev=1403875&r1=1403874&r2=1403875&view=diff
==============================================================================
---
ofbiz/branches/20120329_portletWidget/framework/common/src/org/ofbiz/common/CommonEvents.java
(original)
+++
ofbiz/branches/20120329_portletWidget/framework/common/src/org/ofbiz/common/CommonEvents.java
Tue Oct 30 21:20:42 2012
@@ -274,8 +274,26 @@ public class CommonEvents {
return "success";
}
+ /*#Bam# jquery-submit-upload-file*/
+ public static String
jsonUploadResponseFromRequestAttributes(HttpServletRequest request,
HttpServletResponse response) {
+ // pull out the service response from the request attribute
+ Map<String, Object> attrMap = UtilHttp.getJSONAttributeMap(request);
+
+ // create a JSON Object for return
+ JSONObject json = JSONObject.fromObject(attrMap);
+ writeJSONtoResponse(json, response, "text/html"); //text-html since
jquery.upload don't work wit contentType application/x-json :
http://lagoscript.org/jquery/upload/documentation
+
+ return "success";
+ }
+ /*#Eam# jquery-submit-upload-file*/
private static void writeJSONtoResponse(JSON json, HttpServletResponse
response) {
+ /*#Bam# jquery-submit-upload-file*/
+ writeJSONtoResponse(json, response, "application/x-json");
+ }
+
+ private static void writeJSONtoResponse(JSON json, HttpServletResponse
response, String contentType ) {
+ /*#Eam# jquery-submit-upload-file*/
String jsonStr = json.toString();
if (jsonStr == null) {
Debug.logError("JSON Object was empty; fatal error!", module);
@@ -283,7 +301,11 @@ public class CommonEvents {
}
// set the X-JSON content type
+ /*#Bam# jquery-submit-upload-file
response.setContentType("application/x-json");
+ */
+ response.setContentType(contentType);
+ /*#Eam# jquery-submit-upload-file*/
// jsonStr.length is not reliable for unicode characters
try {
response.setContentLength(jsonStr.getBytes("UTF8").length);
Modified:
ofbiz/branches/20120329_portletWidget/framework/common/webcommon/WEB-INF/common-controller.xml
URL:
http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/framework/common/webcommon/WEB-INF/common-controller.xml?rev=1403875&r1=1403874&r2=1403875&view=diff
==============================================================================
---
ofbiz/branches/20120329_portletWidget/framework/common/webcommon/WEB-INF/common-controller.xml
(original)
+++
ofbiz/branches/20120329_portletWidget/framework/common/webcommon/WEB-INF/common-controller.xml
Tue Oct 30 21:20:42 2012
@@ -180,6 +180,13 @@ under the License.
<event type="java" path="org.ofbiz.common.CommonEvents"
invoke="jsonResponseFromRequestAttributes"/>
<response name="success" type="none"/>
</request-map>
+ <!--#Bam# jquery-submit-upload-file -->
+ <request-map uri="jsonUpload">
+ <security direct-request="false"/>
+ <event type="java" path="org.ofbiz.common.CommonEvents"
invoke="jsonUploadResponseFromRequestAttributes"/>
+ <response name="success" type="none"/>
+ </request-map>
+ <!--#Eam# jquery-submit-upload-file -->
<request-map uri="showHelp">
<security https="true" auth="true"/>
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=1403875&r1=1403874&r2=1403875&view=diff
==============================================================================
---
ofbiz/branches/20120329_portletWidget/framework/common/widget/CommonScreens.xml
(original)
+++
ofbiz/branches/20120329_portletWidget/framework/common/widget/CommonScreens.xml
Tue Oct 30 21:20:42 2012
@@ -145,6 +145,7 @@ under the License.
<set field="layoutSettings.javaScripts[+0]"
value="/images/jquery/plugins/asmselect/jquery.asmselect-1.0.4a-beta.js"
global="true" />
<set field="layoutSettings.javaScripts[+0]"
value="/images/jquery/plugins/datetimepicker/jquery-ui-timepicker-addon-1.0.5.js"
global="true" />
<set field="layoutSettings.javaScripts[+0]"
value="/images/jquery/plugins/jquery.maskedinput-1.2.2.min.js" global="true" />
+ <set field="layoutSettings.javaScripts[+0]"
value="/images/jquery/plugins/jquery.upload.js" global="true"/><!--#Eam#
jquery-submit-upload-file -->
<set field="layoutSettings.javaScripts[+0]"
value="/images/jquery/ui/js/jquery-ui-1.9.0.custom.min.js" global="true" />
<set field="layoutSettings.javaScripts[+0]"
value="/images/jquery/plugins/jeditable/jquery.jeditable.js" global="true" />
<set field="layoutSettings.javaScripts[+0]"
value="/images/jquery/plugins/validate/jquery.validate.min.js" global="true" />
Added:
ofbiz/branches/20120329_portletWidget/framework/images/webapp/images/jquery/plugins/jquery.upload.js
URL:
http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/framework/images/webapp/images/jquery/plugins/jquery.upload.js?rev=1403875&view=auto
==============================================================================
---
ofbiz/branches/20120329_portletWidget/framework/images/webapp/images/jquery/plugins/jquery.upload.js
(added)
+++
ofbiz/branches/20120329_portletWidget/framework/images/webapp/images/jquery/plugins/jquery.upload.js
Tue Oct 30 21:20:42 2012
@@ -0,0 +1,266 @@
+/*
+ * jQuery.upload v1.0.2
+ *
+ * Copyright (c) 2010 lagos
+ * Dual licensed under the MIT and GPL licenses.
+ *
+ * http://lagoscript.org
+ */
+(function($) {
+
+ var uuid = 0;
+
+ $.fn.upload = function(url, data, callback, type) {
+ var self = this, inputs, checkbox, checked,
+ iframeName = 'jquery_upload' + ++uuid,
+ iframe = $('<iframe name="' + iframeName + '"
style="position:absolute;top:-9999px" />').appendTo('body'),
+ form = '<form target="' + iframeName + '" method="post"
enctype="multipart/form-data" />';
+
+ if ($.isFunction(data)) {
+ type = callback;
+ callback = data;
+ data = {};
+ }
+
+ checkbox = $('input:checkbox', this);
+ checked = $('input:checked', this);
+ form = self.wrapAll(form).parent('form').attr('action', url);
+
+ // Make sure radios and checkboxes keep original values
+ // (IE resets checkd attributes when appending)
+ checkbox.removeAttr('checked');
+ checked.attr('checked', true);
+
+ inputs = createInputs(data);
+ inputs = inputs ? $(inputs).appendTo(form) : null;
+
+ form.submit(function() {
+ iframe.load(function() {
+ var data = handleData(this, type),
+ checked = $('input:checked', self);
+
+ form.after(self).remove();
+ checkbox.removeAttr('checked');
+ checked.attr('checked', true);
+ if (inputs) {
+ inputs.remove();
+ }
+
+ setTimeout(function() {
+ iframe.remove();
+ if (type === 'script') {
+ $.globalEval(data);
+ }
+ if (callback) {
+ callback.call(self, data);
+ }
+ }, 0);
+ });
+ }).submit();
+
+ return this;
+ };
+
+ function createInputs(data) {
+ return $.map(param(data), function(param) {
+ return '<input type="hidden" name="' + param.name + '"
value="' + param.value + '"/>';
+ }).join('');
+ }
+
+ function param(data) {
+ if ($.isArray(data)) {
+ return data;
+ }
+ var params = [];
+
+ function add(name, value) {
+ params.push({name:name, value:value});
+ }
+
+ if (typeof data === 'object') {
+ $.each(data, function(name) {
+ if ($.isArray(this)) {
+ $.each(this, function() {
+ add(name, this);
+ });
+ } else {
+ add(name, $.isFunction(this) ? this() :
this);
+ }
+ });
+ } else if (typeof data === 'string') {
+ $.each(data.split('&'), function() {
+ var param = $.map(this.split('='), function(v) {
+ return
decodeURIComponent(v.replace(/\+/g, ' '));
+ });
+
+ add(param[0], param[1]);
+ });
+ }
+
+ return params;
+ }
+
+ function handleData(iframe, type) {
+ var data, contents = $(iframe).contents().get(0);
+
+ if ($.isXMLDoc(contents) || contents.XMLDocument) {
+ return contents.XMLDocument || contents;
+ }
+ data = $(contents).find('body').html();
+
+ switch (type) {
+ case 'xml':
+ data = parseXml(data);
+ break;
+ case 'json':
+ data = window.eval('(' + data + ')');
+ break;
+ }
+ return data;
+ }
+
+ function parseXml(text) {
+ if (window.DOMParser) {
+ return new DOMParser().parseFromString(text,
'application/xml');
+ } else {
+ var xml = new ActiveXObject('Microsoft.XMLDOM');
+ xml.async = false;
+ xml.loadXML(text);
+ return xml;
+ }
+ }
+
+})(jQuery);
+/*
+ * jQuery.upload v1.0.2
+ *
+ * Copyright (c) 2010 lagos
+ * Dual licensed under the MIT and GPL licenses.
+ *
+ * http://lagoscript.org
+ */
+(function($) {
+
+ var uuid = 0;
+
+ $.fn.upload = function(url, data, callback, type) {
+ var self = this, inputs, checkbox, checked,
+ iframeName = 'jquery_upload' + ++uuid,
+ iframe = $('<iframe name="' + iframeName + '"
style="position:absolute;top:-9999px" />').appendTo('body'),
+ form = '<form target="' + iframeName + '" method="post"
enctype="multipart/form-data" />';
+
+ if ($.isFunction(data)) {
+ type = callback;
+ callback = data;
+ data = {};
+ }
+
+ checkbox = $('input:checkbox', this);
+ checked = $('input:checked', this);
+ form = self.wrapAll(form).parent('form').attr('action', url);
+
+ // Make sure radios and checkboxes keep original values
+ // (IE resets checkd attributes when appending)
+ checkbox.removeAttr('checked');
+ checked.attr('checked', true);
+
+ inputs = createInputs(data);
+ inputs = inputs ? $(inputs).appendTo(form) : null;
+
+ form.submit(function() {
+ iframe.load(function() {
+ var data = handleData(this, type),
+ checked = $('input:checked', self);
+
+ form.after(self).remove();
+ checkbox.removeAttr('checked');
+ checked.attr('checked', true);
+ if (inputs) {
+ inputs.remove();
+ }
+
+ setTimeout(function() {
+ iframe.remove();
+ if (type === 'script') {
+ $.globalEval(data);
+ }
+ if (callback) {
+ callback.call(self, data);
+ }
+ }, 0);
+ });
+ }).submit();
+
+ return this;
+ };
+
+ function createInputs(data) {
+ return $.map(param(data), function(param) {
+ return '<input type="hidden" name="' + param.name + '"
value="' + param.value + '"/>';
+ }).join('');
+ }
+
+ function param(data) {
+ if ($.isArray(data)) {
+ return data;
+ }
+ var params = [];
+
+ function add(name, value) {
+ params.push({name:name, value:value});
+ }
+
+ if (typeof data === 'object') {
+ $.each(data, function(name) {
+ if ($.isArray(this)) {
+ $.each(this, function() {
+ add(name, this);
+ });
+ } else {
+ add(name, $.isFunction(this) ? this() :
this);
+ }
+ });
+ } else if (typeof data === 'string') {
+ $.each(data.split('&'), function() {
+ var param = $.map(this.split('='), function(v) {
+ return
decodeURIComponent(v.replace(/\+/g, ' '));
+ });
+
+ add(param[0], param[1]);
+ });
+ }
+
+ return params;
+ }
+
+ function handleData(iframe, type) {
+ var data, contents = $(iframe).contents().get(0);
+
+ if ($.isXMLDoc(contents) || contents.XMLDocument) {
+ return contents.XMLDocument || contents;
+ }
+ data = $(contents).find('body').html();
+
+ switch (type) {
+ case 'xml':
+ data = parseXml(data);
+ break;
+ case 'json':
+ data = window.eval('(' + data + ')');
+ break;
+ }
+ return data;
+ }
+
+ function parseXml(text) {
+ if (window.DOMParser) {
+ return new DOMParser().parseFromString(text,
'application/xml');
+ } else {
+ var xml = new ActiveXObject('Microsoft.XMLDOM');
+ xml.async = false;
+ xml.loadXML(text);
+ return xml;
+ }
+ }
+
+})(jQuery);
Propchange:
ofbiz/branches/20120329_portletWidget/framework/images/webapp/images/jquery/plugins/jquery.upload.js
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
ofbiz/branches/20120329_portletWidget/framework/images/webapp/images/jquery/plugins/jquery.upload.js
------------------------------------------------------------------------------
svn:keywords = Date Rev Author URL Id
Propchange:
ofbiz/branches/20120329_portletWidget/framework/images/webapp/images/jquery/plugins/jquery.upload.js
------------------------------------------------------------------------------
svn:mime-type = text/plain
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=1403875&r1=1403874&r2=1403875&view=diff
==============================================================================
---
ofbiz/branches/20120329_portletWidget/framework/images/webapp/images/selectall.js
(original)
+++
ofbiz/branches/20120329_portletWidget/framework/images/webapp/images/selectall.js
Tue Oct 30 21:20:42 2012
@@ -425,6 +425,46 @@ function ajaxSubmitFormUpdateAreas(form,
}
});
}
+//#Bam# jquery-submit-upload-file
+/** Submit form, update multiple areas (HTML container elements).
+ * @param form The form element
+ * @param areaCsvString The area CSV string. The CSV string is a flat array in
the
+ * form of: areaId, target, target parameters [, areaId, target, target
parameters...].
+*/
+function ajaxUploadFormUpdateAreas(form, areaCsvString) {
+ waitSpinnerShow();
+ hideErrorContainer = function() {
+
jQuery('#content-messages').removeClass('errorMessage').fadeIn('fast');
+ }
+ updateFunction = function(data) {
+ if (data._ERROR_MESSAGE_LIST_ != undefined || data._ERROR_MESSAGE_
!= undefined) {
+ if(!jQuery('#content-messages')) {
+ //add this div just after app-navigation
+ if(jQuery('#content-main-section')){
+ jQuery('#content-main-section' ).before('<div
id="content-messages" onclick="hideErrorContainer()"></div>');
+ }
+ }
+ jQuery('#content-messages').addClass('errorMessage');
+ if (data._ERROR_MESSAGE_LIST_ != undefined &&
data._ERROR_MESSAGE_ != undefined) {
+ jQuery('#content-messages' ).html(data._ERROR_MESSAGE_LIST_ +
" " + data._ERROR_MESSAGE_);
+ } else if (data._ERROR_MESSAGE_LIST_ != undefined) {
+ jQuery('#content-messages' ).html(data._ERROR_MESSAGE_LIST_);
+ } else {
+ jQuery('#content-messages' ).html(data._ERROR_MESSAGE_);
+ }
+ jQuery('#content-messages').fadeIn('fast');
+ }else {
+ if(jQuery('#content-messages')) {
+
jQuery('#content-messages').removeClass('errorMessage').fadeIn("fast");
+ }
+ ajaxUpdateAreas(areaCsvString);
+ }
+ waitSpinnerHide();
+ }
+
+ jQuery("#fields_" + form).upload(jQuery("#" + form).attr("action"),
function(data) {updateFunction(data)}, 'json');
+}
+//#Eam# jquery-submit-upload-file
/** Enable auto-completion for text elements, with a possible span of tooltip
class showing description.
* @param areaCsvString The area CSV string. The CSV string is a flat array in
the
Modified:
ofbiz/branches/20120329_portletWidget/framework/widget/src/org/ofbiz/widget/form/MacroFormRenderer.java
URL:
http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/framework/widget/src/org/ofbiz/widget/form/MacroFormRenderer.java?rev=1403875&r1=1403874&r2=1403875&view=diff
==============================================================================
---
ofbiz/branches/20120329_portletWidget/framework/widget/src/org/ofbiz/widget/form/MacroFormRenderer.java
(original)
+++
ofbiz/branches/20120329_portletWidget/framework/widget/src/org/ofbiz/widget/form/MacroFormRenderer.java
Tue Oct 30 21:20:42 2012
@@ -1127,6 +1127,7 @@ public class MacroFormRenderer implement
String name = modelFormField.getParameterName(context);
String buttonType = submitField.getButtonType();
String formName = modelForm.getCurrentFormName(context);
+ String formType = modelForm.getType();
String imgSrc = submitField.getImageLocation(context);
String confirmation = submitField.getConfirmation(context);
String className = "";
@@ -1171,6 +1172,8 @@ public class MacroFormRenderer implement
sr.append(alert);
sr.append("\" formName=\"");
sr.append(formName);
+ sr.append("\" formType=\"");
+ sr.append(formType);
sr.append("\" title=\"");
sr.append(encode(title, modelFormField, context));
sr.append("\" name=\"");
@@ -1420,6 +1423,7 @@ public class MacroFormRenderer implement
public void renderFormClose(Appendable writer, Map<String, Object>
context, ModelForm modelForm) throws IOException {
String focusFieldName = modelForm.getfocusFieldName();
String formName = modelForm.getCurrentFormName(context);
+ String formType = modelForm.getType();
String containerId = modelForm.getCurrentContainerId(context);
String hasRequiredField = "";
for (ModelFormField formField : modelForm.getFieldList()) {
@@ -1434,6 +1438,8 @@ public class MacroFormRenderer implement
sr.append(focusFieldName);
sr.append("\" formName=\"");
sr.append(formName);
+ sr.append("\" formType=\"");
+ sr.append(formType);
sr.append("\" containerId=\"");
sr.append(containerId);
sr.append("\" hasRequiredField=\"");
Modified:
ofbiz/branches/20120329_portletWidget/framework/widget/templates/htmlFormMacroLibrary.ftl
URL:
http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/framework/widget/templates/htmlFormMacroLibrary.ftl?rev=1403875&r1=1403874&r2=1403875&view=diff
==============================================================================
---
ofbiz/branches/20120329_portletWidget/framework/widget/templates/htmlFormMacroLibrary.ftl
(original)
+++
ofbiz/branches/20120329_portletWidget/framework/widget/templates/htmlFormMacroLibrary.ftl
Tue Oct 30 21:20:42 2012
@@ -293,15 +293,13 @@ ${item.description}</span>
</#list>
</#macro>
-<#-- <#macro renderSubmitField buttonType className alert formName title name
event action imgSrc confirmation containerId ajaxUrl> -->
-<#macro renderSubmitField buttonType className alert formName title name event
action imgSrc confirmation containerId ajaxUrl returnParams>
+<#macro renderSubmitField buttonType className alert formName formType title
name event action imgSrc confirmation containerId ajaxUrl returnParams>
<#if buttonType=="text-link">
<a <@renderClass className alert />
href="javascript:document.${formName}.submit()" <#if
confirmation?has_content>onclick="return
confirm('${confirmation?js_string}');"</#if>><#if
title?has_content>${title}</#if> </a>
<#elseif buttonType=="image">
<input type="image" src="${imgSrc}" <@renderClass className alert /><#if
name?has_content> name="${name}"</#if><#if title?has_content>
alt="${title}"</#if><#if event?has_content> ${event}="${action}"</#if> <#if
confirmation?has_content>onclick="return
confirm('${confirmation?js_string}');"</#if>/>
<#else>
-<#--<input type="<#if containerId?has_content>button<#else>submit</#if>"
<@renderClass className alert /><#if name?exists> name="${name}"</#if><#if
title?has_content> value="${title}"</#if><#if event?has_content>
${event}="${action}"</#if><#if containerId?has_content> onclick="<#if
confirmation?has_content>if (confirm('${confirmation?js_string}'))
</#if>ajaxSubmitFormUpdateAreas('${containerId}', '${ajaxUrl}')"<#else><#if
confirmation?has_content> onclick="return
confirm('${confirmation?js_string}');"</#if></#if>/></#if>-->
-<input type="<#if containerId?has_content>button<#else>submit</#if>"
<@renderClass className alert /><#if name?exists> name="${name}"</#if><#if
title?has_content> value="${title}"</#if><#if event?has_content>
${event}="${action}"</#if><#if containerId?has_content> onclick="<#if
confirmation?has_content>if (confirm('${confirmation?js_string}')) </#if><#if
returnParams?has_content>ajaxSubmitFormUpdateAreasWithReturn('${containerId}',
'${ajaxUrl}',
${returnParams})"<#else>ajaxSubmitFormUpdateAreas('${containerId}',
'${ajaxUrl}')"</#if><#else><#if confirmation?has_content> onclick="return
confirm('${confirmation?js_string}');"</#if></#if>/></#if>
+<input type="<#if containerId?has_content>button<#else>submit</#if>"
<@renderClass className alert /><#if name?exists> name="${name}"</#if><#if
title?has_content> value="${title}"</#if><#if event?has_content>
${event}="${action}"</#if><#if containerId?has_content> onclick="<#if
confirmation?has_content>if (confirm('${confirmation?js_string}')) </#if><#if
returnParams?has_content>ajax<#if
formType=="upload">Upload<#else>Submit</#if>FormUpdateAreasWithReturn('${containerId}',
'${ajaxUrl}', ${returnParams})"<#else>ajax<#if
formType=="upload">Upload<#else>Submit</#if>FormUpdateAreas('${containerId}',
'${ajaxUrl}')"</#if><#else><#if confirmation?has_content> onclick="return
confirm('${confirmation?js_string}');"</#if></#if>/></#if>
</#macro>
<#macro renderResetField className alert name title>
@@ -325,6 +323,9 @@ ${item.description}</span>
<#macro renderFormOpen linkUrl formType targetWindow containerId
containerStyle autocomplete name viewIndexField viewSizeField viewIndex
viewSize useRowSubmit>
<form method="post" action="${linkUrl}"<#if formType=="upload">
enctype="multipart/form-data"</#if><#if targetWindow?has_content>
target="${targetWindow}"</#if><#if containerId?has_content>
id="${containerId}"</#if> class=<#if
containerStyle?has_content>"${containerStyle}"<#else>"basic-form"</#if>
onsubmit="javascript:submitFormDisableSubmits(this)"<#if
autocomplete?has_content> autocomplete="${autocomplete}"</#if>
name="${name}"><#lt/>
+ <#if formType?has_content && formType=="upload">
+ <div id="fields_${containerId}">
+ </#if>
<#if useRowSubmit?has_content && useRowSubmit>
<input type="hidden" name="_useRowSubmit" value="Y"/>
<#if linkUrl?index_of("VIEW_INDEX") <= 0 &&
linkUrl?index_of(viewIndexField) <= 0>
@@ -335,7 +336,10 @@ ${item.description}</span>
</#if>
</#if>
</#macro>
-<#macro renderFormClose focusFieldName formName containerId hasRequiredField>
+<#macro renderFormClose focusFieldName formName formType containerId
hasRequiredField>
+ <#if formType?has_content && formType=="upload">
+ <div id="fields_${containerId}">
+ </#if>
</form><#lt/>
<#if focusFieldName?has_content>
<script language="JavaScript" type="text/javascript">