1 28 29 package com.opencms.workplace; 30 31 import org.opencms.file.CmsObject; 32 import org.opencms.file.CmsResource; 33 import org.opencms.file.CmsResourceFilter; 34 import org.opencms.main.CmsException; 35 import org.opencms.main.OpenCms; 36 import org.opencms.util.CmsDateUtil; 37 38 import com.opencms.core.I_CmsSession; 39 import com.opencms.legacy.CmsLegacyException; 40 import com.opencms.legacy.CmsXmlTemplateLoader; 41 42 import java.util.Hashtable ; 43 44 53 54 public class CmsRestoreResource extends CmsWorkplaceDefault { 55 56 67 68 public byte[] getContent(CmsObject cms, String templateFile, String elementName, 69 Hashtable parameters, String templateSelector) throws CmsException { 70 I_CmsSession session = CmsXmlTemplateLoader.getSession(cms.getRequestContext(), true); 71 CmsXmlWpTemplateFile xmlTemplateDocument = new CmsXmlWpTemplateFile(cms, templateFile); 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("restore"); 82 session.removeValue("lasturl"); 83 } 84 85 String lasturl = getLastUrl(cms, parameters); 87 String restore = (String )parameters.get("restore"); 88 if (restore != null) { 89 session.putValue("restore", restore); 90 } 91 restore = (String )session.getValue("restore"); 92 String filename = (String )parameters.get(CmsWorkplaceDefault.C_PARA_RESOURCE); 93 if (filename != null) { 94 session.putValue(CmsWorkplaceDefault.C_PARA_RESOURCE, filename); 95 } 96 filename = (String )session.getValue(CmsWorkplaceDefault.C_PARA_RESOURCE); 97 98 String version = (String )session.getValue("version"); 99 String action = (String )parameters.get("action"); 100 101 CmsResource file = null; 102 if (filename.endsWith("/")) { 103 file = cms.readFolder(filename, CmsResourceFilter.IGNORE_EXPIRATION); 104 } else { 105 file = cms.readResource(filename, CmsResourceFilter.IGNORE_EXPIRATION); 106 } 107 if (restore != null) { 110 if (action != null) { 111 try { 113 if (OpenCms.getWorkplaceManager().autoLockResources()) { 115 if (cms.getLock(filename).isNullLock()) { 116 cms.lockResource(filename); 118 } 119 } 120 cms.restoreResourceBackup(cms.getSitePath(file), Integer.parseInt(version)); 121 session.removeValue(CmsWorkplaceDefault.C_PARA_RESOURCE); 122 try { 125 if (lasturl == null || "".equals(lasturl)) { 126 CmsXmlTemplateLoader.getResponse(cms.getRequestContext()).sendCmsRedirect(getConfigFile(cms).getWorkplaceActionPath() 127 + CmsWorkplaceAction.getExplorerFileUri(CmsXmlTemplateLoader.getRequest(cms.getRequestContext()).getOriginalRequest())); 128 } else { 129 CmsXmlTemplateLoader.getResponse(cms.getRequestContext()).sendRedirect(lasturl); 130 } 131 } catch (Exception e) { 132 throw new CmsLegacyException("Redirect fails :" 133 + getConfigFile(cms).getWorkplaceActionPath() 134 + CmsWorkplaceAction.getExplorerFileUri(CmsXmlTemplateLoader.getRequest(cms.getRequestContext()).getOriginalRequest()), e); 135 } 136 return null; 137 } catch (CmsException e) { 138 session.removeValue(CmsWorkplaceDefault.C_PARA_RESOURCE); 139 xmlTemplateDocument.setData("details", CmsException.getStackTraceAsString(e)); 140 xmlTemplateDocument.setData("lasturl", lasturl); 141 return startProcessing(cms, xmlTemplateDocument, "", parameters, "error"); 142 } 143 } else { 144 template = "wait"; 145 } 146 } 147 if (action == null) { 149 xmlTemplateDocument.setData("CHANGEDATE", CmsDateUtil.getDateTimeShort(file.getDateLastModified())); 150 xmlTemplateDocument.setData("USER", cms.readUser(file.getUserLastModified()).getName()); 151 xmlTemplateDocument.setData("FILENAME", file.getName()); 152 } 153 154 return startProcessing(cms, xmlTemplateDocument, "", parameters, template); 156 } 157 158 168 169 public boolean isCacheable(CmsObject cms, String templateFile, String elementName, 170 Hashtable parameters, String templateSelector) { 171 return false; 172 } 173 } 174
| Popular Tags
|