1 4 package com.openedit.generators; 5 6 import java.io.ByteArrayOutputStream ; 7 import java.io.IOException ; 8 import java.io.OutputStreamWriter ; 9 import java.io.StringWriter ; 10 import java.io.Writer ; 11 12 import org.apache.commons.logging.Log; 13 import org.apache.commons.logging.LogFactory; 14 15 import com.openedit.ModuleManager; 16 import com.openedit.OpenEditException; 17 import com.openedit.WebPageRequest; 18 import com.openedit.page.Page; 19 import com.openedit.users.User; 20 21 27 public class AdminToolBarGenerator extends BaseToolBarGenerator 28 { 29 public static Log log = LogFactory.getLog(AdminToolBarGenerator.class); 30 protected ModuleManager fieldModuleManager; 31 32 protected String fieldSearch; 33 34 public AdminToolBarGenerator() 35 { 36 } 37 38 public void setSearch( String inHtmlTag ) 39 { 40 fieldSearch = inHtmlTag; 41 } 42 public void generate( WebPageRequest inContext, Page inPage, Output inOut ) throws OpenEditException 43 { 44 User user = inContext.getUser(); 45 if( user == null || !user.hasPermission("oe.administration")) 46 { 47 getWraps().generate(inContext, inPage, inOut); 48 return; 49 } 50 51 Output oldOut = inContext.getPageStreamer().getOutput(); 52 54 try 55 { 56 ByteArrayOutputStream scapture = new ByteArrayOutputStream (); 57 Writer capture = new OutputStreamWriter (scapture, inPage.getCharacterEncoding() ); 58 Output fakeout = new Output(capture, scapture ); 59 inContext.getPageStreamer().setOutput(fakeout); 60 61 getWraps().generate(inContext, inPage, fakeout); 62 63 inContext.getPageStreamer().setOutput(oldOut); 64 65 fakeout.getWriter().flush(); 66 String pageContent = scapture.toString(inPage.getCharacterEncoding()); 67 int start = pageContent.indexOf(getSearch()); 68 if ( start == -1) 69 { 70 writePage( pageContent, inOut ); 71 return; 72 } 73 int end = pageContent.indexOf("\n", start); 74 75 inOut.getWriter().write( pageContent.substring(0,end +1 ) ); 76 Page header = getPageManager().getPage(getHeaderPath() ); 77 78 header.generate(inContext, inOut); 84 85 inOut.getWriter().write(pageContent.substring( end)); 86 inOut.getWriter().flush(); 87 } 89 catch ( IOException ex) 90 { 91 log.error(ex); 92 } 93 94 } 95 96 public String getSearch() 97 { 98 return fieldSearch; 99 } 100 101 public ModuleManager getModuleManager() 102 { 103 return fieldModuleManager; 104 } 105 106 public void setModuleManager(ModuleManager inModuleManager) 107 { 108 fieldModuleManager = inModuleManager; 109 } 110 111 112 } 113 | Popular Tags |