1 package de.webman.sitetree.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 de.webman.content.eventhandler.CEUtils; 16 import java.sql.*; 17 import java.io.*; 18 import java.util.*; 19 20 26 public class STExtModifyHandler 27 extends DefaultEventHandler 28 implements ParameterTypes, 29 FrameConstants, 30 DatabaseDefaults 31 { 32 33 34 static final String DELETE = "DELETE"; 35 static final String EXT_MODIFY = "EXT_MODIFY"; 36 static final String FORM_ID = "FORM_ID"; 37 static final String TARGET = "TARGET"; 38 static final String UPLOAD = "UPLOAD"; 39 40 43 private static final STExtModifyHandler INSTANCE = new STExtModifyHandler(); 44 45 48 private STExtModifyHandler () 49 { 50 } 52 53 58 public static STExtModifyHandler getInstance () 59 { 60 return INSTANCE; 61 } 62 63 69 public void handleEvent (TKEvent evt) 70 throws TKException 71 { 72 try 73 { 74 WebManEvent.checkEvent(evt.getRemoteUser(), evt.getName(), ContextConstants.SITE_TREE); 75 TKHashtable params = evt.getParams().getClass( PARAMETER ); 76 77 TKHTMLTemplate t; 78 79 int formID =new Integer ((String )params.get(FORM_ID)).intValue(); 80 81 TKFormDBData data = new TKFormDBData(formID ); 82 TKFormDBInterface.Get( data ); 83 TKBaseField field = TKFieldRegistry.getFieldFromDB( data ); 84 85 String action = evt.getParameter( ACTION, EXT_MODIFY ); 86 String target = evt.getParameter( TARGET, EXT_MODIFY ); 87 if( target == null || target.equals("") ) 89 target = evt.getParameter( PARAMETER, TARGET ) ; 90 91 TKUploadField extField = (TKUploadField) field.getTarget( target, ""); 92 93 if(action != null && action.equals(UPLOAD)){ 94 95 t = evt.getPrepHTMLTemplate( "st_fields.tmpl" ); 96 97 TKUploadFileInputStream fileInputStr = ((TKUploadFileInputStream)params.get( TKUploadField.GETFILENAMESTREAM )); 98 File tmpFile = fileInputStr.file; 99 100 String filename = evt.getParameter( PARAMETER,TKUploadField.NEW_FILENAME); 101 if(filename == null || filename.equals("")) 102 { 103 filename = extField.splitBrowserFileName(fileInputStr.getUploadFileName()); 104 } 105 filename = TKUploadField.checkFileName(filename); 106 TKHashtable header = fileInputStr.getUploadHeader(); 107 String contentType = TKUploadField.fixContentType(header.get(TKUploadField.CONTENT_TYPE).toString()); 108 109 if (! extField.compareMimes(contentType)) 111 { 112 throw new TKUserException("Mime Typen matchen nicht", NOT_MATCHING_MIMETYPES, USER_SEVERITY, false, null); 113 } 114 115 if (extField.isSaveInDB()) 116 { 117 int newMediaID = MediaManager.storeMedia(tmpFile, filename); 119 params.put( target+"."+TKUploadField.NEW_MEDIA_ID, String.valueOf(newMediaID)); 120 tmpFile.delete(); 121 } 122 else 123 { 124 extField.saveToFilesystem(params, tmpFile, filename); 126 t.set( TKUploadField.DOCUMENTS_FROM_FILESYSTEM , Boolean.TRUE); 127 params.remove(target+".MEDIA_ID"); 129 } 130 131 fileInputStr.close(); 133 134 135 136 Object realData = field.compileData( "", evt.getParams().getClass( PARAMETER ), new TKHashtable() ); 137 138 140 field.fillIntoTemplate( t, realData, "" ); 141 142 extField.extModify(action, t,params, target ); 143 144 } 145 else if(action != null && action.equals(DELETE)){ 146 t = evt.getPrepHTMLTemplate( "st_fields.tmpl" ); 147 148 params.put( target+"."+TKUploadField.MEDIA_ID_PARNAME,""); 150 params.put( target,""); Object realData = field.compileData( "", evt.getParams().getClass( PARAMETER ), new TKHashtable() ); 153 field.fillIntoTemplate( t, realData, "" ); 154 155 } 156 else 157 { 158 t = evt.getPrepHTMLTemplate( "ce_upload.tmpl" ); 160 extField.extModify(action, t,params, target ); 161 } 162 t.set(params); 163 WebManEvent.fillEventsIntoTemplate(evt.getRemoteUser(), t, SITE_TREE); 164 evt.finishTemplate(t); 165 } 166 catch (Throwable e) 167 { 168 throw WebmanExceptionHandler.getException(e); 170 } 171 } 172 173 180 public boolean isHandler (TKEvent evt) 181 { 182 return evt.getName().equalsIgnoreCase("ST_EXT_MODIFY"); 183 } 184 185 } 186 | Popular Tags |