From: Roland Häder Date: Thu, 12 May 2016 16:18:23 +0000 (+0200) Subject: Rewritten a lot: X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=fc14b0b3ab2183f68beb49225c7e661b05b89f5c;p=jjobs-war.git Rewritten a lot: - introduced isUserNameRequired() which should make it sure to have registrations with no user name and password. This also includes no login area (not possible) - the user then will get a random user name with format "userXXXXX" and a random password. So it is still possible that the "feature" login area for users can come back. - so no "recover password" is possible, too. Therefore such links can be removed from the menu. - introduced isMultiplePageEnabled() which is used as a "switch" between single-page and multiple-page registration - introduced isPublicUserProfileEnabled() which is used to disabled/enable the feature "public user profiles" which is sometimes not wanted ... - introduced isResendConfirmationLinkEnabled() which disabled the corresponding feature - showing a "choose profile-mode" while no public user profile is enabled makes no sense ... So better "hide" this option. - introduced general (abstract) controller BaseController which currently holds a method for checking if for a named controller debug mode is enabled - renamed doRegister() to doFinishRegistration() - removed no longer used i18n strings (they may have come back by cherry-picking) - registration page 1/2 should be "basicly finished" now, single is also available - index page is now jlandingpage-specific as registration page is in index.xhtml (careful, cherry-picking this!) - added controller method doRegisterMultiPage1() - added a lot more language strings - renamed variables - added context parameters for above new methods - added needed navigation cases (careful with cherry-picking again) - sorted imports (minor) - fixed i18n string (usage) Signed-off-by: Roland Häder Signed-off-by: Roland Häder --- diff --git a/nbproject/faces-config.NavData b/nbproject/faces-config.NavData index 7d967515..b2324014 100644 --- a/nbproject/faces-config.NavData +++ b/nbproject/faces-config.NavData @@ -2,61 +2,61 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/src/java/org/mxchange/jjobs/beans/BaseJobsController.java b/src/java/org/mxchange/jjobs/beans/BaseJobsController.java new file mode 100644 index 00000000..6e67552e --- /dev/null +++ b/src/java/org/mxchange/jjobs/beans/BaseJobsController.java @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2016 Roland Haeder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +package org.mxchange.jjobs.beans; + +import java.io.Serializable; +import javax.faces.context.FacesContext; + +/** + * A general controller + *

+ * @author Roland Haeder + */ +public abstract class BaseJobsController implements Serializable { + + /** + * Serial number + */ + private static final long serialVersionUID = 50_837_597_127_567_140L; + + /** + * Checks whether debug mode is enabled for given controller + *

+ * @param controllerName Name of controller + *

+ * @return Whether debug mode is enabled + */ + protected boolean isDebugModeEnabled (final String controllerName) { + // Parameters should be valid + if (null == controllerName) { + // Throw NPE + throw new NullPointerException("controllerName is null"); //NOI18N + } else if (controllerName.isEmpty()) { + // Is empty + throw new IllegalArgumentException("controllerName is empty"); //NOI18N + } + + // Try to get context parameter + String contextParameter = FacesContext.getCurrentInstance().getExternalContext().getInitParameter(String.format("is_debug_%s_enabled", controllerName)); //NOI18N + + // Is it set and true? + boolean isEnabled = ((contextParameter instanceof String) && (contextParameter.equals("true"))); //NOI18N + + // Return it + return isEnabled; + } + +} diff --git a/src/java/org/mxchange/jjobs/beans/addressbook/JobsAddressbookWebSessionBean.java b/src/java/org/mxchange/jjobs/beans/addressbook/JobsAddressbookWebSessionBean.java index 2077651e..d6a66937 100644 --- a/src/java/org/mxchange/jjobs/beans/addressbook/JobsAddressbookWebSessionBean.java +++ b/src/java/org/mxchange/jjobs/beans/addressbook/JobsAddressbookWebSessionBean.java @@ -52,7 +52,7 @@ import org.mxchange.jusercore.model.user.User; */ @Named ("addressbookController") @SessionScoped -public class JobsAddressbookWebSessionBean implements JobsAddressbookWebSessionController { +public class JobsAddressbookWebSessionBean extends BaseJobsController implements JobsAddressbookWebSessionController { /** * Serial number diff --git a/src/java/org/mxchange/jjobs/beans/contact/JobsAdminContactWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/contact/JobsAdminContactWebRequestBean.java index 48d8e53f..26c6baa5 100644 --- a/src/java/org/mxchange/jjobs/beans/contact/JobsAdminContactWebRequestBean.java +++ b/src/java/org/mxchange/jjobs/beans/contact/JobsAdminContactWebRequestBean.java @@ -40,6 +40,7 @@ import org.mxchange.jcontacts.events.contact.update.AdminContactUpdatedEvent; import org.mxchange.jcontacts.events.contact.update.AdminUpdatedContactEvent; import org.mxchange.jcontacts.exceptions.ContactAlreadyAddedException; import org.mxchange.jcountry.data.Country; +import org.mxchange.jjobs.beans.BaseJobsController; import org.mxchange.jjobs.beans.helper.JobsAdminWebRequestController; import org.mxchange.jphone.phonenumbers.cellphone.CellphoneNumber; import org.mxchange.jphone.phonenumbers.cellphone.DialableCellphoneNumber; @@ -56,7 +57,7 @@ import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProvider; */ @Named ("adminContactController") @RequestScoped -public class JobsAdminContactWebRequestBean implements JobsAdminContactWebRequestController { +public class JobsAdminContactWebRequestBean extends BaseJobsController implements JobsAdminContactWebRequestController { /** * Serial number diff --git a/src/java/org/mxchange/jjobs/beans/contact/JobsContactWebSessionBean.java b/src/java/org/mxchange/jjobs/beans/contact/JobsContactWebSessionBean.java index 8ffe2a92..1e4b4a68 100644 --- a/src/java/org/mxchange/jjobs/beans/contact/JobsContactWebSessionBean.java +++ b/src/java/org/mxchange/jjobs/beans/contact/JobsContactWebSessionBean.java @@ -40,6 +40,7 @@ import org.mxchange.jcontacts.events.contact.add.AdminAddedContactEvent; import org.mxchange.jcontacts.events.contact.update.AdminUpdatedContactEvent; import org.mxchange.jcontacts.exceptions.ContactNotFoundException; import org.mxchange.jcountry.data.Country; +import org.mxchange.jjobs.beans.BaseJobsController; import org.mxchange.jjobs.beans.login.JobsUserLoginWebSessionController; import org.mxchange.jphone.phonenumbers.cellphone.CellphoneNumber; import org.mxchange.jphone.phonenumbers.cellphone.DialableCellphoneNumber; @@ -60,7 +61,7 @@ import org.mxchange.jusercore.exceptions.UserPasswordMismatchException; */ @Named ("contactController") @SessionScoped -public class JobsContactWebSessionBean implements JobsContactWebSessionController { +public class JobsContactWebSessionBean extends BaseJobsController implements JobsContactWebSessionController { /** * Serial number diff --git a/src/java/org/mxchange/jjobs/beans/country/JobsAdminCountryWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/country/JobsAdminCountryWebRequestBean.java index ed3beb6d..51eb57e0 100644 --- a/src/java/org/mxchange/jjobs/beans/country/JobsAdminCountryWebRequestBean.java +++ b/src/java/org/mxchange/jjobs/beans/country/JobsAdminCountryWebRequestBean.java @@ -34,6 +34,7 @@ import org.mxchange.jcountry.data.CountrySingletonBeanRemote; import org.mxchange.jcountry.events.AdminAddedCountryEvent; import org.mxchange.jcountry.events.AdminEventCountryAdded; import org.mxchange.jcountry.exceptions.CountryAlreadyAddedException; +import org.mxchange.jjobs.beans.BaseJobsController; /** * An administrative country bean @@ -42,7 +43,7 @@ import org.mxchange.jcountry.exceptions.CountryAlreadyAddedException; */ @Named ("adminCountryController") @RequestScoped -public class JobsAdminCountryWebRequestBean implements JobsAdminCountryWebRequestController { +public class JobsAdminCountryWebRequestBean extends BaseJobsController implements JobsAdminCountryWebRequestController { /** * Serial number diff --git a/src/java/org/mxchange/jjobs/beans/country/JobsCountryWebApplicationBean.java b/src/java/org/mxchange/jjobs/beans/country/JobsCountryWebApplicationBean.java index 51c68b09..fbeb7f51 100644 --- a/src/java/org/mxchange/jjobs/beans/country/JobsCountryWebApplicationBean.java +++ b/src/java/org/mxchange/jjobs/beans/country/JobsCountryWebApplicationBean.java @@ -30,6 +30,7 @@ import javax.naming.NamingException; import org.mxchange.jcountry.data.Country; import org.mxchange.jcountry.data.CountrySingletonBeanRemote; import org.mxchange.jcountry.events.AdminAddedCountryEvent; +import org.mxchange.jjobs.beans.BaseJobsController; /** * A country bean @@ -38,7 +39,7 @@ import org.mxchange.jcountry.events.AdminAddedCountryEvent; */ @Named ("country") @ApplicationScoped -public class JobsCountryWebApplicationBean implements JobsCountryWebApplicationController { +public class JobsCountryWebApplicationBean extends BaseJobsController implements JobsCountryWebApplicationController { /** * Serial number diff --git a/src/java/org/mxchange/jjobs/beans/email_address/JobsEmailChangeWebSessionBean.java b/src/java/org/mxchange/jjobs/beans/email_address/JobsEmailChangeWebSessionBean.java index 12073af3..c30ee111 100644 --- a/src/java/org/mxchange/jjobs/beans/email_address/JobsEmailChangeWebSessionBean.java +++ b/src/java/org/mxchange/jjobs/beans/email_address/JobsEmailChangeWebSessionBean.java @@ -27,6 +27,7 @@ import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import org.mxchange.jcontacts.contact.Contact; +import org.mxchange.jjobs.beans.BaseJobsController; import org.mxchange.jjobs.beans.login.JobsUserLoginWebSessionController; import org.mxchange.jusercore.exceptions.UserPasswordMismatchException; import org.mxchange.jusercore.model.email_address.ChangeableEmailAddress; @@ -41,7 +42,7 @@ import org.mxchange.jusercore.model.user.User; */ @Named ("emailChangeController") @SessionScoped -public class JobsEmailChangeWebSessionBean implements JobsEmailChangeWebSessionController { +public class JobsEmailChangeWebSessionBean extends BaseJobsController implements JobsEmailChangeWebSessionController { /** * Serial number diff --git a/src/java/org/mxchange/jjobs/beans/gender/JobsGenderWebApplicationBean.java b/src/java/org/mxchange/jjobs/beans/gender/JobsGenderWebApplicationBean.java index ea823c86..ba6976d9 100644 --- a/src/java/org/mxchange/jjobs/beans/gender/JobsGenderWebApplicationBean.java +++ b/src/java/org/mxchange/jjobs/beans/gender/JobsGenderWebApplicationBean.java @@ -21,6 +21,7 @@ import javax.enterprise.context.ApplicationScoped; import javax.inject.Named; import org.mxchange.jcontacts.contact.gender.Gender; import org.mxchange.jcontacts.contact.gender.GenderUtils; +import org.mxchange.jjobs.beans.BaseJobsController; /** * A gender bean @@ -29,7 +30,7 @@ import org.mxchange.jcontacts.contact.gender.GenderUtils; */ @Named ("gender") @ApplicationScoped -public class JobsGenderWebApplicationBean implements JobsGenderWebApplicationController { +public class JobsGenderWebApplicationBean extends BaseJobsController implements JobsGenderWebApplicationController { /** * Serial number diff --git a/src/java/org/mxchange/jjobs/beans/localization/JobsLocalizationSessionBean.java b/src/java/org/mxchange/jjobs/beans/localization/JobsLocalizationSessionBean.java index 1fcc2bbd..6219df0c 100644 --- a/src/java/org/mxchange/jjobs/beans/localization/JobsLocalizationSessionBean.java +++ b/src/java/org/mxchange/jjobs/beans/localization/JobsLocalizationSessionBean.java @@ -21,7 +21,7 @@ import javax.annotation.PostConstruct; import javax.enterprise.context.SessionScoped; import javax.faces.context.FacesContext; import javax.inject.Named; -import org.mxchange.jcoreee.database.BaseDatabaseBean; +import org.mxchange.jjobs.beans.BaseJobsController; /** * A session bean for handling localization/internationalization changes. This @@ -33,7 +33,7 @@ import org.mxchange.jcoreee.database.BaseDatabaseBean; */ @Named ("localizationController") @SessionScoped -public class JobsLocalizationSessionBean extends BaseDatabaseBean implements JobsLocalizationSessionController { +public class JobsLocalizationSessionBean extends BaseJobsController implements JobsLocalizationSessionController { /** * Serial number diff --git a/src/java/org/mxchange/jjobs/beans/login/JobsUserLoginWebSessionBean.java b/src/java/org/mxchange/jjobs/beans/login/JobsUserLoginWebSessionBean.java index e79a0f79..51ade0ea 100644 --- a/src/java/org/mxchange/jjobs/beans/login/JobsUserLoginWebSessionBean.java +++ b/src/java/org/mxchange/jjobs/beans/login/JobsUserLoginWebSessionBean.java @@ -26,6 +26,7 @@ import javax.inject.Named; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; +import org.mxchange.jjobs.beans.BaseJobsController; import org.mxchange.jjobs.beans.user.JobsUserWebSessionController; import org.mxchange.jusercore.container.login.LoginContainer; import org.mxchange.jusercore.container.login.UserLoginContainer; @@ -48,7 +49,7 @@ import org.mxchange.jusercore.model.user.status.UserAccountStatus; */ @Named ("loginController") @SessionScoped -public class JobsUserLoginWebSessionBean implements JobsUserLoginWebSessionController { +public class JobsUserLoginWebSessionBean extends BaseJobsController implements JobsUserLoginWebSessionController { /** * Serial number diff --git a/src/java/org/mxchange/jjobs/beans/mobileprovider/JobsAdminMobileProviderWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/mobileprovider/JobsAdminMobileProviderWebRequestBean.java index bba213d5..c9a178a0 100644 --- a/src/java/org/mxchange/jjobs/beans/mobileprovider/JobsAdminMobileProviderWebRequestBean.java +++ b/src/java/org/mxchange/jjobs/beans/mobileprovider/JobsAdminMobileProviderWebRequestBean.java @@ -29,6 +29,7 @@ import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import org.mxchange.jcountry.data.Country; +import org.mxchange.jjobs.beans.BaseJobsController; import org.mxchange.jphone.events.AdminAddedMobileProviderEvent; import org.mxchange.jphone.events.AdminMobileProviderAddedEvent; import org.mxchange.jphone.exceptions.MobileProviderAlreadyAddedException; @@ -43,7 +44,7 @@ import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProvider; */ @Named ("adminMobileProviderController") @RequestScoped -public class JobsAdminMobileProviderWebRequestBean implements JobsAdminMobileProviderWebRequestController { +public class JobsAdminMobileProviderWebRequestBean extends BaseJobsController implements JobsAdminMobileProviderWebRequestController { /** * Serial number diff --git a/src/java/org/mxchange/jjobs/beans/mobileprovider/JobsMobileProviderWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/mobileprovider/JobsMobileProviderWebRequestBean.java index affcf1fe..c7ecd4b9 100644 --- a/src/java/org/mxchange/jjobs/beans/mobileprovider/JobsMobileProviderWebRequestBean.java +++ b/src/java/org/mxchange/jjobs/beans/mobileprovider/JobsMobileProviderWebRequestBean.java @@ -27,6 +27,7 @@ import javax.inject.Named; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; +import org.mxchange.jjobs.beans.BaseJobsController; import org.mxchange.jphone.events.AdminAddedMobileProviderEvent; import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProvider; import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProviderSingletonBeanRemote; @@ -38,7 +39,7 @@ import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProviderSingletonBe */ @Named ("mobileProviderController") @SessionScoped -public class JobsMobileProviderWebRequestBean implements JobsMobileProviderWebRequestController { +public class JobsMobileProviderWebRequestBean extends BaseJobsController implements JobsMobileProviderWebRequestController { /** * Serial number diff --git a/src/java/org/mxchange/jjobs/beans/phone/JobsAdminContactPhoneWebSessionBean.java b/src/java/org/mxchange/jjobs/beans/phone/JobsAdminContactPhoneWebSessionBean.java index e21d2449..ded32232 100644 --- a/src/java/org/mxchange/jjobs/beans/phone/JobsAdminContactPhoneWebSessionBean.java +++ b/src/java/org/mxchange/jjobs/beans/phone/JobsAdminContactPhoneWebSessionBean.java @@ -27,6 +27,7 @@ import javax.naming.InitialContext; import javax.naming.NamingException; import org.mxchange.jcontacts.contact.Contact; import org.mxchange.jcontacts.phone.AdminContactsPhoneSessionBeanRemote; +import org.mxchange.jjobs.beans.BaseJobsController; import org.mxchange.jphone.phonenumbers.cellphone.DialableCellphoneNumber; import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber; import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber; @@ -38,7 +39,7 @@ import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber; */ @Named ("adminContactPhoneController") @RequestScoped -public class JobsAdminContactPhoneWebSessionBean implements JobsAdminContactPhoneWebSessionController { +public class JobsAdminContactPhoneWebSessionBean extends BaseJobsController implements JobsAdminContactPhoneWebSessionController { /** * Serial number diff --git a/src/java/org/mxchange/jjobs/beans/profile/JobsUserProfileWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/profile/JobsUserProfileWebRequestBean.java index 84c9cf6b..148b9e89 100644 --- a/src/java/org/mxchange/jjobs/beans/profile/JobsUserProfileWebRequestBean.java +++ b/src/java/org/mxchange/jjobs/beans/profile/JobsUserProfileWebRequestBean.java @@ -21,6 +21,7 @@ import javax.enterprise.context.RequestScoped; import javax.faces.view.facelets.FaceletException; import javax.inject.Inject; import javax.inject.Named; +import org.mxchange.jjobs.beans.BaseJobsController; import org.mxchange.jjobs.beans.login.JobsUserLoginWebSessionController; import org.mxchange.jjobs.beans.user.JobsUserWebSessionController; import org.mxchange.jusercore.exceptions.UserNotFoundException; @@ -34,7 +35,7 @@ import org.mxchange.jusercore.model.user.profilemodes.ProfileMode; */ @Named (value = "profileController") @RequestScoped -public class JobsUserProfileWebRequestBean implements JobsUserProfileWebRequestController { +public class JobsUserProfileWebRequestBean extends BaseJobsController implements JobsUserProfileWebRequestController { /** * Serial number @@ -56,24 +57,24 @@ public class JobsUserProfileWebRequestBean implements JobsUserProfileWebRequestC @Override public boolean isProfileLinkVisibleById (final Long userId) { // Init user instance - User u = null; + User user = null; try { // Try to get it - u = this.userController.lookupUserById(userId); + user = this.userController.lookupUserById(userId); } catch (final UserNotFoundException ex) { // Throw again throw new FaceletException(ex); } // Is it null? - if (null == u) { + if (null == user) { // Not found, not visible. return false; } // Ask other method - return this.isProfileLinkVisibleByUser(u); + return this.isProfileLinkVisibleByUser(user); } @Override diff --git a/src/java/org/mxchange/jjobs/beans/profilemode/JobsProfileModeWebApplicationBean.java b/src/java/org/mxchange/jjobs/beans/profilemode/JobsProfileModeWebApplicationBean.java index c5b8926d..204e418c 100644 --- a/src/java/org/mxchange/jjobs/beans/profilemode/JobsProfileModeWebApplicationBean.java +++ b/src/java/org/mxchange/jjobs/beans/profilemode/JobsProfileModeWebApplicationBean.java @@ -18,6 +18,7 @@ package org.mxchange.jjobs.beans.profilemode; import javax.enterprise.context.ApplicationScoped; import javax.inject.Named; +import org.mxchange.jjobs.beans.BaseJobsController; import org.mxchange.jusercore.model.user.profilemodes.ProfileMode; /** @@ -27,7 +28,7 @@ import org.mxchange.jusercore.model.user.profilemodes.ProfileMode; */ @Named ("profileMode") @ApplicationScoped -public class JobsProfileModeWebApplicationBean implements JobsProfileModeWebApplicationController { +public class JobsProfileModeWebApplicationBean extends BaseJobsController implements JobsProfileModeWebApplicationController { /** * Serial number diff --git a/src/java/org/mxchange/jjobs/beans/register/JobsUserRegisterWebSessionBean.java b/src/java/org/mxchange/jjobs/beans/register/JobsUserRegisterWebSessionBean.java index 054ea6b2..bb715862 100644 --- a/src/java/org/mxchange/jjobs/beans/register/JobsUserRegisterWebSessionBean.java +++ b/src/java/org/mxchange/jjobs/beans/register/JobsUserRegisterWebSessionBean.java @@ -20,12 +20,14 @@ import java.text.MessageFormat; import javax.enterprise.context.SessionScoped; import javax.enterprise.event.Event; import javax.enterprise.inject.Any; +import javax.faces.context.FacesContext; import javax.faces.view.facelets.FaceletException; import javax.inject.Inject; import javax.inject.Named; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; +import org.mxchange.jjobs.beans.BaseJobsController; import org.mxchange.jjobs.beans.contact.JobsContactWebSessionController; import org.mxchange.jjobs.beans.user.JobsAdminUserWebRequestController; import org.mxchange.jjobs.beans.user.JobsUserWebSessionController; @@ -46,7 +48,7 @@ import org.mxchange.jusercore.model.user.status.UserAccountStatus; */ @Named ("registerController") @SessionScoped -public class JobsUserRegisterWebSessionBean implements JobsUserRegisterWebSessionController { +public class JobsUserRegisterWebSessionBean extends BaseJobsController implements JobsUserRegisterWebSessionController { /** * Serial number @@ -100,14 +102,14 @@ public class JobsUserRegisterWebSessionBean implements JobsUserRegisterWebSessio } @Override - public String doRegister () { + public String doFinishRegistration () { // Get user instance User user = this.userController.createUserInstance(); // Is the user already used? if (null == user) { // user must be set - throw new NullPointerException("user is null"); //NOI18N + throw new NullPointerException("user is null after createUserInstance() was called"); //NOI18N } else if (!this.userController.isRequiredPersonalDataSet()) { // Not all required fields are set throw new FaceletException("Not all required fields are set."); //NOI18N @@ -131,8 +133,14 @@ public class JobsUserRegisterWebSessionBean implements JobsUserRegisterWebSessio // Set it here user.setUserEncryptedPassword(encryptedPassword); - // For debugging/programming only: - user.setUserAccountStatus(UserAccountStatus.CONFIRMED); + // Is developer mode? + if (this.isDebugModeEnabled("register")) { //NOI18N + // For debugging/programming only: + user.setUserAccountStatus(UserAccountStatus.CONFIRMED); + } else { + // No debugging of this part + user.setUserAccountStatus(UserAccountStatus.UNCONFIRMED); + } try { // Call bean @@ -152,4 +160,34 @@ public class JobsUserRegisterWebSessionBean implements JobsUserRegisterWebSessio } } + @Override + public String doRegisterMultiPage1 () { + // Now only redirect to next page as the JSF does it + return "register_page2"; //NOI18N + } + + @Override + public boolean isMultiplePageEnabled () { + // Get context parameter + String contextParameter = FacesContext.getCurrentInstance().getExternalContext().getInitParameter("is_multi_register_page"); //NOI18N + + // Is it set? + boolean isEnabled = ((contextParameter instanceof String) && (contextParameter.toLowerCase().equals("true"))); //NOI18N + + // Return value + return isEnabled; + } + + @Override + public boolean isResendConfirmationLinkEnabled () { + // Get context parameter + String contextParameter = FacesContext.getCurrentInstance().getExternalContext().getInitParameter("is_resend_confirm_link_enabled"); //NOI18N + + // Is it set? + boolean isEnabled = ((contextParameter instanceof String) && (contextParameter.toLowerCase().equals("true"))); //NOI18N + + // Return value + return isEnabled; + } + } diff --git a/src/java/org/mxchange/jjobs/beans/register/JobsUserRegisterWebSessionController.java b/src/java/org/mxchange/jjobs/beans/register/JobsUserRegisterWebSessionController.java index 209999b1..600149f8 100644 --- a/src/java/org/mxchange/jjobs/beans/register/JobsUserRegisterWebSessionController.java +++ b/src/java/org/mxchange/jjobs/beans/register/JobsUserRegisterWebSessionController.java @@ -31,6 +31,29 @@ public interface JobsUserRegisterWebSessionController extends Serializable { *

* @return Redirection target */ - String doRegister (); + String doFinishRegistration (); + + /** + * Handles registration request send from first page. The (maybe) entered + * user name and email address is not used and that privacy and T&C are + * accepted. + *

+ * @return Redirect + */ + String doRegisterMultiPage1 (); + + /** + * Checks wether multi-page or single-page registration is active + *

+ * @return Whether multi (true) or single page (false) is active + */ + boolean isMultiplePageEnabled (); + + /** + * Checks whether the "resend confirmation link" feature is enabled + *

+ * @return Whether "resend confirmation link" is enabled + */ + boolean isResendConfirmationLinkEnabled (); } diff --git a/src/java/org/mxchange/jjobs/beans/user/JobsAdminUserWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/user/JobsAdminUserWebRequestBean.java index 3420216c..b4259c1f 100644 --- a/src/java/org/mxchange/jjobs/beans/user/JobsAdminUserWebRequestBean.java +++ b/src/java/org/mxchange/jjobs/beans/user/JobsAdminUserWebRequestBean.java @@ -30,6 +30,7 @@ import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import org.mxchange.jcontacts.contact.Contact; +import org.mxchange.jjobs.beans.BaseJobsController; import org.mxchange.jjobs.beans.contact.JobsContactWebSessionController; import org.mxchange.jjobs.beans.helper.JobsAdminWebRequestController; import org.mxchange.jjobs.beans.login.JobsUserLoginWebSessionController; @@ -56,7 +57,7 @@ import org.mxchange.jusercore.model.user.status.UserAccountStatus; */ @Named ("adminUserController") @RequestScoped -public class JobsAdminUserWebRequestBean implements JobsAdminUserWebRequestController { +public class JobsAdminUserWebRequestBean extends BaseJobsController implements JobsAdminUserWebRequestController { /** * Serial number diff --git a/src/java/org/mxchange/jjobs/beans/user/JobsUserWebSessionBean.java b/src/java/org/mxchange/jjobs/beans/user/JobsUserWebSessionBean.java index 00472ce3..eb4e781f 100644 --- a/src/java/org/mxchange/jjobs/beans/user/JobsUserWebSessionBean.java +++ b/src/java/org/mxchange/jjobs/beans/user/JobsUserWebSessionBean.java @@ -26,6 +26,7 @@ import javax.enterprise.context.SessionScoped; import javax.enterprise.event.Event; import javax.enterprise.event.Observes; import javax.enterprise.inject.Any; +import javax.faces.context.FacesContext; import javax.faces.view.facelets.FaceletException; import javax.inject.Inject; import javax.inject.Named; @@ -35,8 +36,10 @@ import javax.naming.NamingException; import org.mxchange.jcontacts.contact.Contact; import org.mxchange.jcontacts.contact.ContactSessionBeanRemote; import org.mxchange.jcontacts.events.contact.add.AdminAddedContactEvent; +import org.mxchange.jjobs.beans.BaseJobsController; import org.mxchange.jjobs.beans.contact.JobsContactWebSessionController; import org.mxchange.jjobs.beans.login.JobsUserLoginWebSessionController; +import org.mxchange.jjobs.beans.register.JobsUserRegisterWebSessionController; import org.mxchange.jusercore.events.login.UserLoggedInEvent; import org.mxchange.jusercore.events.registration.UserRegisteredEvent; import org.mxchange.jusercore.events.user.add.AdminAddedUserEvent; @@ -48,6 +51,7 @@ import org.mxchange.jusercore.exceptions.UserPasswordMismatchException; import org.mxchange.jusercore.model.user.LoginUser; import org.mxchange.jusercore.model.user.User; import org.mxchange.jusercore.model.user.UserSessionBeanRemote; +import org.mxchange.jusercore.model.user.UserUtils; import org.mxchange.jusercore.model.user.profilemodes.ProfileMode; /** @@ -57,7 +61,7 @@ import org.mxchange.jusercore.model.user.profilemodes.ProfileMode; */ @Named ("userController") @SessionScoped -public class JobsUserWebSessionBean implements JobsUserWebSessionController { +public class JobsUserWebSessionBean extends BaseJobsController implements JobsUserWebSessionController { /** * Serial number @@ -75,6 +79,12 @@ public class JobsUserWebSessionBean implements JobsUserWebSessionController { @Inject private JobsContactWebSessionController contactController; + /** + * Registration controller + */ + @Inject + private JobsUserRegisterWebSessionController registerController; + /** * A list of all selectable contacts */ @@ -164,7 +174,7 @@ public class JobsUserWebSessionBean implements JobsUserWebSessionController { if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N - } else if (event.getAddedContact()== null) { + } else if (event.getAddedContact() == null) { // Throw again ... throw new NullPointerException("event.addedContact is null"); //NOI18N } else if (event.getAddedContact().getContactId() == null) { @@ -367,7 +377,24 @@ public class JobsUserWebSessionBean implements JobsUserWebSessionController { // Create new user instance User localUser = new LoginUser(); - // Update all data ... + // Is user name required? + if (!this.isUserNameRequired()) { + // Generate pseudo-random user name + String randomName = this.userBean.generateRandomUserName(); + + // Set it and inivisible profile + this.setUserName(randomName); + this.setUserProfileMode(ProfileMode.INVISIBLE); + + // Generate random password + String randomPassword = UserUtils.createRandomPassword(JobsUserWebSessionController.MINIMUM_PASSWORD_LENGTH); + + // Set random password + this.setUserPassword(randomPassword); + this.setUserPasswordRepeat(randomPassword); + } + + // Set user name and mode localUser.setUserName(this.getUserName()); localUser.setUserProfileMode(this.getUserProfileMode()); @@ -602,6 +629,24 @@ public class JobsUserWebSessionBean implements JobsUserWebSessionController { return isFound; } + @Override + public boolean isPublicUserProfileEnabled () { + // Get context parameter + String contextParameter = FacesContext.getCurrentInstance().getExternalContext().getInitParameter("is_public_profile_enabled"); //NOI18N + + // Is it set? + boolean isPublicUserProfileEnabled = ((contextParameter instanceof String) && (contextParameter.toLowerCase().equals("true"))); //NOI18N + + // This requires user names being enabled, too. + if ((isPublicUserProfileEnabled) && (!this.isUserNameRequired())) { + // Not valid state, users must be able to modify their profile, especially when it is public + throw new IllegalStateException("Public user profiles are enabled but user name requirement is disabled, this is not possible."); //NOI18N + } + + // Return value + return isPublicUserProfileEnabled; + } + @Override public boolean isRequiredChangePersonalDataSet () { return ((this.getUserProfileMode() != null) && @@ -611,11 +656,17 @@ public class JobsUserWebSessionBean implements JobsUserWebSessionController { @Override public boolean isRequiredPersonalDataSet () { - return ((this.getUserName() != null) && - (this.getUserProfileMode() != null) && - (this.contactController.isRequiredPersonalDataSet()) && - (this.getUserPassword() != null) && - (this.getUserPasswordRepeat() != null)); + if (this.registerController.isMultiplePageEnabled()) { + // Multiple registration page + return this.contactController.isRequiredPersonalDataSet(); + } else { + // Single registration page + return (((this.getUserName() != null) || (!this.isUserNameRequired())) && + (this.getUserProfileMode() != null) && + (this.contactController.isRequiredPersonalDataSet()) && + (this.getUserPassword() != null) && + (this.getUserPasswordRepeat() != null)); + } } @Override @@ -633,6 +684,18 @@ public class JobsUserWebSessionBean implements JobsUserWebSessionController { return ((this.userNameList instanceof List) && (this.userNameList.contains(user.getUserName()))); } + @Override + public boolean isUserNameRequired () { + // Get context parameter + String contextParameter = FacesContext.getCurrentInstance().getExternalContext().getInitParameter("is_user_name_required"); //NOI18N + + // Is it set? + boolean isUserNameRequired = ((contextParameter instanceof String) && (contextParameter.toLowerCase().equals("true"))); //NOI18N + + // Return value + return isUserNameRequired; + } + @Override public boolean isVisibleUserFound () { return ((this.visibleUserList instanceof List) && (this.visibleUserList.size() > 0)); diff --git a/src/java/org/mxchange/jjobs/beans/user/JobsUserWebSessionController.java b/src/java/org/mxchange/jjobs/beans/user/JobsUserWebSessionController.java index ddb7d4e9..8f5168ed 100644 --- a/src/java/org/mxchange/jjobs/beans/user/JobsUserWebSessionController.java +++ b/src/java/org/mxchange/jjobs/beans/user/JobsUserWebSessionController.java @@ -41,6 +41,14 @@ public interface JobsUserWebSessionController extends Serializable { */ public static final Integer MINIMUM_PASSWORD_LENGTH = 5; + /** + * Observes events being fired when an administrator has added a new + * contact. + *

+ * @param event Event being fired + */ + void afterAdminAddedContact (final AdminAddedContactEvent event); + /** * Event observer for newly added users by adminstrator *

@@ -271,4 +279,20 @@ public interface JobsUserWebSessionController extends Serializable { */ String doChangePersonalData (); + /** + * Checks whether this application requires a user name to be entered. + * Otherwise a random name like "userXXXXX" is generated + *

+ * @return Whether this application requires a user name + */ + boolean isUserNameRequired (); + + /** + * Checks wether public user profiles are enabled. This requires that user + * names are also enabled. + *

+ * @return Whether public user profiles are enabled + */ + boolean isPublicUserProfileEnabled (); + } diff --git a/src/java/org/mxchange/localization/bundle_de_DE.properties b/src/java/org/mxchange/localization/bundle_de_DE.properties index 3d0ae656..2046b205 100644 --- a/src/java/org/mxchange/localization/bundle_de_DE.properties +++ b/src/java/org/mxchange/localization/bundle_de_DE.properties @@ -483,3 +483,13 @@ LINK_GUEST_PRIVACY_STATEMENTS=Datenschutzbestimmungen ADMIN_ADD_OR_ENTER_CONTACT_DATA=... oder geben Sie die Kontaktdaten des Recruiters ein: ADMIN_PERSONAL_DATA_EMAIL_ADDRESS=Email-Adresse: ERROR_CONTACT_ID_NOT_FOUND=Fehler: Kontaktdaten nicht gefunden. +GUEST_REGISTRATION_PAGE1_TITLE=Anmeldeseite 1 +GUEST_REGISTRATION_PAGE2_TITLE=Anmeldeseite 2 +BUTTON_CONTINUE_REGISTER_PAGE2=Weiter zur Anmeldeseite 2 +ERROR_GUEST_REGISTER_MULTIPLE_PAGE_NOT_ENABLED=Fehler: Mehrfach-Seite f\u00fcr Anmeldung nicht aktiv, bitte Link nicht aufrufen. +PAGE_TITLE_USER_REGISTER_PAGE2=Anmeldeseite 2 +CONTENT_TITLE_USER_REGISTER_PAGE2=Anmeldeseite 2: +ERROR_GUEST_USER_LOGIN_DEACTIVATED=Fehler: Der Benutzerbereich wurde administrativ deaktiviert (keine Benutzernamen bei Anmeldung). +ERROR_GUEST_USER_RECOVER_PASSWORD_DEACTIVATED=Fehler: Wiederherstellen des Passwortes wurde administrativ deaktiviert. +ERROR_GUEST_USER_RESEND_CONFIRMATION_DEACTIVATED=Fehler: Erneutes Aussenden des Best\u00e4tigungslinked ist administrativ deaktiviert. +ERROR_GUEST_USER_PROFILE_DEACTIVATED=Fehler: \u00d6ffentliche Benutzerprofile sind administrativ deaktiviert. diff --git a/src/java/org/mxchange/localization/bundle_en_US.properties b/src/java/org/mxchange/localization/bundle_en_US.properties index 840e8656..6d375349 100644 --- a/src/java/org/mxchange/localization/bundle_en_US.properties +++ b/src/java/org/mxchange/localization/bundle_en_US.properties @@ -460,3 +460,13 @@ LINK_GUEST_PRIVACY_STATEMENTS=privacy statements ADMIN_ADD_OR_ENTER_CONTACT_DATA=... or enter the recruiter's contact data: ADMIN_PERSONAL_DATA_EMAIL_ADDRESS=Email address: ERROR_CONTACT_ID_NOT_FOUND=Error: contact data not found +GUEST_REGISTRATION_PAGE1_TITLE=Registration page 1 +GUEST_REGISTRATION_PAGE2_TITLE=Registration page 2 +BUTTON_CONTINUE_REGISTER_PAGE2=Continue to registration page 2 +ERROR_GUEST_REGISTER_MULTIPLE_PAGE_NOT_ENABLED=Error: Multiple registration page not active, please don't call this page. +PAGE_TITLE_USER_REGISTER_PAGE2=Register page 2 +CONTENT_TITLE_USER_REGISTER_PAGE2=Register page 2: +ERROR_GUEST_USER_LOGIN_DEACTIVATED=Error: User area is deactivated by administrators, no user name while registration. +ERROR_GUEST_USER_RECOVER_PASSWORD_DEACTIVATED=Error: password recovery is deactivated by administrators. +ERROR_GUEST_USER_RESEND_CONFIRMATION_DEACTIVATED=Error: Resending confirmation link is deactivated by administrators. +ERROR_GUEST_USER_PROFILE_DEACTIVATED=Error: Public user profiles are deactivated by administrators. diff --git a/web/WEB-INF/faces-config.xml b/web/WEB-INF/faces-config.xml index 5468e5f7..8fd39c82 100644 --- a/web/WEB-INF/faces-config.xml +++ b/web/WEB-INF/faces-config.xml @@ -120,6 +120,10 @@ register_done /guest/user/register_done.xhtml + + register_page2 + /guest/user/register_page2.xhtml + /admin/admin_logout.xhtml diff --git a/web/WEB-INF/templates/contact/form_contact_data.tpl b/web/WEB-INF/templates/contact/form_contact_data.tpl index dd605687..55d2234c 100644 --- a/web/WEB-INF/templates/contact/form_contact_data.tpl +++ b/web/WEB-INF/templates/contact/form_contact_data.tpl @@ -188,31 +188,33 @@ -

-
- #{msg.USER_PROFILE_LEGEND} - -
-
- -
- -
- -
- -
-
- -
-
-
    -
  • #{msg.SELECTION_NOTICE_USER_PROFILE_MODE_INVISIBLE}
  • -
  • #{msg.SELECTION_NOTICE_USER_PROFILE_MODE_MEMBERS}
  • -
  • #{msg.SELECTION_NOTICE_USER_PROFILE_MODE_PUBLIC}
  • -
-
-
-
-
+ +
+
+ #{msg.USER_PROFILE_LEGEND} + +
+
+ +
+ +
+ +
+ +
+
+ +
+
+
    +
  • #{msg.SELECTION_NOTICE_USER_PROFILE_MODE_INVISIBLE}
  • +
  • #{msg.SELECTION_NOTICE_USER_PROFILE_MODE_MEMBERS}
  • +
  • #{msg.SELECTION_NOTICE_USER_PROFILE_MODE_PUBLIC}
  • +
+
+
+
+
+
diff --git a/web/WEB-INF/templates/guest/guest_menu.tpl b/web/WEB-INF/templates/guest/guest_menu.tpl index c92679cd..18305699 100644 --- a/web/WEB-INF/templates/guest/guest_menu.tpl +++ b/web/WEB-INF/templates/guest/guest_menu.tpl @@ -26,14 +26,17 @@
    -
  • - -
  • + +
  • + +
  • +
  • +<<<<<<< HEAD
  • @@ -41,6 +44,19 @@
  • +======= + +
  • + +
  • +
    + + +
  • + +
  • +
    +>>>>>>> 4a789c7... Rewritten a lot:
diff --git a/web/WEB-INF/templates/guest/guest_privacy_terms.tpl b/web/WEB-INF/templates/guest/guest_privacy_terms.tpl index e4b3f398..385dfc85 100644 --- a/web/WEB-INF/templates/guest/guest_privacy_terms.tpl +++ b/web/WEB-INF/templates/guest/guest_privacy_terms.tpl @@ -34,7 +34,7 @@
#{msg.GUEST_AGREE_READ_TERMS_CONDITIONS_1} - + #{msg.GUEST_AGREE_READ_TERMS_CONDITIONS_2}
diff --git a/web/WEB-INF/templates/guest/user/guest_registration_form.tpl b/web/WEB-INF/templates/guest/user/guest_registration_form.tpl index c95a7639..c9020630 100644 --- a/web/WEB-INF/templates/guest/user/guest_registration_form.tpl +++ b/web/WEB-INF/templates/guest/user/guest_registration_form.tpl @@ -5,11 +5,10 @@ xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://xmlns.jcp.org/jsf/facelets"> - - +
- #{msg.GUEST_REGISTRATION_TITLE} + #{msg.GUEST_REGISTRATION_PAGE2_TITLE}
@@ -90,7 +89,7 @@
diff --git a/web/WEB-INF/templates/guest/user/register/guest_form_register_page1.tpl b/web/WEB-INF/templates/guest/user/register/guest_form_register_page1.tpl index 55c2ebdd..a1c7223d 100644 --- a/web/WEB-INF/templates/guest/user/register/guest_form_register_page1.tpl +++ b/web/WEB-INF/templates/guest/user/register/guest_form_register_page1.tpl @@ -6,29 +6,29 @@ xmlns:ui="http://xmlns.jcp.org/jsf/facelets"> - +
- #{msg.GUEST_REGISTRATION_TITLE} + #{msg.GUEST_REGISTRATION_PAGE1_TITLE}
- -
#{msg.GUEST_REGISTRATION_EMAIL_LEGEND} -
-
- -
+ +
+
+ +
-
- -
+
+ +
-
-
+
+
+
@@ -54,35 +54,37 @@
-
+ +
-
-
- -
+
+
+ +
-
- +
+ +
+ +
-
-
+
+
+ +
-
-
- -
+
+ +
-
- +
-
-
- -
- #{msg.GUEST_REGISTRATION_USER_NAME_NOTICE} -
+
+ #{msg.GUEST_REGISTRATION_USER_NAME_NOTICE} +
+
@@ -90,7 +92,7 @@
diff --git a/web/WEB-INF/templates/guest/user/register/guest_form_register_single.tpl b/web/WEB-INF/templates/guest/user/register/guest_form_register_single.tpl new file mode 100644 index 00000000..d4e1e9d8 --- /dev/null +++ b/web/WEB-INF/templates/guest/user/register/guest_form_register_single.tpl @@ -0,0 +1,100 @@ + + + + +
+
+ #{msg.GUEST_REGISTRATION_TITLE} +
+ + + +
+
+ #{msg.GUEST_REGISTRATION_EMAIL_LEGEND} + + +
+
+ +
+ +
+ +
+ +
+
+
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+
+ +
+ +
+ +
+ +
+
+ + +
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+ #{msg.GUEST_REGISTRATION_USER_NAME_NOTICE} +
+
+
+
+ + + + +
+
+
diff --git a/web/WEB-INF/web.xml b/web/WEB-INF/web.xml index 0961676c..442f6037 100644 --- a/web/WEB-INF/web.xml +++ b/web/WEB-INF/web.xml @@ -3,8 +3,29 @@ An application for handling and sending out applications to companies. JJobs v1.0 - javax.faces.PROJECT_STAGE - Development + Whether debug mode is for registration controller enabled. + is_debug_register_enabled + false + + + Whether the multi-page registration page or a single registration page is active + is_multi_register_page + true + + + Whether a user name is required on registration + is_user_name_required + false + + + Whether the public user profile is enabled. + is_public_profile_enabled + false + + + Whether "resend confirmation link" ius enabled. + is_resend_confirm_link_enabled + false Faces Servlet diff --git a/web/guest/user/login.xhtml b/web/guest/user/login.xhtml index e52d2790..8c7aa57d 100644 --- a/web/guest/user/login.xhtml +++ b/web/guest/user/login.xhtml @@ -16,6 +16,7 @@ +<<<<<<< HEAD
Noch kein Benutzerkonto? Einfach hier anmelden. @@ -28,6 +29,26 @@
+======= + +
+ + Noch kein Benutzerkonto? Einfach hier anmelden. +
+ +
+ +
+ +
+ +
+
+ + + + +>>>>>>> 4a789c7... Rewritten a lot: diff --git a/web/guest/user/lost_passwd.xhtml b/web/guest/user/lost_passwd.xhtml index 103e070c..376a421f 100644 --- a/web/guest/user/lost_passwd.xhtml +++ b/web/guest/user/lost_passwd.xhtml @@ -16,53 +16,59 @@ -
- -
-
- #{msg.GUEST_LOST_PASSWORD_TITLE} -
+ +
+ +
+
+ #{msg.GUEST_LOST_PASSWORD_TITLE} +
-
- #{msg.GUEST_LOST_PASSWORD_LEGEND} +
+ #{msg.GUEST_LOST_PASSWORD_LEGEND} -
-
- +
+
+ +
+ +
+ +
+ +
-
- +
+ #{msg.GUEST_LOST_PASSWORD_NUMBER_OR_EMAIL}
-
-
+
+
+ +
-
- #{msg.GUEST_LOST_PASSWORD_NUMBER_OR_EMAIL} -
+
+ +
-
-
- +
-
- -
+
-
+ - -
- - -
-
-
+ +
+ + + + + diff --git a/web/guest/user/register.xhtml b/web/guest/user/register.xhtml index ab0f9104..e8546fec 100644 --- a/web/guest/user/register.xhtml +++ b/web/guest/user/register.xhtml @@ -3,10 +3,10 @@ + xmlns:ui="http://xmlns.jcp.org/jsf/facelets" + xmlns:h="http://xmlns.jcp.org/jsf/html" + xmlns:f="http://xmlns.jcp.org/jsf/core" + > #{msg.PAGE_TITLE_USER_REGISTER} @@ -16,14 +16,22 @@ -
- #{msg.GUEST_ALREADY_USER_CONTINUE_LOGIN_1} - - #{msg.GUEST_ALREADY_USER_CONTINUE_LOGIN_2} -
+ +
+ #{msg.GUEST_ALREADY_USER_CONTINUE_LOGIN_1} + + #{msg.GUEST_ALREADY_USER_CONTINUE_LOGIN_2} +
+
- + + + + + + +
diff --git a/web/guest/user/register_page2.xhtml b/web/guest/user/register_page2.xhtml new file mode 100644 index 00000000..04b7ccd2 --- /dev/null +++ b/web/guest/user/register_page2.xhtml @@ -0,0 +1,38 @@ + + + + + + #{msg.PAGE_TITLE_USER_REGISTER_PAGE2} + + + #{msg.CONTENT_TITLE_USER_REGISTER_PAGE2} + + + + + +
+ #{msg.GUEST_ALREADY_USER_CONTINUE_LOGIN_1} + + #{msg.GUEST_ALREADY_USER_CONTINUE_LOGIN_2} +
+
+ +
+ +
+
+ + + + +
+
+ diff --git a/web/guest/user/resend_link.xhtml b/web/guest/user/resend_link.xhtml index 89da7508..4c619697 100644 --- a/web/guest/user/resend_link.xhtml +++ b/web/guest/user/resend_link.xhtml @@ -16,7 +16,13 @@ - Here goes your content. + + Here goes your content. + + + + + diff --git a/web/guest/user/user_profile.xhtml b/web/guest/user/user_profile.xhtml index 59d00852..cf4e580c 100644 --- a/web/guest/user/user_profile.xhtml +++ b/web/guest/user/user_profile.xhtml @@ -24,22 +24,28 @@ - - - + + + + + + + #{msg.ERROR_PROFILE_NOT_VISIBLE} + - - #{msg.ERROR_PROFILE_NOT_VISIBLE} + +
+ + + #{msg.PUBLIC_USER_PROFILE} + + +
+
- -
- - - #{msg.PUBLIC_USER_PROFILE} - - -
+ +