1 package de.webman.content.eventhandler ; 2 3 import com.teamkonzept.web.*; 4 import com.teamkonzept.webman.*; 5 import com.teamkonzept.webman.mainint.*; 6 import de.webman.acl .*; 7 import com.teamkonzept.webman.mainint.db.queries.*; 8 import com.teamkonzept.webman.mainint.events.*; 9 import com.teamkonzept.lib.*; 10 import com.teamkonzept.field.*; 11 import com.teamkonzept.field.db.*; 12 import com.teamkonzept.db.*; 13 import de.webman.content.workflow .*; 14 import java.sql.*; 15 import de.webman.template.jsp.JSPTemplate; 16 import de.webman.template.jsp.WSP; 17 import de.webman.template.xslt.XSLTTemplate; 18 import de.webman.content.eventhandler .*; 19 20 import org.w3c.dom.Document ; 21 import org.w3c.dom.Node ; 22 import org.w3c.dom.Element ; 23 24 import javax.servlet.http.HttpSession ; 25 26 38 public class CEEditHandler extends DefaultEventHandler implements DatabaseDefaults, ParameterTypes, FrameConstants 39 { 40 43 private CEEditHandler() 44 {} 45 46 47 private static CEEditHandler instance = new CEEditHandler(); 48 49 52 public static CEEditHandler getInstance() 53 { 54 return instance; 55 } 56 57 63 public void handleEvent (TKEvent evt) 64 throws TKException 65 { 66 TKBaseField field =null; 67 try 68 { 69 CEUtils.checkEvent(evt); 70 TKHTMLTemplate t = evt.getPrepHTMLTemplate("ce_fields.tmpl"); 71 ContentContext ceContext; 72 73 String doPreview = evt.getParameter(PARAMETER, "DO_PREVIEW"); 74 75 if (doPreview != null) 76 { 77 t.set("DO_PREVIEW", doPreview); 78 } 79 80 String event = evt.getName(); 81 if (event.equalsIgnoreCase("CE_REVERT")) event = null; 82 83 VersionStatics statics = VersionStatics.setup(); 85 86 if (evt.getName().equalsIgnoreCase("CE_CATFORM") || evt.getName().equalsIgnoreCase("CE_PRODFORM")) 88 { 89 ceContext = new ContentContext(evt.getParameter(PARAMETER, "NAVIGATION_CONTEXT")); 90 String iID = evt.getParameter(PARAMETER, "INSTANCE_ID"); 91 if (iID != null) 92 { 93 ceContext.instanceId = ceContext.string2Int(iID); 95 String nID = evt.getParameter(PARAMETER, "CONTENT_NODE_ID"); 96 ceContext.conNodeId = ceContext.string2Int(nID); 97 } 99 } 100 else 101 { 102 ceContext = new ContentContext (evt.getParams()); 103 } 104 Integer version = event == null ? new Integer (-1) : ceContext.string2Int (evt.getParameter("VERSION_ID",event)); 105 if (version.intValue() >= 0) ceContext.versionId = version; 106 107 if (ceContext.toStatusId.intValue() < 0) { 108 VersionStatus newStatus = VersionStatus.lookupNewContent(statics); 109 ceContext.toStatusId = newStatus == null ? new Integer (VersionStatus.defaultNewStatus) : new Integer (newStatus.status_id); 110 } 111 112 if (ceContext.conNodeName == null) 114 { 115 if (evt.getName().equalsIgnoreCase("CE_CATFORM") || evt.getName().equalsIgnoreCase("CE_PRODFORM")) 116 ceContext.conNodeName = evt.getParameter(PARAMETER, "NEW_GROUP_CONTENT_NAME"); 117 else 118 ceContext.conNodeName = ceContext.getParam ("NEW_GROUP_CONTENT_NAME"); 119 } 120 boolean neuerGroupContent = false; 121 if (ceContext.conNodeShortName == null) 122 { 123 if (evt.getName().equals("CE_CATFORM") || evt.getName().equals("CE_PRODFORM")) 124 ceContext.conNodeShortName = evt.getParameter(PARAMETER, "NEW_GROUP_CONTENT_SHORTNAME"); 125 else 126 ceContext.conNodeShortName = ceContext.getParam ("NEW_GROUP_CONTENT_SHORTNAME"); 127 neuerGroupContent = true; 128 } 129 if (!neuerGroupContent) 131 CEUtils.isValidPathname( ceContext.conNodeShortName ); 132 133 TKFormDBData data = new TKFormDBData( ceContext.formId.intValue() ); 135 TKFormDBInterface.Get( data ); 136 field = TKFieldRegistry.getFieldFromDB( data ); 137 if (ceContext.instanceId.intValue() == -1) 138 { 139 field.fillIntoTemplate( t, field.getDefault(), "" ); 140 } else if (ceContext.versionId.intValue() >= 0) 141 { 142 TKContentDBData cdata = new TKContentDBData (ceContext.instanceId.intValue(), ceContext.versionId.intValue()); 144 145 TKContentDBInterface.Get (cdata); 146 Object contentData = field.getDataFromDB( cdata ); 147 148 field.fillIntoTemplate( t, contentData, "" ); 149 151 } else { 152 throw new Exception ("doCEEdit: No transitionable version there"); 153 } 154 ceContext.fillIntoTemplate (t); 155 String groupContentID = evt.getParameter(PARAMETER,"GROUP_CONTENT_NODE_ID"); 157 if (groupContentID != null && groupContentID.length() > 0) 158 t.set( "UPBASE", CEUtils.getCurrentPath(new Integer (groupContentID))); 159 else 160 { 161 if (ceContext.conNodeId.intValue() != -1) 162 t.set( "UPBASE", CEUtils.getCurrentPath(ceContext.conNodeId ) ); 163 } 164 165 if (ceContext.getNavigationContext() != null) 166 { 167 ContentContext oldContext = new ContentContext(evt.getParameter(PARAMETER, "NAVIGATION_CONTEXT")); 168 t.set("NAVIGATION_CONTEXT", oldContext.calculateNavContext()); 169 } 170 if (evt.getName().equalsIgnoreCase("CE_VIEW")) 171 { 172 t.set("VIEW_ONLY", "true"); 173 } 174 WebManEvent.fillEventsIntoTemplate(evt.getRemoteUser(), t, ContextConstants.CONTENT_EDIT, Policy.CONTENT_TREE_ID, ceContext.conNodeId); 176 evt.finishTemplate(t); 177 } 178 catch (TKFieldDataDBError error) 179 { 180 Object [] data = {field.getShowName()}; 181 throw new TKException("Incompatible change", FORM_CHANGE, HIGH_SEVERITY, false, data, null); 183 } 184 catch (Throwable e) 185 { 186 throw WebmanExceptionHandler.getException(e); 188 } 189 } 190 191 public boolean isHandler(TKEvent evt) 192 { 193 return (evt.getName().equalsIgnoreCase("CE_EDIT") 194 || evt.getName().equalsIgnoreCase("CE_VIEW") 195 || evt.getName().equalsIgnoreCase("CE_REVERT") || 196 evt.getName().equalsIgnoreCase("CE_CONTENT_VERSION_EDIT")); 197 198 } 199 } 200 | Popular Tags |