+1

Jacques

From: <[email protected]>
Hi Hans,

I suggest to use the prefix MyPortal for those type of labels, I spent a lot of days to cleanup all the wasted labels into OFBiz and I think we cannot all use different standard to codify the labels.
And if it's possible do not use the underscore character in the labels  name 
could be more readable.

In my opinion for example CaptchaMissingError could be  
MyPortalCaptchaMissingError or something similar to that.

If we do not follow this simple rule in two or three months the labels  will be 
completed wasted again.

What others thinks about that ?

Thanks
Marco

Il giorno 20/gen/09, alle ore 09:30, [email protected] ha scritto:

Author: hansbak
Date: Tue Jan 20 00:30:41 2009
New Revision: 735965

URL: http://svn.apache.org/viewvc?rev=735965&view=rev
Log:
first version of captcha, not perfect yet: multiple users registering at the same time, image should be stored in 'runtime' not working on windows. Another problem is what files to put where.....the captcha itself looks like a framework feature...however the registration process needs the party component....so let us know, we will correct it....

Added:
   ofbiz/trunk/framework/common/src/org/ofbiz/common/Captcha.java    (with 
props)
   ofbiz/trunk/specialpurpose/myportal/widget/login.ftl   (with props)
Modified:
   ofbiz/trunk/framework/common/widget/CommonMenus.xml
   ofbiz/trunk/specialpurpose/myportal/config/MyPortalUiLabels.xml
   ofbiz/trunk/specialpurpose/myportal/script/org/ofbiz/myportal/ Events.xml
   ofbiz/trunk/specialpurpose/myportal/webapp/myportal/WEB-INF/ controller.xml
   ofbiz/trunk/specialpurpose/myportal/widget/CommonScreens.xml
   ofbiz/trunk/specialpurpose/myportal/widget/MyPortalForms.xml

