[pal-cvs 2877] [621] added signup portlet.

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2007年 10月 11日 (木) 22:29:42 JST


Revision: 621
          http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?root=pal&view=rev&rev=621
Author:   shinsuke
Date:     2007-10-11 22:29:41 +0900 (Thu, 11 Oct 2007)

Log Message:
-----------
added signup portlet.

Modified Paths:
--------------
    pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/PompeiConstants.java
    pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/dxo/CustomerDxo.java
    pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/service/CustomerService.java
    pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/service/impl/CustomerServiceImpl.java
    pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/checkout/UserInfoEditAction.java
    pompei/portlets/pompei-core/trunk/src/main/resources/appMessages.properties
    pompei/portlets/pompei-core/trunk/src/main/webapp/WEB-INF/portlet.xml
    pompei/portlets/pompei-core/trunk/src/main/webapp/view/index.html

Added Paths:
-----------
    pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/filter/
    pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/filter/UserRegistrationFilter.java
    pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/util/SystemUtil.java
    pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/util/UserRegistrationUtil.java
    pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/
    pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/AbstractUsersignupPage.java
    pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/SignupCompleteAction.java
    pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/SignupCompletePage.java
    pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/SignupConfirmAction.java
    pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/SignupConfirmPage.java
    pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/SignupEditAction.java
    pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/SignupEditPage.java
    pompei/portlets/pompei-core/trunk/src/main/resources/jp/sf/pal/pompei/web/user/signup/
    pompei/portlets/pompei-core/trunk/src/main/resources/jp/sf/pal/pompei/web/user/signup/SignupEdit.properties
    pompei/portlets/pompei-core/trunk/src/main/resources/jp/sf/pal/pompei/web/user/signup/SignupEdit_ja.properties
    pompei/portlets/pompei-core/trunk/src/main/resources/jp/sf/pal/pompei/web/user/signup/label.properties
    pompei/portlets/pompei-core/trunk/src/main/webapp/WEB-INF/jetspeed-portlet.xml
    pompei/portlets/pompei-core/trunk/src/main/webapp/WEB-INF/template/
    pompei/portlets/pompei-core/trunk/src/main/webapp/WEB-INF/template/term_of_service.txt
    pompei/portlets/pompei-core/trunk/src/main/webapp/WEB-INF/template/userreg/
    pompei/portlets/pompei-core/trunk/src/main/webapp/WEB-INF/template/userreg/email/
    pompei/portlets/pompei-core/trunk/src/main/webapp/WEB-INF/template/userreg/email/userRegistrationEmail.vm
    pompei/portlets/pompei-core/trunk/src/main/webapp/view/user/signup/
    pompei/portlets/pompei-core/trunk/src/main/webapp/view/user/signup/signupComplete.html
    pompei/portlets/pompei-core/trunk/src/main/webapp/view/user/signup/signupConfirm.html
    pompei/portlets/pompei-core/trunk/src/main/webapp/view/user/signup/signupEdit.html


-------------- next part --------------
Modified: pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/PompeiConstants.java
===================================================================
--- pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/PompeiConstants.java	2007-10-11 08:28:54 UTC (rev 620)
+++ pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/PompeiConstants.java	2007-10-11 13:29:41 UTC (rev 621)
@@ -2,7 +2,11 @@
 
 import java.math.BigDecimal;
 
+import org.apache.jetspeed.om.folder.Folder;
+
 public class PompeiConstants {
+    public static final String PREFIX = "jp.sf.pal.pompei.";
+
     public static final int DEFULAT_PAGE_SIZE = 25;
 
     public static final int DEFULAT_PAGE_RANGE_SIZE = 5;
@@ -155,4 +159,78 @@
 
     public static final BigDecimal FINISHED_ORDER_STATUS_TYPE = new BigDecimal(
             3);
+
+    public static final String DUMMY_SECRET_ANSWER = "********";
+
+    public static final String PAGE_MANAGER_COMPONENT = PREFIX + "PageManager";
+
+    public static final String PORTAL_ADMINISTRATION_COMPONENT = PREFIX
+            + "PortalAdministration";
+
+    public static final String USER_MANAGER_COMPONENT = PREFIX + "UserManager";
+
+    public static final String AUDIT_ACTIVITY_COMPONENT = PREFIX
+            + "AuditActivity";
+
+    public static final String USER_REGISTRATION_PARAMS = PREFIX
+            + "UserRegistrationParams";
+
+    public static final String EMAIL_TEMPLATE_LOCATION = PREFIX
+            + "EmailTemplateLocation";
+
+    public static final String DEFAULT_TEMPLATE_LOCATION = "/WEB-INF/template/userreg/";
+
+    public static final String EMAIL_TEMPLATE_NAME = PREFIX
+            + "EmailTemplateName";
+
+    public static final String DEFAULT_TEMPLATE_NAME = "userRegistrationEmail.vm";
+
+    public static final String TEMPLATE_LOCATOR = PREFIX + "TemplateLocator";
+
+    public static final String ROLES = PREFIX + "Roles";
+
+    public static final String GROUPS = PREFIX + "Groups";
+
+    public static final String RULES = PREFIX + "Rules";
+
+    public static final String RULE_NAMES = PREFIX + "RuleNames";
+
+    public static final String RULE_VALUES = PREFIX + "RuleValues";
+
+    public static final String FORCE_GENERATED_PASSWORD = PREFIX
+            + "ForceGeneratedPassword";
+
+    public static final String FORCE_USE_EMAIL_AS_USERNAME = PREFIX
+            + "ForceUseEmailAsUsername";
+
+    public static final String FORCE_UNIQUE_EMAIL = PREFIX + "ForceUniqueEmail";
+
+    public static final String SEND_MAIL = PREFIX + "SendMail";
+
+    public static final String DEFAULT_USER_TEMPLATE_FOLDER_NAME = "_template";
+
+    public static final String DEFAULT_USER_TEMPLATE_FOLDER = Folder.USER_FOLDER
+            + DEFAULT_USER_TEMPLATE_FOLDER_NAME + "/";
+
+    public static final String MD_ALGORITHM = "mdAlgorithm";
+
+    public static final String DEFAULT_MD_ALGORITHM = "MD5";
+
+    public static final String MD_ENCODING = "mdEncoding";
+
+    public static final String DEFAULT_MD_ENCODING = "UTF-8";
+
+    public static final String USER_NAME = "user.name";
+
+    public static final String USER_PASSWORD = "user.password";
+
+    public static final String USER_VERIFY_PASSWORD = "user.verify.password";
+
+    public static final String USER_BUSINESS_INFO_ONLINE_EMAIL = "user.business-info.online.email";
+
+    public static final String USER_SECRET_QUESTION = "user.secret.question";
+
+    public static final String USER_SECRET_ANSWER = "user.secret.answer";
+
+    public static final String EMAIL_SUBJECT_USER_REGISTRATION = "email.subject.registration";
 }

Modified: pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/dxo/CustomerDxo.java
===================================================================
--- pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/dxo/CustomerDxo.java	2007-10-11 08:28:54 UTC (rev 620)
+++ pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/dxo/CustomerDxo.java	2007-10-11 13:29:41 UTC (rev 621)
@@ -10,21 +10,22 @@
 import jp.sf.pal.pompei.web.user.checkout.CheckoutConfirmPage;
 import jp.sf.pal.pompei.web.user.checkout.UserAddressSelectPage;
 import jp.sf.pal.pompei.web.user.checkout.UserInfoEditPage;
