package com.rectang.xsm.pages.admin;
import com.rectang.xsm.pages.XSMPage;
import com.rectang.xsm.pages.Secure;
import com.rectang.xsm.AccessControl;
import com.rectang.xsm.XSM;
import com.rectang.xsm.io.PublishedFile;
import org.apache.wicket.PageParameters;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.form.upload.FileUploadField;
import org.apache.wicket.markup.html.form.upload.FileUpload;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.model.PropertyModel;
/**
* Page for editing the output site settings
*
* @author Andrew Williams
* @version $Id: Settings.java 818 2010-05-30 14:04:21Z andy $
* @since 2.0
*/
public class Settings
extends XSMPage
implements Secure
{
public Settings( PageParameters parameters )
{
super( parameters );
}
public int getLevel()
{
return AccessControl.MANAGER;
}
public void layout()
{
super.layout();
add( new SiteForm( "site" ) );
}
class SiteForm
extends Form
{
FileUploadField faviconField;
FileUpload favicon;
public SiteForm( String id )
{
super( id );
com.rectang.xsm.site.Site site = getXSMSession().getSite();
setMultiPart( true );
setModel( new CompoundPropertyModel( site ) );
setMultiPart( true );
add( new TextField( "title" ) );
add( new TextField( "keywords" ) );
add( new TextField( "description" ) );
WebMarkupContainer favicon = new WebMarkupContainer( "favicon-img" );
favicon.add( new AttributeModifier( "src",
new Model( site.getRootUrl() + "/favicon.ico" ) ) );
add( favicon );
// TODO add ability to delete favicon.ico
add( faviconField = new FileUploadField( "favicon", new PropertyModel( this, "favicon" ) ) );
}
public void onSubmit()
{
com.rectang.xsm.site.Site site = getXSMSession().getSite();
if ( site.save() )
{
site.publish( getXSMSession().getUser() );
}
final FileUpload upload = faviconField.getFileUpload();
if ( upload != null && upload.getClientFileName().toLowerCase().endsWith( ".ico" ) )
{
// Create a new file
java.io.File tmpFile = XSM.getTempFile();
try
{
upload.writeTo( tmpFile );
PublishedFile file = site.getPublishedDoc( "/favicon.ico" );
file.uploadFile( tmpFile, true );
}
catch ( Exception e )
{
throw new IllegalStateException( "Unable to write file" );
}
}
}
}
}