1 28 29 package com.opencms.workplace; 30 31 import org.opencms.file.CmsObject; 32 import org.opencms.file.CmsRequestContext; 33 import org.opencms.main.CmsException; 34 import org.opencms.main.OpenCms; 35 import org.opencms.module.CmsModule; 36 import org.opencms.util.CmsDateUtil; 37 38 import com.opencms.legacy.CmsLegacyException; 39 import com.opencms.template.A_CmsXmlContent; 40 41 import java.lang.reflect.InvocationTargetException ; 42 import java.lang.reflect.Method ; 43 import java.util.Hashtable ; 44 import java.util.Vector ; 45 46 import org.w3c.dom.Element ; 47 48 59 60 public class CmsModulelist extends A_CmsWpElement { 61 62 79 public Object handleSpecialWorkplaceTag(CmsObject cms, Element n, A_CmsXmlContent doc, 80 Object callingObject, Hashtable parameters, CmsXmlLanguageFile lang) throws CmsException { 81 82 String listMethod = n.getAttribute(CmsWorkplaceDefault.C_MODULELIST_METHOD); 84 85 CmsXmlWpTemplateFile listdef = getModulelistDefinitions(cms); 87 88 Method callingMethod = null; 90 Vector list = new Vector (); 91 try { 92 callingMethod = callingObject.getClass().getMethod(listMethod, new Class [] { 93 CmsObject.class, CmsXmlLanguageFile.class 94 }); 95 list = (Vector )callingMethod.invoke(callingObject, new Object [] { 96 cms, lang 97 }); 98 } 99 catch(NoSuchMethodException exc) { 100 101 throwException("Could not find method " + listMethod + " in calling class " 103 + callingObject.getClass().getName() 104 + " for generating projectlist content.", CmsLegacyException.C_NOT_FOUND); 105 } 106 catch(InvocationTargetException targetEx) { 107 108 Throwable e = targetEx.getTargetException(); 111 if(!(e instanceof CmsException)) { 112 113 throwException("User method " + listMethod + " in calling class " 115 + callingObject.getClass().getName() + " throwed an exception. " 116 + e); 117 } 118 else { 119 120 throw (CmsException)e; 123 } 124 } 125 catch(Exception exc2) { 126 throwException("User method " + listMethod + " in calling class " 127 + callingObject.getClass().getName() 128 + " was found but could not be invoked. " + exc2, CmsLegacyException.C_XML_NO_USER_METHOD); 129 } 130 131 CmsRequestContext reqCont = cms.getRequestContext(); 133 if(reqCont.currentProject().isOnlineProject()) { 134 listdef.setData("menue", "menueonline"); 135 } 136 else { 137 listdef.setData("menue", "modulemenue"); 138 } 139 140 StringBuffer result = new StringBuffer (); 142 for(int i = 0;i < list.size();i++) { 143 String currentModule = (String )list.elementAt(i); 144 listdef.setData(CmsWorkplaceDefault.C_MODULELIST_NAME, currentModule); 145 listdef.setData(CmsWorkplaceDefault.C_MODULELIST_NICE_NAME, OpenCms.getModuleManager().getModule(currentModule).getNiceName()); 146 listdef.setData(CmsWorkplaceDefault.C_MODULELIST_VERSION, OpenCms.getModuleManager().getModule(currentModule).getVersion().toString()); 147 listdef.setData(CmsWorkplaceDefault.C_MODULELIST_AUTHOR, OpenCms.getModuleManager().getModule(currentModule).getAuthorName()); 148 listdef.setData(CmsWorkplaceDefault.C_MODULELIST_DATECREATED, CmsDateUtil.getDateShort(OpenCms.getModuleManager().getModule(currentModule).getDateCreated())); 149 if(OpenCms.getModuleManager().getModule(currentModule).getDateInstalled() == CmsModule.DEFAULT_DATE) { 150 listdef.setData(CmsWorkplaceDefault.C_MODULELIST_DATEUPLOADED, " - "); 151 } 152 else { 153 listdef.setData(CmsWorkplaceDefault.C_MODULELIST_DATEUPLOADED, CmsDateUtil.getDateShort(OpenCms.getModuleManager().getModule(currentModule).getDateInstalled())); 154 } 155 listdef.setData(CmsWorkplaceDefault.C_MODULELIST_IDX, new Integer (i).toString()); 156 result.append(listdef.getProcessedDataValue(CmsWorkplaceDefault.C_TAG_MODULELIST_DEFAULT, callingObject, parameters)); 157 } 158 return result.toString(); 159 } 160 161 171 172 public boolean isCacheable(CmsObject cms, String templateFile, String elementName, 173 Hashtable parameters, String templateSelector) { 174 return false; 175 } 176 } 177
| Popular Tags
|