package com.rectang.xsm;
import com.rectang.xsm.pages.*;
import com.rectang.xsm.pages.Error;
import com.rectang.xsm.pages.admin.*;
import com.rectang.xsm.pages.admin.Publish;
import com.rectang.xsm.pages.admin.System;
import com.rectang.xsm.pages.admin.xsm.Admin;
import com.rectang.xsm.pages.admin.xsm.Setup;
import com.rectang.xsm.pages.cms.*;
import com.rectang.xsm.pages.nav.*;
import com.rectang.xsm.wicket.SiteThemeResource;
import org.apache.wicket.*;
import org.apache.wicket.Page;
import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.extensions.ajax.markup.html.form.upload.UploadWebRequest;
import org.apache.wicket.protocol.http.WebRequest;
import org.apache.wicket.request.target.coding.QueryStringUrlCodingStrategy;
import javax.servlet.http.HttpServletRequest;
/**
* Created by IntelliJ IDEA.
*
* @author Andrew Williams
* @version $Id: XSMApplication.java 822 2010-08-06 16:29:52Z andy $
* @since 1.0
*/
public class XSMApplication
extends WebApplication
{
protected void init()
{
this.getMarkupSettings().setStripWicketTags( true );
// set error pages
this.getApplicationSettings().setInternalErrorPage( com.rectang.xsm.pages.Error.class );
this.getApplicationSettings().setAccessDeniedPage( com.rectang.xsm.pages.AccessDenied.class );
this.getApplicationSettings().setPageExpiredErrorPage( com.rectang.xsm.pages.ErrorExpired.class );
// Don't set this until we want to release...
//this.getExceptionSettings().setUnexpectedExceptionDisplay(IExceptionSettings.SHOW_INTERNAL_ERROR_PAGE );
if ( XSM.getConfig() == null )
{
XSM.setConfig( Config.getInstance( this.getWicketFilter().getFilterConfig().getServletContext().getRealPath( "/" ) ) );
}
mountFramework();
mountPages();
mountAdmin();
mountXSMAdmin();
mountCMS();
mountResources();
}
private void mountFramework()
{
initMount( "denied", AccessDenied.class );
initMount( "error", Error.class );
initMount( "error404", Error404.class );
initMount( "expired", ErrorExpired.class );
initMount( "login", Login.class );
initMount( "logout", Logout.class );
initMount( "register", Register.class );
}
private void mountAdmin()
{
initMount( "add-user", AddUser.class );
initMount( "add-visitor", AddVisitor.class );
initMount( "backup", Backup.class );
initMount( "edit-template", EditTemplate.class );
initMount( "site-publish", Publish.class );
initMount( "site", Site.class );
initMount( "settings", Settings.class );
initMount( "system", System.class );
initMount( "theme", com.rectang.xsm.pages.admin.Theme.class );
initMount( "upgrade", Upgrade.class );
initMount( "users", Users.class );
}
private void mountXSMAdmin()
{
initMount( "admin", Admin.class );
initMount( "setup", Setup.class );
}
private void mountPages()
{
initMount( "edit-password", EditPassword.class );
initMount( "edit-preferences", EditPreferences.class );
initMount( "edit-profile", EditProfile.class );
initMount( "help", Help.class );
initMount( "preferences", Preferences.class );
initMount( "profile", Preferences.class );
}
private void mountCMS()
{
initMount( "page-edit", Edit.class );
initMount( "page-imagelist", ImageList.class );
initMount( "page-linklist", LinkList.class );
initMount( "page-new", New.class );
initMount( "page-options", Options.class );
initMount( "page-permissions", Permissions.class );
initMount( "page-security", Security.class );
initMount( "page-settings", PageSettings.class );
initMount( "page-status", Status.class );
initMount( "page-view", View.class );
initMount( "page-contents", Contents.class );
initMount( "page-delete", Delete.class );
initMount( "link-edit", LinkEdit.class );
initMount( "link-view", LinkView.class );
initMount( "link-new", NewLink.class );
initMount( "page-rename", Rename.class );
}
private void mountResources()
{
mountSharedResource( "sitetheme/style.css", new ResourceReference( "sitestyle" )
{
@Override
protected Resource newResource()
{
return new SiteThemeResource( "style" );
}
}.getSharedResourceKey() );
mountSharedResource( "sitetheme/layout.css", new ResourceReference( "sitelayout" )
{
@Override
protected Resource newResource()
{
return new SiteThemeResource( "layout" );
}
}.getSharedResourceKey() );
}
@Override
public Class<? extends Page> getHomePage()
{
return Dashboard.class;
}
public Session newSession( Request request, Response response )
{
return new XSMSession( request );
}
@Override
public String getConfigurationType()
{
return WebApplication.DEVELOPMENT;
}
protected WebRequest newWebRequest( HttpServletRequest servletRequest )
{
return new UploadWebRequest( servletRequest );
}
public void initMount( String url, Class page )
{
mount( new QueryStringUrlCodingStrategy( url, page ) );
}
}