package com.rectang.xsm.pages; import com.rectang.xsm.UserData; import com.rectang.xsm.AccessControl; import com.rectang.xsm.pages.admin.Users; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.model.CompoundPropertyModel; import org.apache.wicket.PageParameters; /** * Created by IntelliJ IDEA. * * @author Andrew Williams * @version $Id: EditProfile.java 663 2007-10-04 22:50:25Z aje $ * @since 2.0 */ public class EditProfile extends XSMPage implements Secure { public EditProfile( PageParameters parameters ) { super( parameters ); } public int getLevel() { return AccessControl.MEMBER; } public void layout() { super.layout(); UserData user = getUserToEdit( getPageParameters(), getXSMSession().getUser() ); add( new ProfileForm( "profile", user ) ); } class ProfileForm extends Form { UserData user; public ProfileForm( String id, UserData user ) { super( id ); this.user = user; setModel( new CompoundPropertyModel( user ) ); add( new TextField( "name" ) ); add( new TextField( "email" ) ); add( new TextField( "homepage" ) ); add( new TextField( "avatar" ) ); WebMarkupContainer admin = new WebMarkupContainer( "admin" ); admin.setVisible( getXSMSession().getUser().isSiteAdmin() ); admin.add( new TextField( "note" ) ); add( admin ); } public void onSubmit() { if ( user.save() ) { if ( user.getUsername().equals( getXSMSession().getUser().getUsername() ) ) { // TODO make the userdata singleton, so this is not needed getXSMSession().setUser( user ); this.setResponsePage( Profile.class ); } else { this.setResponsePage( Users.class ); } } } } public static UserData getUserToEdit( PageParameters params, UserData currentUser ) { if ( !currentUser.isSiteAdmin() ) { return currentUser; } if ( params == null ) { return currentUser; } String username = params.getString( "username" ); if ( username == null || username.trim().length() == 0 ) { return currentUser; } return new UserData( username, currentUser.getSite(), false ); } }