1 28 29 package com.opencms.workplace; 30 31 import org.opencms.db.CmsUserSettings; 32 import org.opencms.file.CmsObject; 33 import org.opencms.file.CmsResource; 34 import org.opencms.main.CmsException; 35 import org.opencms.security.CmsSecurityException; 36 37 import com.opencms.core.I_CmsConstants; 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 56 57 public class CmsUnlock extends CmsWorkplaceDefault { 58 59 70 71 public byte[] getContent(CmsObject cms, String templateFile, String elementName, 72 Hashtable parameters, String templateSelector) throws CmsException { 73 74 I_CmsSession session = CmsXmlTemplateLoader.getSession(cms.getRequestContext(), true); 75 76 String template = null; 78 79 String initial = (String )parameters.get(CmsWorkplaceDefault.C_PARA_INITIAL); 81 if(initial != null) { 82 83 session.removeValue(CmsWorkplaceDefault.C_PARA_RESOURCE); 85 session.removeValue("lasturl"); 86 } 87 88 String lasturl = getLastUrl(cms, parameters); 90 String unlock = (String )parameters.get(CmsWorkplaceDefault.C_PARA_UNLOCK); 91 String filename = (String )parameters.get(CmsWorkplaceDefault.C_PARA_RESOURCE); 92 if(filename != null) { 93 session.putValue(CmsWorkplaceDefault.C_PARA_RESOURCE, filename); 94 } 95 96 filename = (String )session.getValue(CmsWorkplaceDefault.C_PARA_RESOURCE); 99 CmsResource file = cms.readResource(filename); 100 101 if(file.isFile()) { 103 template = "file"; 104 } 105 else { 106 template = "folder"; 107 if (! filename.endsWith("/")) { 108 filename += "/"; 109 } 110 } 111 Hashtable startSettings = (Hashtable )cms.getRequestContext().currentUser().getAdditionalInfo(CmsUserSettings.ADDITIONAL_INFO_STARTSETTINGS); 112 String showLockDialog = "off"; 113 if(startSettings!=null){ 114 showLockDialog = (String )startSettings.get(I_CmsConstants.C_START_LOCKDIALOG); 115 } 116 if (unlock == null && !"on".equals(showLockDialog)) { 117 unlock = "true"; 118 } 119 if (unlock != null) { 120 if (unlock.equals("true")) { 121 try { 122 cms.unlockResource(filename); 123 session.removeValue(CmsWorkplaceDefault.C_PARA_RESOURCE); 124 } catch (CmsException e) { 125 CmsXmlWpTemplateFile xmlTemplateDocument = new CmsXmlWpTemplateFile(cms, templateFile); 126 if (e instanceof CmsSecurityException) { 127 template = "erroraccessdenied"; 128 xmlTemplateDocument.setData("details", file.getName()); 129 } else { 130 template = "error"; 131 xmlTemplateDocument.setData("details", e.toString()); 132 } 133 xmlTemplateDocument.setData("lasturl", lasturl); 134 return startProcessing(cms, xmlTemplateDocument, "", parameters, template); 135 } 136 } 137 138 try { 140 if (lasturl == null || "".equals(lasturl)) { 141 CmsXmlTemplateLoader.getResponse(cms.getRequestContext()).sendCmsRedirect(getConfigFile(cms).getWorkplaceActionPath() 142 + CmsWorkplaceAction.getExplorerFileUri(CmsXmlTemplateLoader.getRequest(cms.getRequestContext()).getOriginalRequest())); 143 } else { 144 CmsXmlTemplateLoader.getResponse(cms.getRequestContext()).sendRedirect(lasturl); 145 } 146 } catch (Exception e) { 147 throw new CmsLegacyException("Redirect fails :" + getConfigFile(cms).getWorkplaceActionPath() 148 + CmsWorkplaceAction.getExplorerFileUri(CmsXmlTemplateLoader.getRequest(cms.getRequestContext()).getOriginalRequest()), e); 149 } 150 return null; 151 } 152 CmsXmlWpTemplateFile xmlTemplateDocument = new CmsXmlWpTemplateFile(cms, templateFile); 153 xmlTemplateDocument.setData("FILENAME", file.getName()); 154 155 return startProcessing(cms, xmlTemplateDocument, "", parameters, template); 157 } 158 159 160 170 171 public boolean isCacheable(CmsObject cms, String templateFile, String elementName, Hashtable parameters, String templateSelector) { 172 return false; 173 } 174 } 175 176 | Popular Tags |