|
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"> |
| Free forum by Nabble | Edit this page |