Added: ofbiz/trunk/framework/common/src/org/ofbiz/common/Captcha.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/src/org/ofbiz/common/Captcha.java?rev=735965&view=auto
= = = = = = = = 
======================================================================
--- ofbiz/trunk/framework/common/src/org/ofbiz/common/Captcha.java  (added)
+++ ofbiz/trunk/framework/common/src/org/ofbiz/common/Captcha.java  Tue Jan 20 
00:30:41 2009
@@ -0,0 +1,163 @@
+/ 
*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+  
*******************************************************************************/
+
+// copied from : http://cocoon.apache.org/2.2/blocks/captcha/1.0/1436_1_1.html
+
+package org.ofbiz.common;
+
+import javax.imageio.ImageIO;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.awt.*;
+import java.awt.geom.AffineTransform;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+
+public class Captcha {
+
+    public static String ID_KEY = null;
+
+    public static String getCodeCaptcha(HttpServletRequest  
request,HttpServletResponse response) {
+    StringBuffer finalString = new StringBuffer();
+        String elegibleChars =  
"ABCDEFGHJKLMPQRSTUVWXYabcdefhjkmnpqrstuvwxy23456789";
+        int charsToPrint = 6;
+        char[] chars = elegibleChars.toCharArray();
+
+        for (int i = 0; i < charsToPrint; i++) {
+            double randomValue = Math.random();
+            int randomIndex = (int) Math.round(randomValue *  (chars.length - 
1));
+            char characterToShow = chars[randomIndex];
+            finalString.append(characterToShow);
+        }
+        ID_KEY = finalString.toString();
+        if(createImageCaptcha (request,response)) return "success";
+        return "error";
+    }
+
+    public static boolean createImageCaptcha (HttpServletRequest  
request,HttpServletResponse response) {
+        try {        +            //It is possible to pass the font size, 
image width and  height with the request as well
+            Color backgroundColor = Color.gray;
+            Color borderColor = Color.DARK_GRAY;
+            Color textColor = Color.ORANGE;
+            Color circleColor = new Color(160, 160, 160);
+            Font textFont = new Font("Arial", Font.PLAIN,  paramInt(request, 
"fontSize", 22));
+            int charsToPrint = 6;
+            int width = paramInt(request, "width", 149);
+            int height = paramInt(request, "height", 40);
+            int circlesToDraw = 6;
+            float horizMargin = 20.0f;
+            double rotationRange = 0.7; // in radians
+            BufferedImage bufferedImage = new BufferedImage(width,  height, 
BufferedImage.TYPE_INT_RGB);
+
+            Graphics2D g = (Graphics2D) bufferedImage.getGraphics();
+
+            g.setColor(backgroundColor);
+            g.fillRect(0, 0, width, height);
+
+            //Generating some circles for background noise
+            g.setColor(circleColor);
+            for (int i = 0; i < circlesToDraw; i++) {
+                int circleRadius = (int) (Math.random() * height /  2.0);
+                int circleX = (int) (Math.random() * width -  circleRadius);
+                int circleY = (int) (Math.random() * height -  circleRadius);
+                g.drawOval(circleX, circleY, circleRadius * 2,  circleRadius * 
2);
+            }
+            g.setColor(textColor);
+            g.setFont(textFont);
+
+            FontMetrics fontMetrics = g.getFontMetrics();
+            int maxAdvance = fontMetrics.getMaxAdvance();
+            int fontHeight = fontMetrics.getHeight();
+
+            //We are not using certain characters, which might  confuse users
+            String characterToShow = ID_KEY;
+            float spaceForLetters = -horizMargin * 2 + width;
+            float spacePerChar = spaceForLetters / (charsToPrint -  1.0f);
+
+            for (int i = 0; i < characterToShow.length(); i++) {
+
+                // this is a separate canvas used for the character  so that
+                // we can rotate it independently
+                int charWidth =  
fontMetrics.charWidth(characterToShow.charAt(i));
+                int charDim = Math.max(maxAdvance, fontHeight);
+                int halfCharDim = (int) (charDim / 2);
+
+                BufferedImage charImage =
+                        new BufferedImage(charDim, charDim,  
BufferedImage.TYPE_INT_ARGB);
+                Graphics2D charGraphics = charImage.createGraphics();
+                charGraphics.translate(halfCharDim, halfCharDim);
+                double angle = (Math.random() - 0.5) * rotationRange;
+                 
charGraphics.transform(AffineTransform.getRotateInstance(angle));
+                charGraphics.translate(-halfCharDim, -halfCharDim);
+                charGraphics.setColor(textColor);
+                charGraphics.setFont(textFont);
+
+                int charX = (int) (0.5 * charDim - 0.5 * charWidth);
+                charGraphics.drawString("" +  characterToShow.charAt(i), charX,
+                        (int) ((charDim -  fontMetrics.getAscent()) / 2 + 
fontMetrics.getAscent()));
+
+                float x = horizMargin + spacePerChar * (i) -  charDim / 2.0f;
+                int y = (int) ((height - charDim) / 2);
+
+                g.drawImage(charImage, (int) x, y, charDim,  charDim, null, 
null);
+
+                charGraphics.dispose();
+            }
+            // Drawing the image border
+            g.setColor(borderColor);
+            g.drawRect(0, 0, width - 1, height - 1);
+            g.dispose();
+            Captcha.writeImage(bufferedImage, "captchaImage.png");
+
+        } catch (Exception ioe) {
+            return false;
+        }
+ //Adding this because we called response.getOutputStream() above. This will prevent and illegal state exception being thrown
+        return true;
+    }
+
+ public static void writeImage(BufferedImage image, String fileName)
+ {
+ if (fileName == null) return;
+ int offset = fileName.lastIndexOf( "." );
+ String type = offset == -1 ? "png" : fileName.substring(offset +  1);
+ String path;
+ try {
+ path = new java.io.File(".").getCanonicalPath();
+ path += "/framework/images/webapp/images/";
+ path += fileName;
+ System.out.println("\n\nPath =  "+path+"\n");
+ System.out.println("Captcha Key =  "+ID_KEY+"\n\n");
+ ImageIO.write(image, type, new File( path ));
+ } catch (IOException e) {
+ return;
+ }
+ }
+
+    public static String paramString(HttpServletRequest request,  String 
paramName,
+            String defaultString) {
+        return request.getParameter(paramName) != null ?  
request.getParameter(paramName) : defaultString;
+    }
+
+    public static int paramInt(HttpServletRequest request, String  paramName, 
int defaultInt) {
+        return request.getParameter(paramName) != null ?  
Integer.parseInt(request.getParameter(paramName)) : defaultInt;
+    }
+}
\ No newline at end of file

Propchange: ofbiz/trunk/framework/common/src/org/ofbiz/common/ Captcha.java
------------------------------------------------------------------------------
   svn:eol-style = native

Propchange: ofbiz/trunk/framework/common/src/org/ofbiz/common/ Captcha.java
------------------------------------------------------------------------------
   svn:keywords = "Date Rev Author URL Id"

