package com.rectang.xsm.pages.admin;
import com.rectang.xsm.Engine;
import com.rectang.xsm.pages.XSMPage;
import com.rectang.xsm.pages.Secure;
import com.rectang.xsm.AccessControl;
import com.rectang.xsm.XSM;
import java.util.List;
import java.util.Vector;
import java.io.File;
import org.apache.wicket.PageParameters;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.model.CompoundPropertyModel;
/**
* Page for editing the output site theme
*
* @author Andrew Williams
* @version $Id: Theme.java 802 2009-05-16 17:25:24Z andy $
* @since 2.0
*/
public class Theme
extends XSMPage
implements Secure
{
public Theme( PageParameters parameters )
{
super( parameters );
}
public int getLevel()
{
return AccessControl.MANAGER;
}
public void layout()
{
super.layout();
add( new ThemeForm( "theme", getXSMSession().getSite() ) );
}
class ThemeForm
extends Form
{
private com.rectang.xsm.site.Site site;
public ThemeForm( String id, com.rectang.xsm.site.Site site )
{
super( id );
this.site = site;
setModel( new CompoundPropertyModel( site ) );
add( new DropDownChoice( "stylesheet", getStyles() ) );
add( new DropDownChoice( "layout", getLayouts() ) );
}
public void onSubmit()
{
if ( site.save() )
{
Engine.initTemplates();
site.publishTheme();
}
else
{
error( "Unable to save site settings" );
}
}
}
public List getStyles()
{
List ret = new Vector();
ret.add( "dashed" );
ret.add( "grey" );
ret.add( "light-blue" );
ret.add( "simple-blue" );
ret.add( "typewriter" );
com.rectang.xsm.site.Site site = getXSMSession().getSite();
if ( new File( XSM.getConfig().getSiteTemplateDir( site ), "style.css" ).exists() )
{
ret.add( "custom" );
}
return ret;
}
public List getLayouts()
{
List ret = new Vector();
ret.add( "menu-left" );
ret.add( "menu-right" );
ret.add( "news" );
ret.add( "one-column" );
com.rectang.xsm.site.Site site = getXSMSession().getSite();
if ( new File( XSM.getConfig().getSiteTemplateDir( site ), "layout.css" ).exists() )
{
ret.add( "custom" );
}
return ret;
}
}