You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ha...@apache.org on 2010/12/24 06:45:20 UTC

svn commit: r1052449 - in /ofbiz/trunk: framework/common/config/ framework/images/webapp/images/ specialpurpose/ecommerce/config/ specialpurpose/ecommerce/script/org/ofbiz/ecommerce/customer/ specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/ specialpu...

Author: hansbak
Date: Fri Dec 24 05:45:19 2010
New Revision: 1052449

URL: http://svn.apache.org/viewvc?rev=1052449&view=rev
Log:
make the ecommerce 'contactus' not require login, add captcha and will try to match entered email address to party, whennot create the party.

Modified:
    ofbiz/trunk/framework/common/config/CommonUiLabels.xml
    ofbiz/trunk/framework/images/webapp/images/ecommain.css
    ofbiz/trunk/specialpurpose/ecommerce/config/EcommerceUiLabels.xml
    ofbiz/trunk/specialpurpose/ecommerce/script/org/ofbiz/ecommerce/customer/CustomerEvents.xml
    ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/controller.xml
    ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/customer/AnonContactus.ftl

Modified: ofbiz/trunk/framework/common/config/CommonUiLabels.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/config/CommonUiLabels.xml?rev=1052449&r1=1052448&r2=1052449&view=diff
==============================================================================
--- ofbiz/trunk/framework/common/config/CommonUiLabels.xml (original)
+++ ofbiz/trunk/framework/common/config/CommonUiLabels.xml Fri Dec 24 05:45:19 2010
@@ -1108,6 +1108,9 @@
         <value xml:lang="zh">无法找到</value>
         <value xml:lang="zh_TW">無法找到</value>
     </property>
+    <property key="CommonCaptchaCode">
+        <value xml:lang="en">Captcha Code</value>
+    </property>
     <property key="CommonChange">
         <value xml:lang="ar">تغيير</value>
         <value xml:lang="de">Verändern</value>
@@ -2273,6 +2276,9 @@
         <value xml:lang="zh">电子邮件</value>
         <value xml:lang="zh_TW">電子郵件</value>
     </property>
+    <property key="CommonEmailAlreadyExist">
+        <value xml:lang="en">Email already exist</value>
+    </property>
     <property key="CommonEmailPassword">
         <value xml:lang="ar">كلمة سر البريد الإلكتروني</value>
         <value xml:lang="cs">Email heslo</value>
@@ -3695,6 +3701,9 @@
     <property key="CommonReleaseDate">
         <value xml:lang="en">Release Date</value>
     </property>
+    <property key="CommonReloadCaptchaCode">
+        <value xml:lang="en">Reload Captcha Code</value>
+    </property>
     <property key="CommonInventory">
         <value xml:lang="en">Inventory</value>
         <value xml:lang="fr">Stockage</value>
@@ -4347,6 +4356,9 @@
         <value xml:lang="zh_CN">消息</value>
         <value xml:lang="zh_TW">訊息</value>
     </property>
+    <property key="CommonMessageMissing">
+        <value xml:lang="en">Message is missing</value>
+    </property>
     <property key="CommonMessages">
         <value xml:lang="de">Meldungen</value>
         <value xml:lang="en">Messages</value>
@@ -8631,6 +8643,9 @@
         <value xml:lang="zh_CN">值</value>
         <value xml:lang="zh_TW">數值</value>
     </property>
+        <property key="CommonVerifyCaptchaCode">
+        <value xml:lang="en">Verify Captcha Code</value>
+    </property>
     <property key="CommonView">
         <value xml:lang="ar">مشهد</value>
         <value xml:lang="cs">Náhled</value>

Modified: ofbiz/trunk/framework/images/webapp/images/ecommain.css
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/ecommain.css?rev=1052449&r1=1052448&r2=1052449&view=diff
==============================================================================
--- ofbiz/trunk/framework/images/webapp/images/ecommain.css (original)
+++ ofbiz/trunk/framework/images/webapp/images/ecommain.css Fri Dec 24 05:45:19 2010
@@ -151,6 +151,7 @@ padding-right:11px;
 text-align:right;
 white-space:nowrap;
 width:1%;
+vertical-align:top;
 }
 
 #ecom-header {