Propchange: ofbiz/trunk/framework/common/src/org/ofbiz/common/ Captcha.java
------------------------------------------------------------------------------
   svn:mime-type = text/plain

Modified: ofbiz/trunk/framework/common/widget/CommonMenus.xml
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/widget/CommonMenus.xml?rev=735965&r1=735964&r2=735965&view=diff
= = = = = = = = 
======================================================================
--- ofbiz/trunk/framework/common/widget/CommonMenus.xml (original)
+++ ofbiz/trunk/framework/common/widget/CommonMenus.xml Tue Jan 20  00:30:41 
2009
@@ -31,7 +31,7 @@
         </menu-item>
         <menu-item name="Login" title="${uiLabelMap.CommonLogin}"  
align-style="opposed">
             <condition><if-empty field-name="userLogin"/></condition>
-             <link target="${checkLoginUrl}"/>
+             <link target="logout"/>
         </menu-item>
     </menu>


Modified: ofbiz/trunk/specialpurpose/myportal/config/ MyPortalUiLabels.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/myportal/config/MyPortalUiLabels.xml?rev=735965&r1=735964&r2=735965&view=diff
= = = = = = = = 
======================================================================
--- ofbiz/trunk/specialpurpose/myportal/config/MyPortalUiLabels.xml  (original)
+++ ofbiz/trunk/specialpurpose/myportal/config/MyPortalUiLabels.xml  Tue Jan 20 
00:30:41 2009
@@ -18,6 +18,18 @@
    under the License.
-->
<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
+    <property key="CaptchaMissingError">
+        <value xml:lang="en">Verify code captcha is missing or  wrong</value>
+        <value xml:lang="th">รหัสตัวเลขที่ ท่านกรอกมีข้อผิดพลาด</value>
+    </property>
+    <property key="FirstName_Missing">
+        <value xml:lang="en">Your firstName is missing</value>
+        <value xml:lang="th">กรุณากรอกชื่อ ของท่าน</value>
+    </property>
+    <property key="LastName_Missing">
+        <value xml:lang="en">Your lastname is missing</value>
+        <value xml:lang="th">กรุณากรอก นามสกุลของท่าน</value>
+    </property>
    <property key="MyPortalDashboard">
        <value xml:lang="en">My Portal</value>
        <value xml:lang="fr">Mon portail</value>
@@ -30,6 +42,10 @@
        <value xml:lang="it">Invia email ad ogni cliente per le  modifiche sulla 
richiesta</value>
        <value xml:lang="th">ส่งอีเมล์ถึง ลูกค้าที่เปลี่ยนความ ต้องการ</value>
    </property>
+    <property key="NewRegistration">
+        <value xml:lang="en">New Registration </value>
+        <value xml:lang="th">ลงทะเบียน </value>
+    </property>
    <property key="PageTitleMyPortal">
        <value xml:lang="en">My Portal for : </value>
        <value xml:lang="it">Mio portale per : </value>
@@ -41,4 +57,24 @@
        <value xml:lang="it">Pagina mio portale</value>
        <value xml:lang="th">หน้าส่วนตัว ของฉัน</value>
    </property>
+    <property key="PicCaptcha">
+        <value xml:lang="en">Code Captcha</value>
+        <value xml:lang="th">รหัสตรวจสอบ</ value>
+    </property>
+    <property key="RegisterComplete">
+        <value xml:lang="en">Register of new person is  complete...Please 
</value>
+        <value xml:lang="th">การลงทะเบียน ใหม่สำหรับบุคคลได้ทำการ เสร็จสิ้นสมบูรณ์ 
แล้ว...สามารถเข้าสู่ระบบ ได้ </value>
+    </property>
+    <property key="RegisterForCustomer">
+        <value xml:lang="en">Register for customer</value>
+        <value xml:lang="th">ลงทะเบียน สำหรับลูกค้า</value>
+    </property>
+    <property key="VerifyCaptcha">
+        <value xml:lang="en">Verify captcha code</value>
+        <value xml:lang="th">ใส่รหัสตาม รูป</value>
+    </property>
+    <property key="UserLogin">
+        <value xml:lang="en">User Login</value>
+        <value xml:lang="th">ข้อมูลการลง ทะเบียน</value>
+    </property>
</resource>

