1 package de.webman.content.eventhandler; 2 3 import com.teamkonzept.web.*; 4 import com.teamkonzept.webman.*; 5 import de.webman.acl.*; 6 import com.teamkonzept.webman.mainint.*; 7 import de.webman.content.*; 8 import de.webman.content.workflow.*; 9 import de.webman.content.workflow.db.*; 10 import com.teamkonzept.webman.mainint.db.queries.*; 11 import com.teamkonzept.webman.mainint.events.*; 12 import com.teamkonzept.lib.*; 13 import com.teamkonzept.field.*; 14 import com.teamkonzept.field.db.*; 15 import com.teamkonzept.db.*; 16 import de.webman.util.legacy.Legacy; 17 18 import java.sql.*; 19 import java.util.*; 20 21 import org.apache.log4j.Category; 22 31 public class CEBrowseHandler extends DefaultEventHandler implements DatabaseDefaults, ParameterTypes, FrameConstants 32 { 33 34 private static final Category CAT = Category.getInstance(CEBrowseHandler.class); 35 36 37 private CEBrowseHandler() 38 {} 39 40 41 private static CEBrowseHandler instance = new CEBrowseHandler(); 42 43 44 public static CEBrowseHandler getInstance() 45 { 46 return instance; 47 } 48 49 50 51 52 public static int getAnzahlBlaettern(String count) 53 { 54 if ((count == null) 55 || (count.length() != 0)) 56 { 57 try 58 { 59 PropertyManager man = PropertyManager.getPropertyManager("LEAF_THROUGH"); 60 String gen = man.getValue("COUNT", "0"); 61 return Integer.parseInt(gen); 62 } 63 catch (Throwable t) 64 { 65 return 0; 66 } 67 } 68 else 69 return(Integer.parseInt(count)); 70 } 71 72 73 74 private static void blaetter(TKEvent evt,ContentContext ce,TKHTMLTemplate t, int size) 75 { 76 int start = 0; 77 int count = 0; 78 79 if (evt.getParameter("RICHTUNG", evt.getName()) != null) 80 { 81 if (evt.getParameter("CONLIST_START",evt.getName() ) != null) 82 start = Integer.parseInt(evt.getParameter("CONLIST_START", evt.getName())); 83 count = getAnzahlBlaettern(evt.getParameter("CONLIST_COUNT", evt.getName())); 84 switch (Integer.parseInt(evt.getParameter("RICHTUNG", evt.getName()))) 85 { 86 case -2 : start = 0; 87 break; 88 case -1 : 89 if (start > count) 90 start = start - count; 91 else 92 start = 0; 93 break; 94 case 1 : 95 start = start + count; 96 if (start + count > size) 97 start = size - count; 98 break; 99 case 2 : 100 if (size > count) 101 start = size - count; 102 else 103 start = 0; 104 break; 105 default : 106 break; 107 } 108 ce.conlist_start = Integer.toString(start); 109 ce.conlist_count = Integer.toString(count); 110 t.set("CONLIST_START", ce.conlist_start); 111 t.set("CONLIST_COUNT", ce.conlist_count); 112 113 } 114 else 115 { 116 if (ce.conlist_count == null) 117 { 118 ce.conlist_count = Integer.toString(getAnzahlBlaettern(null)); 119 ce.conlist_start = Integer.toString(0); 120 t.set("CONLIST_START", ce.conlist_start); 121 t.set("CONLIST_COUNT", ce.conlist_count); 122 123 } 124 } 125 } 126 127 130 private static void blaetternreset(ContentContext context) 131 { 132 if (context.conlist_start != null) 133 context.conlist_start = "0"; 134 } 135 136 139 public void handleEvent(TKEvent evt) throws TKException 140 { 141 try 142 { 143 if ((evt.getParameter("SORT_NEW", evt.getName()) != null) && (evt.getParameter("SORT_NEW", evt.getName()).equals( "TRUE" ))) 145 { 146 147 TKHTMLTemplate frame = evt.getPrepHTMLTemplate( "f_ce.tmpl" ); 148 HTMLUtils.fillFrameSet( frame, LEFT_FRAME_WIDTH, "CE_SHOWLIST", "CE_GROUP_LIST" ); 149 TKVector openNodes = new TKVector(); if( evt.getParams().hasMultiple( PARAMETER, "OPEN_NODES" ) ) { 152 openNodes = evt.getParams().getVector( PARAMETER, "OPEN_NODES" ); 153 } 154 else { 155 if (evt.getParameter(PARAMETER, "OPEN_NODES") != null) 156 openNodes.put( 0, evt.getParameter( PARAMETER, "OPEN_NODES" ) ); 157 else 158 openNodes.put( 0,"-1"); 159 } 160 TKStandardIterator iterator1 = new TKStandardIterator( openNodes, frame.getListIterator(), "OPEN_NODES", "OPEN_NODES" ); 161 frame.setListIterator( iterator1 ); 162 163 164 ContentContext ce = null; 165 ce = ContentContext.reCalculateContext(evt.getParameter(PARAMETER, "NAVIGATION_CONTEXT")); 166 ce.sort_by = evt.getParameter("SORT_BY", evt.getName()); 167 ce.sortUpDown = evt.getParameter("SORT_UP_DOWN", evt.getName()); 168 ce.fillIntoTemplate(frame); 169 frame.set("NAVIGATION_CONTEXT",ce.calculateNavContext()); 170 171 evt.finishTemplate(frame); 172 return; 173 } 174 175 boolean subtree; 177 CEUtils.checkEvent(evt); 178 179 if (evt.getName().equalsIgnoreCase("CE_GROUP_LIST")) 180 { 181 subtree = false; 182 } 183 else if (evt.getName().equalsIgnoreCase("CE_TREE")) 184 { 185 subtree = true; 186 } 187 else 188 { 189 subtree = evt.getParameter(PARAMETER, "EVT_SUBTREE") != null; 190 } 191 192 TKHTMLTemplate t = evt.getPrepHTMLTemplate( "ce_conList.tmpl" ); 193 194 CEUtils.keepSelectedContents(evt, t); 196 197 ContentContext ceContext = null; 199 if (evt.getParameter(PARAMETER, "RECALCULATE") != null) 200 { 201 ceContext = ContentContext.reCalculateContext(evt.getParameter(PARAMETER, "NAVIGATION_CONTEXT")); 202 if (evt.getName().equalsIgnoreCase("CE_SEARCH")) 203 { 204 ceContext.searchString = evt.getParameter(PARAMETER, "SEARCHSTRING"); 205 ceContext.searchKennung = evt.getParameter(PARAMETER, "S_KENNUNG"); 206 ceContext.subtree = subtree; 207 blaetternreset(ceContext); 208 } 209 ceContext.fillIntoTemplate(t); 210 subtree = ceContext.subtree; 211 } 212 else 213 { 214 215 ceContext = CEUtils.keepCEContext(evt, t); 216 ceContext.subtree = subtree; 217 218 } 219 220 boolean isGroup = ceContext.conNodeType.intValue() == GROUP_INTEGER.intValue(); 222 223 VersionStatics statics = VersionStatics.setup(); 225 226 TKHashtable statusPool = VersionStatus.selectSingles (statics,false); 229 230 TKHashtable filterStatusPool = VersionStatus.selectSingles (statics,!isGroup ); 233 234 TKHashtable filter = null; 236 237 if (ceContext.filterId.intValue() > 0) 239 { 240 VersionStatusFilter f = 241 (VersionStatusFilter) statics.getFilters().get (ceContext.filterId); 242 if (f != null) 243 { 244 filter = f.makeFilter (t,filterStatusPool); 245 ceContext.filterMode = f.filter_mode == VersionStatusFilter.SOURCE_MODE_ID? "SRC" : "DEST"; 246 } 247 248 } else if (ceContext.filterId.intValue() < 0) 249 { 250 filter = VersionSelection.makeContentFilter 252 (t,filterStatusPool,evt.getParams().getClass (PARAMETER)); 253 } 254 255 if (filter == null) 257 { 258 filter = VersionSelection.initContentFilter (statusPool); 259 ceContext.filterMode = "SRC"; 260 t.set("FILTER_MODE",ceContext.filterMode); 261 VersionSelection.fillFilterIntoTemplate (t,statusPool,filter); 262 } 263 264 TKVector allInstances = VersionCache.getVersionInfo(ceContext, subtree, ceContext.searchKennung != null && ceContext.searchKennung.length() != 0 ? true : false, ceContext.searchString); 265 266 TKVector filteredInstances = new TKVector(); 268 for (int i = 0; i < allInstances.size(); i++) 269 { 270 Content c = (Content) allInstances.elementAt(i); 271 272 if (c.filterTransitions(filter, ceContext.filterMode)) 273 { 274 filteredInstances.addElement(c); 275 } 276 } 277 278 CAT.debug("filter done"); 279 280 283 t.setListIterator (new TKStandardPluginIterator 286 ("VERSION_STATUS","STATUS",filterStatusPool,true,t.getListIterator())); 287 288 290 t.setListIterator (new TKStandardPluginIterator 291 ("MUTIPLE_STADIEN",null,VersionStatus.selectNotNewVersion(statics),false,t.getListIterator())); 292 293 t.setListIterator (new TKStandardPluginIterator 295 ("PREDEFINED_FILTERS",null,statics.getInternationalFilters(),true,t.getListIterator())); 296 297 blaetter(evt, ceContext,t, filteredInstances.size()); 299 300 t.setListIterator( new TKStandardPluginIterator 302 ("CONTENTS_PER_NODE", null, filteredInstances, false, t.getListIterator())); 303 304 305 if (allInstances.size() == 0) t.set ("NO_CONTENTS_PER_NODE", Boolean.TRUE); 306 t.set("CONTENTS_PER_NODE_SIZE", Integer.toString(filteredInstances.size())); 307 308 LoginFactory factory = LoginFactory.getInstance(); 310 Login login = factory.getLogin(evt.getRemoteUser()); 311 Event event = EventFactory.getInstance().getEvent("CE_NEW_NODE"); 312 if (login.isAllowed(event.getID(), ContextConstants.CONTENT_EDIT)) 313 { 314 t.set("CE_NEW_NODE", "1"); 315 } 316 event = EventFactory.getInstance().getEvent("CE_COMPACT"); 317 if (login.isAllowed(event.getID(), ContextConstants.CONTENT_EDIT)) 318 { 319 t.set("CE_COMPACT", "1"); 320 } 321 event = EventFactory.getInstance().getEvent("CE_SEARCH"); 322 if (login.isAllowed(event.getID(), ContextConstants.CONTENT_EDIT)) 323 { 324 t.set("CE_SEARCH", "1"); 325 } 326 event = EventFactory.getInstance().getEvent("CE_SWITCH_MUTIPLE"); 327 if (event != null && login.isAllowed(event.getID(), ContextConstants.CONTENT_EDIT)) 328 { 329 t.set("CE_SWITCH_MUTIPLE", "1"); 330 } 331 if (subtree) t.set ("SUBTREE",new Boolean (subtree)); 333 t.set("NAVIGATION_CONTEXT",ceContext.calculateNavContext()); 335 336 if (evt.getParameter(PARAMETER, "SELECT_SEARCH_RESULTS") != null && 337 Boolean.valueOf(evt.getParameter(PARAMETER, "SELECT_SEARCH_RESULTS")).booleanValue()) 338 { 339 t.set("SELECT_SEARCH_RESULTS", Boolean.TRUE.toString()); 340 } 341 342 TreeUtils.keepOpenNodes( evt, t ); 343 evt.finishTemplate(t); 344 } 345 catch (Throwable e) 346 { 347 throw WebmanExceptionHandler.getException(e); 349 } 350 } 351 352 public boolean isHandler(TKEvent evt) 353 { 354 return (evt.getName().equalsIgnoreCase("CE_GROUP_LIST") || evt.getName().equalsIgnoreCase("CE_TREE") 355 || evt.getName().equalsIgnoreCase("CE_SEARCH")); 356 357 } 358 } 359 | Popular Tags |