You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rave.apache.org by ja...@apache.org on 2012/03/02 17:52:39 UTC

svn commit: r1296305 - in /incubator/rave/trunk: rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/admin/ rave-components/rave-web/src/main/java/org/apache/rave/portal/web/util/ rave-components/rave-web/src/test/java/org/apac...

Author: jasha
Date: Fri Mar  2 16:52:38 2012
New Revision: 1296305

URL: http://svn.apache.org/viewvc?rev=1296305&view=rev
Log:
RAVE-375 Create user from Admin interface. Patch submitted by Marijan Milicevic

Added:
    incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/admin/newaccount.jsp
    incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/includes/
    incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/includes/new_user_form.jsp
Modified:
    incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/admin/UserController.java
    incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/util/ViewNames.java
    incubator/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/admin/UserControllerTest.java
    incubator/rave/trunk/rave-portal-resources/src/main/resources/messages.properties
    incubator/rave/trunk/rave-portal-resources/src/main/resources/messages_nl.properties
    incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/admin/users.jsp
    incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/newaccount.jsp

Modified: incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/admin/UserController.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/admin/UserController.java?rev=1296305&r1=1296304&r2=1296305&view=diff
==============================================================================
--- incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/admin/UserController.java (original)
+++ incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/admin/UserController.java Fri Mar  2 16:52:38 2012
@@ -20,16 +20,21 @@
 package org.apache.rave.portal.web.controller.admin;
 
 import org.apache.rave.portal.model.Authority;
+import org.apache.rave.portal.model.NewUser;
 import org.apache.rave.portal.model.PortalPreference;
 import org.apache.rave.portal.model.User;
 import org.apache.rave.portal.model.util.SearchResult;
 import org.apache.rave.portal.service.AuthorityService;
+import org.apache.rave.portal.service.NewAccountService;
 import org.apache.rave.portal.service.PortalPreferenceService;
 import org.apache.rave.portal.service.UserService;
 import org.apache.rave.portal.web.util.ModelKeys;
 import org.apache.rave.portal.web.util.PortalPreferenceKeys;
 import org.apache.rave.portal.web.util.ViewNames;
+import org.apache.rave.portal.web.validator.NewAccountValidator;
 import org.apache.rave.portal.web.validator.UserProfileValidator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.stereotype.Controller;