+import jp.sf.pal.pompei.web.user.signup.AbstractUsersignupPage;
 
 public interface CustomerDxo extends Serializable {
 
-    public void convert(AbstractCustomerEditPage memberConfirmPage,
-            AddressBook book);
+    public void convert(AbstractCustomerEditPage page, AddressBook book);
 
-    public void convert(AbstractCustomerEditPage customerEditPage,
-            Customer customer);
+    public void convert(AbstractCustomerEditPage page, Customer customer);
 
-    public void convert(Customer customer,
-            AbstractCustomerEditPage customerEditPage);
+    public void convert(AbstractUsersignupPage page, AddressBook book);
 
-    public void convert(AddressBook addressBook,
-            AbstractCustomerEditPage customerEditPage);
+    public void convert(AbstractUsersignupPage page, Customer customer);
 
+    public void convert(Customer customer, AbstractCustomerEditPage page);
+
+    public void convert(AddressBook addressBook, AbstractCustomerEditPage page);
+
     public List<Map<String, Object>> convert(List<Customer> list);
 
     public void convert(Customer customer, UserInfoEditPage page);

Added: pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/filter/UserRegistrationFilter.java
===================================================================
--- pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/filter/UserRegistrationFilter.java	2007-10-11 08:28:54 UTC (rev 620)
+++ pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/filter/UserRegistrationFilter.java	2007-10-11 13:29:41 UTC (rev 621)
@@ -0,0 +1,284 @@
+/*
+ * Copyright 2005-2007 Portal Application Laboratory and the Others.
+ *
+ * Licensed 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.
+ */
+package jp.sf.pal.pompei.filter;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletConfig;
+import javax.portlet.PortletContext;
+import javax.portlet.PortletException;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+
+import jp.sf.pal.pompei.PompeiConstants;
+
+import org.apache.jetspeed.CommonPortletServices;
+import org.apache.jetspeed.administration.PortalAdministration;
+import org.apache.jetspeed.audit.AuditActivity;
+import org.apache.jetspeed.locator.JetspeedTemplateLocator;
+import org.apache.jetspeed.page.PageManager;
+import org.apache.jetspeed.security.UserManager;
+import org.apache.portals.bridges.portletfilter.PortletFilter;
+import org.apache.portals.bridges.portletfilter.PortletFilterChain;
+import org.apache.portals.bridges.portletfilter.PortletFilterConfig;
+
+public class UserRegistrationFilter implements PortletFilter {
+    private PageManager pageManager;
+
+    private PortalAdministration portalAdministration;
+
+    private UserManager userManager;
+
+    private AuditActivity auditActivity;
+
+    private Map<String, Object> userRegistrationParams;
+
+    public void destroy() {
+        pageManager = null;
+        portalAdministration = null;
+        userManager = null;
+        userRegistrationParams = null;
+    }
+
+    public void init(PortletFilterConfig filterConfig) throws PortletException {
+        PortletConfig portletConfig = filterConfig.getPortletConfig();
+        PortletContext portletContext = portletConfig.getPortletContext();
+
+        // pageManager
+        pageManager = (PageManager) portletContext
+                .getAttribute(CommonPortletServices.CPS_PAGE_MANAGER_COMPONENT);
+        if (null == pageManager) {
+            throw new PortletException(
+                    "Failed to find the Page Manager on portlet initialization");
+        }
+
+        // portalAdministration
+        portalAdministration = (PortalAdministration) portletContext
+                .getAttribute(CommonPortletServices.CPS_PORTAL_ADMINISTRATION);
+        if (portalAdministration == null) {
+            throw new PortletException(
+                    "Failed to find the `prtaon portlet initialization");
+        }
+
+        // userManager
+        userManager = (UserManager) portletContext
+                .getAttribute(CommonPortletServices.CPS_USER_MANAGER_COMPONENT);
+        if (userManager == null) {
+            throw new PortletException(
+                    "Failed to find the User Manager on portlet initialization");
+        }
+
+        // auditActivity
+        auditActivity = (AuditActivity) portletContext
+                .getAttribute(CommonPortletServices.CPS_AUDIT_ACTIVITY);
+        if (auditActivity == null) {
+            throw new PortletException(
+                    "Failed to find the User Manager on portlet initialization");
+        }
+
+        // user params
+        userRegistrationParams = new HashMap<String, Object>();
+
+        String templateLocation = portletConfig
+                .getInitParameter(PompeiConstants.EMAIL_TEMPLATE_LOCATION);
+        if (templateLocation == null) {
+            templateLocation = PompeiConstants.DEFAULT_TEMPLATE_LOCATION;
+        }
+        templateLocation = portletContext.getRealPath(templateLocation);
+        userRegistrationParams.put(PompeiConstants.EMAIL_TEMPLATE_LOCATION,
+                templateLocation);
+
+        String templateName = portletConfig
+                .getInitParameter(PompeiConstants.EMAIL_TEMPLATE_NAME);
+        if (templateName == null) {
+            templateName = PompeiConstants.DEFAULT_TEMPLATE_NAME;
+        }
+        userRegistrationParams.put(PompeiConstants.EMAIL_TEMPLATE_NAME,
+                templateName);
+
+        ArrayList<String> roots = new ArrayList<String>(1);
+        roots.add(templateLocation);
+
+        try {
+            JetspeedTemplateLocator templateLocator = new JetspeedTemplateLocator(
+                    roots, "email", portletContext.getRealPath("/"));
+            templateLocator.start();
+            userRegistrationParams.put(PompeiConstants.TEMPLATE_LOCATOR,
+                    templateLocator);
+        } catch (FileNotFoundException e) {
+            throw new PortletException("Could not start the template locator.",
+                    e);
+        }
+
+        // roles
+        List<String> roles = getInitParameterList(portletConfig,
+                PompeiConstants.ROLES);
+        getUserRegistrationParams().put(PompeiConstants.ROLES, roles);
+
+        // groups
+        List<String> groups = getInitParameterList(portletConfig,
+                PompeiConstants.GROUPS);
+        getUserRegistrationParams().put(PompeiConstants.GROUPS, groups);
+
+        // rules (name,value pairs)
+        List<String> names = getInitParameterList(portletConfig,
+                PompeiConstants.RULE_NAMES);
+        List<String> values = getInitParameterList(portletConfig,
+                PompeiConstants.RULE_VALUES);
+        Map<String, String> rules = new HashMap<String, String>();
+        for (int ix = 0; ix < ((names.size() < values.size()) ? names.size()
+                : values.size()); ix++) {
+            rules.put(names.get(ix), values.get(ix));
+        }
+        getUserRegistrationParams().put(PompeiConstants.RULES, rules);
+
+        // user attributes ?
+
+        Boolean forceGeneratedPasswords = Boolean
+                .valueOf(
+                        portletConfig
+                                .getInitParameter(PompeiConstants.FORCE_GENERATED_PASSWORD))
+                .booleanValue();
+        getUserRegistrationParams().put(
+                PompeiConstants.FORCE_GENERATED_PASSWORD,
+                forceGeneratedPasswords);
+
+        Boolean forceEmailAsUsername = Boolean
+                .valueOf(
+                        portletConfig
+                                .getInitParameter(PompeiConstants.FORCE_USE_EMAIL_AS_USERNAME))
+                .booleanValue();
+        getUserRegistrationParams().put(
+                PompeiConstants.FORCE_USE_EMAIL_AS_USERNAME,
+                forceEmailAsUsername);
+
+        Boolean forceEmailsToBeSystemUnique = Boolean.valueOf(
+                portletConfig
+                        .getInitParameter(PompeiConstants.FORCE_UNIQUE_EMAIL))
+                .booleanValue();
+        if (forceEmailAsUsername) {
+            // just to be sure
+            forceEmailsToBeSystemUnique = Boolean.TRUE;
+        }
+        getUserRegistrationParams().put(PompeiConstants.FORCE_UNIQUE_EMAIL,
+                forceEmailsToBeSystemUnique);
+
+        Boolean sendMail = Boolean.valueOf(portletConfig
+                .getInitParameter(PompeiConstants.SEND_MAIL));
+        getUserRegistrationParams().put(PompeiConstants.SEND_MAIL, sendMail);
+    }
+
+    public void processActionFilter(ActionRequest request,
+            ActionResponse response, PortletFilterChain chain)
+            throws PortletException, IOException {
+        request.setAttribute(PompeiConstants.PAGE_MANAGER_COMPONENT,
+                pageManager);
+        request.setAttribute(PompeiConstants.PORTAL_ADMINISTRATION_COMPONENT,
+                portalAdministration);
+        request.setAttribute(PompeiConstants.USER_MANAGER_COMPONENT,
+                userManager);
+        request.setAttribute(PompeiConstants.USER_REGISTRATION_PARAMS,
+                userRegistrationParams);
+        request.setAttribute(PompeiConstants.AUDIT_ACTIVITY_COMPONENT,
+                auditActivity);
+
+        chain.processActionFilter(request, response);
+    }
+
+    public void renderFilter(RenderRequest request, RenderResponse response,
+            PortletFilterChain chain) throws PortletException, IOException {
+        request.setAttribute(PompeiConstants.PAGE_MANAGER_COMPONENT,
+                pageManager);
+        request.setAttribute(PompeiConstants.PORTAL_ADMINISTRATION_COMPONENT,
+                portalAdministration);
+        request.setAttribute(PompeiConstants.USER_MANAGER_COMPONENT,
+                userManager);
+        request.setAttribute(PompeiConstants.USER_REGISTRATION_PARAMS,
+                userRegistrationParams);
+        request.setAttribute(PompeiConstants.AUDIT_ACTIVITY_COMPONENT,
+                auditActivity);
+
+        chain.renderFilter(request, response);
+    }
+
+    protected List<String> getInitParameterList(PortletConfig portletConfig,
+            String ipName) {
+        String temp = portletConfig.getInitParameter(ipName);
+        if (temp == null) {
+            return new ArrayList<String>();
+        }
+
+        String[] temps = temp.split("\\,");
+        for (int ix = 0; ix < temps.length; ix++) {
+            temps[ix] = temps[ix].trim();
+        }
+
+        return Arrays.asList(temps);
+    }
+
+    /**
+     * @return the portalAdministration
+     */
+    public PortalAdministration getPortalAdministration() {
+        return portalAdministration;
+    }
+
+    /**
+     * @param portalAdministration the portalAdministration to set
+     */
+    public void setPortalAdministration(
+            PortalAdministration portalAdministration) {
+        this.portalAdministration = portalAdministration;
+    }
+
+    /**
+     * @return the userManager
+     */
+    public UserManager getUserManager() {
+        return userManager;
+    }
+
+    /**
+     * @param userManager the userManager to set
+     */
+    public void setUserManager(UserManager userManager) {
+        this.userManager = userManager;
+    }
+
+    /**
+     * @return the userRegistrationParams
+     */
+    public Map<String, Object> getUserRegistrationParams() {
+        return userRegistrationParams;
+    }
+
+    /**
+     * @param userRegistrationParams the userRegistrationParams to set
+     */
+    public void setUserRegistrationParams(
+            Map<String, Object> userRegistrationParams) {
+        this.userRegistrationParams = userRegistrationParams;
+    }
+
+}


Property changes on: pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/filter/UserRegistrationFilter.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/service/CustomerService.java
===================================================================
--- pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/service/CustomerService.java	2007-10-11 08:28:54 UTC (rev 620)
+++ pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/service/CustomerService.java	2007-10-11 13:29:41 UTC (rev 621)
@@ -3,7 +3,9 @@
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.List;
+import java.util.Map;
 
+import jp.sf.pal.common.CommonException;
 import jp.sf.pal.pompei.exentity.AddressBook;
 import jp.sf.pal.pompei.exentity.Customer;
 import jp.sf.pal.pompei.exentity.Zone;
@@ -28,6 +30,9 @@
 
     public void addCustomer(Customer customers, AddressBook addressBook);
 
+    public void addCustomer(Map<String, String> userInfo, Customer customers,
+            AddressBook addressBook) throws CommonException;
+
     public Zone getZone(BigDecimal zoneId);
 
     public Customer getCustomerByPortalId(String portalId);

Modified: pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/service/impl/CustomerServiceImpl.java
===================================================================
--- pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/service/impl/CustomerServiceImpl.java	2007-10-11 08:28:54 UTC (rev 620)
+++ pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/service/impl/CustomerServiceImpl.java	2007-10-11 13:29:41 UTC (rev 621)
@@ -1,8 +1,16 @@
 package jp.sf.pal.pompei.service.impl;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.StringTokenizer;
 
+import javax.faces.context.FacesContext;
+import javax.portlet.PortletConfig;
+
+import jp.sf.pal.common.CommonException;
 import jp.sf.pal.pompei.PompeiConstants;
 import jp.sf.pal.pompei.cbean.AddressBookCB;
 import jp.sf.pal.pompei.cbean.CustomerBasketAttributeCB;
@@ -20,7 +28,22 @@
 import jp.sf.pal.pompei.exentity.CustomerBasketAttribute;
 import jp.sf.pal.pompei.exentity.Zone;
 import jp.sf.pal.pompei.service.CustomerService;
+import jp.sf.pal.pompei.util.SystemUtil;
+import jp.sf.pal.pompei.util.UserRegistrationUtil;
 
+import org.apache.jetspeed.JetspeedActions;
+import org.apache.jetspeed.PortalReservedParameters;
+import org.apache.jetspeed.administration.AdministrationEmailException;
+import org.apache.jetspeed.locator.JetspeedTemplateLocator;
+import org.apache.jetspeed.locator.LocatorDescriptor;
+import org.apache.jetspeed.locator.TemplateDescriptor;
+import org.apache.jetspeed.locator.TemplateLocatorException;
+import org.apache.jetspeed.om.common.SecurityConstraint;
+import org.apache.jetspeed.om.folder.Folder;
+import org.apache.jetspeed.page.PageManager;
+import org.apache.jetspeed.request.RequestContext;
+import org.apache.jetspeed.security.User;
+
 public class CustomerServiceImpl implements CustomerService {
 
     /**
@@ -28,6 +51,8 @@
      */
     private static final long serialVersionUID = -5106715434338567436L;
 
+    private static final String PATH_SEPARATOR = "/";
+
     private transient CustomerBhv customerBhv;
 
     private transient AddressBookBhv addressBookBhv;
@@ -142,6 +167,247 @@
         getAddressBookBhv().insert(addressBook);
     }
 
+    public void addCustomer(Map<String, String> userInfo, Customer customer,
+            AddressBook addressBook) throws CommonException {
+
+        String password = userInfo.remove(PompeiConstants.USER_PASSWORD);
+        String verifyPassword = userInfo
+                .remove(PompeiConstants.USER_VERIFY_PASSWORD);
+        String emailSubject = userInfo
+                .remove(PompeiConstants.EMAIL_SUBJECT_USER_REGISTRATION);
+        if (!UserRegistrationUtil
+                .getBoolean(PompeiConstants.FORCE_GENERATED_PASSWORD)) {
+            if (password == null || password.equals("")) {
+                throw new CommonException("error.lacking.password",
+                        "The password is null.");
+            }
+        }
+
+        if (UserRegistrationUtil
+                .getBoolean(PompeiConstants.FORCE_USE_EMAIL_AS_USERNAME)) {
+            // force user.name to be same as email
+            userInfo.put(PompeiConstants.USER_NAME, userInfo
+                    .get(PompeiConstants.USER_BUSINESS_INFO_ONLINE_EMAIL));
+        }
+
+        boolean userIdExistsFlag = true;
+        try {
+            SystemUtil.getUserManager().getUser(
+                    userInfo.get(PompeiConstants.USER_NAME));
+        } catch (org.apache.jetspeed.security.SecurityException e) {
+            userIdExistsFlag = false;
+        }
+
+        if (userIdExistsFlag) {
+            throw new CommonException("error.userid_already_exists",
+                    "The user id already exists.");
+        }
+
+        if (UserRegistrationUtil.getBoolean(PompeiConstants.FORCE_UNIQUE_EMAIL)) {
+            boolean emailExistsFlag = true;
+            User user = null;
+            try {
+                user = SystemUtil
+                        .getPortalAdministration()
+                        .lookupUserFromEmail(
+                                userInfo
+                                        .get(PompeiConstants.USER_BUSINESS_INFO_ONLINE_EMAIL));
+            } catch (AdministrationEmailException e) {
+                emailExistsFlag = false;
+            }
+            if ((emailExistsFlag) || (user != null)) {
+                throw new CommonException("error.email_already_exists",
+                        "The email already exists.");
+            }
+
+        }
+
+        if (UserRegistrationUtil
+                .getBoolean(PompeiConstants.FORCE_GENERATED_PASSWORD)) {
+            try {
+                password = SystemUtil.getPortalAdministration()
+                        .generatePassword();
+            } catch (Exception e) {
+                throw new CommonException("error.failed_to_generate_password",
+                        "Could not create password.", e);
+            }
+        } else {
+            if (verifyPassword == null || !verifyPassword.equals(password)) {
+                throw new CommonException("error.two_passwords_do_not_match",
+                        "Two passwords do not match.");
+            }
+        }
+
+        String userName = userInfo.get(PompeiConstants.USER_NAME);
+        try {
+            SystemUtil.getPortalAdministration().registerUser(
+                    userName,
+                    password,
+                    UserRegistrationUtil.getStringList(PompeiConstants.ROLES),
+                    UserRegistrationUtil.getStringList(PompeiConstants.GROUPS),
+                    userInfo, // note use of only
+                    // PLT.D values here.
+                    UserRegistrationUtil.getStringMap(PompeiConstants.RULES),
+                    PompeiConstants.DEFAULT_USER_TEMPLATE_FOLDER); // TODO default template path
+        } catch (Exception e) {
+            cancelToAddCustomer(userInfo, customer, addressBook);
+            throw new CommonException("error.failed_to_add",
+                    "Could not register a user.", e);
+        }
+
+        // set security constraint
+        String userhome = Folder.USER_FOLDER + userName;
+        try {
+            PageManager pageManager = SystemUtil.getPageManager();
+            SecurityConstraint sc = pageManager.newPageSecurityConstraint();
+            sc.setUsers(parseCSVList(userName));
+            List<String> permissions = new ArrayList<String>();
+            permissions.add(JetspeedActions.VIEW);
+            permissions.add(JetspeedActions.EDIT);
+            permissions.add(JetspeedActions.HELP);
+            sc.setPermissions(permissions);
+            Folder userFolder = pageManager.getFolder(userhome);
+
+            if (userFolder.getSecurityConstraints() == null) {
+                userFolder.setSecurityConstraints(pageManager
+                        .newSecurityConstraints());
+            }
+            userFolder.getSecurityConstraints().getSecurityConstraints()
+                    .add(sc);
+
+            pageManager.updateFolder(userFolder);
+            pageManager.reset();
+        } catch (Exception e) {
+            cancelToAddCustomer(userInfo, customer, addressBook);
+            throw new CommonException("could.not.access.folder",
+                    "Could not access a folder: " + userhome, e);
+        }
+
+        // set portal id
+        customer.setPortalId(userName);
+
+        try {
+            // create customer
+            getCustomerBhv().insert(customer);
+            addressBook.setCustomerId(customer.getCustomerId());
+            getAddressBookBhv().insert(addressBook);
+        } catch (Exception e) {
+            cancelToAddCustomer(userInfo, customer, addressBook);
+            throw new CommonException("could.not.insert.customer.data",
+                    "Could not insert customer data. ", e);
+        }
+
+        if (UserRegistrationUtil.getBoolean(PompeiConstants.SEND_MAIL)) {
+            if (password != null) {
+                userInfo.put("password", password);
+            }
+
+            try {
+                // template
+                String templ = getTemplatePath(FacesContext
+                        .getCurrentInstance());
+
+                if (templ == null) {
+                    cancelToAddCustomer(userInfo, customer, addressBook);
+                    throw new CommonException(
+                            "error.registration_completed_but_could_not_find_template",
+                            "Email template is not available.");
+                }
+                SystemUtil
+                        .getPortalAdministration()
+                        .sendEmail(
+                                (PortletConfig) FacesContext
+                                        .getCurrentInstance()
+                                        .getExternalContext().getRequestMap()
+                                        .get("javax.portlet.PortletConfig"),
+                                userInfo
+                                        .get(PompeiConstants.USER_BUSINESS_INFO_ONLINE_EMAIL),
+                                emailSubject, templ, userInfo);
+            } catch (Exception e) {
+                cancelToAddCustomer(userInfo, customer, addressBook);
+                throw new CommonException(
+                        "error.registration_completed_but_could_not_send",
+                        "Could not send a registration mail.", e);
+            }
+        }
+
+    }
+
+    protected void cancelToAddCustomer(Map<String, String> userInfo,
+            Customer customer, AddressBook addressBook) {
+        try {
+            getAddressBookBhv().delete(addressBook);
+        } catch (Exception e) {
+        }
+
+        try {
+            getCustomerBhv().delete(customer);
+        } catch (Exception e) {
+        }
+
+        try {
+            String userhome = Folder.USER_FOLDER
+                    + userInfo.get(PompeiConstants.USER_NAME);
+            PageManager pageManager = SystemUtil.getPageManager();
+            Folder folder = pageManager.getFolder(userhome);
+            pageManager.removeFolder(folder);
+        } catch (Exception e) {
+        }
+
+        try {
+            SystemUtil.getUserManager().removeUser(
+                    userInfo.get(PompeiConstants.USER_NAME));
+        } catch (Exception e) {
+        }
+    }
+
+    private String getTemplatePath(FacesContext facesContext) {
+        JetspeedTemplateLocator templateLocator = UserRegistrationUtil
+                .getTemplateLocator();
+        String templateLocation = UserRegistrationUtil
+                .getString(PompeiConstants.EMAIL_TEMPLATE_LOCATION);
+        String templateName = UserRegistrationUtil
+                .getString(PompeiConstants.EMAIL_TEMPLATE_NAME);
+        if (templateLocator == null) {
+            return templateLocation + PATH_SEPARATOR + templateName;
+        }
+
+        RequestContext requestContext = (RequestContext) facesContext
+                .getExternalContext().getRequestMap().get(
+                        PortalReservedParameters.REQUEST_CONTEXT_ATTRIBUTE);
+        Locale locale = facesContext.getViewRoot().getLocale();
+
+        try {
+            LocatorDescriptor locator = templateLocator
+                    .createLocatorDescriptor("email");
+            locator.setName(templateName);
+            locator.setMediaType(requestContext.getMediaType());
+            locator.setLanguage(locale.getLanguage());
+            locator.setCountry(locale.getCountry());
+            TemplateDescriptor template = templateLocator
+                    .locateTemplate(locator);
+
+            return template.getAppRelativePath();
+        } catch (TemplateLocatorException e) {
+            return templateLocation + PATH_SEPARATOR + templateName;
+        }
+    }
+
+    private List<String> parseCSVList(String csv) {
+        List<String> csvList = new ArrayList<String>();
+        if (csv != null) {
+            if (csv.indexOf(',') != -1) {
+                StringTokenizer csvTokens = new StringTokenizer(csv, ",");
+                while (csvTokens.hasMoreTokens()) {
+                    csvList.add(csvTokens.nextToken().trim());
+                }
+            } else {
+                csvList.add(csv);
+            }
+        }
+        return csvList;
+    }
+
     public Zone getZone(BigDecimal zoneId) {
         ZoneCB cb = new ZoneCB();
         cb.setupSelect_Country();

Added: pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/util/SystemUtil.java
===================================================================
--- pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/util/SystemUtil.java	2007-10-11 08:28:54 UTC (rev 620)
+++ pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/util/SystemUtil.java	2007-10-11 13:29:41 UTC (rev 621)
@@ -0,0 +1,90 @@
+package jp.sf.pal.pompei.util;
+
+import java.io.UnsupportedEncodingException;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+import javax.faces.context.FacesContext;
+import javax.portlet.PortletConfig;
+
+import jp.sf.pal.common.CommonException;
+import jp.sf.pal.pompei.PompeiConstants;
+
+import org.apache.jetspeed.administration.PortalAdministration;
+import org.apache.jetspeed.page.PageManager;
+import org.apache.jetspeed.security.UserManager;
+
+public class SystemUtil {
+    private static FacesContext getFacesContext() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        if (context == null) {
+            throw new IllegalStateException(
+                    "Could not find FacesContext instance.");
+        }
+        return context;
+    }
+
+    public static PortletConfig getPortletConfig() {
+        String name = "javax.portlet.PortletConfig";
+        return (PortletConfig) getFacesContext().getExternalContext()
+                .getRequestMap().get(name);
+    }
+
+    public static String getContextRealPath(String path) {
+        return getPortletConfig().getPortletContext().getRealPath(path);
+    }
+
+    public static String getMessageDigest(String str) throws CommonException {
+        if (str == null) {
+            str = "";
+        }
+        // TODO move following params to portlet.xml
+        String algorithm = getPortletConfig().getInitParameter(
+                PompeiConstants.MD_ALGORITHM);
+        if (algorithm == null || algorithm.equals("")) {
+            algorithm = PompeiConstants.DEFAULT_MD_ALGORITHM;
+        }
+        String encoding = getPortletConfig().getInitParameter(
+                PompeiConstants.MD_ENCODING);
+        if (encoding == null || encoding.equals("")) {
+            encoding = PompeiConstants.DEFAULT_MD_ENCODING;
+        }
+        try {
+            MessageDigest md = MessageDigest.getInstance(algorithm);
+            md.update(str.getBytes(encoding));
+            byte[] digest = md.digest();
+            StringBuffer buf = new StringBuffer();
+            for (int i = 0; i < digest.length; i++) {
+                int val = digest[i] & 0xFF;
+                if (val < 16) {
+                    buf.append("0");
+                }
+                buf.append(Integer.toString(val, 16));
+            }
+            return buf.toString();
+        } catch (NoSuchAlgorithmException e) {
+            throw new CommonException("could.not.encode.secret.password",
+                    "Could not encode secret password", e);
+        } catch (UnsupportedEncodingException e) {
+            throw new CommonException("could.not.encode.secret.password",
+                    "Could not encode secret password", e);
+        }
+    }
+
+    public static UserManager getUserManager() {
+        return (UserManager) getFacesContext().getExternalContext()
+                .getRequestMap().get(PompeiConstants.USER_MANAGER_COMPONENT);
+    }
+
+    public static PortalAdministration getPortalAdministration() {
+        return (PortalAdministration) getFacesContext().getExternalContext()
+                .getRequestMap().get(
+                        PompeiConstants.PORTAL_ADMINISTRATION_COMPONENT);
+    }
+
+    public static PageManager getPageManager() {
+        return (PageManager) getFacesContext().getExternalContext()
+                .getRequestMap().get(PompeiConstants.PAGE_MANAGER_COMPONENT);
+    }
+
+}


Property changes on: pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/util/SystemUtil.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/util/UserRegistrationUtil.java
===================================================================
--- pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/util/UserRegistrationUtil.java	2007-10-11 08:28:54 UTC (rev 620)
+++ pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/util/UserRegistrationUtil.java	2007-10-11 13:29:41 UTC (rev 621)
@@ -0,0 +1,77 @@
+package jp.sf.pal.pompei.util;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.faces.context.FacesContext;
+
+import jp.sf.pal.pompei.PompeiConstants;
+
+import org.apache.jetspeed.locator.JetspeedTemplateLocator;
+
+public class UserRegistrationUtil {
+    private static FacesContext getFacesContext()
+    {
+        return FacesContext.getCurrentInstance();
+    }
+
+    public static Map<String, Object> getUserRegistrationParams()
+    {
+        Map<String, Object> params = (Map<String, Object>) getFacesContext()
+                .getExternalContext().getRequestMap().get(
+                        PompeiConstants.USER_REGISTRATION_PARAMS);
+        if (params == null)
+        {
+            throw new IllegalStateException(
+                    "The user registration params is null. ");
+        }
+        return params;
+    }
+
+    public static boolean getBoolean(String key)
+    {
+        Object value = getUserRegistrationParams().get(key);
+        if (value == null)
+        {
+            return false;
+        }
+        return ((Boolean) value).booleanValue();
+    }
+
+    public static String getString(String key)
+    {
+        return (String) getUserRegistrationParams().get(key);
+    }
+
+    public static List<String> getStringList(String key)
+    {
+        Object value = getUserRegistrationParams().get(key);
+        if (value == null)
+        {
+            return new ArrayList<String>();
+        }
+        return (List<String>) value;
+
+    }
+
+    public static Map<String, String> getStringMap(String key)
+    {
+        Object value = getUserRegistrationParams().get(key);
+        if (value == null)
+        {
+            return new HashMap<String, String>();
+        }
+        return (Map<String, String>) value;
+
+    }
+
+    public static JetspeedTemplateLocator getTemplateLocator()
+    {
+        return (JetspeedTemplateLocator) getUserRegistrationParams().get(
+                PompeiConstants.TEMPLATE_LOCATOR);
+    }
+
+  
+}


Property changes on: pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/util/UserRegistrationUtil.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/checkout/UserInfoEditAction.java
===================================================================
--- pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/checkout/UserInfoEditAction.java	2007-10-11 08:28:54 UTC (rev 620)
+++ pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/checkout/UserInfoEditAction.java	2007-10-11 13:29:41 UTC (rev 621)
@@ -71,7 +71,7 @@
             yearOfDayOfBirthItems.add(map);
         }
         getUserInfoEditPage().setYearOfDayOfBirthItems(yearOfDayOfBirthItems);