Modified: ofbiz/trunk/specialpurpose/myportal/script/org/ofbiz/ 
myportal/Events.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/myportal/script/org/ofbiz/myportal/Events.xml?rev=735965&r1=735964&r2=735965&view=diff
= = = = = = = = 
======================================================================
--- ofbiz/trunk/specialpurpose/myportal/script/org/ofbiz/myportal/ Events.xml 
(original)
+++ ofbiz/trunk/specialpurpose/myportal/script/org/ofbiz/myportal/ Events.xml 
Tue Jan 20 00:30:41 2009
@@ -312,4 +312,87 @@
            request-name="communicationEventTypeId"/>
        <field-to-request field="communicationEventId" request- 
name="communicationEventId"/>
    </simple-method>
+
+    <simple-method method-name="createRegister"
+        short-description="Create person when new register" login- 
required="false">
+ <if-empty field="parameters.firstName"><property-to-field field="errorMessage" resource="MyPortalUiLabels" property="FirstName_Missing"/><field-to-list field="errorMessage" list="error_list"/></if-empty> + <if-empty field="parameters.lastName"><property-to-field field="errorMessage" resource="MyPortalUiLabels" property="LastName_Missing"/><field-to-list field="errorMessage" list="error_list"/></if-empty> + <if-empty field="parameters.USERNAME"><property-to-field field="errorMessage" resource="PartyUiLabels" property="PartyUserNameMissing"/><field-to-list field="errorMessage" list="error_list"/></if-empty> + <if-empty field="parameters.PASSWORD"><property-to-field field="errorMessage" resource="PartyUiLabels" property="PartyPasswordMissing"/><field-to-list field="errorMessage" list="error_list"/></if-empty>
+        <call-bsh><![CDATA[
+             parameters.put("captchaCode",org.ofbiz.common.Captcha.ID_KEY);
+        ]]></call-bsh>
+ <call-object-method obj-field="PASSWORD" obj-map- name="parameters" method-name="toLowerCase" ret-field="PASSWORD" ret- map-name="parameters"/> + <call-object-method obj-field="CONFIRM_PASSWORD" obj-map- name="parameters" method-name="toLowerCase" ret- field="CONFIRM_PASSWORD" ret-map-name="parameters"/>
+        <if-compare field="parameters.PASSWORD" value="$ {parameters.CONFIRM_PASSWORD}" 
operator="equals">
+ <call-object-method obj-field="captcha" obj-map- name="parameters" method-name="toLowerCase" ret-field="captcha" ret- map-name="parameters"/> + <call-object-method obj-field="captchaCode" obj-map- name="parameters" method-name="toLowerCase" ret-field="captchaCode" ret-map-name="parameters"/>
+            <if-compare field="parameters.captcha" value="$ {parameters.captchaCode}" 
operator="equals">
+
+                <!-- Create Person -->
+                <set field="parameters.statusId"  value="PARTY_ENABLED"/>
+                <make-value entity-name="Party" value- field="newEntity"/>
+                <set-pk-fields map="parameters" value- field="newEntity"/>
+                <make-next-seq-id value-field="newEntity" seq-field- 
name="partyId"/>
+                <set field="newEntity.partyTypeId" value="PERSON"/>
+                <set-nonpk-fields map="parameters" value- field="newEntity"/>
+                <create-value value-field="newEntity"/>
+
+                <make-value entity-name="PartyStatus" value- 
field="newEntity2"/>
+                <set field="newEntity2.partyId" from- 
field="newEntity.partyId"/>
+                <set field="newEntity2.statusId" from- 
field="newEntity.statusId"/>
+                <set field="newEntity2.statusDate" from- 
field="newEntity.createdStamp"/>
+                <create-value value-field="newEntity2"/>
+
+                <make-value entity-name="Person" value- field="newEntity3"/>
+                <set field="newEntity3.partyId" from- 
field="newEntity.partyId"/>
+                <set-nonpk-fields map="parameters" value- field="newEntity3"/>
+                <create-value value-field="newEntity3"/>
+
+                <!-- Create the UserLogin Record -->
+                <call-map-processor in-map-name="parameters" out- 
map-name="userLoginContext">
+                    <simple-map-processor name="newUserLogin">
+                        <process field="USERNAME"><copy to- 
field="userLoginId"/></process>
+                        <process field="PASSWORD"><copy to- 
field="currentPassword"/></process>
+                        <process field="CONFIRM_PASSWORD"><copy to- 
field="currentPasswordVerify"/></process>
+                        <process field="PASSWORD_HINT"><copy to- 
field="passwordHint"/></process>
+                    </simple-map-processor>
+                </call-map-processor>
+                <set field="userLoginExistsMap.userLoginId"  from- 
field="userLoginContext.userLoginId" />
+                <find-by-primary-key entity-name="UserLogin"  map="userLoginExistsMap" 
value-field="existingUserLogin"/>
+                <if-not-empty field="existingUserLogin">
+                    <set field="errorMessage" value="Username in  use, please choose 
another." />
+                    <field-to-list field="errorMessage"  list="error_list"/>
+                    <check-errors error-list-name="error_list"  
error-code="resultPage"/>
+                    <else>
+                        <make-value entity-name="UserLogin" value- 
field="newUserLogin"/>
+                        <set field="newUserLogin.userLoginId" from- 
field="userLoginContext.userLoginId"/>
+                        <set field="newUserLogin.currentPassword"  
from-field="userLoginContext.currentPassword" />
+                        <set field="newUserLogin.passwordHint" from- 
field="userLoginContext.passwordHint" />
+                        <!-- Check the password, etc for validity -->
+                        <call-bsh><![CDATA[
+                            String password = (String)  
userLoginContext.get("currentPassword");
+                            String confirmPassword = (String)  
userLoginContext.get("currentPasswordVerify");
+                            String passwordHint = (String)  
userLoginContext.get("passwordHint");
+ org.ofbiz.common.login.LoginServices.checkNewPassword(newUserLogin, null, password, confirmPassword, passwordHint, error_list, true, locale); + boolean useEncryption = "true ".equals (org.ofbiz.base.util.UtilProperties.getPropertyValue("security", "password.encrypt")); + if (useEncryption) { newUserLogin.set("currentPassword", org.ofbiz.base.crypto.HashCrypt.getDigestHash((String) newUserLogin.get("currentPassword"))); }
+                            ]]></call-bsh>
+                        <set field="newUserLogin.partyId" from- 
field="newEntity.partyId" />
+                        <create-value value-field="newUserLogin"/>
+                    </else>
+                </if-not-empty>
+                <set field="partyId" from-field="newEntity.partyId"/>
+                <field-to-request field="partyId" request- name="partyId"/>
+                <return response-code="resultPage"/>
+                <else>
+ <property-to-field field="errorMessage" resource="MyPortalUiLabels" property="CaptchaMissingError"/><field- to-list field="errorMessage" list="error_list"/>
+                </else>
+            </if-compare>
+            <else>
+ <property-to-field field="errorMessage" resource="PartyUiLabels" property="PartyPasswordMatchError"/><field- to-list field="errorMessage" list="error_list"/>
+            </else>
+        </if-compare>
+        <check-errors error-list-name="error_list" error- code="resultPage"/>
+    </simple-method>
</simple-methods>