Modified: ofbiz/trunk/specialpurpose/ecommerce/config/EcommerceUiLabels.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/config/EcommerceUiLabels.xml?rev=1052449&r1=1052448&r2=1052449&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ecommerce/config/EcommerceUiLabels.xml (original)
+++ ofbiz/trunk/specialpurpose/ecommerce/config/EcommerceUiLabels.xml Fri Dec 24 05:45:19 2010
@@ -3319,6 +3319,9 @@
         <value xml:lang="zh">主题</value>
         <value xml:lang="zh_TW">標題</value>
     </property>
+    <property key="EcommerceSubjectMissing">
+        <value xml:lang="en">Subject is missing</value>
+    </property>
     <property key="EcommerceSubscribe">
         <value xml:lang="da">Abonnér</value>
         <value xml:lang="de">Abonnieren</value>

Modified: ofbiz/trunk/specialpurpose/ecommerce/script/org/ofbiz/ecommerce/customer/CustomerEvents.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/script/org/ofbiz/ecommerce/customer/CustomerEvents.xml?rev=1052449&r1=1052448&r2=1052449&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ecommerce/script/org/ofbiz/ecommerce/customer/CustomerEvents.xml (original)
+++ ofbiz/trunk/specialpurpose/ecommerce/script/org/ofbiz/ecommerce/customer/CustomerEvents.xml Fri Dec 24 05:45:19 2010
@@ -1256,4 +1256,83 @@ under the License.
             <store-value value-field="loggedInUser"/>
         </if-compare-field>
     </simple-method>
+    <simple-method method-name="createAnonContact" short-description="Create a non Contact" login-required="false">
+        <entity-one value-field="systemUserLogin" entity-name="UserLogin">
+            <field-map field-name="userLoginId" value="system"/>
+        </entity-one>
+        <set field="parameters.userLogin" from-field="systemUserLogin"/>
+        <set field="isExistingEmail" type="Boolean" value="false"/>
+        <if-empty field="parameters.subject">
+            <add-error><fail-property resource="EcommerceUiLabels" property="EcommerceSubjectMissing"/></add-error>
+        </if-empty>
+        <if-empty field="parameters.content">
+            <add-error><fail-property resource="CommonUiLabels" property="CommonMessageMissing"/></add-error>
+        </if-empty>
+        <if-empty field="parameters.emailAddress">
+            <add-error><fail-property resource="PartyUiLabels" property="PartyEmailAddressMissingError"/></add-error>
+            <else>
+                <if-validate-method field="parameters.emailAddress" method="isEmail" class="org.ofbiz.base.util.UtilValidate">
+                    <!-- Check existing email -->
+                    <entity-condition list="contacts" entity-name="PartyContactDetailByPurpose">
+                        <condition-list>
+                            <condition-expr field-name="infoString" from-field="parameters.emailAddress"/>
+                            <condition-expr field-name="contactMechTypeId" value="EMAIL_ADDRESS"/>
+                            <condition-expr field-name="contactMechPurposeTypeId" value="PRIMARY_EMAIL"/>
+                        </condition-list>
+                    </entity-condition>
+                    <if-not-empty field="contacts">
+                        <first-from-list entry="contact" list="contacts"/>
+                        <set field="isExistingEmail" type="Boolean" value="true"/>
+                    </if-not-empty>
+                    <else>
+                        <add-error><fail-property resource="PartyUiLabels" property="PartyEmailAddressNotFormattedCorrectly"/></add-error>
+                    </else>
+                </if-validate-method>
+            </else>
+        </if-empty>
+        <call-object-method obj-field="parameters.captcha" method-name="toLowerCase" ret-field="parameters.captcha"/>
+        <call-object-method obj-field="parameters.captchaCode" method-name="toLowerCase" ret-field="parameters.captchaCode"/>
+        <if-compare-field operator="not-equals" field="parameters.captcha" to-field="parameters.captchaCode">
+            <add-error><fail-property resource="MyPortalUiLabels" property="MyPortalCaptchaMissingError"/></add-error>
+        </if-compare-field>
+        <check-errors/>
+        <!-- If email already exist, will go to confirm screen. -->
+        <if>
+            <condition>
+                <and>
+                    <if-empty field="parameters.partyId"/>
+                    <if-compare operator="equals" value="true" field="isExistingEmail"/>
+                </and>
+            </condition>
+            <then>
+                <entity-one value-field="person" entity-name="Person">
+                    <field-map field-name="partyId" from-field="contact.partyId"/>
+                </entity-one>
+                <field-to-request field="person" request-name="person"/>
+                <return response-code="confirm"/>
+            </then>
+        </if>
+        <!-- If person doesn't exist, will create new person and contact. -->
+        <if-empty field="parameters.partyId">
+            <set-service-fields service-name="createPerson" to-map="newPerson" map="parameters"/>
+            <call-service service-name="createPerson" in-map-name="newPerson">
+                <result-to-field result-name="partyId" field="parameters.partyId"/>
+            </call-service>
+            <set-service-fields service-name="createPartyContactMech" to-map="newContact" map="parameters"/>
+            <set field="newContact.infoString" from-field="parameters.emailAddress"/>
+            <set field="newContact.contactMechTypeId" value="EMAIL_ADDRESS"/>
+            <set field="newContact.contactMechPurposeTypeId" value="PRIMARY_EMAIL"/>
+            <call-service service-name="createPartyContactMech" in-map-name="newContact">
+                <result-to-field result-name="contactMechId" field="parameters.contactMechIdFrom"/>
+            </call-service>
+            <else>
+                <set field="parameters.contactMechIdFrom" from-field="contact.contactMechId"/>
+            </else>
+        </if-empty>
+        <set-service-fields service-name="createCommunicationEventWithoutPermission" to-map="newComm" map="parameters"/>
+        <set field="newComm.partyIdFrom" from-field="parameters.partyId"/>
+        <call-service service-name="createCommunicationEventWithoutPermission" in-map-name="newComm">
+            <default-message property="CommonGenericServiceSuccessMessage" resource="CommonUiLabels"></default-message>
+        </call-service>
+    </simple-method>
 </simple-methods>

