1 28 29 30 package com.opencms.workplace; 31 32 import org.opencms.file.CmsObject; 33 import org.opencms.file.CmsPropertyDefinition; 34 import org.opencms.file.types.I_CmsResourceType; 35 import org.opencms.i18n.CmsEncoder; 36 import org.opencms.main.CmsException; 37 import org.opencms.main.CmsLog; 38 import org.opencms.main.OpenCms; 39 40 import com.opencms.template.A_CmsXmlContent; 41 import com.opencms.template.CmsXmlTemplateFile; 42 43 import java.util.Hashtable ; 44 import java.util.Iterator ; 45 import java.util.List ; 46 47 57 58 public class CmsAdminProperties extends CmsWorkplaceDefault { 59 60 61 62 private static final String C_TAG_RESTYPE = "restype"; 63 64 65 66 private static final String C_TYPELISTENTRY = "typelistentry"; 67 68 69 70 private static final String C_TAG_ALLENTRIES = "allentries"; 71 72 73 74 private static final String C_TAG_RESTYPEENTRY = "restypeentry"; 75 76 77 78 private static final String C_TAG_SEPARATORENTRY = "separatorentry"; 79 80 81 82 private static final String C_TAG_SCROLLERCONTENT = "scrollercontent"; 83 84 95 96 public byte[] getContent(CmsObject cms, String templateFile, String elementName, 97 Hashtable parameters, String templateSelector) throws CmsException { 98 if(CmsLog.getLog(this).isDebugEnabled() && C_DEBUG) { 99 CmsLog.getLog(this).debug("Getting content of element " + ((elementName==null)?"<root>":elementName)); 100 CmsLog.getLog(this).debug("Template file is: " + templateFile); 101 CmsLog.getLog(this).debug("Selected template section is: " + ((templateSelector==null)?"<default>":templateSelector)); 102 } 103 104 CmsXmlWpTemplateFile xmlTemplateDocument = new CmsXmlWpTemplateFile(cms, templateFile); 107 CmsXmlLanguageFile lang = xmlTemplateDocument.getLanguageFile(); 108 String action = (String )parameters.get("action"); 109 String resTypeName = (String )parameters.get("restype"); 110 String propDefName = (String )parameters.get("propdef"); 111 xmlTemplateDocument.setData("RESTYPE", resTypeName); 112 if("new".equals(action)) { 113 templateSelector = "newtype"; 114 String name = (String )parameters.get("NAME"); 115 if(name == null || name.equals("")) { 116 117 118 } 120 else { 121 try { 122 cms.createPropertyDefinition(name); 123 templateSelector = ""; 124 } 125 catch(CmsException e) { 126 StringBuffer errmesg = new StringBuffer (); 127 errmesg.append(lang.getLanguageValue("error.reason.newprop1") + " '" 128 + name + "' " + lang.getLanguageValue("error.reason.newprop2") 129 + " '" + resTypeName + "' " 130 + lang.getLanguageValue("error.reason.newprop3") + "\n\n"); 131 errmesg.append(CmsException.getStackTraceAsString(e)); 132 xmlTemplateDocument.setData("NEWDETAILS", errmesg.toString()); 133 templateSelector = "newerror"; 134 } 135 } 136 } 137 else { 138 if("delete".equals(action)) { 139 if("true".equals(parameters.get("sure"))) { 140 141 cms.deletePropertyDefinition(propDefName); 143 templateSelector = ""; 144 } 145 else { 146 templateSelector = "RUsuredelete"; 147 } 148 xmlTemplateDocument.setData("PROPERTY_NAME", propDefName); 149 } 150 } 151 152 return startProcessing(cms, xmlTemplateDocument, elementName, parameters, 154 templateSelector); 155 } 156 157 170 171 public String getDatatypes(CmsObject cms, A_CmsXmlContent doc, CmsXmlLanguageFile lang, 172 Hashtable parameters, Object callingObj) throws CmsException { 173 174 StringBuffer result = new StringBuffer (); 175 CmsXmlTemplateFile templateFile = (CmsXmlTemplateFile)doc; 176 177 List allResTypes = OpenCms.getResourceManager().getResourceTypes(); 178 for (int i=0; i<allResTypes.size(); i++) { 179 I_CmsResourceType type = (I_CmsResourceType)allResTypes.get(i); 181 result.append(getResourceEntry(cms, doc, lang, parameters, callingObj, type)); 182 if(i < (allResTypes.size() - 1)) { 183 result.append(templateFile.getProcessedDataValue(C_TAG_SEPARATORENTRY, 184 callingObj)); 185 } 186 } 187 templateFile.setData(C_TAG_ALLENTRIES, result.toString()); 188 return templateFile.getProcessedDataValue(C_TAG_SCROLLERCONTENT, callingObj); 189 } 190 191 204 205 private String getResourceEntry(CmsObject cms, A_CmsXmlContent doc, 206 CmsXmlLanguageFile lang, Hashtable parameters, Object callingObject, 207 I_CmsResourceType resType) throws CmsException { 208 StringBuffer output = new StringBuffer (); 209 CmsXmlWpTemplateFile templateFile = (CmsXmlWpTemplateFile)doc; 210 List properties = cms.readAllPropertyDefinitions(); 211 templateFile.setData(C_TAG_RESTYPE, resType.getTypeName()); 212 213 templateFile.setData(C_TAG_RESTYPE + "_esc", 214 CmsEncoder.escapeWBlanks(resType.getTypeName(), 215 cms.getRequestContext().getEncoding())); 216 output.append(templateFile.getProcessedDataValue(C_TAG_RESTYPEENTRY, callingObject)); 217 Iterator i = properties.iterator(); 218 while (i.hasNext()) { 219 CmsPropertyDefinition propdef = (CmsPropertyDefinition)i.next(); 220 templateFile.setData("PROPERTY_NAME", propdef.getName()); 221 templateFile.setData("PROPERTY_NAME_ESC", CmsEncoder.escapeWBlanks(propdef.getName(), 222 cms.getRequestContext().getEncoding())); 223 output.append(templateFile.getProcessedDataValue(C_TYPELISTENTRY, callingObject)); 224 } 225 return output.toString(); 226 } 227 228 238 239 public boolean isCacheable(CmsObject cms, String templateFile, String elementName, 240 Hashtable parameters, String templateSelector) { 241 return false; 242 } 243 } 244
| Popular Tags
|