Modified: ofbiz/trunk/specialpurpose/myportal/webapp/myportal/WEB- 
INF/controller.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/myportal/webapp/myportal/WEB-INF/controller.xml?rev=735965&r1=735964&r2=735965&view=diff
= = = = = = = = 
======================================================================
--- ofbiz/trunk/specialpurpose/myportal/webapp/myportal/WEB-INF/ controller.xml 
(original)
+++ ofbiz/trunk/specialpurpose/myportal/webapp/myportal/WEB-INF/ controller.xml 
Tue Jan 20 00:30:41 2009
@@ -31,6 +31,23 @@
        <security https="true" auth="true"/>
        <response name="success" type="view" value="main"/>
    </request-map>
+    <request-map uri="login">
+        <security https="true" auth="false"/>
+        <event type="java"  path="org.ofbiz.securityext.login.LoginEvents" 
invoke="storeLogin"/>
+        <response name="success" type="view" value="main"/>
+        <response name="requirePasswordChange" type="view"  
value="requirePasswordChange"/>
+        <response name="error" type="view" value="login"/>
+    </request-map>
+    <request-map uri="newRegisterLogin">
+        <security https="true" auth="false"/>
+        <event type="java" invoke="getCodeCaptcha"  
path="org.ofbiz.common.Captcha"/>
+        <response name="success" type="view"  value="newRegisterLogin"/>
+    </request-map>
+    <request-map uri="createRegister">
+        <security https="true" auth="false"/>
+        <event type="simple" invoke="createRegister" path="org/ 
ofbiz/myportal/Events.xml"/>
+        <response name="resultPage" type="url"  value="newRegisterLogin"/>
+    </request-map>

    <!-- TIMESHEET -->
    <request-map uri="myTimesheet">
@@ -270,6 +287,8 @@
    </request-map>

    <view-map name="main" type="screen" page="component://myportal/ 