Modified: ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/controller.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/controller.xml?rev=1052449&r1=1052448&r2=1052449&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/controller.xml (original)
+++ ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/controller.xml Fri Dec 24 05:45:19 2010
@@ -1295,6 +1295,7 @@ under the License.
     </request-map>
     <request-map uri="AnonContactus">
         <security https="true" auth="false"/>
+        <event type="java" invoke="getCodeCaptcha" path="org.ofbiz.common.Captcha"/>
         <response name="success" type="view" value="AnonContactus"/>
     </request-map>
     <request-map uri="contactsubmit">
@@ -1305,9 +1306,10 @@ under the License.
     </request-map>
     <request-map uri="submitAnonContact">
         <security https="true" auth="false"/>
-        <event type="service" invoke="sendContactUsEmailToCompany"/>
-        <response name="success" type="view" value="AnonContactus"/>
-        <response name="error" type="view" value="AnonContactus"/>
+        <event type="simple" invoke="createAnonContact" path="component://ecommerce/script/org/ofbiz/ecommerce/customer/CustomerEvents.xml"/>
+        <response name="success" type="request-redirect" value="main"/>
+        <response name="confirm" type="request" value="AnonContactus"/>
+        <response name="error" type="request" value="AnonContactus"/>
     </request-map>
 
     <request-map uri="signUpForContactList">
@@ -1923,6 +1925,17 @@ under the License.
         <security auth="false" https="false"/>
         <response name="success" type="view" value="ProductUomDropDownOnly" save-last-view="true"/>
     </request-map>
+    
+    <!-- Captcha -->
+    <request-map uri="reloadCaptchaImage">
+        <security https="true" auth="false"/>        
+        <response name="success" type="view" value="reloadCaptchaImage"/>
+    </request-map>
+    <request-map uri="reloadCaptchaCode">
+        <security https="true" auth="false"/>
+        <response name="success" type="view" value="reloadCaptchaCode"/>
+    </request-map>
+    
     <!-- End of Request Mappings -->
 
     <!-- View Mappings -->
@@ -2071,5 +2084,9 @@ under the License.
     
     <!-- Contact List -->
     <view-map name="ContactListOptOut" type="screen" page="component://marketing/widget/ContactListScreens.xml#OptOutResponse"/>
+    
+    <!-- Captcha -->
+    <view-map name="reloadCaptchaImage" type="screen" page="component://myportal/widget/CommonScreens.xml#reloadCaptchaImage"/>
+    <view-map name="reloadCaptchaCode" type="screen" page="component://myportal/widget/CommonScreens.xml#reloadCaptchaCode"/>
     <!-- End of View Mappings -->
 </site-conf>

Modified: ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/customer/AnonContactus.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/customer/AnonContactus.ftl?rev=1052449&r1=1052448&r2=1052449&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/customer/AnonContactus.ftl (original)
+++ ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/customer/AnonContactus.ftl Fri Dec 24 05:45:19 2010
@@ -17,44 +17,119 @@ specific language governing permissions 
 under the License.
 -->
 