@@ -60,6 +65,8 @@ import static org.apache.rave.portal.web
 @SessionAttributes({"user", ModelKeys.TOKENCHECK})
 public class UserController {
 
+    private static final Logger logger = LoggerFactory.getLogger(UserController.class);
+
     private static final String SELECTED_ITEM = "users";
 
     @Autowired
@@ -74,13 +81,20 @@ public class UserController {
     @Autowired
     private PortalPreferenceService preferenceService;
 
-    @InitBinder
+    @Autowired
+    private NewAccountValidator newAccountValidator;
+
+    @Autowired
+    private NewAccountService newAccountService;
+
+    @InitBinder(value = {"user"})
     public void initBinder(WebDataBinder dataBinder) {
         dataBinder.registerCustomEditor(GrantedAuthority.class, new AuthorityEditor());
         dataBinder.registerCustomEditor(Authority.class, new AuthorityEditor());
         dataBinder.setDisallowedFields("entityId", "username", "password", "confirmPassword");
     }
 
+
     @RequestMapping(value = {"/admin/users"}, method = RequestMethod.GET)
     public String viewUsers(@RequestParam(required = false, defaultValue = "0") int offset,
                             @RequestParam(required = false) final String action,
@@ -151,7 +165,51 @@ public class UserController {
         status.setComplete();
         return "redirect:/app/admin/users?action=delete";
     }
-    
+
+    @RequestMapping(method = RequestMethod.GET, value = {"/admin/adduser"})
+    public String setUpForm(ModelMap model) {
+        logger.debug("Initializing new account form");
+        AdminControllerUtil.addNavigationMenusToModel(SELECTED_ITEM, (Model) model);
+        model.addAttribute(ModelKeys.NEW_USER, new NewUser());
+        return ViewNames.ADMIN_NEW_ACCOUNT;
+
+    }
+
+    @RequestMapping(value = {"/admin/newaccount", "/admin/newaccount/*"}, method = RequestMethod.POST)
+    public String create(@ModelAttribute NewUser newUser, BindingResult results, Model model) {
+        logger.debug("Creating a new user account");
+        model.addAttribute(ModelKeys.NEW_USER, newUser);
+        newAccountValidator.validate(newUser, results);
+        if (results.hasErrors()) {
+            logger.info("newaccount.jsp: shows validation errors");
+            addNavigationMenusToModel(SELECTED_ITEM, model);
+            return ViewNames.ADMIN_NEW_ACCOUNT;
+        }
+        try {
+            logger.debug("newaccount.jsp: passed form validation");
+            newAccountService.createNewAccount(newUser);
+            addNavigationMenusToModel("home", model);
+            return ViewNames.ADMIN_HOME;
+        } catch (org.springframework.dao.IncorrectResultSizeDataAccessException ex) {
+            addNavigationMenusToModel(SELECTED_ITEM, model);
+            logger.info("Account creation failed: ", ex);
+            results.reject("Account already exists", "Unable to create account");
+            return ViewNames.ADMIN_NEW_ACCOUNT;
+
+        } catch (Exception ex) {
+            if (logger.isDebugEnabled()) {
+                logger.error("Account creation failed: ", ex);
+            } else {
+                logger.error("Account creation failed: {}", ex.getMessage());
+            }
+            results.reject("Unable to create account:" + ex.getMessage(), "Unable to create account");
+            addNavigationMenusToModel(SELECTED_ITEM, model);
+            return ViewNames.ADMIN_NEW_ACCOUNT;
+        }
+
+    }
+
+
     @ModelAttribute("authorities")
     public SearchResult<Authority> populateAuthorityList() {
         return authorityService.getAllAuthorities();
@@ -175,9 +233,16 @@ public class UserController {
         this.userProfileValidator = userProfileValidator;
     }
 
-    // setters for unit tests
-    public void setPreferenceService(PortalPreferenceService preferenceService) {
-            this.preferenceService = preferenceService;
+    void setPreferenceService(PortalPreferenceService preferenceService) {
+        this.preferenceService = preferenceService;
+    }
+
+    void setNewAccountValidator(NewAccountValidator newAccountValidator) {
+        this.newAccountValidator = newAccountValidator;
+    }
+
+    void setNewAccountService(NewAccountService newAccountService) {
+        this.newAccountService = newAccountService;
     }
 
 
@@ -193,7 +258,8 @@ public class UserController {
         }
 
     }
-   public int getPageSize() {
+
+    public int getPageSize() {
         final PortalPreference pageSizePref = preferenceService.getPreference(PortalPreferenceKeys.PAGE_SIZE);
         if (pageSizePref == null) {
             return DEFAULT_PAGE_SIZE;

Modified: incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/util/ViewNames.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/util/ViewNames.java?rev=1296305&r1=1296304&r2=1296305&view=diff
==============================================================================
--- incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/util/ViewNames.java (original)
+++ incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/util/ViewNames.java Fri Mar  2 16:52:38 2012
@@ -37,6 +37,7 @@ public final class ViewNames {
     public static final String PERSON_PROFILE = USER_PREFIX + "personProfile";
 
     public static final String ADMIN_HOME = ADMIN_PREFIX + "home";
+    public static final String ADMIN_NEW_ACCOUNT = ADMIN_PREFIX + "newaccount";
     public static final String ADMIN_PREFERENCES = ADMIN_PREFIX + "preferences";
     public static final String ADMIN_PREFERENCE_DETAIL = ADMIN_PREFIX + "preferencedetail";
     public static final String ADMIN_USERS = ADMIN_PREFIX + "users";
@@ -63,4 +64,4 @@ public final class ViewNames {
     public static String getPersonPageView(String layoutName) {
         return new StringBuilder(PERSON_PROFILE).append(".").append(layoutName).toString();
     }
-}
\ No newline at end of file
+}

Modified: incubator/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/admin/UserControllerTest.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/admin/UserControllerTest.java?rev=1296305&r1=1296304&r2=1296305&view=diff
==============================================================================
--- incubator/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/admin/UserControllerTest.java (original)
+++ incubator/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/admin/UserControllerTest.java Fri Mar  2 16:52:38 2012
@@ -20,14 +20,16 @@
 package org.apache.rave.portal.web.controller.admin;
 
 import org.apache.rave.portal.model.Authority;
+import org.apache.rave.portal.model.NewUser;
 import org.apache.rave.portal.model.User;
 import org.apache.rave.portal.model.util.SearchResult;
 import org.apache.rave.portal.service.AuthorityService;
+import org.apache.rave.portal.service.NewAccountService;
 import org.apache.rave.portal.service.PortalPreferenceService;
 import org.apache.rave.portal.service.UserService;
 import org.apache.rave.portal.web.util.ModelKeys;
-import org.apache.rave.portal.web.util.PortalPreferenceKeys;
 import org.apache.rave.portal.web.util.ViewNames;
+import org.apache.rave.portal.web.validator.NewAccountValidator;
 import org.apache.rave.portal.web.validator.UserProfileValidator;
 import org.junit.Before;
 import org.junit.Test;
@@ -45,6 +47,7 @@ import static junit.framework.Assert.ass
 import static junit.framework.Assert.assertFalse;
 import static junit.framework.Assert.assertTrue;
 import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.createNiceMock;
 import static org.easymock.EasyMock.expect;
 import static org.easymock.EasyMock.expectLastCall;
 import static org.easymock.EasyMock.replay;
@@ -59,6 +62,7 @@ public class UserControllerTest {
 
     private UserController controller;
     private UserService userService;
+    private NewAccountService newAccountService;
     private AuthorityService authorityService;
     private PortalPreferenceService preferenceService;
     private String validToken;
@@ -236,6 +240,70 @@ public class UserControllerTest {
     }
 
     @Test
+    public void setupForm() {
+        ModelMap modelMap = new ExtendedModelMap();
+        final String viewName = controller.setUpForm(modelMap);
+        assertEquals(ViewNames.ADMIN_NEW_ACCOUNT, viewName);
+        assertTrue(modelMap.containsAttribute(TABS));
+        assertTrue(modelMap.get(ModelKeys.NEW_USER) instanceof NewUser);
+    }
+
+    @Test
+    public void create_ValidFormSubmitted() throws Exception {
+        final Model model = createNiceMock(Model.class);
+        final NewUser newUser = new NewUser();
+        final BindingResult errors = new BeanPropertyBindingResult(newUser, ModelKeys.NEW_USER);
+        final String username = "username";
+        final String password = "password";
+        final String email = "newuser@example.com";
+        final String confirmPassword = password;
+
+        newUser.setUsername(username);
+        newUser.setPassword(password);
+        newUser.setConfirmPassword(confirmPassword);
+        newUser.setEmail(email);
+
+        expect(userService.getUserByUsername(username)).andReturn(null);
+        expect(userService.getUserByEmail(email)).andReturn(null);
+
+        newAccountService.createNewAccount(newUser);
+
+        expectLastCall();
+        replay(userService, model, newAccountService);
+
+        String result = controller.create(newUser, errors, model);
+        verify(userService, model, newAccountService);
+
+        assertFalse(errors.hasErrors());
+        assertEquals(ViewNames.ADMIN_HOME, result);
+    }
+    @Test
+    public void create_EmptyForm() throws Exception {
+        final Model model = createNiceMock(Model.class);
+        final NewUser newUser = new NewUser();
+        final BindingResult errors = new BeanPropertyBindingResult(newUser, ModelKeys.NEW_USER);
+        final String username = "";
+        final String password = "";
+        final String email = "";
+        final String confirmPassword = password;
+
+        newUser.setUsername(username);
+        newUser.setPassword(password);
+        newUser.setConfirmPassword(confirmPassword);
+        newUser.setEmail(email);
+
+        newAccountService.createNewAccount(newUser);
+
+        replay(model);
+
+        String result = controller.create(newUser, errors, model);
+        verify(model);
+
+        assertTrue(errors.hasErrors());
+        assertEquals(ViewNames.ADMIN_NEW_ACCOUNT, result);
+    }
+
+    @Test
     public void getAuthoritiesForModelMap() {
         final SearchResult<Authority> authorities = createSearchResultWithTwoAuthorities();
         expect(authorityService.getAllAuthorities()).andReturn(authorities);
@@ -261,6 +329,12 @@ public class UserControllerTest {
         UserProfileValidator userProfileValidator = new UserProfileValidator(userService);
         controller.setUserProfileValidator(userProfileValidator);
         validToken = AdminControllerUtil.generateSessionToken();
+
+        final NewAccountValidator validator = new NewAccountValidator(userService);
+        controller.setNewAccountValidator(validator);
+
+        newAccountService = createMock(NewAccountService.class);
+        controller.setNewAccountService(newAccountService);
     }
 
 

Modified: incubator/rave/trunk/rave-portal-resources/src/main/resources/messages.properties
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-resources/src/main/resources/messages.properties?rev=1296305&r1=1296304&r2=1296305&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal-resources/src/main/resources/messages.properties (original)
+++ incubator/rave/trunk/rave-portal-resources/src/main/resources/messages.properties Fri Mar  2 16:52:38 2012
@@ -238,6 +238,7 @@ admin.userdata.enabled=Account enabled
 admin.userdata.expired=Account expired
 admin.userdata.locked=Account locked
 admin.userdata.authorities=Authorities:
+admin.newaccount.title=Create new account
 admin.widgets.search=Search Widgets
 admin.widgets.search.choosetype=Choose Type...
 admin.widgets.search.choosestatus=Choose Status...

Modified: incubator/rave/trunk/rave-portal-resources/src/main/resources/messages_nl.properties
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-resources/src/main/resources/messages_nl.properties?rev=1296305&r1=1296304&r2=1296305&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal-resources/src/main/resources/messages_nl.properties (original)
+++ incubator/rave/trunk/rave-portal-resources/src/main/resources/messages_nl.properties Fri Mar  2 16:52:38 2012
@@ -249,6 +249,7 @@ admin.userdata.enabled=Account ingeschak
 admin.userdata.expired=Account verlopen
 admin.userdata.locked=Account op slot
 admin.userdata.authorities=Autoriteiten\:
+admin.newaccount.title=Nieuwe gebruiker aanmaken
 admin.widgets.search=Zoek widgets
 admin.widgets.search.choosetype=Kies Type...
 admin.widgets.search.choosestatus=Kies Status...

Added: incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/admin/newaccount.jsp
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/admin/newaccount.jsp?rev=1296305&view=auto
==============================================================================
--- incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/admin/newaccount.jsp (added)
+++ incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/admin/newaccount.jsp Fri Mar  2 16:52:38 2012
@@ -0,0 +1,52 @@
+<%--
+  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.
+  --%>
+<%@ page language="java" trimDirectiveWhitespaces="true" %>
+<%@ include file="/WEB-INF/jsp/includes/taglibs.jsp" %>
+<fmt:setBundle basename="messages"/>
+
+<fmt:message key="${pageTitleKey}" var="pagetitle"/>
+<c:set var="canChangeUserStatus" value="${user.username ne loggedInUser}"/>
+<rave:header pageTitle="${pagetitle}"/>
+<rave:admin_tabsheader/>
+<div class="pageContent">
+  <article class="admincontent">
+    <ul class="horizontal-list goback">
+      <li><a href="<spring:url value="/app/admin/users"/>"><fmt:message key="admin.userdetail.goback"/></a>
+      </li>
+    </ul>
+
+    <div class="rightcolumn">
+      <%--RIGHT COLUMN--%>
+    </div>
+
+    <div class="leftcolumn">
+      <section class="formbox">
+        <h2><fmt:message key="admin.userdetail.editdata"/></h2>
+        <%@ include file="/WEB-INF/jsp/views/includes/new_user_form.jsp" %>
+      </section>
+
+    </div>
+
+    <div class="clear-float">
+
+    </div>
+
+
+  </article>
+</div>

Modified: incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/admin/users.jsp
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/admin/users.jsp?rev=1296305&r1=1296304&r2=1296305&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/admin/users.jsp (original)
+++ incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/admin/users.jsp Fri Mar  2 16:52:38 2012
@@ -35,7 +35,7 @@
         </c:if>
 
         <ul class="horizontal-list searchbox">
-            <li><a href="<spring:url value="/app/newaccount.jsp"/>"><fmt:message key="admin.users.add"/></a></li>
+            <li><a href="<spring:url value="/app/admin/adduser"/>"><fmt:message key="admin.users.add"/></a></li>
             <li>
                 <form action="<spring:url value="/app/admin/users/search"/>" method="GET">
                     <fieldset>
@@ -86,4 +86,4 @@
 <script src="<spring:url value="/script/rave_admin.js"/>"></script>
 <script>$(function() {
     rave.admin.initAdminUi();
-});</script>
\ No newline at end of file
+});</script>

Added: incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/includes/new_user_form.jsp
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/includes/new_user_form.jsp?rev=1296305&view=auto
==============================================================================
--- incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/includes/new_user_form.jsp (added)
+++ incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/includes/new_user_form.jsp Fri Mar  2 16:52:38 2012
@@ -0,0 +1,104 @@
+<%@ page language="java" trimDirectiveWhitespaces="true" %>
+<%@ include file="/WEB-INF/jsp/includes/taglibs.jsp" %>
+<%--
+  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.
+  --%>
+
+<form:form id="newAccountForm" commandName="newUser" action="newaccount" method="POST">
+  <fieldset>
+    <p><fmt:message key="form.all.fields.required"/></p>
+
+    <p><form:errors cssClass="error"/></p>
+
+    <p>
+      <label for="userNameField"><fmt:message key="page.general.username"/></label>
+      <form:input id="userNameField" path="username" required="required" autofocus="autofocus"/>
+      <form:errors path="username" cssClass="error"/>
+    </p>
+
+    <p>
+      <label for="passwordField"><fmt:message key="page.general.password"/></label>
+      <form:password id="passwordField" path="password" required="required"/>
+      <form:errors path="password" cssClass="error"/>
+    </p>
+
+    <p>
+      <label for="passwordConfirmField"><fmt:message key="page.general.confirmpassword"/></label>
+      <form:password id="passwordConfirmField" path="confirmPassword" required="required"/>
+      <form:errors path="confirmPassword" cssClass="error"/>
+    </p>
+
+    <p>
+      <label for="emailField"><fmt:message key="page.general.email"/></label>
+      <form:input id="emailField" path="email" required="required"/>
+      <form:errors path="email" cssClass="error"/>
+    </p>
+
+    <p>
+      <label for="pageLayoutField"><fmt:message key="page.general.addpage.selectlayout"/></label>
+      <form:select path="pageLayout" id="pageLayoutField">
+        <form:option value="columns_1" id="columns_1_id"><fmt:message
+          key="page.general.addpage.layout.columns_1"/></form:option>
+        <form:option value="columns_2" id="columns_2_id"><fmt:message
+          key="page.general.addpage.layout.columns_2"/></form:option>
+        <form:option value="columns_2wn" id="columns_2wn_id"><fmt:message
+          key="page.general.addpage.layout.columns_2wn"/></form:option>
+        <form:option value="columns_3" id="columns_3_id"><fmt:message
+          key="page.general.addpage.layout.columns_3"/></form:option>
+        <form:option value="columns_3nwn" id="columns_3nwn_id"><fmt:message
+          key="page.general.addpage.layout.columns_3nwn"/></form:option>
+        <form:option value="columns_4" id="columns_4_id"><fmt:message
+          key="page.general.addpage.layout.columns_4"/></form:option>
+        <form:option value="columns_3nwn_1_bottom" id="columns_3nwn_1_bottom"><fmt:message
+          key="page.general.addpage.layout.columns_3nwn_1_bottom"/></form:option>
+      </form:select>
+    </p>
+  </fieldset>
+
+  <fieldset>${captchaHtml}</fieldset>
+
+  <!-- Personal information optional -->
+  <h2><fmt:message key="page.general.personal.information"/></h2>
+  <fieldset>
+    <p>
+      <label for="firstNameField"><fmt:message key="page.general.first.name"/></label>
+      <form:input id="firstNameField" path="firstName" autofocus="autofocus"/>
+    </p>
+    <p>
+      <label for="lastNameField"><fmt:message key="page.general.last.name"/></label>
+      <form:input id="lastNameField" path="lastName" autofocus="autofocus"/>
+    </p>
+    <p>
+      <label for="displayNameField"><fmt:message key="page.general.display.name"/></label>
+      <form:input id="displayNameField" path="displayName" autofocus="autofocus"/>
+    </p>
+    <p>
+      <label for="statusField"><fmt:message key="page.general.status"/></label>
+      <form:input id="statusField" path="status" autofocus="autofocus"/>
+    </p>
+    <p>
+      <label for="aboutMeField"><fmt:message key="page.general.about.me"/></label>
+      <form:textarea id="aboutMeField" path="aboutMe" autofocus="autofocus"/>
+    </p>
+  </fieldset>
+
+  <fieldset>
+    <fmt:message key="page.newaccount.button" var="submitButtonText"/>
+    <input type="submit" value="${submitButtonText}"/>
+  </fieldset>
+</form:form>

Modified: incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/newaccount.jsp
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/newaccount.jsp?rev=1296305&r1=1296304&r2=1296305&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/newaccount.jsp (original)
+++ incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/newaccount.jsp Fri Mar  2 16:52:38 2012
@@ -31,89 +31,7 @@ under the License.
             
             <!-- Login information (required) -->
             <h2><fmt:message key="page.general.login.information"/></h2>
-            <form:form id="newAccountForm" commandName="newUser" action="newaccount" method="POST">
-                <fieldset>
-                    <p><fmt:message key="form.all.fields.required"/></p>
-
-                    <p><form:errors cssClass="error"/></p>
-
-                    <p>
-                        <label for="userNameField"><fmt:message key="page.general.username"/></label>
-                        <form:input id="userNameField" path="username" required="required" autofocus="autofocus"/>
-                        <form:errors path="username" cssClass="error"/>
-                    </p>
-
-                    <p>
-                        <label for="passwordField"><fmt:message key="page.general.password"/></label>
-                        <form:password id="passwordField" path="password" required="required"/>
-                        <form:errors path="password" cssClass="error"/>
-                    </p>
-
-                    <p>
-                        <label for="passwordConfirmField"><fmt:message key="page.general.confirmpassword"/></label>
-                        <form:password id="passwordConfirmField" path="confirmPassword" required="required"/>
-                        <form:errors path="confirmPassword" cssClass="error"/>
-                    </p>
-
-                    <p>
-                        <label for="emailField"><fmt:message key="page.general.email"/></label>
-                        <form:input id="emailField" path="email" required="required" />
-                        <form:errors path="email" cssClass="error"/>
-                    </p>
-
-                    <p>
-                        <label for="pageLayoutField"><fmt:message key="page.general.addpage.selectlayout"/></label>
-                        <form:select path="pageLayout" id="pageLayoutField">
-                            <form:option value="columns_1" id="columns_1_id"><fmt:message
-                                    key="page.general.addpage.layout.columns_1"/></form:option>
-                            <form:option value="columns_2" id="columns_2_id"><fmt:message
-                                    key="page.general.addpage.layout.columns_2"/></form:option>
-                            <form:option value="columns_2wn" id="columns_2wn_id"><fmt:message
-                                    key="page.general.addpage.layout.columns_2wn"/></form:option>
-                            <form:option value="columns_3" id="columns_3_id"><fmt:message
-                                    key="page.general.addpage.layout.columns_3"/></form:option>
-                            <form:option value="columns_3nwn" id="columns_3nwn_id"><fmt:message
-                                    key="page.general.addpage.layout.columns_3nwn"/></form:option>
-                            <form:option value="columns_4" id="columns_4_id"><fmt:message
-                                    key="page.general.addpage.layout.columns_4"/></form:option>
-                            <form:option value="columns_3nwn_1_bottom" id="columns_3nwn_1_bottom"><fmt:message
-                                    key="page.general.addpage.layout.columns_3nwn_1_bottom"/></form:option>
-                        </form:select>
-                    </p>
-                </fieldset>
-                
-                <fieldset>${captchaHtml}</fieldset>
-                
-                <!-- Personal information optional -->
-                <h2><fmt:message key="page.general.personal.information"/></h2>
-                <fieldset>
-                	<p>
-                        <label for="firstNameField"><fmt:message key="page.general.first.name"/></label>
-                        <form:input id="firstNameField" path="firstName" autofocus="autofocus"/>
-                    </p>
-                    <p>
-                        <label for="lastNameField"><fmt:message key="page.general.last.name"/></label>
-                        <form:input id="lastNameField" path="lastName" autofocus="autofocus"/>
-                    </p>
-                    <p>
-                        <label for="displayNameField"><fmt:message key="page.general.display.name"/></label>
-                        <form:input id="displayNameField" path="displayName" autofocus="autofocus"/>
-                    </p>
-                    <p>
-                        <label for="statusField"><fmt:message key="page.general.status"/></label>
-                        <form:input id="statusField" path="status" autofocus="autofocus"/>
-                    </p>
-                    <p>
-                        <label for="aboutMeField"><fmt:message key="page.general.about.me"/></label>
-                        <form:textarea id="aboutMeField" path="aboutMe" autofocus="autofocus"/>
-                    </p>
-                </fieldset>
-                	
-                <fieldset>
-                    <fmt:message key="page.newaccount.button" var="submitButtonText"/>
-                    <input type="submit" value="${submitButtonText}"/>
-                </fieldset>
-            </form:form>
+            <%@ include file="/WEB-INF/jsp/views/includes/new_user_form.jsp" %>
         </div>
     </tiles:putAttribute>
 </tiles:insertDefinition>
@@ -123,4 +41,4 @@ under the License.
 <script src="<spring:url value="/script/rave_forms.js"/>"></script>
 <script src="<spring:url value="/app/messagebundle/rave_client_messages.js"/>"></script>
 
-<script>$(document).ready(rave.forms.validateNewAccountForm());</script>
\ No newline at end of file
+<script>$(document).ready(rave.forms.validateNewAccountForm());</script>