widget/CommonScreens.xml#main"/>
+    <view-map name="login" type="screen" page="component://myportal/ 
widget/CommonScreens.xml#login"/>
+    <view-map name="newRegisterLogin" type="screen"  
page="component://myportal/widget/ CommonScreens.xml#newRegisterLogin"/>
    <view-map name="myTasks" type="screen" page="component:// 
myportal/widget/CommonScreens.xml#MyTasks"/>
    <view-map name="myCommunications" type="screen"  page="component://myportal/widget/ 
CommonScreens.xml#MyCommunications"/>
<view-map name="otherCommunications" type="screen" page="component://myportal/widget/ CommonScreens.xml#OtherCommunications"/>

Modified: ofbiz/trunk/specialpurpose/myportal/widget/CommonScreens.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/myportal/widget/CommonScreens.xml?rev=735965&r1=735964&r2=735965&view=diff
= = = = = = = = 
======================================================================
--- ofbiz/trunk/specialpurpose/myportal/widget/CommonScreens.xml  (original)
+++ ofbiz/trunk/specialpurpose/myportal/widget/CommonScreens.xml Tue  Jan 20 
00:30:41 2009
@@ -164,6 +164,66 @@
            </widgets>
        </section>
    </screen>
+
+    <screen name="login">
+        <section>
+            <widgets>
+                <decorator-screen name="main-decorator" location="$ 
{parameters.mainDecoratorLocation}">
+                    <decorator-section name="body">
+                        <platform-specific>
+                            <html><html-template  
location="component://myportal/widget/login.ftl"/></html>
+                        </platform-specific>
+                    </decorator-section>
+                </decorator-screen>
+            </widgets>
+        </section>
+    </screen>
+
+    <!--New Register Person-->
+    <screen name="newRegisterLogin">
+        <section>
+            <actions>
+                <set field="partyId" from- field="parameters.partyId"/>
+                <entity-one entity-name="PartyAndPerson" value- 
name="personInfo"/>
+            </actions>
+            <widgets>
+                <decorator-screen name="main-decorator" location="$ 
{parameters.mainDecoratorLocation}">
+                    <decorator-section name="body">
+                        <section>
+                            <condition>
+                                <not><if-empty field- 
name="parameters.partyId"/></not>
+                            </condition>
+                            <actions>
+                                <set field="partyId" from- 
field="parameters.partyId"/>
+                                <script location="component://party/ 
webapp/partymgr/WEB-INF/actions/party/ViewProfile.groovy"/>
+                            </actions>
+                            <widgets>
+ <label style="h2" text="$ {uiLabelMap.RegisterComplete}"/><link target="main" style="h2" text="${uiLabelMap.CommonBeLogged}"></link>
+                                <label style="h2"  
text="&lt;br&gt;&lt;br&gt;"/>
+                                <include-screen name="Party"  
location="component://party/widget/partymgr/ProfileScreens.xml"/>
+                            </widgets>
+                            <fail-widgets>
+                                <container style="screenlet">
+                                    <container style="screenlet- title-bar">
+                                        <container style="h3">
+                                            <label text="$ 
{uiLabelMap.NewRegistration}"/>
+                                        </container>
+                                    </container>
+                                    <container style="screenlet- body">
+                                        <section>
+                                            <widgets>
+ <include-form name="RegisterPerson" location="component://myportal/widget/ MyPortalForms.xml"/>
+                                            </widgets>
+                                        </section>
+                                    </container>
+                                </container>
+                            </fail-widgets>
+                        </section>
+                    </decorator-section>
+                </decorator-screen>
+            </widgets>
+        </section>
+    </screen>

    <screen name="CommonRequestDecorator">
        <section>

Modified: ofbiz/trunk/specialpurpose/myportal/widget/MyPortalForms.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/myportal/widget/MyPortalForms.xml?rev=735965&r1=735964&r2=735965&view=diff
= = = = = = = = 
======================================================================
--- ofbiz/trunk/specialpurpose/myportal/widget/MyPortalForms.xml  (original)
+++ ofbiz/trunk/specialpurpose/myportal/widget/MyPortalForms.xml Tue  Jan 20 
00:30:41 2009
@@ -276,4 +276,75 @@
        <field name="task"><display description="${workEffortName}"/
></field>
    </form>

