Administrator
|
Hi Hans,
Is this captcha feature correctly working now ? On Windows ? Thanks Jacques From: <[hidden email]> > 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="<br><br>"/> > + <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&&partyId==null" name="partyId" > title="${uiLabelMap.PartyPartyId}"><ignored/></field> > + <field use-when="personInfo==null&&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 > > |
Free forum by Nabble | Edit this page |