1 28 29 package com.opencms.workplace; 30 31 import org.opencms.file.CmsObject; 32 import org.opencms.main.CmsException; 33 import org.opencms.main.OpenCms; 34 35 import com.opencms.core.I_CmsSession; 36 import com.opencms.legacy.CmsLegacyException; 37 import com.opencms.legacy.CmsXmlTemplateLoader; 38 39 import java.util.Enumeration ; 40 import java.util.Hashtable ; 41 import java.util.Map ; 42 import java.util.Vector ; 43 44 52 public final class CmsReplace extends CmsWorkplaceDefault { 53 54 private static final String C_PARA_NEXT_STEP = "STEP"; 55 56 57 private static final int DEBUG = 0; 58 59 60 private String m_OldResourceName; 61 62 63 private String m_OldResourceType; 64 65 66 private String m_NextStep; 67 68 69 private String m_UploadResourceName; 70 71 72 private String m_UploadResourceType; 73 74 75 private byte[] m_UploadResourceContent; 76 77 78 private CmsXmlWpTemplateFile m_XmlTemplateDocument; 79 80 81 private String m_TemplateSection; 82 83 public byte[] getContent(CmsObject cms, String templateFile, String elementName, Hashtable parameters, String templateSelector) throws CmsException { 84 this.initTemplate(cms, parameters, templateFile); 86 87 this.readInput(cms, parameters); 89 90 if ("1".equals(m_NextStep)) { 91 m_TemplateSection = "step1"; 93 } else if ("2".equals(m_NextStep)) { 94 if (OpenCms.getWorkplaceManager().autoLockResources()) { 96 if (cms.getLock(m_OldResourceName).isNullLock()) { 97 cms.lockResource(m_OldResourceName); 99 } 100 } 101 102 int type = OpenCms.getResourceManager().getResourceType(m_UploadResourceType).getTypeId(); 104 cms.replaceResource(m_OldResourceName, type, m_UploadResourceContent, null); 105 107 this.clearSessionValues(CmsXmlTemplateLoader.getSession(cms.getRequestContext(), true)); 109 110 try { 111 CmsXmlTemplateLoader.getResponse(cms.getRequestContext()).sendCmsRedirect(getConfigFile(cms).getWorkplaceActionPath() + CmsWorkplaceAction.getExplorerFileUri(CmsXmlTemplateLoader.getRequest(cms.getRequestContext()).getOriginalRequest())); 113 } catch (Exception ex) { 114 throw new CmsLegacyException("Redirect failed: " + getConfigFile(cms).getWorkplaceActionPath() + CmsWorkplaceAction.getExplorerFileUri(CmsXmlTemplateLoader.getRequest(cms.getRequestContext()).getOriginalRequest()), ex); 115 } 116 } 117 118 return startProcessing(cms, m_XmlTemplateDocument, "", parameters, m_TemplateSection); 120 } 121 122 private void readInput(CmsObject cms, Hashtable theParameters) throws CmsException { 123 I_CmsSession session = CmsXmlTemplateLoader.getSession(cms.getRequestContext(), true); 124 125 m_OldResourceName = null; 127 m_OldResourceType = null; 128 m_UploadResourceName = null; 129 m_UploadResourceContent = null; 130 m_UploadResourceType = null; 131 m_NextStep = null; 132 133 135 if (theParameters.get(CmsWorkplaceDefault.C_PARA_INITIAL) != null) { 137 this.clearSessionValues(session); 138 } 139 140 142 m_OldResourceName = (String )theParameters.get(CmsWorkplaceDefault.C_PARA_RESOURCE); 144 if (m_OldResourceName != null) { 145 session.putValue(CmsWorkplaceDefault.C_PARA_RESOURCE, m_OldResourceName); 146 147 Map fileExtensions = OpenCms.getResourceManager().getExtensionMapping(); 149 String uploadFilenameExtension = m_OldResourceName.substring(m_OldResourceName.lastIndexOf('.') + 1).toLowerCase(); 150 151 if (fileExtensions != null) { 152 m_OldResourceType = (String )fileExtensions.get(uploadFilenameExtension); 153 } 154 155 if (m_OldResourceType == null) { 156 m_OldResourceType = ""; 158 } 159 160 session.putValue("OLD_TYPE", m_OldResourceType); 161 } else { 162 m_OldResourceName = (String )session.getValue(CmsWorkplaceDefault.C_PARA_RESOURCE); 163 m_OldResourceType = (String )session.getValue("OLD_TYPE"); 164 } 165 166 168 m_NextStep = (String )theParameters.get(CmsReplace.C_PARA_NEXT_STEP); 170 171 173 Enumeration allUploadedFilenames = CmsXmlTemplateLoader.getRequest(cms.getRequestContext()).getFileNames(); 175 while (allUploadedFilenames.hasMoreElements()) { 176 m_UploadResourceName = (String )allUploadedFilenames.nextElement(); 177 } 178 179 if (m_UploadResourceName != null) { 180 session.putValue("NEW_RESOURCE", m_UploadResourceName); 181 182 m_UploadResourceContent = CmsXmlTemplateLoader.getRequest(cms.getRequestContext()).getFile(m_UploadResourceName); 183 session.putValue(CmsWorkplaceDefault.C_PARA_FILECONTENT, m_UploadResourceContent); 184 } else { 185 m_UploadResourceName = (String )session.getValue("NEW_RESOURCE"); 186 m_UploadResourceContent = (byte[])session.getValue(CmsWorkplaceDefault.C_PARA_FILECONTENT); 187 } 188 m_XmlTemplateDocument.setData("NEW_RESOURCE", m_UploadResourceName); 189 190 192 m_UploadResourceType = (String )theParameters.get(CmsWorkplaceDefault.C_PARA_NEWTYPE); 194 if (m_UploadResourceType != null) { 195 session.putValue(CmsWorkplaceDefault.C_PARA_NEWTYPE, m_UploadResourceType); 196 } else { 197 m_UploadResourceType = (String )session.getValue(CmsWorkplaceDefault.C_PARA_NEWTYPE); 198 } 199 200 202 if (DEBUG > 0) { 203 System.out.println("\nnext step: " + m_NextStep); 204 System.out.println("old resource: " + m_OldResourceName); 205 System.out.println("old type: " + m_OldResourceType); 206 System.out.println("new resource: " + m_UploadResourceName); 207 System.out.println("new type: " + m_UploadResourceType); 208 } 209 } 210 211 private void initTemplate(CmsObject cms, Hashtable theParameters, String theTemplateFile) throws CmsException { 212 m_XmlTemplateDocument = null; 214 m_TemplateSection = null; 215 216 m_XmlTemplateDocument = new CmsXmlWpTemplateFile(cms, theTemplateFile); 218 } 219 220 223 private void clearSessionValues(I_CmsSession theSession) { 224 theSession.removeValue(CmsWorkplaceDefault.C_PARA_RESOURCE); theSession.removeValue("OLD_TYPE"); theSession.removeValue("NEW_RESOURCE"); theSession.removeValue(CmsWorkplaceDefault.C_PARA_FILECONTENT); } 230 231 234 public boolean isCacheable(CmsObject cms, String templateFile, String elementName, Hashtable parameters, String templateSelector) { 235 return false; 236 } 237 238 252 public int getResources(CmsObject cms, CmsXmlLanguageFile language, Vector resourceTypeIconNames, Vector resourceTypeFieldValues, Vector resourceTypeFieldNames, Hashtable parameters) throws CmsException { 253 CmsXmlTemplateLoader.getSession(cms.getRequestContext(), true); 254 Vector resourceTypeNames = new Vector (); 255 Vector resourceTypeValues = new Vector (); 256 int checkedRadioIndex = 0; 257 258 CmsXmlWpConfigFile configFile = new CmsXmlWpConfigFile(cms); 259 configFile.getWorkplaceIniData(resourceTypeNames, resourceTypeValues, "RESOURCETYPES", "RESOURCE"); 260 261 if (resourceTypeIconNames == null) { 263 resourceTypeIconNames = new Vector (); 264 } 265 266 if (resourceTypeFieldValues == null) { 267 resourceTypeFieldValues = new Vector (); 268 } 269 270 if (resourceTypeFieldNames == null) { 271 resourceTypeFieldNames = new Vector (); 272 } 273 274 int count = resourceTypeNames.size(); 275 for (int i = 0; i < count; i++) { 276 String currentResourceTypeFieldValue = (String )resourceTypeValues.elementAt(i); 277 String currentResourceTypeName = (String )resourceTypeNames.elementAt(i); 278 279 resourceTypeFieldValues.addElement(currentResourceTypeFieldValue); 281 282 resourceTypeIconNames.addElement("file_" + currentResourceTypeName); 284 285 String currentResourceTypeFieldName = null; 287 288 if (language != null) { 289 currentResourceTypeFieldName = language.getLanguageValue("fileicon." + currentResourceTypeName); 290 } else { 291 currentResourceTypeFieldName = currentResourceTypeName; 292 } 293 294 resourceTypeFieldNames.addElement(currentResourceTypeFieldName); 295 296 if (m_OldResourceType.equals(currentResourceTypeName)) { 300 checkedRadioIndex = i; 301 } 302 } 303 304 return checkedRadioIndex; 305 } 306 307 } 308 | Popular Tags |