+    <!--New Register Person-->
+    <form name="RegisterPerson" type="single"  target="createRegister" 
default-map-name="personInfo"
+        focus-field-name="salutation" header-row-style="header-row"  
default-table-style="basic-table">
+        <auto-fields-service service-name="updatePerson"/>
+ <field use-when="personInfo!=null" name="partyId" title="$ {uiLabelMap.PartyPartyId}" tooltip="$ {uiLabelMap.CommonNotModifRecreat}"><display/></field> + <field use-when="personInfo==null&amp;&amp;partyId==null" name="partyId" title="${uiLabelMap.PartyPartyId}"><ignored/></field> + <field use-when="personInfo==null&amp;&amp;partyId!=null" name="partyId" title="${uiLabelMap.PartyPartyId}" tooltip="$ {uiLabelMap.CommonCannotBeFound}: [${partyId}]"><display also- hidden="false"/></field> + <field name="firstName" title="$ {uiLabelMap.PartyFirstName}" tooltip="${uiLabelMap.CommonRequired}" widget-style="required"><text size="40" maxlength="60"/></field> + <field name="lastName" title="${uiLabelMap.PartyLastName}" tooltip="${uiLabelMap.CommonRequired}" widget-style="required"><text size="40" maxlength="60"/></field>
+        <field name="gender">
+            <drop-down allow-empty="true">
+                <option key="M" description="$ {uiLabelMap.CommonMale}"/>
+                <option key="F" description="$ {uiLabelMap.CommonFemale}"/>
+            </drop-down>
+        </field>
+        <field name="maritalStatus">
+            <drop-down allow-empty="true">
+                <option key="S" description="$ 
{uiLabelMap.PartyMaritalStatusSingle}"/>
+                <option key="M" description="$ 
{uiLabelMap.PartyMaritalStatusMarried}"/>
+                <option key="P" description="$ 
{uiLabelMap.PartyMaritalStatusSeparated}"/>
+                <option key="D" description="$ 
{uiLabelMap.PartyMaritalStatusDivorced}"/>
+                <option key="W" description="$ 
{uiLabelMap.PartyMaritalStatusWidowed}"/>
+            </drop-down>
+        </field>
+        <field name="employmentStatusEnumId">
+            <drop-down allow-empty="true">
+                <entity-options entity-name="Enumeration" key-field- name="enumId" 
description="${description} [${enumCode}]">
+                    <entity-constraint name="enumTypeId"  value="EMPLOY_STTS"/>
+                    <entity-order-by field-name="sequenceId"/>
+                </entity-options>
+            </drop-down>
+        </field>
+        <field name="residenceStatusEnumId">
+            <drop-down allow-empty="true">
+                <entity-options entity-name="Enumeration" key-field- name="enumId" 
description="${description} [${enumCode}]">
+                    <entity-constraint name="enumTypeId"  
value="PTY_RESID_STTS"/>
+                    <entity-order-by field-name="sequenceId"/>
+                </entity-options>
+            </drop-down>
+        </field>
+        <field name="existingCustomer">
+ <drop-down allow-empty="true"><option key="Y" description="${uiLabelMap.CommonY}"/><option key="N" description="$ {uiLabelMap.CommonN}"/></drop-down>
+        </field>
+        <field name="preferredCurrencyUomId">
+            <drop-down allow-empty="true">
+                <entity-options key-field-name="uomId"  description="${abbreviation} - 
${description}" entity-name="Uom">
+                    <entity-constraint name="uomTypeId"  operator="equals" 
value="CURRENCY_MEASURE"/>
+                    <entity-order-by field-name="abbreviation"/>
+                </entity-options>
+            </drop-down>
+        </field>
+        <field name="statusId" use-when="person==null"><hidden/></ field>
+        <field name="statusId" use-when="person!=null">
+            <drop-down allow-empty="false">
+                <entity-options description="${description}" entity- 
name="StatusItem">
+                    <entity-constraint name="statusTypeId"  
value="PARTY_STATUS"/>
+                    <entity-order-by field-name="sequenceId"/>
+                </entity-options>
+            </drop-down>
+        </field>
+ <field name="UserLogin" title="${uiLabelMap.UserLogin}" title-area-style="group-label"><display description=" " also- hidden="false"/></field> + <field name="USERNAME" title="${uiLabelMap.CommonUsername}" tooltip="${uiLabelMap.CommonRequired}" widget-style="required"><text size="30" maxlength="250"/></field> + <field name="PASSWORD" title="${uiLabelMap.CommonPassword}" tooltip="${uiLabelMap.CommonRequired}" widget- style="required"><password size="15" maxlength="250"/></field> + <field name="CONFIRM_PASSWORD" title="$ {uiLabelMap.CommonPassword}" tooltip="* ${uiLabelMap.CommonConfirm}" widget-style="required"><password size="15" maxlength="250"/></field> + <field name="VerifyCaptchaTitle" title="$ {uiLabelMap.VerifyCaptcha}" title-area-style="group-label"><display description=" " also-hidden="false"/></field>
+        <field name="picOfcaptcha" title="$ {uiLabelMap.PicCaptcha}"><image 
value="/images/captchaImage.png"></ image></field>
+ <field name="reload" title=" "><image value="/images/feed- icon-14x14.png"><sub-hyperlink target="newRegisterLogin" description="reload image"/></image></field> + <field name="captcha" title="${uiLabelMap.VerifyCaptcha}" tooltip="${uiLabelMap.CommonRequired}" widget-style="required"><text size="23" maxlength="30"/></field> + <field name="submitButton" title="${uiLabelMap.CommonSave}" title-area-style="group-label"><submit button-type="button"/></field>
+    </form>
+
</forms>

