1 28 29 30 package com.opencms.workplace; 31 32 import org.opencms.file.CmsObject; 33 import org.opencms.file.CmsResource; 34 import org.opencms.main.CmsException; 35 import org.opencms.util.CmsDateUtil; 36 37 import com.opencms.core.I_CmsSession; 38 import com.opencms.legacy.CmsLegacyException; 39 import com.opencms.legacy.CmsXmlTemplateLoader; 40 41 import java.util.Hashtable ; 42 43 52 53 public class CmsUndochanges extends CmsWorkplaceDefault { 54 55 66 67 public byte[] getContent(CmsObject cms, String templateFile, String elementName, 68 Hashtable parameters, String templateSelector) throws CmsException { 69 I_CmsSession session = CmsXmlTemplateLoader.getSession(cms.getRequestContext(), true); 70 CmsXmlWpTemplateFile xmlTemplateDocument = new CmsXmlWpTemplateFile(cms, templateFile); 71 72 String template = null; 74 75 String initial = (String )parameters.get(CmsWorkplaceDefault.C_PARA_INITIAL); 77 if(initial != null) { 78 session.removeValue(CmsWorkplaceDefault.C_PARA_RESOURCE); 80 session.removeValue("undochanges"); 81 session.removeValue("lasturl"); 82 } 83 String lasturl = getLastUrl(cms, parameters); 85 String undochanges = (String )parameters.get("undochanges"); 86 if(undochanges != null) { 87 session.putValue("undochanges", undochanges); 88 } 89 undochanges = (String )session.getValue("undochanges"); 90 String filename = (String )parameters.get(CmsWorkplaceDefault.C_PARA_RESOURCE); 91 if(filename != null) { 92 session.putValue(CmsWorkplaceDefault.C_PARA_RESOURCE, filename); 93 } 94 filename = (String )session.getValue(CmsWorkplaceDefault.C_PARA_RESOURCE); 95 String action = (String )parameters.get("action"); 96 97 CmsResource file = null; 98 if(filename.endsWith("/")){ 99 file = cms.readFolder(filename); 100 } else { 101 file = cms.readResource(filename); 102 } 103 if(undochanges != null){ 106 if(action != null) { 107 try{ 109 cms.undoChanges(cms.getSitePath(file), true); 110 session.removeValue(CmsWorkplaceDefault.C_PARA_RESOURCE); 111 try { 114 if(lasturl == null || "".equals(lasturl)) { 115 CmsXmlTemplateLoader.getResponse(cms.getRequestContext()).sendCmsRedirect(getConfigFile(cms).getWorkplaceActionPath() 116 + CmsWorkplaceAction.getExplorerFileUri(CmsXmlTemplateLoader.getRequest(cms.getRequestContext()).getOriginalRequest())); 117 }else { 118 CmsXmlTemplateLoader.getResponse(cms.getRequestContext()).sendRedirect(lasturl); 119 } 120 }catch(Exception e) { 121 throw new CmsLegacyException("Redirect fails :" 122 + getConfigFile(cms).getWorkplaceActionPath() 123 + CmsWorkplaceAction.getExplorerFileUri(CmsXmlTemplateLoader.getRequest(cms.getRequestContext()).getOriginalRequest()), e); 124 } 125 return null; 126 } catch(CmsException e){ 127 session.removeValue(CmsWorkplaceDefault.C_PARA_RESOURCE); 128 xmlTemplateDocument.setData("details", CmsException.getStackTraceAsString(e)); 129 xmlTemplateDocument.setData("lasturl", lasturl); 130 return startProcessing(cms, xmlTemplateDocument, "", parameters, "error"); 131 } 132 } else { 133 template = "wait"; 134 } 135 } 136 if(action == null) { 138 xmlTemplateDocument.setData("CHANGEDATE", CmsDateUtil.getDateTimeShort(file.getDateLastModified())); 139 xmlTemplateDocument.setData("USER", cms.readUser(file.getUserLastModified()).getName()); 140 xmlTemplateDocument.setData("FILENAME", file.getName()); 141 } 142 143 return startProcessing(cms, xmlTemplateDocument, "", parameters, template); 145 } 146 147 157 158 public boolean isCacheable(CmsObject cms, String templateFile, String elementName, 159 Hashtable parameters, String templateSelector) { 160 return false; 161 } 162 } 163 | Popular Tags |