1 package de.webman.content.eventhandler; 2 3 import com.teamkonzept.web.*; 4 import com.teamkonzept.webman.*; 5 import com.teamkonzept.webman.db.TKWebmanDBManager; 6 import com.teamkonzept.webman.mainint.*; 7 import com.teamkonzept.webman.mainint.db.*; 8 import com.teamkonzept.webman.mainint.db.queries.*; 9 import com.teamkonzept.webman.mainint.events.*; 10 import com.teamkonzept.lib.*; 11 import com.teamkonzept.field.*; 12 import com.teamkonzept.field.db.*; 13 import com.teamkonzept.db.*; 14 import com.teamkonzept.publishing.markups.*; 15 import org.apache.log4j.Category; 16 import de.webman.acl.Policy; 17 import java.sql.*; 18 import java.io.*; 19 20 26 public class CEExtModifyHandler 27 extends DefaultEventHandler 28 implements ParameterTypes, 29 FrameConstants, 30 DatabaseDefaults, 31 QueryConstants 32 { 33 34 35 37 38 static final String DELETE = "DELETE"; 39 40 static final String EXT_MODIFY = "EXT_MODIFY"; 41 static final String TARGET = "TARGET"; 42 43 static final String UPLOAD = "UPLOAD"; 44 45 static final String CE_EXT_MODIFY = "CE_EXT_MODIFY"; 46 47 50 private static final CEExtModifyHandler INSTANCE = new CEExtModifyHandler(); 51 52 55 private CEExtModifyHandler () 56 { 57 } 59 60 63 public static CEExtModifyHandler getInstance () 64 { 65 return INSTANCE; 66 } 67 68 74 public void handleEvent (TKEvent evt) 75 throws TKException 76 { 77 try 78 { 79 CEUtils.checkEvent(evt); 80 TKHashtable params = evt.getParams().getClass( PARAMETER ); 81 82 TKHTMLTemplate t; 84 ContentContext ceContext = new ContentContext (evt.getParams(), evt.getName()); 85 TKFormDBData data = new TKFormDBData( ceContext.formId.intValue() ); 86 TKFormDBInterface.Get( data ); 87 TKBaseField field = TKFieldRegistry.getFieldFromDB( data ); 88 89 String action = evt.getParameter( ACTION, EXT_MODIFY ); 90 String target = evt.getParameter( TARGET, EXT_MODIFY ); 91 if( target == null || target.equals("") ) 93 target = evt.getParameter( PARAMETER, TARGET ) ; 94 95 96 TKUploadField extField = (TKUploadField) field.getTarget( target, ""); 97 98 99 if(action != null && action.equals(UPLOAD)){ 100 101 t = evt.getPrepHTMLTemplate( "ce_fields.tmpl" ); 102 t.set("CHANGED", new Integer (1)); 104 TKUploadFileInputStream fileInputStr = ((TKUploadFileInputStream)params.get( TKUploadField.GETFILENAMESTREAM )); 105 File tmpFile = fileInputStr.file; 106 107 String filename = evt.getParameter( PARAMETER,TKUploadField.NEW_FILENAME); 108 if(filename == null || filename.equals("")){ 109 filename = extField.splitBrowserFileName(fileInputStr.getUploadFileName()); 110 } 111 filename = TKUploadField.checkFileName(filename); 112 TKHashtable header = fileInputStr.getUploadHeader(); 113 String contentType = TKUploadField.fixContentType(header.get(TKUploadField.CONTENT_TYPE).toString()); 114 115 if (! extField.compareMimes(contentType)) 117 { 118 Object [] args = {contentType}; 119 throw new TKUserException("Mime Typen matchen nicht", NOT_MATCHING_MIMETYPES, USER_SEVERITY, false, args, null); 120 } 121 122 if (extField.isSaveInDB()) 123 { 124 int newMediaID = MediaManager.storeMedia(tmpFile, filename); 126 params.put( target+"."+TKUploadField.NEW_MEDIA_ID, String.valueOf(newMediaID)); 127 tmpFile.delete(); 128 } 129 else 130 { 131 extField.saveToFilesystem(params, tmpFile, filename); 133 t.set( TKUploadField.DOCUMENTS_FROM_FILESYSTEM , Boolean.TRUE); 134 params.remove(target+".MEDIA_ID"); 136 } 137 138 fileInputStr.close(); 140 141 Object realData = field.compileData( "", evt.getParams().getClass( PARAMETER ), new TKHashtable() ); 142 143 field.fillIntoTemplate( t, realData, "" ); 144 145 extField.extModify(action, t,params, target ); 146 147 } 148 else if(action != null && action.equals(DELETE)){ 149 t = evt.getPrepHTMLTemplate( "ce_fields.tmpl" ); 150 151 params.put( target+"."+TKUploadField.MEDIA_ID_PARNAME,""); 152 params.put( target,""); 154 Object realData = field.compileData( "", evt.getParams().getClass( PARAMETER ), new TKHashtable() ); 155 156 field.fillIntoTemplate( t, realData, "" ); 157 158 } 159 else 160 { 161 t = evt.getPrepHTMLTemplate( "ce_upload.tmpl" ); 163 extField.extModify(action, t,params, target ); 164 } 165 CEUtils.keepCEContext(evt, t ); 166 167 WebManEvent.fillEventsIntoTemplate(evt.getRemoteUser(), t, ContextConstants.CONTENT_EDIT, Policy.CONTENT_TREE_ID, ceContext.conNodeId); 168 169 evt.finishTemplate(t); 170 171 } 172 catch (Throwable e) 173 { 174 throw WebmanExceptionHandler.getException(e); 176 } 177 } 178 179 186 public boolean isHandler (TKEvent evt) 187 { 188 return evt.getName().equalsIgnoreCase(CE_EXT_MODIFY); 189 } 190 191 } 192 | Popular Tags |