Added: ofbiz/trunk/specialpurpose/myportal/widget/login.ftl
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/myportal/widget/login.ftl?rev=735965&view=auto
= = = = = = = = 
======================================================================
--- ofbiz/trunk/specialpurpose/myportal/widget/login.ftl (added)
+++ ofbiz/trunk/specialpurpose/myportal/widget/login.ftl Tue Jan 20  00:30:41 
2009
@@ -0,0 +1,73 @@
+<#--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<#if requestAttributes.uiLabelMap?exists><#assign uiLabelMap =  
requestAttributes.uiLabelMap></#if>
+
+<#assign previousParams = sessionAttributes._PREVIOUS_PARAMS_? if_exists>
+<#if previousParams?has_content>
+  <#assign previousParams = "?" + previousParams>
+</#if>
+
+<#assign username = requestParameters.USERNAME? 
default((sessionAttributes.autoUserLogin.userLoginId)?default(""))>
+<#if username != "">
+  <#assign focusName = false>
+<#else>
+  <#assign focusName = true>
+</#if>
+
+<center>
+  <div class="screenlet login-screenlet" style="width: 22%; margin- left: 5px; 
text-align: center;">
+    <div class="screenlet-title-bar">
+      <h3>${uiLabelMap.CommonRegistered}</h3>
+    </div>
+    <div class="screenlet-body">
+      <form method="post" action="<@ofbizUrl>login${previousParams? if_exists}</@ofbizUrl>" 
name="loginform">
+        <table class="basic-table" cellspacing="0">
+          <tr>
+            <td class="label" style="width: 31%;">$ 
{uiLabelMap.CommonUsername}</td>
+            <td><input type="text" name="USERNAME" value="$ {username}" 
size="20"/></td>
+          </tr>
+          <tr>
+            <td class="label">${uiLabelMap.CommonPassword}</td>
+            <td><input type="password" name="PASSWORD" value=""  
size="20"/></td>
+          </tr>
+          <tr>
+            <td colspan="2" align="center">
+              <input type="submit" value="$ {uiLabelMap.CommonLogin}"/>
+            </td>
+          </tr>
+        </table>
+        <input type="hidden" name="JavaScriptEnabled" value="N"/>
+        <br/>
+        <a href="<@ofbizUrl>forgotPassword${previousParams? 
if_exists}</@ofbizUrl>">${uiLabelMap.CommonForgotYourPassword}?</a>
+        <br/>
+        <a href="<@ofbizUrl>newRegisterLogin${previousParams? 
if_exists}</@ofbizUrl>">${uiLabelMap.NewRegistration}</a>
+      </form>
+    </div>
+  </div>
+</center>
+
+<script language="JavaScript" type="text/javascript">
+  document.loginform.JavaScriptEnabled.value = "Y";
+  <#if focusName>
+    document.loginform.USERNAME.focus();
+  <#else>
+    document.loginform.PASSWORD.focus();
+  </#if>
+</script>
\ No newline at end of file

Propchange: ofbiz/trunk/specialpurpose/myportal/widget/login.ftl
------------------------------------------------------------------------------
   svn:eol-style = native

Propchange: ofbiz/trunk/specialpurpose/myportal/widget/login.ftl
------------------------------------------------------------------------------
   svn:keywords = "Date Rev Author URL Id"

Propchange: ofbiz/trunk/specialpurpose/myportal/widget/login.ftl
------------------------------------------------------------------------------
   svn:mime-type = text/plain





Reply via email to