Hi Marco,

sure we can do this, however captcha itself is a framework function, but
at the moment only used in myportal... We will move the captcha messages
to the framwork....

regards,
Hans

On Sat, 2009-01-24 at 22:22 +0100, [email protected] wrote:
> 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
> >
> >
> 
-- 
Antwebsystems.com: Quality OFBiz services for competitive prices

Reply via email to