-        getUserInfoEditPage().setYearOfDayOfBirth(new Integer(year));
+        getUserInfoEditPage().setYearOfDayOfBirth(Integer.valueOf(year));
 
         List<Map<String, String>> monthOfDayOfBirthItems = new ArrayList<Map<String, String>>();
         for (int i = 1; i < 13; i++) {
@@ -82,7 +82,7 @@
         }
         getUserInfoEditPage().setMonthOfDayOfBirthItems(monthOfDayOfBirthItems);
         getUserInfoEditPage().setMonthOfDayOfBirth(
-                new Integer(DateUtil.getMonth(now) + 1));
+                Integer.valueOf(DateUtil.getMonth(now) + 1));
 
         List<Map<String, String>> dateOfDayOfBirthItems = new ArrayList<Map<String, String>>();
         for (int i = 1; i < 32; i++) {
@@ -93,7 +93,7 @@
         }
         getUserInfoEditPage().setDateOfDayOfBirthItems(dateOfDayOfBirthItems);
         getUserInfoEditPage().setDateOfDayOfBirth(
-                new Integer(DateUtil.getDate(now)));
+                Integer.valueOf(DateUtil.getDate(now)));
         return null;
     }
 
@@ -130,14 +130,10 @@
         }
 
         // check cart
-        if (customer != null) {
-            List<CustomerBasket> customerBasketList = getCartService()
-                    .getCustomerBasketList(customer.getCustomerId());
-            if (customerBasketList != null && !customerBasketList.isEmpty()) {
-                getUserInfoEditPage().setBasket(true);
-            } else {
-                getUserInfoEditPage().setBasket(false);
-            }
+        List<CustomerBasket> customerBasketList = getCartService()
+                .getCustomerBasketList(customer.getCustomerId());
+        if (customerBasketList != null && !customerBasketList.isEmpty()) {
+            getUserInfoEditPage().setBasket(true);
         } else {
             getUserInfoEditPage().setBasket(false);
         }

Added: pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/AbstractUsersignupPage.java
===================================================================
--- pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/AbstractUsersignupPage.java	2007-10-11 08:28:54 UTC (rev 620)
+++ pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/AbstractUsersignupPage.java	2007-10-11 13:29:41 UTC (rev 621)
@@ -0,0 +1,456 @@
+package jp.sf.pal.pompei.web.user.signup;
+
+import java.util.Date;
+
+import org.seasar.teeda.extension.util.LabelHelper;
+
+public abstract class AbstractUsersignupPage {
+    private LabelHelper labelHelper;
+
+    private Date dayOfBirth;
+
+    private String postcode;
+
+    private String cellphone;
+
+    private String city;
+
+    private String company;
+
+    private Integer dateOfDayOfBirth;
+
+    private String department;
+
+    private String emailAddress;
+
+    private String emailAddressConfirm;
+
+    private String fax;
+
+    private String firstname;
+
+    private String firstnameDescription;
+
+    private String gender;
+
+    private String lastname;
+
+    private String lastnameDescription;
+
+    private Integer monthOfDayOfBirth;
+
+    private String primaryPostcode;
+
+    private String secondaryPostcode;
+
+    private String state;
+
+    private String streetAddress;
+
+    private String telephone;
+
+    private String termOfService;
+
+    private String userName;
+
+    private String userSecretAnswer;
+
+    private String userSecretQuestion;
+
+    private String userSecretQuestionSelection;
+
+    private Integer yearOfDayOfBirth;
+
+    /**
+     * @return the cellphone
+     */
+    public String getCellphone() {
+        return cellphone;
+    }
+
+    /**
+     * @param cellphone the cellphone to set
+     */
+    public void setCellphone(String cellphone) {
+        this.cellphone = cellphone;
+    }
+
+    /**
+     * @return the city
+     */
+    public String getCity() {
+        return city;
+    }
+
+    /**
+     * @param city the city to set
+     */
+    public void setCity(String city) {
+        this.city = city;
+    }
+
+    /**
+     * @return the company
+     */
+    public String getCompany() {
+        return company;
+    }
+
+    /**
+     * @param company the company to set
+     */
+    public void setCompany(String company) {
+        this.company = company;
+    }
+
+    /**
+     * @return the dateOfDayOfBirth
+     */
+    public Integer getDateOfDayOfBirth() {
+        return dateOfDayOfBirth;
+    }
+
+    /**
+     * @param dateOfDayOfBirth the dateOfDayOfBirth to set
+     */
+    public void setDateOfDayOfBirth(Integer dateOfDayOfBirth) {
+        this.dateOfDayOfBirth = dateOfDayOfBirth;
+    }
+
+    /**
+     * @return the department
+     */
+    public String getDepartment() {
+        return department;
+    }
+
+    /**
+     * @param department the department to set
+     */
+    public void setDepartment(String department) {
+        this.department = department;
+    }
+
+    /**
+     * @return the emailAddress
+     */
+    public String getEmailAddress() {
+        return emailAddress;
+    }
+
+    /**
+     * @param emailAddress the emailAddress to set
+     */
+    public void setEmailAddress(String emailAddress) {
+        this.emailAddress = emailAddress;
+    }
+
+    /**
+     * @return the emailAddressConfirm
+     */
+    public String getEmailAddressConfirm() {
+        return emailAddressConfirm;
+    }
+
+    /**
+     * @param emailAddressConfirm the emailAddressConfirm to set
+     */
+    public void setEmailAddressConfirm(String emailAddressConfirm) {
+        this.emailAddressConfirm = emailAddressConfirm;
+    }
+
+    /**
+     * @return the fax
+     */
+    public String getFax() {
+        return fax;
+    }
+
+    /**
+     * @param fax the fax to set
+     */
+    public void setFax(String fax) {
+        this.fax = fax;
+    }
+
+    /**
+     * @return the firstname
+     */
+    public String getFirstname() {
+        return firstname;
+    }
+
+    /**
+     * @param firstname the firstname to set
+     */
+    public void setFirstname(String firstname) {
+        this.firstname = firstname;
+    }
+
+    /**
+     * @return the firstnameDescription
+     */
+    public String getFirstnameDescription() {
+        return firstnameDescription;
+    }
+
+    /**
+     * @param firstnameDescription the firstnameDescription to set
+     */
+    public void setFirstnameDescription(String firstnameDescription) {
+        this.firstnameDescription = firstnameDescription;
+    }
+
+    /**
+     * @return the gender
+     */
+    public String getGender() {
+        return gender;
+    }
+
+    /**
+     * @param gender the gender to set
+     */
+    public void setGender(String gender) {
+        this.gender = gender;
+    }
+
+    /**
+     * @return the lastname
+     */
+    public String getLastname() {
+        return lastname;
+    }
+
+    /**
+     * @param lastname the lastname to set
+     */
+    public void setLastname(String lastname) {
+        this.lastname = lastname;
+    }
+
+    /**
+     * @return the lastnameDescription
+     */
+    public String getLastnameDescription() {
+        return lastnameDescription;
+    }
+
+    /**
+     * @param lastnameDescription the lastnameDescription to set
+     */
+    public void setLastnameDescription(String lastnameDescription) {
+        this.lastnameDescription = lastnameDescription;
+    }
+
+    /**
+     * @return the monthOfDayOfBirth
+     */
+    public Integer getMonthOfDayOfBirth() {
+        return monthOfDayOfBirth;
+    }
+
+    /**
+     * @param monthOfDayOfBirth the monthOfDayOfBirth to set
+     */
+    public void setMonthOfDayOfBirth(Integer monthOfDayOfBirth) {
+        this.monthOfDayOfBirth = monthOfDayOfBirth;
+    }
+
+    /**
+     * @return the primaryPostcode
+     */
+    public String getPrimaryPostcode() {
+        return primaryPostcode;
+    }
+
+    /**
+     * @param primaryPostcode the primaryPostcode to set
+     */
+    public void setPrimaryPostcode(String primaryPostcode) {
+        this.primaryPostcode = primaryPostcode;
+    }
+
+    /**
+     * @return the secondaryPostcode
+     */
+    public String getSecondaryPostcode() {
+        return secondaryPostcode;
+    }
+
+    /**
+     * @param secondaryPostcode the secondaryPostcode to set
+     */
+    public void setSecondaryPostcode(String secondaryPostcode) {
+        this.secondaryPostcode = secondaryPostcode;
+    }
+
+    /**
+     * @return the state
+     */
+    public String getState() {
+        return state;
+    }
+
+    /**
+     * @param state the state to set
+     */
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    /**
+     * @return the streetAddress
+     */
+    public String getStreetAddress() {
+        return streetAddress;
+    }
+
+    /**
+     * @param streetAddress the streetAddress to set
+     */
+    public void setStreetAddress(String streetAddress) {
+        this.streetAddress = streetAddress;
+    }
+
+    /**
+     * @return the telephone
+     */
+    public String getTelephone() {
+        return telephone;
+    }
+
+    /**
+     * @param telephone the telephone to set
+     */
+    public void setTelephone(String telephone) {
+        this.telephone = telephone;
+    }
+
+    /**
+     * @return the termOfService
+     */
+    public String getTermOfService() {
+        return termOfService;
+    }
+
+    /**
+     * @param termOfService the termOfService to set
+     */
+    public void setTermOfService(String termOfService) {
+        this.termOfService = termOfService;
+    }
+
+    /**
+     * @return the userName
+     */
+    public String getUserName() {
+        return userName;
+    }
+
+    /**
+     * @param userName the userName to set
+     */
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    /**
+     * @return the userSecretAnswer
+     */
+    public String getUserSecretAnswer() {
+        return userSecretAnswer;
+    }
+
+    /**
+     * @param userSecretAnswer the userSecretAnswer to set
+     */
+    public void setUserSecretAnswer(String userSecretAnswer) {
+        this.userSecretAnswer = userSecretAnswer;
+    }
+
+    /**
+     * @return the userSecretQuestion
+     */
+    public String getUserSecretQuestion() {
+        return userSecretQuestion;
+    }
+
+    /**
+     * @param userSecretQuestion the userSecretQuestion to set
+     */
+    public void setUserSecretQuestion(String userSecretQuestion) {
+        this.userSecretQuestion = userSecretQuestion;
+    }
+
+    /**
+     * @return the userSecretQuestionSelection
+     */
+    public String getUserSecretQuestionSelection() {
+        return userSecretQuestionSelection;
+    }
+
+    /**
+     * @param userSecretQuestionSelection the userSecretQuestionSelection to set
+     */
+    public void setUserSecretQuestionSelection(
+            String userSecretQuestionSelection) {
+        this.userSecretQuestionSelection = userSecretQuestionSelection;
+    }
+
+    /**
+     * @return the yearOfDayOfBirth
+     */
+    public Integer getYearOfDayOfBirth() {
+        return yearOfDayOfBirth;
+    }
+
+    /**
+     * @param yearOfDayOfBirth the yearOfDayOfBirth to set
+     */
+    public void setYearOfDayOfBirth(Integer yearOfDayOfBirth) {
+        this.yearOfDayOfBirth = yearOfDayOfBirth;
+    }
+
+    /**
+     * @return the labelHelper
+     */
+    public LabelHelper getLabelHelper() {
+        return labelHelper;
+    }
+
+    /**
+     * @param labelHelper the labelHelper to set
+     */
+    public void setLabelHelper(LabelHelper labelHelper) {
+        this.labelHelper = labelHelper;
+    }
+
+    /**
+     * @return the dayOfBirth
+     */
+    public Date getDayOfBirth() {
+        return dayOfBirth;
+    }
+
+    /**
+     * @param dayOfBirth the dayOfBirth to set
+     */
+    public void setDayOfBirth(Date dayOfBirth) {
+        this.dayOfBirth = dayOfBirth;
+    }
+
+    /**
+     * @return the postcode
+     */
+    public String getPostcode() {
+        return postcode;
+    }
+
+    /**
+     * @param postcode the postcode to set
+     */
+    public void setPostcode(String postcode) {
+        this.postcode = postcode;
+    }
+}


Property changes on: pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/AbstractUsersignupPage.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/SignupCompleteAction.java
===================================================================
--- pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/SignupCompleteAction.java	2007-10-11 08:28:54 UTC (rev 620)
+++ pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/SignupCompleteAction.java	2007-10-11 13:29:41 UTC (rev 621)
@@ -0,0 +1,40 @@
+package jp.sf.pal.pompei.web.user.signup;
+
+import java.io.Serializable;
+
+import jp.sf.pal.common.util.FacesMessageUtil;
+
+public class SignupCompleteAction implements Serializable {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 2689633390570340463L;
+    /**
+     * 
+     */
+    private SignupCompletePage signupCompletePage;
+    public Class<?> initialize() {
+        return null;
+    }
+
+    public Class<?> prerender() {
+        // render faces messages
+        FacesMessageUtil.renderMessages();
+        return null;
+    }
+    /**
+     * @return the signupCompletePage
+     */
+    public SignupCompletePage getSignupCompletePage() {
+        return signupCompletePage;
+    }
+
+    /**
+     * @param signupCompletePage the signupCompletePage to set
+     */
+    public void setSignupCompletePage(SignupCompletePage signupCompletePage) {
+        this.signupCompletePage = signupCompletePage;
+    }
+
+}


Property changes on: pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/SignupCompleteAction.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/SignupCompletePage.java
===================================================================
--- pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/SignupCompletePage.java	2007-10-11 08:28:54 UTC (rev 620)
+++ pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/SignupCompletePage.java	2007-10-11 13:29:41 UTC (rev 621)
@@ -0,0 +1,17 @@
+package jp.sf.pal.pompei.web.user.signup;
+
+import java.io.Serializable;
+
+public class SignupCompletePage extends AbstractUsersignupPage implements
+        Serializable {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 1424283975909978739L;
+
+    public boolean isSendEmail() {
+        return getEmailAddress() != null;
+    }
+
+}


Property changes on: pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/SignupCompletePage.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/SignupConfirmAction.java
===================================================================
--- pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/SignupConfirmAction.java	2007-10-11 08:28:54 UTC (rev 620)
+++ pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/SignupConfirmAction.java	2007-10-11 13:29:41 UTC (rev 621)
@@ -0,0 +1,233 @@
+package jp.sf.pal.pompei.web.user.signup;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.sql.Timestamp;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+import jp.sf.pal.common.CommonException;
+import jp.sf.pal.common.util.FacesMessageUtil;
+import jp.sf.pal.pompei.PompeiConstants;
+import jp.sf.pal.pompei.dxo.CustomerDxo;
+import jp.sf.pal.pompei.exentity.AddressBook;
+import jp.sf.pal.pompei.exentity.Customer;
+import jp.sf.pal.pompei.exentity.Zone;
+import jp.sf.pal.pompei.service.CustomerService;
+import jp.sf.pal.pompei.service.LanguageService;
+import jp.sf.pal.pompei.util.SessionUtil;
+import jp.sf.pal.pompei.util.SystemUtil;
+
+import org.seasar.framework.log.Logger;
+import org.seasar.teeda.extension.annotation.takeover.TakeOver;
+import org.seasar.teeda.extension.annotation.takeover.TakeOverType;
+
+public class SignupConfirmAction implements Serializable {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 4440511977300860903L;
+
+    /**
+     * Logger for this class
+     */
+    private static final Logger logger = Logger
+            .getLogger(SignupConfirmAction.class);
+
+    /**
+     * 
+     */
+    private SignupConfirmPage signupConfirmPage;
+
+    private CustomerDxo customerDxo;
+
+    private CustomerService customerService;
+
+    private LanguageService languageService;
+
+    public Class<?> initialize() {
+        return null;
+    }
+
+    public Class<?> prerender() {
+        getSignupConfirmPage().setUserSecretAnswer(
+                PompeiConstants.DUMMY_SECRET_ANSWER);
+
+        // render faces messages
+        FacesMessageUtil.renderMessages();
+        return null;
+    }
+
+    public Class<?> doCancel() {
+        return SignupEditPage.class;
+    }
+
+    @TakeOver(type = TakeOverType.INCLUDE, properties = "emailAddress")
+    public Class<?> doCreate() {
+
+        // message digest
+        try {
+            getSignupConfirmPage().setUserSecretAnswer(
+                    SystemUtil.getMessageDigest(getSignupConfirmPage()
+                            .getUserSecretAnswer()));
+        } catch (CommonException e) {
+            FacesMessageUtil.addErrorMessage(e.getMessageId());
+            logger.log(e);
+            return null;
+        }
+
+        // new
+        Date now = new Date();
+        Customer customer = new Customer();
+        customer.setDateAdded(new Timestamp(now.getTime()));
+        customer.setLastModified(new Timestamp(now.getTime()));
+        AddressBook addressBook = new AddressBook();
+        getCustomerDxo().convert(getSignupConfirmPage(), customer);
+        getCustomerDxo().convert(getSignupConfirmPage(), addressBook);
+
+        //TODO zone and check if it's null
+        Zone zones = getCustomerService().getZone(new BigDecimal(130));
+        addressBook.setZoneId(zones.getZoneId());
+        //TODO countries and check if it's null
+        addressBook.setCountryId(zones.getCountry().getCountryId());
+        //TODO select language
+        addressBook.setLanguageId(getLanguageService().getDefaultLanguage()
+                .getLanguageId());
+        // set default address
+        addressBook.setDefaultAddress(PompeiConstants.TRUE_BIGDECIMAL);
+
+        Map<String, String> userInfo = new HashMap<String, String>();
+
+        // put user attribute
+        userInfo.put(PompeiConstants.USER_SECRET_ANSWER, (String) SessionUtil
+                .getFromLocalScope(PompeiConstants.USER_SECRET_ANSWER));
+        userInfo.put(PompeiConstants.USER_NAME, getSignupConfirmPage()
+                .getUserName());
+        userInfo.put(PompeiConstants.USER_BUSINESS_INFO_ONLINE_EMAIL,
+                getSignupConfirmPage().getEmailAddress());
+        userInfo.put(PompeiConstants.USER_SECRET_QUESTION,
+                getSignupConfirmPage().getUserSecretQuestion());
+        userInfo.put("user.home-info.telecom.mobile.number",
+                convertNotNull(getSignupConfirmPage().getCellphone()));
+        userInfo.put("user.home-info.postal.city",
+                convertNotNull(getSignupConfirmPage().getCity()));
+        userInfo.put("user.employer", convertNotNull(getSignupConfirmPage()
+                .getCompany()));
+        userInfo.put("user.department", convertNotNull(getSignupConfirmPage()
+                .getDepartment()));
+        userInfo.put("user.home-info.online.email",
+                convertNotNull(getSignupConfirmPage().getEmailAddress()));
+        userInfo.put("user.home-info.telecom.fax.number",
+                convertNotNull(getSignupConfirmPage().getFax()));
+        userInfo.put("user.name.given", convertNotNull(getSignupConfirmPage()
+                .getFirstname()));
+        userInfo
+                .put("user.name.given.yomi",
+                        convertNotNull(getSignupConfirmPage()
+                                .getFirstnameDescription()));
+        userInfo.put("user.gender", convertNotNull(getSignupConfirmPage()
+                .getGender()));
+        userInfo.put("user.name.family", convertNotNull(getSignupConfirmPage()
+                .getLastname()));
+        userInfo
+                .put("user.name.family.yomi",
+                        convertNotNull(getSignupConfirmPage()
+                                .getLastnameDescription()));
+        userInfo.put("user.home-info.postal.postalcode",
+                convertNotNull(getSignupConfirmPage().getPostcode()));
+        userInfo.put("user.home-info.postal.stateprov",
+                convertNotNull(getSignupConfirmPage().getState()));
+        userInfo.put("user.home-info.postal.street",
+                convertNotNull(getSignupConfirmPage().getStreetAddress()));
+        userInfo.put("user.home-info.telecom.telephone.number",
+                convertNotNull(getSignupConfirmPage().getTelephone()));
+        userInfo.put("user.bdate", convertNotNull(getSignupConfirmPage()
+                .getDayOfBirth().toString()));
+
+        // set email title
+        userInfo.put(PompeiConstants.EMAIL_SUBJECT_USER_REGISTRATION,
+                getSignupConfirmPage().getLabelHelper().getLabelValue(
+                        PompeiConstants.EMAIL_SUBJECT_USER_REGISTRATION));
+
+        try {
+            getCustomerService().addCustomer(userInfo, customer, addressBook);
+        } catch (CommonException e) {
+            FacesMessageUtil.addErrorMessage(e.getMessageId());
+            logger.log(e);
+            return null;
+        } catch (Exception e) {
+            FacesMessageUtil
+                    .addErrorMessage("could.not.create.user.by.system.error");
+            logger.log(e);
+            return null;
+        }
+
+        return SignupCompletePage.class;
+    }
+
+    private String convertNotNull(String str) {
+        if (str == null) {
+            return "";
+        }
+        return str;
+    }
+
+    /**
+     * @return the signupConfirmPage
+     */
+    public SignupConfirmPage getSignupConfirmPage() {
+        return signupConfirmPage;
+    }
+
+    /**
+     * @param signupConfirmPage the signupConfirmPage to set
+     */
+    public void setSignupConfirmPage(SignupConfirmPage signupConfirmPage) {
+        this.signupConfirmPage = signupConfirmPage;
+    }
+
+    /**
+     * @return the customerDxo
+     */
+    public CustomerDxo getCustomerDxo() {
+        return customerDxo;
+    }
+
+    /**
+     * @param customerDxo the customerDxo to set
+     */
+    public void setCustomerDxo(CustomerDxo customerDxo) {
+        this.customerDxo = customerDxo;
+    }
+
+    /**
+     * @return the customerService
+     */
+    public CustomerService getCustomerService() {
+        return customerService;
+    }
+
+    /**
+     * @param customerService the customerService to set
+     */
+    public void setCustomerService(CustomerService customerService) {
+        this.customerService = customerService;
+    }
+
+    /**
+     * @return the languageService
+     */
+    public LanguageService getLanguageService() {
+        return languageService;
+    }
+
+    /**
+     * @param languageService the languageService to set
+     */
+    public void setLanguageService(LanguageService languageService) {
+        this.languageService = languageService;
+    }
+
+}


Property changes on: pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/SignupConfirmAction.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/SignupConfirmPage.java
===================================================================
--- pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/SignupConfirmPage.java	2007-10-11 08:28:54 UTC (rev 620)
+++ pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/SignupConfirmPage.java	2007-10-11 13:29:41 UTC (rev 621)
@@ -0,0 +1,17 @@
+package jp.sf.pal.pompei.web.user.signup;
+
+import java.io.Serializable;
+
+public class SignupConfirmPage extends AbstractUsersignupPage implements
+        Serializable {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = -1370068406355672437L;
+
+    public String getGenderString() {
+        return getLabelHelper().getLabelValue(getGender());
+    }
+
+}


Property changes on: pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/SignupConfirmPage.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/SignupEditAction.java
===================================================================
--- pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/SignupEditAction.java	2007-10-11 08:28:54 UTC (rev 620)
+++ pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/SignupEditAction.java	2007-10-11 13:29:41 UTC (rev 621)
@@ -0,0 +1,206 @@
+package jp.sf.pal.pompei.web.user.signup;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.seasar.framework.log.Logger;
+
+import jp.sf.pal.common.util.DateUtil;
+import jp.sf.pal.common.util.FacesMessageUtil;
+import jp.sf.pal.pompei.PompeiConstants;
+import jp.sf.pal.pompei.util.SessionUtil;
+import jp.sf.pal.pompei.util.SystemUtil;
+
+public class SignupEditAction implements Serializable {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = -2384511292540333093L;
+
+    /**
+     * Logger for this class
+     */
+    private static final Logger logger = Logger
+            .getLogger(SignupEditAction.class);
+
+    /**
+     * 
+     */
+    private SignupEditPage signupEditPage;
+
+    public Class<?> initialize() {
+        // state items
+        List<Map<String, String>> stateItems = new ArrayList<Map<String, String>>();
+        String states = getSignupEditPage().getLabelHelper().getLabelValue(
+                "state.items");
+        String[] stateArray = states.split(",");
+        for (String state : stateArray) {
+            Map<String, String> map = new HashMap<String, String>();
+            map.put("label", state);
+            map.put("value", state);
+            stateItems.add(map);
+        }
+        getSignupEditPage().setStateItems(stateItems);
+        // dayOfBirth
+        Date now = new Date();
+        List<Map<String, String>> yearOfDayOfBirthItems = new ArrayList<Map<String, String>>();
+        int year = DateUtil.getYear(now) + 1900;
+        for (int i = 0; i < 100; i++) {
+            Map<String, String> map = new HashMap<String, String>();
+            map.put("label", Integer.toString(year - i));
+            map.put("value", Integer.toString(year - i));
+            yearOfDayOfBirthItems.add(map);
+        }
+        getSignupEditPage().setYearOfDayOfBirthItems(yearOfDayOfBirthItems);
+        getSignupEditPage().setYearOfDayOfBirth(Integer.valueOf(year));
+
+        List<Map<String, String>> monthOfDayOfBirthItems = new ArrayList<Map<String, String>>();
+        for (int i = 1; i < 13; i++) {
+            Map<String, String> map = new HashMap<String, String>();
+            map.put("label", Integer.toString(i));
+            map.put("value", Integer.toString(i));
+            monthOfDayOfBirthItems.add(map);
+        }
+        getSignupEditPage().setMonthOfDayOfBirthItems(monthOfDayOfBirthItems);
+        getSignupEditPage().setMonthOfDayOfBirth(
+                Integer.valueOf(DateUtil.getMonth(now) + 1));
+
+        List<Map<String, String>> dateOfDayOfBirthItems = new ArrayList<Map<String, String>>();
+        for (int i = 1; i < 32; i++) {
+            Map<String, String> map = new HashMap<String, String>();
+            map.put("label", Integer.toString(i));
+            map.put("value", Integer.toString(i));
+            dateOfDayOfBirthItems.add(map);
+        }
+        getSignupEditPage().setDateOfDayOfBirthItems(dateOfDayOfBirthItems);
+        getSignupEditPage().setDateOfDayOfBirth(
+                Integer.valueOf(DateUtil.getDate(now)));
+
+        // Load Secret Question
+        List<Map<String, String>> questionItems = new ArrayList<Map<String, String>>();
+        int numOfQuestions = Integer.parseInt(getSignupEditPage()
+                .getLabelHelper().getLabelValue("secretQuestion.num"));
+        for (int i = 1; i <= numOfQuestions; i++) {
+            Map<String, String> map = new HashMap<String, String>(2);
+            String value = getSignupEditPage().getLabelHelper().getLabelValue(
+                    "secretQuestion." + i);
+            map.put("label", value);
+            map.put("value", value);
+            questionItems.add(map);
+        }
+        getSignupEditPage().setUserSecretQuestionSelectionItems(questionItems);
+
+        return null;
+    }
+
+    public Class<?> prerender() {
+        // Load Term Of Service
+        String filename = getSignupEditPage().getLabelHelper().getLabelValue(
+                "termOfServiceFile");
+        if (filename == null) {
+            filename = "/WEB-INF/template/term_of_service.txt";
+        }
+        String encoding = getSignupEditPage().getLabelHelper().getLabelValue(
+                "termOfServiceEncoding");
+        if (encoding == null) {
+            encoding = "UTF-8";
+        }
+        StringBuffer buf = new StringBuffer();
+        BufferedReader reader = null;
+        try {
+            reader = new BufferedReader(
+                    new InputStreamReader(new FileInputStream(SystemUtil
+                            .getContextRealPath(filename)), encoding));
+            String line;
+            while ((line = reader.readLine()) != null) {
+                buf.append(line).append("\n");
+            }
+        } catch (UnsupportedEncodingException e) {
+            FacesMessageUtil.addErrorMessage("could.not.read.term.of.service");
+            logger.log("EPA0004", new Object[] { this.toString() }, e);
+        } catch (FileNotFoundException e) {
+            FacesMessageUtil.addErrorMessage("could.not.read.term.of.service");
+            logger.log("EPA0004", new Object[] { this.toString() }, e);
+        } catch (IOException e) {
+            FacesMessageUtil.addErrorMessage("could.not.read.term.of.service");
+            logger.log("EPA0004", new Object[] { this.toString() }, e);
+        } finally {
+            if (reader != null) {
+                try {
+                    reader.close();
+                } catch (IOException e) {
+                }
+            }
+        }
+        getSignupEditPage().setTermOfService(buf.toString());
+
+        // reset secret answer
+        getSignupEditPage().setUserSecretAnswer("");
+
+        // render faces messages
+        FacesMessageUtil.renderMessages();
+        return null;
+    }
+
+    private void preprocessingForUpdate() {
+        // day of birth
+        getSignupEditPage().setDayOfBirth(
+                DateUtil.get(getSignupEditPage().getYearOfDayOfBirth() - 1900,
+                        getSignupEditPage().getMonthOfDayOfBirth() - 1,
+                        getSignupEditPage().getDateOfDayOfBirth()));
+
+        // postcode
+        getSignupEditPage().setPostcode(
+                getSignupEditPage().getPrimaryPostcode() + "-"
+                        + getSignupEditPage().getSecondaryPostcode());
+    }
+
+    public Class<?> doConfirm() {
+        if (getSignupEditPage().getUserSecretQuestionSelection() != null) {
+            getSignupEditPage().setUserSecretQuestion(
+                    getSignupEditPage().getUserSecretQuestionSelection());
+        }
+        // check secret question
+        if (getSignupEditPage().getUserSecretQuestion() == null
+                || getSignupEditPage().getUserSecretQuestion().equals("")) {
+            FacesMessageUtil.addErrorMessage("type.secret.question");
+            return null;
+        }
+
+        preprocessingForUpdate();
+
+        // put secret answer to session
+        SessionUtil.putToLocalScope(PompeiConstants.USER_SECRET_ANSWER,
+                getSignupEditPage().getUserSecretAnswer());
+        getSignupEditPage().setUserSecretAnswer(
+                PompeiConstants.DUMMY_SECRET_ANSWER);
+
+        return SignupConfirmPage.class;
+    }
+
+    /**
+     * @return signupEditPage
+     */
+    public SignupEditPage getSignupEditPage() {
+        return signupEditPage;
+    }
+
+    /**
+     * @param signupEditPage 設定する signupEditPage
+     */
+    public void setSignupEditPage(SignupEditPage signupEditPage) {
+        this.signupEditPage = signupEditPage;
+    }
+
+}


Property changes on: pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/SignupEditAction.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/SignupEditPage.java
===================================================================
--- pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/SignupEditPage.java	2007-10-11 08:28:54 UTC (rev 620)
+++ pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/SignupEditPage.java	2007-10-11 13:29:41 UTC (rev 621)
@@ -0,0 +1,271 @@
+package jp.sf.pal.pompei.web.user.signup;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+import org.seasar.teeda.extension.annotation.validator.Required;
+
+public class SignupEditPage extends AbstractUsersignupPage implements
+        Serializable {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = -527070376132944358L;
+
+    private List<Map<String, String>> dateOfDayOfBirthItems;
+
+    private List<Map<String, String>> monthOfDayOfBirthItems;
+
+    private List<Map<String, String>> stateItems;
+
+    private List<Map<String, String>> userSecretQuestionSelectionItems;
+
+    private List<Map<String, String>> yearOfDayOfBirthItems;
+
+    /**
+     * @return the dateOfDayOfBirthItems
+     */
+    public List<Map<String, String>> getDateOfDayOfBirthItems() {
+        return dateOfDayOfBirthItems;
+    }
+
+    /**
+     * @param dateOfDayOfBirthItems the dateOfDayOfBirthItems to set
+     */
+    public void setDateOfDayOfBirthItems(
+            List<Map<String, String>> dateOfDayOfBirthItems) {
+        this.dateOfDayOfBirthItems = dateOfDayOfBirthItems;
+    }
+
+    /**
+     * @return the monthOfDayOfBirthItems
+     */
+    public List<Map<String, String>> getMonthOfDayOfBirthItems() {
+        return monthOfDayOfBirthItems;
+    }
+
+    /**
+     * @param monthOfDayOfBirthItems the monthOfDayOfBirthItems to set
+     */
+    public void setMonthOfDayOfBirthItems(
+            List<Map<String, String>> monthOfDayOfBirthItems) {
+        this.monthOfDayOfBirthItems = monthOfDayOfBirthItems;
+    }
+
+    /**
+     * @return the stateItems
+     */
+    public List<Map<String, String>> getStateItems() {
+        return stateItems;
+    }
+
+    /**
+     * @param stateItems the stateItems to set
+     */
+    public void setStateItems(List<Map<String, String>> stateItems) {
+        this.stateItems = stateItems;
+    }
+
+    /**
+     * @return the userSecretQuestionSelectionItems
+     */
+    public List<Map<String, String>> getUserSecretQuestionSelectionItems() {
+        return userSecretQuestionSelectionItems;
+    }
+
+    /**
+     * @param userSecretQuestionSelectionItems the userSecretQuestionSelectionItems to set
+     */
+    public void setUserSecretQuestionSelectionItems(
+            List<Map<String, String>> userSecretQuestionSelectionItems) {
+        this.userSecretQuestionSelectionItems = userSecretQuestionSelectionItems;
+    }
+
+    /**
+     * @return the yearOfDayOfBirthItems
+     */
+    public List<Map<String, String>> getYearOfDayOfBirthItems() {
+        return yearOfDayOfBirthItems;
+    }
+
+    /**
+     * @param yearOfDayOfBirthItems the yearOfDayOfBirthItems to set
+     */
+    public void setYearOfDayOfBirthItems(
+            List<Map<String, String>> yearOfDayOfBirthItems) {
+        this.yearOfDayOfBirthItems = yearOfDayOfBirthItems;
+    }
+
+    /* (non-Javadoc)
+     * @see jp.sf.pal.pompei.web.user.signup.AbstractUsersignupPage#setCity(java.lang.String)
+     */
+    @Required
+    @Override
+    public void setCity(String city) {
+        // TODO Auto-generated method stub
+        super.setCity(city);
+    }
+
+    /* (non-Javadoc)
+     * @see jp.sf.pal.pompei.web.user.signup.AbstractUsersignupPage#setDateOfDayOfBirth(java.lang.Integer)
+     */
+    @Required
+    @Override
+    public void setDateOfDayOfBirth(Integer dateOfDayOfBirth) {
+        // TODO Auto-generated method stub
+        super.setDateOfDayOfBirth(dateOfDayOfBirth);
+    }
+
+    /* (non-Javadoc)
+     * @see jp.sf.pal.pompei.web.user.signup.AbstractUsersignupPage#setEmailAddress(java.lang.String)
+     */
+    @Required
+    @Override
+    public void setEmailAddress(String emailAddress) {
+        // TODO Auto-generated method stub
+        super.setEmailAddress(emailAddress);
+    }
+
+    /* (non-Javadoc)
+     * @see jp.sf.pal.pompei.web.user.signup.AbstractUsersignupPage#setEmailAddressConfirm(java.lang.String)
+     */
+    @Required
+    @Override
+    public void setEmailAddressConfirm(String emailAddressConfirm) {
+        // TODO Auto-generated method stub
+        super.setEmailAddressConfirm(emailAddressConfirm);
+    }
+
+    /* (non-Javadoc)
+     * @see jp.sf.pal.pompei.web.user.signup.AbstractUsersignupPage#setFirstname(java.lang.String)
+     */
+    @Required
+    @Override
+    public void setFirstname(String firstname) {
+        // TODO Auto-generated method stub
+        super.setFirstname(firstname);
+    }
+
+    /* (non-Javadoc)
+     * @see jp.sf.pal.pompei.web.user.signup.AbstractUsersignupPage#setFirstnameDescription(java.lang.String)
+     */
+    @Required
+    @Override
+    public void setFirstnameDescription(String firstnameDescription) {
+        // TODO Auto-generated method stub
+        super.setFirstnameDescription(firstnameDescription);
+    }
+
+    /* (non-Javadoc)
+     * @see jp.sf.pal.pompei.web.user.signup.AbstractUsersignupPage#setGender(java.lang.String)
+     */
+    @Required
+    @Override
+    public void setGender(String gender) {
+        // TODO Auto-generated method stub
+        super.setGender(gender);
+    }
+
+    /* (non-Javadoc)
+     * @see jp.sf.pal.pompei.web.user.signup.AbstractUsersignupPage#setLastname(java.lang.String)
+     */
+    @Required
+    @Override
+    public void setLastname(String lastname) {
+        // TODO Auto-generated method stub
+        super.setLastname(lastname);
+    }
+
+    /* (non-Javadoc)
+     * @see jp.sf.pal.pompei.web.user.signup.AbstractUsersignupPage#setLastnameDescription(java.lang.String)
+     */
+    @Required
+    @Override
+    public void setLastnameDescription(String lastnameDescription) {
+        // TODO Auto-generated method stub
+        super.setLastnameDescription(lastnameDescription);
+    }
+
+    /* (non-Javadoc)
+     * @see jp.sf.pal.pompei.web.user.signup.AbstractUsersignupPage#setMonthOfDayOfBirth(java.lang.Integer)
+     */
+    @Required
+    @Override
+    public void setMonthOfDayOfBirth(Integer monthOfDayOfBirth) {
+        // TODO Auto-generated method stub
+        super.setMonthOfDayOfBirth(monthOfDayOfBirth);
+    }
+
+    /* (non-Javadoc)
+     * @see jp.sf.pal.pompei.web.user.signup.AbstractUsersignupPage#setPrimaryPostcode(java.lang.String)
+     */
+    @Required
+    @Override
+    public void setPrimaryPostcode(String primaryPostcode) {
+        // TODO Auto-generated method stub
+        super.setPrimaryPostcode(primaryPostcode);
+    }
+
+    /* (non-Javadoc)
+     * @see jp.sf.pal.pompei.web.user.signup.AbstractUsersignupPage#setSecondaryPostcode(java.lang.String)
+     */
+    @Required
+    @Override
+    public void setSecondaryPostcode(String secondaryPostcode) {
+        // TODO Auto-generated method stub
+        super.setSecondaryPostcode(secondaryPostcode);
+    }
+
+    /* (non-Javadoc)
+     * @see jp.sf.pal.pompei.web.user.signup.AbstractUsersignupPage#setState(java.lang.String)
+     */
+    @Required
+    @Override
+    public void setState(String state) {
+        // TODO Auto-generated method stub
+        super.setState(state);
+    }
+
+    /* (non-Javadoc)
+     * @see jp.sf.pal.pompei.web.user.signup.AbstractUsersignupPage#setStreetAddress(java.lang.String)
+     */
+    @Required
+    @Override
+    public void setStreetAddress(String streetAddress) {
+        // TODO Auto-generated method stub
+        super.setStreetAddress(streetAddress);
+    }
+
+    /* (non-Javadoc)
+     * @see jp.sf.pal.pompei.web.user.signup.AbstractUsersignupPage#setUserName(java.lang.String)
+     */
+    @Required
+    @Override
+    public void setUserName(String userName) {
+        // TODO Auto-generated method stub
+        super.setUserName(userName);
+    }
+
+    /* (non-Javadoc)
+     * @see jp.sf.pal.pompei.web.user.signup.AbstractUsersignupPage#setUserSecretAnswer(java.lang.String)
+     */
+    @Required
+    @Override
+    public void setUserSecretAnswer(String userSecretAnswer) {
+        // TODO Auto-generated method stub
+        super.setUserSecretAnswer(userSecretAnswer);
+    }
+
+    /* (non-Javadoc)
+     * @see jp.sf.pal.pompei.web.user.signup.AbstractUsersignupPage#setYearOfDayOfBirth(java.lang.Integer)
+     */
+    @Required
+    @Override
+    public void setYearOfDayOfBirth(Integer yearOfDayOfBirth) {
+        // TODO Auto-generated method stub
+        super.setYearOfDayOfBirth(yearOfDayOfBirth);
+    }
+
+}


Property changes on: pompei/portlets/pompei-core/trunk/src/main/java/jp/sf/pal/pompei/web/user/signup/SignupEditPage.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: pompei/portlets/pompei-core/trunk/src/main/resources/appMessages.properties
===================================================================
--- pompei/portlets/pompei-core/trunk/src/main/resources/appMessages.properties	2007-10-11 08:28:54 UTC (rev 620)
+++ pompei/portlets/pompei-core/trunk/src/main/resources/appMessages.properties	2007-10-11 13:29:41 UTC (rev 621)
@@ -125,4 +125,22 @@
 added.product.to.cart=\u5546\u54c1\u3092\u30ab\u30fc\u30c8\u306b\u8ffd\u52a0\u3057\u307e\u3057\u305f\u3002
 need.to.register.as.customer=\u30ab\u30fc\u30c8\u3092\u5229\u7528\u3059\u308b\u305f\u3081\u306b\u306f\u4f1a\u54e1\u767b\u9332\u304c\u5fc5\u8981\u3067\u3059\u3002\u4f1a\u54e1\u767b\u9332\u5f8c\u3001\u518d\u5ea6\u3001\u30ab\u30fc\u30c8\u306b\u5546\u54c1\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002
 
+# SignupEditAction.java
+could.not.read.term.of.service=\u5229\u7528\u898f\u7d04\u304c\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u7ba1\u7406\u8005\u306b\u304a\u554f\u3044\u5408\u308f\u305b\u304f\u3060\u3055\u3044\u3002
+type.secret.question=\u79d8\u5bc6\u306e\u8cea\u554f\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u79d8\u5bc6\u306e\u8cea\u554f\u3092\u9078\u629e\u307e\u305f\u306f\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002
 
+# SignupEditConfirm.java
+could.not.encode.secret.password=\u30b7\u30b9\u30c6\u30e0\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u7ba1\u7406\u8005\u306b\u304a\u554f\u3044\u5408\u308f\u305b\u304f\u3060\u3055\u3044\u3002
+error.lacking.password=\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u5165\u529b\u3057\u305f\u5024\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+error.userid_already_exists=\u8981\u6c42\u3055\u308c\u305f\u30e6\u30fc\u30b6\u30fcID\u306f\u65e2\u306b\u5b58\u5728\u3057\u307e\u3059\u3002\u5225\u306e\u30e6\u30fc\u30b6\u30fcID\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+error.email_already_exists=\u8981\u6c42\u3055\u308c\u305f\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306f\u65e2\u306b\u30b7\u30b9\u30c6\u30e0\u3067\u5229\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u65e2\u306b\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u6240\u6709\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306b\u30d1\u30b9\u30ef\u30fc\u30c9\u78ba\u8a8d\u30dd\u30fc\u30c8\u30ec\u30c3\u30c8\u306e\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+error.failed_to_generate_password=\u30b7\u30b9\u30c6\u30e0\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u7ba1\u7406\u8005\u306b\u304a\u554f\u3044\u5408\u308f\u305b\u304f\u3060\u3055\u3044\u3002
+error.two_passwords_do_not_match=\u78ba\u8a8d\u7528\u30d1\u30b9\u30ef\u30fc\u30c9\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002\u518d\u5ea6\u3001\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+error.failed_to_add=\u30e6\u30fc\u30b6\u30fc\u306e\u8ffd\u52a0\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u518d\u5ea6\u3001\u8a66\u3057\u3066\u3082\u3001\u3053\u306e\u554f\u984c\u304c\u767a\u751f\u3059\u308b\u5834\u5408\u306b\u306f\u7ba1\u7406\u8005\u306b\u304a\u554f\u3044\u5408\u308f\u305b\u304f\u3060\u3055\u3044\u3002
+could.not.access.folder=\u4f1a\u54e1\u7528\u30da\u30fc\u30b8\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u518d\u5ea6\u3001\u8a66\u3057\u3066\u3082\u3001\u3053\u306e\u554f\u984c\u304c\u767a\u751f\u3059\u308b\u5834\u5408\u306b\u306f\u7ba1\u7406\u8005\u306b\u304a\u554f\u3044\u5408\u308f\u305b\u304f\u3060\u3055\u3044\u3002
+could.not.update.folder=\u4f1a\u54e1\u7528\u30da\u30fc\u30b8\u3092\u66f4\u65b0\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u518d\u5ea6\u3001\u8a66\u3057\u3066\u3082\u3001\u3053\u306e\u554f\u984c\u304c\u767a\u751f\u3059\u308b\u5834\u5408\u306b\u306f\u7ba1\u7406\u8005\u306b\u304a\u554f\u3044\u5408\u308f\u305b\u304f\u3060\u3055\u3044\u3002
+error.registration_completed_but_could_not_send=\u30b7\u30b9\u30c6\u30e0\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u518d\u5ea6\u3001\u8a66\u3057\u3066\u3082\u3001\u3053\u306e\u554f\u984c\u304c\u767a\u751f\u3059\u308b\u5834\u5408\u306b\u306f\u7ba1\u7406\u8005\u306b\u304a\u554f\u3044\u5408\u308f\u305b\u304f\u3060\u3055\u3044\u3002
+error.registration_completed_but_could_not_find_template=\u30b7\u30b9\u30c6\u30e0\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u518d\u5ea6\u3001\u8a66\u3057\u3066\u3082\u3001\u3053\u306e\u554f\u984c\u304c\u767a\u751f\u3059\u308b\u5834\u5408\u306b\u306f\u7ba1\u7406\u8005\u306b\u304a\u554f\u3044\u5408\u308f\u305b\u304f\u3060\u3055\u3044\u3002
+could.not.create.user.by.system.error=\u30b7\u30b9\u30c6\u30e0\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u7ba1\u7406\u8005\u306b\u304a\u554f\u3044\u5408\u308f\u305b\u304f\u3060\u3055\u3044\u3002
+could.not.insert.customer.data=\u30b7\u30b9\u30c6\u30e0\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u7ba1\u7406\u8005\u306b\u304a\u554f\u3044\u5408\u308f\u305b\u304f\u3060\u3055\u3044\u3002
+

Added: pompei/portlets/pompei-core/trunk/src/main/resources/jp/sf/pal/pompei/web/user/signup/SignupEdit.properties
===================================================================


Property changes on: pompei/portlets/pompei-core/trunk/src/main/resources/jp/sf/pal/pompei/web/user/signup/SignupEdit.properties
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pompei/portlets/pompei-core/trunk/src/main/resources/jp/sf/pal/pompei/web/user/signup/SignupEdit_ja.properties
===================================================================
--- pompei/portlets/pompei-core/trunk/src/main/resources/jp/sf/pal/pompei/web/user/signup/SignupEdit_ja.properties	2007-10-11 08:28:54 UTC (rev 620)
+++ pompei/portlets/pompei-core/trunk/src/main/resources/jp/sf/pal/pompei/web/user/signup/SignupEdit_ja.properties	2007-10-11 13:29:41 UTC (rev 621)
@@ -0,0 +1,4 @@
+# portlet info
+javax.portlet.title=\u30b5\u30a4\u30f3\u30a2\u30c3\u30d7
+javax.portlet.short-title=\u30b5\u30a4\u30f3\u30a2\u30c3\u30d7
+javax.portlet.keywords=\u30b5\u30a4\u30f3\u30a2\u30c3\u30d7


Property changes on: pompei/portlets/pompei-core/trunk/src/main/resources/jp/sf/pal/pompei/web/user/signup/SignupEdit_ja.properties
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pompei/portlets/pompei-core/trunk/src/main/resources/jp/sf/pal/pompei/web/user/signup/label.properties
===================================================================
--- pompei/portlets/pompei-core/trunk/src/main/resources/jp/sf/pal/pompei/web/user/signup/label.properties	2007-10-11 08:28:54 UTC (rev 620)
+++ pompei/portlets/pompei-core/trunk/src/main/resources/jp/sf/pal/pompei/web/user/signup/label.properties	2007-10-11 13:29:41 UTC (rev 621)
@@ -0,0 +1,16 @@
+M=\u7537\u6027
+F=\u5973\u6027
+
+state.items=\u5317\u6d77\u9053,\u9752\u68ee\u770c,\u5ca9\u624b\u770c,\u5bae\u57ce\u770c,\u79cb\u7530\u770c,\u5c71\u5f62\u770c,\u798f\u5cf6\u770c,\u8328\u57ce\u770c,\u6803\u6728\u770c,\u7fa4\u99ac\u770c,\u57fc\u7389\u770c,\u5343\u8449\u770c,\u6771\u4eac\u90fd,\u795e\u5948\u5ddd\u770c,\u65b0\u6f5f\u770c,\u5bcc\u5c71\u770c,\u77f3\u5ddd\u770c,\u798f\u4e95\u770c,\u5c71\u68a8\u770c,\u9577\u91ce\u770c,\u5c90\u961c\u770c,\u9759\u5ca1\u770c,\u611b\u77e5\u770c,\u4e09\u91cd\u770c,\u6ecb\u8cc0\u770c,\u4eac\u90fd\u5e9c,\u5927\u962a\u5e9c,\u5175\u5eab\u770c,\u5948\u826f\u770c,\u548c\u6b4c\u5c71\u770c,\u9ce5\u53d6\u770c,\u5cf6\u6839\u770c,\u5ca1\u5c71\u770c,\u5e83\u5cf6\u770c,\u5c71\u53e3\u770c,\u5fb3\u5cf6\u770c,\u9999\u5ddd\u770c,\u611b\u5a9b\u770c,\u9ad8\u77e5\u770c,\u798f\u5ca1\u770c,\u4f50\u8cc0\u770c,\u9577\u5d0e\u770c,\u718a\u672c\u770c,\u5927\u5206\u770c,\u5bae\u5d0e\u770c,\u9e7f\u5150\u5cf6\u770c,\u6c96\u7e04\u770c,
+
+secretQuestion.num=8
+secretQuestion.1=\u30da\u30c3\u30c8\u3068\u3044\u3048\u3070\uff1f
+secretQuestion.2=\u65c5\u884c\u3068\u3044\u3048\u3070\uff1f
+secretQuestion.3=\u30d2\u30fc\u30ed\u30fc\u3068\u3044\u3048\u3070\uff1f
+secretQuestion.4=\u98df\u3079\u7269\u3068\u3044\u3048\u3070\uff1f
+secretQuestion.5=\u30c1\u30fc\u30e0\u3068\u3044\u3048\u3070\uff1f
+secretQuestion.6=\u5b66\u6821\u3068\u3044\u3048\u3070\uff1f
+secretQuestion.7=\u6620\u753b\u3068\u3044\u3048\u3070\uff1f
+secretQuestion.8=\u8a18\u5ff5\u65e5\u3068\u3044\u3048\u3070\uff1f
+
+email.subject.registration=\u4f1a\u54e1\u767b\u9332\u306e\u78ba\u8a8d
\ No newline at end of file


Property changes on: pompei/portlets/pompei-core/trunk/src/main/resources/jp/sf/pal/pompei/web/user/signup/label.properties
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pompei/portlets/pompei-core/trunk/src/main/webapp/WEB-INF/jetspeed-portlet.xml
===================================================================
--- pompei/portlets/pompei-core/trunk/src/main/webapp/WEB-INF/jetspeed-portlet.xml	2007-10-11 08:28:54 UTC (rev 620)
+++ pompei/portlets/pompei-core/trunk/src/main/webapp/WEB-INF/jetspeed-portlet.xml	2007-10-11 13:29:41 UTC (rev 621)
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
+<portlet-app xmlns="http://portals.apache.org/jetspeed" xmlns:js="http://portals.apache.org/jetspeed" xmlns:dc="http://www.purl.org/dc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="pompei-core" version="1.0" xsi:schemaLocation="http://portals.apache.org/jetspeed http://portals.apache.org/jetspeed-2/2.1/schemas/jetspeed-portlet.xsd">
+  <js:security-constraint-ref>admin</js:security-constraint-ref>
+  <dc:title>Pompei Core Portlets</dc:title>
+  <dc:title xml:lang="ja">Pompei Core ポートレット</dc:title>
+  <dc:creator>PAL Team</dc:creator>
+  <portlet>
+    <portlet-name>ProductList</portlet-name>
+    <js:security-constraint-ref>public-view</js:security-constraint-ref>
+    <js:metadata name="merge.portal.parameters.with.portlet.parameters">true</js:metadata>
+    <js:metadata name="merge.portal.parameters.before.portlet.parameters">true</js:metadata>
+  </portlet>
+  <portlet>
+    <portlet-name>CategoryList</portlet-name>
+    <js:security-constraint-ref>public-view</js:security-constraint-ref>
+    <js:metadata name="merge.portal.parameters.with.portlet.parameters">true</js:metadata>
+    <js:metadata name="merge.portal.parameters.before.portlet.parameters">true</js:metadata>
+  </portlet>
+  <portlet>
+    <portlet-name>ProductListInCart</portlet-name>
+    <js:security-constraint-ref>public-view</js:security-constraint-ref>
+  </portlet>
+  <portlet>
+    <portlet-name>OrderProducts</portlet-name>
+    <js:security-constraint-ref>public-view</js:security-constraint-ref>
+  </portlet>
+  <js:services>
+    <js:service name="SecurityProvider"/>
+    <js:service name="UserManager"/>
+    <js:service name="PageManager"/>
+    <js:service name="PortalAdministration"/>
+    <!--
+    <js:service name="GroupManager"/>
+    <js:service name="RoleManager"/>
+    <js:service name="ApplicationServerManager"/>
+    <js:service name="DeploymentManager"/>
+    <js:service name="EntityAccessor"/>
+    <js:service name="WindowAccessor"/>
+    <js:service name="PermissionManager"/>
+    <js:service name="PortalAdministration"/>
+    <js:service name="PortletFactory"/>
+    <js:service name="PortletRegistryComponent"/>
+    <js:service name="PortalStatistics"/>
+    <js:service name="Profiler"/>
+    <js:service name="SearchComponent"/>
+    <js:service name="SSO"/>
+    <js:service name="DecorationFactory"/>
+    <js:service name="SecurityAccessController"/>
+    <js:service name="PortletTrackingManager"/>
+-->
+    <js:service name="AuditActivity"/>
+  </js:services>
+</portlet-app>


Property changes on: pompei/portlets/pompei-core/trunk/src/main/webapp/WEB-INF/jetspeed-portlet.xml
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: pompei/portlets/pompei-core/trunk/src/main/webapp/WEB-INF/portlet.xml
===================================================================
--- pompei/portlets/pompei-core/trunk/src/main/webapp/WEB-INF/portlet.xml	2007-10-11 08:28:54 UTC (rev 620)
+++ pompei/portlets/pompei-core/trunk/src/main/webapp/WEB-INF/portlet.xml	2007-10-11 13:29:41 UTC (rev 621)
@@ -408,4 +408,77 @@
     </portlet-info>
   </portlet>
   <!-- 会員登録 -->
+  <portlet>
+    <description>Provides users with the ability register as a new user.</description>
+    <description xml:lang="ja">会員登録する機能を提供します。</description>
+    <portlet-name>CustomerSignupPortlet</portlet-name>
+    <display-name>Pompei: Signup</display-name>
+    <display-name xml:lang="ja">Pompei: サインアップ</display-name>
+    <portlet-class>org.apache.portals.bridges.portletfilter.FilterPortlet</portlet-class>
+    <init-param>
+      <name>portlet-class</name>
+      <value>org.seasar.teeda.core.portlet.FacesPortlet</value>
+    </init-param>
+    <init-param>
+      <name>portlet-filters</name>
+      <value>jp.sf.pal.pompei.filter.UserRegistrationFilter,jp.sf.pal.facesresponse.FacesResponseFilter,jp.sf.pal.pooptimizer.OptimizerFilter,org.seasar.portlet.filter.S2PortletFilter,org.seasar.portlet.filter.HotdeployPortletFilter</value>
+    </init-param>
+    <init-param>
+      <name>view-page</name>
+      <value>/view/user/signup/signupEdit.html</value>
+    </init-param>
+    <init-param>
+      <description>This option will generate a new password for each user registration</description>
+      <name>jp.sf.pal.pompei.ForceGeneratedPassword</name>
+      <value>true</value>
+    </init-param>
+    <init-param>
+      <description>This option will force email address to be system wide unique</description>
+      <name>jp.sf.pal.pompei.ForceUniqueEmail</name>
+      <value>true</value>
+    </init-param>
+    <init-param>
+      <description>This option will use the email address as the username</description>
+      <name>jp.sf.pal.pompei.ForceUseEmailAsUsername</name>
+      <value>false</value>
+    </init-param>
+    <init-param>
+      <description>This is the template in which you setup an email to be sent after user exists</description>
+      <name>jp.sf.pal.pompei.EmailTemplateLocation</name>
+      <value>/WEB-INF/template/userreg/</value>
+    </init-param>
+    <init-param>
+      <description>This is the template in which you setup an email to be sent after user exists</description>
+      <name>jp.sf.pal.pompei.EmailTemplateName</name>
+      <value>userRegistrationEmail.vm</value>
+    </init-param>
+    <init-param>
+      <description>Profiling rules to be assigned at registration.</description>
+      <name>jp.sf.pal.pompei.RuleNames</name>
+      <value>page</value>
+    </init-param>
+    <init-param>
+      <description>Profiling rules to be assigned at registration.</description>
+      <name>jp.sf.pal.pompei.RuleValues</name>
+      <value>j2</value>
+    </init-param>
+    <init-param>
+      <description>Profiling rules to be assigned at registration.</description>
+      <name>jp.sf.pal.pompei.SendMail</name>
+      <value>true</value>
+    </init-param>
+    <expiration-cache>0</expiration-cache>
+    <supports>
+      <mime-type>text/html</mime-type>
+      <portlet-mode>VIEW</portlet-mode>
+    </supports>
+    <supported-locale>en</supported-locale>
+    <supported-locale>ja</supported-locale>
+    <resource-bundle>jp.sf.pal.pompei.web.signup.signupEdit</resource-bundle>
+    <portlet-info>
+      <title>Customer Signup</title>
+      <short-title>Signup</short-title>
+      <keywords>Signup</keywords>
+    </portlet-info>
+  </portlet>
 </portlet-app>

Added: pompei/portlets/pompei-core/trunk/src/main/webapp/WEB-INF/template/term_of_service.txt
===================================================================
--- pompei/portlets/pompei-core/trunk/src/main/webapp/WEB-INF/template/term_of_service.txt	2007-10-11 08:28:54 UTC (rev 620)
+++ pompei/portlets/pompei-core/trunk/src/main/webapp/WEB-INF/template/term_of_service.txt	2007-10-11 13:29:41 UTC (rev 621)
@@ -0,0 +1,5 @@
+利用規約
+
+・・・
+・・・
+・・・


Property changes on: pompei/portlets/pompei-core/trunk/src/main/webapp/WEB-INF/template/term_of_service.txt
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pompei/portlets/pompei-core/trunk/src/main/webapp/WEB-INF/template/userreg/email/userRegistrationEmail.vm
===================================================================
--- pompei/portlets/pompei-core/trunk/src/main/webapp/WEB-INF/template/userreg/email/userRegistrationEmail.vm	2007-10-11 08:28:54 UTC (rev 620)
+++ pompei/portlets/pompei-core/trunk/src/main/webapp/WEB-INF/template/userreg/email/userRegistrationEmail.vm	2007-10-11 13:29:41 UTC (rev 621)
@@ -0,0 +1,15 @@
+こんにちは、$!{map.get("user.name.family")} $!{map.get("user.name.given")} さん
+
+Pompei ポータルに登録していただきありがとうございます。
+
+ユーザー名: $!{map.get("user.name")}
+パスワード: $!{map.get("password")}
+
+パスワードは、ログインして変更できます。
+
+以上をよろしくお願いいたします。
+
+---
+Pompei ポータル
+http://sourceforge.jp/projects/pal/
+

Modified: pompei/portlets/pompei-core/trunk/src/main/webapp/view/index.html
===================================================================
--- pompei/portlets/pompei-core/trunk/src/main/webapp/view/index.html	2007-10-11 08:28:54 UTC (rev 620)
+++ pompei/portlets/pompei-core/trunk/src/main/webapp/view/index.html	2007-10-11 13:29:41 UTC (rev 621)
@@ -25,6 +25,7 @@
 <li><a href="./user/product/categoryList.html">カテゴリリスト</a></li>
 <li><a href="./user/cart/productList.html">カート確認</a></li>
 <li><a href="./user/checkout/userInfoEdit.html">注文</a></li>
+<li><a href="./user/signup/signupEdit.html">会員登録</a></li>
 </ul>
 </form>
 </body></html>

Added: pompei/portlets/pompei-core/trunk/src/main/webapp/view/user/signup/signupComplete.html
===================================================================
--- pompei/portlets/pompei-core/trunk/src/main/webapp/view/user/signup/signupComplete.html	2007-10-11 08:28:54 UTC (rev 620)
+++ pompei/portlets/pompei-core/trunk/src/main/webapp/view/user/signup/signupComplete.html	2007-10-11 13:29:41 UTC (rev 621)
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <title>会員登録</title>
+  </head>
+  <body>
+    <div style="width:100%;">
+      <center>
+        <div style="width: 80%;text-align: left;">
+          <form id="checkoutCompleteForm">
+            <div>
+              <span id="allMessages" fatalClass="portlet-msg-error" errorClass="portlet-msg-error" warnClass="portlet-msg-alert" infoClass="portlet-msg-info"></span>
+            </div>
+            <br />
+            <div style="font-size: 14pt;font-weight: bold;"> 会員登録が完了しました</div>
+            <table style="border-top: 1px solid silver;border-bottom: 1px solid silver;width: 100%;">
+              <tr>
+                <td width="10" bgcolor="#ffd153">&nbsp;</td>
+                <td width="100" bgcolor="#fff1a1" valign="top" align="center">
+                  <label>情報</label>
+                </td>
+                <td>
+                  <div>
+                    <label>会員登録をありがとうございました。</label>
+                  </div>
+                  <div id="isSendEmail" style="margin: 5px;">
+                    <strong>
+                      <span id="emailAddress">mail</span> 宛に会員情報を送信しました。
+                    </strong>
+                    <br/>
+                    メールに記述されている会員情報でログインして、ご利用ください。
+                    <br/>
+                    メールが届かない場合は、管理者にお問い合わせください。
+                  </div>
+                  <div id="isNotSendEmail" style="margin: 5px;">
+                    登録された会員情報でログインして、ご利用ください。
+                    <br/>
+                    ログインできない場合は、管理者にお問い合わせください。
+                  </div>
+                  <br/>
+                  <br/>
+                  <div>
+                    <a id="jumpSignupEdit" href="signupEdit.html">会員登録へ戻る</a>
+                  </div>
+                </td>
+              </tr>
+            </table>
+          </form>
+        </div>
+      </center>
+    </div>
+  </body>
+</html>


Property changes on: pompei/portlets/pompei-core/trunk/src/main/webapp/view/user/signup/signupComplete.html
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pompei/portlets/pompei-core/trunk/src/main/webapp/view/user/signup/signupConfirm.html
===================================================================
--- pompei/portlets/pompei-core/trunk/src/main/webapp/view/user/signup/signupConfirm.html	2007-10-11 08:28:54 UTC (rev 620)
+++ pompei/portlets/pompei-core/trunk/src/main/webapp/view/user/signup/signupConfirm.html	2007-10-11 13:29:41 UTC (rev 621)
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:te="http://www.seasar.org/teeda/extension">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <link rel="stylesheet" type="text/css" href="../../css/global.css" />
+  </head>
+  <body>
+    <form id="signupEditForm">
+      <div>
+        <span id="allMessages" fatalClass="portlet-msg-error" errorClass="portlet-msg-error" warnClass="portlet-msg-alert" infoClass="portlet-msg-info"></span>
+      </div>
+      <div style="width:100%;">
+        <center>
+          <div style="width: 80%;text-align: left;">
+            <div style="font-size: 14pt;font-weight: bold;"><span style="color:#ff9900;">1.</span> 会員情報を確認してください</div>
+            <table style="border-top: 1px solid silver;border-bottom: 1px solid silver;width: 100%;">
+              <tr>
+                <td width="10" bgcolor="#ffd153">&nbsp;</td>
+                <td width="100" bgcolor="#fff1a1" valign="top" align="center">
+                  <label>会員情報</label>
+                </td>
+                <td>
+                  <table>
+                    <tbody>
+                      <tr>
+                        <th align="left">
+                          <label>ご希望のユーザーID:</label>
+                        </th>
+                        <td>
+                          <span id="userName">abc</span><input id="userName-hidden" type="hidden"/>
+                        </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>名字:</label>
+                        </th>
+                        <td>
+                          <span id="lastname">abc</span><input id="lastname-hidden" type="hidden"/>
+                        </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>名前:</label>
+                        </th>
+                        <td>
+                          <span id="firstname">abc</span><input id="firstname-hidden" type="hidden"/>
+                        </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>名字 (フリガナ):</label>
+                        </th>
+                        <td>
+                          <span id="lastnameDescription">abc</span><input id="lastnameDescription-hidden" type="hidden"/>
+                        </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>名前 (フリガナ):</label>
+                        </th>
+                        <td>
+                          <span id="firstnameDescription">abc</span><input id="firstnameDescription-hidden" type="hidden"/>
+                        </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>性別:</label>
+                        </th>
+                        <td>
+                          <span id="genderString">abc</span><input id="gender-hidden" type="hidden"/>
+                        </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>メールアドレス:</label>
+                        </th>
+                        <td>
+                          <span id="emailAddress">abc</span><input id="emailAddress-hidden" type="hidden"/>
+                        </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>誕生日:</label>
+                        </th>
+                        <td>
+                          <span id="dayOfBirth">abc</span><input id="dayOfBirth-hidden" type="hidden"/>
+                      </td>
+                      </tr>
+                    </tbody>
+                  </table>
+                </td>
+              </tr>
+            </table>
+            <br />
+            <br />
+            <div style="font-size: 14pt;font-weight: bold;"><span style="color:#ff9900;">2.</span> お届け先を確認してください</div>
+            <table style="border-top: 1px solid silver;border-bottom: 1px solid silver;width: 100%;">
+              <tr>
+                <td width="10" bgcolor="#ffd153">&nbsp;</td>
+                <td width="100" bgcolor="#fff1a1" valign="top" align="center">
+                  <label>お届け先</label>
+                </td>
+                <td>
+                  <table>
+                    <tbody>
+                      <tr>
+                        <th align="left">
+                          <label>郵便番号:</label>
+                        </th>
+                        <td>
+                          <span id="postcode">abc</span><input id="postcode-hidden" type="hidden"/>
+                        </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>都道府県:</label>
+                        </th>
+                        <td>
+                          <span id="state">abc</span><input id="state-hidden" type="hidden"/>
+                        </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>郡市区 (島、国):</label>
+                        </th>
+                        <td>
+                          <span id="city">abc</span><input id="city-hidden" type="hidden"/>
+                        </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>それ以降の住所:</label>
+                        </th>
+                        <td>
+                          <span id="streetAddress">abc</span><input id="streetAddress-hidden" type="hidden"/>
+                        </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>電話番号:</label>
+                        </th>
+                        <td>
+                          <span id="telephone">abc</span><input id="telephone-hidden" type="hidden"/>
+                        </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>FAX:</label>
+                        </th>
+                        <td>
+                          <span id="fax">abc</span><input id="fax-hidden" type="hidden"/>
+                        </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>携帯電話番号:</label>
+                        </th>
+                        <td>
+                          <span id="cellphone">abc</span><input id="cellphone-hidden" type="hidden"/>
+                        </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>会社名・団体名:</label>
+                        </th>
+                        <td>
+                          <span id="company">abc</span><input id="company-hidden" type="hidden"/>
+                        </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>部署名・役職:</label>
+                        </th>
+                        <td>
+                          <span id="department">abc</span><input id="department-hidden" type="hidden"/>
+                        </td>
+                      </tr>
+<!-- TODO: entry_country_id -->
+                    </tbody>
+                  </table>
+                </td>
+              </tr>
+            </table>
+            <br />
+            <br />
+            <div style="font-size: 14pt;font-weight: bold;"><span style="color:#ff9900;">3.</span> 秘密の質問と答えを確認してください</div>
+            <table style="border-top: 1px solid silver;border-bottom: 1px solid silver;width: 100%;">
+              <tr>
+                <td width="10" bgcolor="#ffd153">&nbsp;</td>
+                <td width="100" bgcolor="#fff1a1" valign="top" align="center">
+                  <label>秘密の質問と答え</label>
+                </td>
+                <td>
+                  <table>
+                    <tbody>
+                      <tr>
+                        <th>
+                          <label>秘密の質問:</label>
+                        </th>
+                        <td>
+                          <span id="userSecretQuestion">abc</span><input id="userSecretQuestion-hidden" type="hidden"/>
+                        </td>
+                      </tr>
+                      <tr>
+                        <th>
+                          <label>秘密の答え:</label>
+                        </th>
+                        <td>
+                          <span id="userSecretAnswer">abc</span><input id="userSecretAnswer-hidden" type="hidden"/>
+                        </td>
+                      </tr>
+                    </tbody>
+                  </table>
+                </td>
+              </tr>
+            </table>
+          </div>
+          <br/>
+          <br/>
+          <div style="text-align:center;">
+            <input type="button" id="doCreate" value="上記の情報を登録する" onclick="location.href='signupComplete.html'" />
+            <input type="button" id="doCancel" value="再編集する" onclick="location.href='signupComplete.html'" />
+          </div>
+        </center>
+      </div>
+    </form>
+  </body>
+</html>


Property changes on: pompei/portlets/pompei-core/trunk/src/main/webapp/view/user/signup/signupConfirm.html
___________________________________________________________________
Name: svn:eol-style
   + native

Added: pompei/portlets/pompei-core/trunk/src/main/webapp/view/user/signup/signupEdit.html
===================================================================
--- pompei/portlets/pompei-core/trunk/src/main/webapp/view/user/signup/signupEdit.html	2007-10-11 08:28:54 UTC (rev 620)
+++ pompei/portlets/pompei-core/trunk/src/main/webapp/view/user/signup/signupEdit.html	2007-10-11 13:29:41 UTC (rev 621)
@@ -0,0 +1,291 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:te="http://www.seasar.org/teeda/extension">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <link rel="stylesheet" type="text/css" href="../../css/global.css" />
+  </head>
+  <body>
+    <form id="signupEditForm">
+      <div>
+        <span id="allMessages" fatalClass="portlet-msg-error" errorClass="portlet-msg-error" warnClass="portlet-msg-alert" infoClass="portlet-msg-info"></span>
+      </div>
+      <div style="width:100%;">
+        <center>
+          <div style="width: 80%;text-align: left;">
+            <div style="font-size: 14pt;font-weight: bold;"><span style="color:#ff9900;">1.</span> 会員情報を入力してください</div>
+            <table style="border-top: 1px solid silver;border-bottom: 1px solid silver;width: 100%;">
+              <tr>
+                <td width="10" bgcolor="#ffd153">&nbsp;</td>
+                <td width="100" bgcolor="#fff1a1" valign="top" align="center">
+                  <label>会員情報</label>
+                </td>
+                <td>
+                  <table>
+                    <tbody>
+                      <tr>
+                        <th align="left">
+                          <label>ご希望のユーザーID:</label>
+                          <font color="#009900">[必須]</font>
+                        </th>
+                        <td>
+                          <input id="userName" type="text" class="portlet-form-input-field" size="24" />
+                          <label id="userIdConditionLabel" class="portlet-form-label">(6〜32字の半角英数字)</label>
+                        </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>名字:</label>
+                          <font color="#009900">[必須]</font>
+                        </th>
+                        <td>
+                          <input id="lastname" type="text" class="portlet-form-input-field" size="20" />
+                        </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>名前:</label>
+                          <font color="#009900">[必須]</font>
+                        </th>
+                        <td>
+                          <input id="firstname" type="text" class="portlet-form-input-field" size="20" />
+                        </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>名字 (フリガナ):</label>
+                          <font color="#009900">[必須]</font>
+                        </th>
+                        <td>
+                          <input id="lastnameDescription" type="text" class="portlet-form-input-field" size="20" />
+                        </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>名前 (フリガナ):</label>
+                          <font color="#009900">[必須]</font>
+                        </th>
+                        <td>
+                          <input id="firstnameDescription" type="text" class="portlet-form-input-field" size="20" />
+                        </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>性別:</label>
+                          <font color="#009900">[必須]</font>
+                        </th>
+                        <td>
+                          <span id="gender">
+                            <label><input type="radio" name="gender" value="M" class="portlet-form-field-label" />男性</label>
+                            <label><input type="radio" name="gender" value="F" class="portlet-form-field-label" />女性</label>
+                          </span>
+                        </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>メールアドレス:</label>
+                          <font color="#009900">[必須]</font>
+                        </th>
+                        <td>
+                          <input id="emailAddress" type="text" class="portlet-form-input-field" size="30" />
+                        </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>メールアドレス(確認):</label>
+                          <font color="#009900">[必須]</font>
+                        </th>
+                        <td>
+                          <input id="emailAddressConfirm" type="text" class="portlet-form-input-field" size="30" />
+                        </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>誕生日:</label>
+                          <font color="#009900">[必須]</font>
+                        </th>
+                        <td>
+                          <input type="hidden" id="yearOfDayOfBirthItemsSave" />
+                          <select id="yearOfDayOfBirth" class="portlet-form-input-field"><option>2000</option></select>
+                              /
+                          <input type="hidden" id="monthOfDayOfBirthItemsSave" />
+                          <select id="monthOfDayOfBirth" class="portlet-form-input-field"><option>1</option></select>
+                              /
+                          <input type="hidden" id="dateOfDayOfBirthItemsSave" />
+                          <select id="dateOfDayOfBirth" class="portlet-form-input-field"><option>1</option></select>
+                        <!-- input id="dayOfBirth" type="text" class="portlet-form-input-field" /-->
+                      </td>
+                      </tr>
+                    </tbody>
+                  </table>
+                </td>
+              </tr>
+            </table>
+            <br />
+            <br />
+            <div style="font-size: 14pt;font-weight: bold;"><span style="color:#ff9900;">2.</span> お届け先を入力してください</div>
+            <table style="border-top: 1px solid silver;border-bottom: 1px solid silver;width: 100%;">
+              <tr>
+                <td width="10" bgcolor="#ffd153">&nbsp;</td>
+                <td width="100" bgcolor="#fff1a1" valign="top" align="center">
+                  <label>お届け先</label>
+                </td>
+                <td>
+                  <table>
+                    <tbody>
+                      <tr>
+                        <th align="left">
+                          <label>郵便番号:</label>
+                          <font color="#009900">[必須]</font>
+                        </th>
+                        <td><input id="primaryPostcode" type="text" class="portlet-form-input-field" size="3" />
+                        -
+                        <input id="secondaryPostcode" type="text" class="portlet-form-input-field" size="4" />
+                        <!-- input id="postcode" type="text" class="portlet-form-input-field" / -->
+                      </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>都道府県:</label>
+                          <font color="#009900">[必須]</font>
+                        </th>
+                        <td>
+                          <input type="hidden" id="stateItemsSave" />
+                          <select id="state">
+                            <option value="bbb">hoge</option>
+                          </select>
+                        </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>郡市区 (島、国):</label>
+                          <font color="#009900">[必須]</font>
+                        </th>
+                        <td>
+                          <input id="city" type="text" class="portlet-form-input-field" size="20" />
+                        </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>それ以降の住所:</label>
+                          <font color="#009900">[必須]</font>
+                        </th>
+                        <td>
+                          <input id="streetAddress" type="text" class="portlet-form-input-field" size="40" />
+                        </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>電話番号:</label>
+                        </th>
+                        <td>
+                          <input id="telephone" type="text" class="portlet-form-input-field" size="13" />
+                        </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>FAX:</label>
+                        </th>
+                        <td>
+                          <input id="fax" type="text" class="portlet-form-input-field" size="13" />
+                        </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>携帯電話番号:</label>
+                        </th>
+                        <td>
+                          <input id="cellphone" type="text" class="portlet-form-input-field" size="13" />
+                        </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>会社名・団体名:</label>
+                        </th>
+                        <td>
+                          <input id="company" type="text" class="portlet-form-input-field" size="20" />
+                        </td>
+                      </tr>
+                      <tr>
+                        <th align="left">
+                          <label>部署名・役職:</label>
+                        </th>
+                        <td>
+                          <input id="department" type="text" class="portlet-form-input-field" size="20" />
+                        </td>
+                      </tr>
+<!-- TODO: entry_country_id -->
+                    </tbody>
+                  </table>
+                </td>
+              </tr>
+            </table>
+            <br />
+            <br />
+            <div style="font-size: 14pt;font-weight: bold;"><span style="color:#ff9900;">3.</span> 秘密の質問と答えを入力してください</div>
+            <table style="border-top: 1px solid silver;border-bottom: 1px solid silver;width: 100%;">
+              <tr>
+                <td width="10" bgcolor="#ffd153">&nbsp;</td>
+                <td width="100" bgcolor="#fff1a1" valign="top" align="center">
+                  <label>秘密の質問と答え</label>
+                </td>
+                <td>
+                  <table>
+                    <tbody>
+                      <tr>
+                        <th>
+                          <label>秘密の質問:</label>
+                          <font color="#009900">[必須]</font>
+                        </th>
+                        <td>
+                          <input type="hidden" id="userSecretQuestionSelectionItemsSave" />
+                          <select id="userSecretQuestionSelection">
+                            <option>ほげ</option>
+                          </select>
+                        </td>
+                      </tr>
+                      <tr>
+                        <td>&nbsp;</td>
+                        <td>
+                          <label id="otherUserSecretQuestionLabel">上記以外の質問を登録することもできます。</label>
+                          <br />
+                          <input id="userSecretQuestion" type="text" class="portlet-form-input-field" size="24" />
+                        </td>
+                      </tr>
+                      <tr>
+                        <th>
+                          <label>秘密の答え:</label>
+                          <font color="#009900">[必須]</font>
+                        </th>
+                        <td>
+                          <input id="userSecretAnswer" type="text" class="portlet-form-input-field" size="24" />
+                        </td>
+                      </tr>
+                    </tbody>
+                  </table>
+                </td>
+              </tr>
+            </table>
+            <br />
+            <br />
+            <div style="font-size: 14pt;font-weight: bold;"><span style="color:#ff9900;">4.</span> 利用規約をご確認ください。</div>
+            <table style="border-top: 1px solid silver;border-bottom: 1px solid silver;width: 100%;">
+              <tr>
+                <td align="center">
+                  <div class="portlet-form-label" style="text-align:center;">
+                    <textarea id="termOfService" wrap="off" cols="80" rows="20" readonly="readonly"> </textarea>
+                  </div>
+                </td>
+              </tr>
+            </table>
+          </div>
+          <br/>
+          <br/>
+          <div style="text-align:center;">
+            <input type="button" id="doConfirm" value="利用規約に同意して登録する" onclick="location.href='signupConfirm.html'" />
+          </div>
+        </center>
+      </div>
+    </form>
+  </body>
+</html>


Property changes on: pompei/portlets/pompei-core/trunk/src/main/webapp/view/user/signup/signupEdit.html
___________________________________________________________________
Name: svn:eol-style
   + native


pal-cvs メーリングリストの案内
Back to archive index