-<h3>${uiLabelMap.CommonContactUs}</h3>
-<form id="contactForm" method="post" action="<@o...@ofbizUrl>">
-  <fieldset>
-    <input type="hidden" name="partyIdFrom" value="${(userLogin.partyId)?if_exists}" />
-    <input type="hidden" name="partyIdTo" value="${productStore.payToPartyId?if_exists}"/>
-    <input type="hidden" name="contactMechTypeId" value="WEB_ADDRESS" />
-    <input type="hidden" name="communicationEventTypeId" value="WEB_SITE_COMMUNICATI" />
-    <input type="hidden" name="productStoreId" value="${productStore.productStoreId}" />
-    <input type="hidden" name="emailType" value="CONT_NOTI_EMAIL" />
-    <input type="hidden" name="note" value="${Static["org.ofbiz.base.util.UtilHttp"].getFullRequestUrl(request).toString()}" />
-    <div>
-      <label for="comment">${uiLabelMap.CommonComment}:</label>
-      <textarea name="content" id="comment" class="required" cols="50" rows="5"></textarea>
+<div class="screenlet">
+    <div class="screenlet-title-bar">
+        <h3>${uiLabelMap.CommonContactUs}</h3>
+    </div>
+<#if parameters.person?has_content>
+    <#assign person = parameters.person/>
+        <div class="screenlet-body">
+        <form name="contactForm" method="post" action="<@o...@ofbizUrl>">
+            <input type="hidden" name="partyIdFrom" value="${(userLogin.partyId)?if_exists}" />
+            <input type="hidden" name="partyIdTo" value="${productStore.payToPartyId?if_exists}"/>
+            <input type="hidden" name="contactMechTypeId" value="WEB_ADDRESS" />
+            <input type="hidden" name="communicationEventTypeId" value="WEB_SITE_COMMUNICATI" />
+            <input type="hidden" name="productStoreId" value="${productStore.productStoreId}" />
+            <input type="hidden" name="emailType" value="CONT_NOTI_EMAIL" />
+            <input type="hidden" name="captchaCode" value="${requestParameters.captchaCode?if_exists}"/>
+            <input type="hidden" name="captcha" value="${requestParameters.captcha?if_exists}"/>
+            <input type="hidden" name="partyId" value="${person.partyId?if_exists}"/>
+            <input type="hidden" name="emailAddress" value="${requestParameters.emailAddress?if_exists}"/>
+            <table class="basic-table" cellspacing="0">
+                <tbody>
+                    <tr>
+                       <td class="label">${uiLabelMap.EcommerceSubject}</td>
+                       <td><input type="text" name="subject" id="subject" class="required" value="${requestParameters.subject?if_exists}"/>*</td>
+                    </tr>
+                    <tr>
+                       <td class="label">${uiLabelMap.CommonMessage}</td>
+                       <td><textarea name="content" id="message" class="required" cols="50" rows="5">${requestParameters.content?if_exists}</textarea>*</td>
+                    </tr>
+                    <tr>
+                       <td class="label">${uiLabelMap.FormFieldTitle_emailAddress}</td>
+                       <td>${requestParameters.emailAddress?if_exists} (${uiLabelMap.CommonEmailAlreadyExist})</td>
+                    </tr>
+                    <tr>
+                       <td class="label">${uiLabelMap.CommonFrom}</td>
+                       <td>${person.firstName?if_exists} ${person.lastName?if_exists} (${uiLabelMap.FormFieldTitle_existingCustomer})</td>
+                    </tr>
+                    <tr>
+                       <td class="label"></td>
+                       <td><a class="smallsubmit" href="javascript: void(0)" onclick="document.contactForm.submit();">${uiLabelMap.CommonConfirm}</a><a href="<@o...@ofbizUrl>" class="smallsubmit">${uiLabelMap.CommonCancel}</a></td>
+                    </tr>
+                </tbody>
+            </table>
+        </form>
+    </div>
+<#else>
+<script type="text/javascript" language="JavaScript">
+<!--
+    function reloadCaptcha(){
+        var submitToUri = "<@o...@ofbizUrl>";
+        $.post(submitToUri, null,
+        function(data){
+            document.getElementById("captchaImage").innerHTML = data;
+        });
+        reloadCaptchaCode();
+    }
+    function reloadCaptchaCode(){
+        var submitToUri = "<@o...@ofbizUrl>";
+        $.post(submitToUri, null,
+        function(data){
+            document.getElementById("captchaCode").innerHTML = data;
+        });
+    }
+    //-->
+</script>
+    <div class="screenlet-body">
+        <form id="contactForm" method="post" action="<@o...@ofbizUrl>">
+            <input type="hidden" name="partyIdFrom" value="${(userLogin.partyId)?if_exists}" />
+            <input type="hidden" name="partyIdTo" value="${productStore.payToPartyId?if_exists}"/>
+            <input type="hidden" name="contactMechTypeId" value="WEB_ADDRESS" />
+            <input type="hidden" name="communicationEventTypeId" value="WEB_SITE_COMMUNICATI" />
+            <input type="hidden" name="productStoreId" value="${productStore.productStoreId}" />
+            <input type="hidden" name="emailType" value="CONT_NOTI_EMAIL" />
+            <table class="basic-table" cellspacing="0">
+                <tbody>
+                    <tr>
+                       <td></td>
+                       <td><div id="captchaCode"><input type="hidden" value="${parameters.ID_KEY}" name="captchaCode"/></div></td>
+                    </tr>
+                    <tr>
+                       <td class="label">${uiLabelMap.EcommerceSubject}</td>
+                       <td><input type="text" name="subject" id="subject" class="required" value="${requestParameters.subject?if_exists}"/>*</td>
+                    </tr>
+                    <tr>
+                       <td class="label">${uiLabelMap.CommonMessage}</td>
+                       <td><textarea name="content" id="message" class="required" cols="50" rows="5">${requestParameters.content?if_exists}</textarea>*</td>
+                    </tr>
+                    <tr>
+                       <td class="label">${uiLabelMap.FormFieldTitle_emailAddress}</td>
+                       <td><input type="text" name="emailAddress" id="emailAddress" class="required" value="${requestParameters.emailAddress?if_exists}"/>*</td>
+                    </tr>
+                    <tr>
+                       <td class="label">${uiLabelMap.PartyFirstName}</td>
+                       <td><input type="text" name="firstName" id="firstName" class="required" value="${requestParameters.firstName?if_exists}"/></td>
+                    </tr>
+                    <tr>
+                       <td class="label">${uiLabelMap.PartyLastName}</td>
+                       <td><input type="text" name="lastName" id="lastName" class="required" value="${requestParameters.lastName?if_exists}"/></td>
+                    </tr>
+                    <tr>
+                       <td class="label">${uiLabelMap.CommonCaptchaCode}</td>
+                       <td><div id="captchaImage"><img src="${parameters.captchaFileName}" alt="" /></div><a href="javascript:reloadCaptcha();">${uiLabelMap.CommonReloadCaptchaCode}</a></td>
+                    </tr>
+                    <tr>
+                       <td class="label">${uiLabelMap.CommonVerifyCaptchaCode}</td>
+                       <td><input type="text" autocomplete="off" maxlength="30" size="23" name="captcha"/>*</td>
+                    </tr>
+                    <tr>
+                       <td class="label"></td>
+                       <td><input type="submit" value="${uiLabelMap.CommonSubmit}" /></td>
+                    </tr>
+                </tbody>
+            </table>
+        </form>
     </div>
-    <div>
-      <label for="emailAddress">${uiLabelMap.FormFieldTitle_emailAddress} *</label>
-      <input type="text" name="emailAddress" id="emailAddress" class="required" />
-    </div>
-    <div>
-      <label for="firstName">${uiLabelMap.FormFieldTitle_firstName}</label>
-      <input type="text" name="firstName" id="firstName" class="required" />
-    </div>
-    <div>
-      <label for="lastName">${uiLabelMap.FormFieldTitle_lastName}</label>
-      <input type="text" name="lastName" id="lastName" class="required" />
-    </div>
-    <div>
-      <label for="postalCode">${uiLabelMap.CommonZipPostalCode}</label>
-      <input name="postalCode" id="postalCode" type="text" />
-    </div>
-    <div>
-      <label>${uiLabelMap.CommonCountry}</label>
-      <select name="countryCode" id="countryCodeGeoId" class="required">
-        ${screens.render("component://common/widget/CommonScreens.xml#countries")}
-      </select>
-    </div>
-  </fieldset>
-  <div>
-    <input type="submit" value="${uiLabelMap.CommonSubmit}" />
-  </div>
-</form>
\ No newline at end of file
+</#if>
+</div>
\ No newline at end of file