package com.rectang.xsm.pages.nav;
import com.rectang.xsm.io.RemoteDocument;
import com.rectang.xsm.site.HierarchicalPage;
import com.rectang.xsm.site.Site;
import com.rectang.xsm.pages.cms.Page;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.PageParameters;
import org.apache.wicket.model.Model;
import java.util.Iterator;
/**
* The main CMS contents tab delete page
*
* @author Andrew Williams
* @version $Id: Delete.java 831 2011-09-25 12:59:18Z andy $
* @since 2.0
*/
public class Delete
extends Page
{
public Delete( PageParameters parameters )
{
super( parameters );
}
public void layout()
{
super.layout();
if ( !canEdit() )
{
warn( "You do not have permission to delete this page" );
setResponsePage( Contents.class, getPageNameParams() );
return;
}
add( new Label( "confirm", getString( "confirm", new Model( getXSMPage() ) ) ) );
add( new DeleteForm( "deleteform" ) );
}
private class DeleteForm
extends Form
{
public DeleteForm( String id )
{
super( id );
add( new Button( "yes" )
{
public void onSubmit()
{
Site site = getXSMSession().getSite();
HierarchicalPage parentPage = getXSMPage().getParent();
String pagePath = getXSMPage().getPath();
boolean wasHidden = getXSMPage().getHidden();
/* try to delete the page from the site, then the page from the xsm
* store then all of its sub pages from xsm store */
boolean deleted = true;
if ( getXSMPage() instanceof com.rectang.xsm.site.DocumentPage )
{
deleted = ((com.rectang.xsm.site.DocumentPage) getXSMPage()).getXSMDocument().delete();
}
if ( deleted && getXSMPage().delete() )
{
(RemoteDocument.getDoc( site, "/data" + pagePath, false )).delete(); /* rm dir */
/* then delete the pages from the server */
site.getPublishedDoc( pagePath ).delete();
site.save();
getSession().info( "Page " + pagePath + " deleted successfully" );
if ( !wasHidden )
{
site.publish( getXSMSession().getUser() );
}
HierarchicalPage requestedPage = parentPage;
/* if there is no parent page just display the first... */
if ( requestedPage.equals( site.getRootPage() ) )
{
Iterator pages = site.getPages().iterator();
if ( pages.hasNext() )
{
// TODO fix - the first page in the site may not be a heirarchical page...
requestedPage = (HierarchicalPage) pages.next();
}
}
PageParameters newPage = new PageParameters();
newPage.add( "page", requestedPage.getPath() );
setResponsePage( Contents.class, newPage );
}
else
{
error( "Failed to deleted page " + pagePath );
}
}
} );
add( new Button( "no" )
{
public void onSubmit()
{
setResponsePage( Contents.class, getPageNameParams() );
}
} );
}
}
}