/* * Created on May 19, 2006 */ package org.openedit.entermedia.generators; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.openedit.OpenEditException; import com.openedit.WebPageRequest; import com.openedit.generators.Output; import com.openedit.page.Page; import com.openedit.users.User; public class ToolbarGenerator extends BaseToolBarGenerator { private static final Log log = LogFactory.getLog(ToolbarGenerator.class); public void generate(WebPageRequest inPageRequest, Page inPage, Output inOut) throws OpenEditException { boolean added = addHeader(inPageRequest, inOut); if (added) { Page header = getPageManager().getPage( getHeaderPath() ); if( header.exists() ) { inPageRequest.putPageValue("editPage",inPage); header.generate(inPageRequest, inOut); } } getWraps().generate(inPageRequest, inPage, inOut); if ( added && getFooterPath() != null ) { addFooter(inPageRequest, inOut); } } public boolean addHeader( WebPageRequest inPageRequest, Output inOut ) throws OpenEditException { User user = inPageRequest.getUser(); if (user == null) { return false; } Page requestedPage = inPageRequest.getPage(); if( requestedPage.getPath().equals(getHeaderPath()) || requestedPage.getInnerLayout() == null) { return false; } if( requestedPage.getPath().equals(getFooterPath())) { return false; } String val = user.get("oe.edit.mode"); if( "preview".equals( val ) ) { return false; } if ("editing".equals(val) && !requestedPage.isBinary() && inPageRequest.isEditable() ) { return true; } //boolean debug = Boolean.parseBoolean(user.get("showdebug")); if( "debug".equals(val) && requestedPage.isHtml()) { String show = inPageRequest.getPageProperty("showdebug"); if( show != null) { return Boolean.parseBoolean(show); } return true; //we probably don't need to check for the header } // String show = inPageRequest.getRequestParameter("showtoolbar"); // if ( show != null && !Boolean.parseBoolean(show)) // { // return false; // } return false; } public boolean addFooter(WebPageRequest inPageRequest, Output inOut) throws OpenEditException { Page requestedPage = inPageRequest.getPage(); if ( requestedPage.isBinary()) { return false; } Page footer = getPageManager().getPage( getFooterPath() ); inPageRequest.putPageValue("editPage",requestedPage); footer.generate(inPageRequest, inOut); return true; } /** * This seems to complex. The only thing needed now is editable checks * @param inPageRequest * @return * @throws OpenEditException protected boolean checkFlags( WebPageRequest inPageRequest ) throws OpenEditException { PageAction inAction = inPageRequest.getCurrentAction(); String flagKey = inAction.getConfig().getChildValue( "flag" ); Page requestedPage = (Page)inPageRequest.getPage(); String propertyFlag = requestedPage.getProperty( flagKey ); String pageValueFlag = (String)inPageRequest.getPageValue( flagKey ); String requestParameterFlag = inPageRequest.getRequestParameter( flagKey ); log.debug( "Checking decoration flag " + flagKey + " for page " + requestedPage ); if ( "false".equals( propertyFlag ) || "false".equals( pageValueFlag ) || "false".equals( requestParameterFlag ) ) { return false; } String permission = inAction.getConfig().getChildValue( "permission" ); if ( permission != null ) { if ( inPageRequest.getUser() == null) { return false; } else { log.debug("Checking user"); return inPageRequest.getUser().hasPermission(permission); } } return true; } */ }