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 CmsLock extends CmsWorkplaceDefault { 58 59 70 public byte[] getContent(CmsObject cms, String templateFile, String elementName, 71 Hashtable parameters, String templateSelector) throws CmsException { 72 I_CmsSession session = CmsXmlTemplateLoader.getSession(cms.getRequestContext(), true); 73 74 String template = null; 76 CmsXmlWpTemplateFile xmlTemplateDocument = new CmsXmlWpTemplateFile(cms, templateFile); 77 78 String initial = (String )parameters.get(CmsWorkplaceDefault.C_PARA_INITIAL); 80 if(initial != null) { 81 82 session.removeValue(CmsWorkplaceDefault.C_PARA_RESOURCE); 84 session.removeValue("lasturl"); 85 } 86 87 String lasturl = getLastUrl(cms, parameters); 89 String lock = (String )parameters.get(CmsWorkplaceDefault.C_PARA_LOCK); 90 String filename = (String )parameters.get(CmsWorkplaceDefault.C_PARA_RESOURCE); 91 if(filename != null) { 92 session.putValue(CmsWorkplaceDefault.C_PARA_RESOURCE, filename); 93 } 94 95 filename = (String )session.getValue(CmsWorkplaceDefault.C_PARA_RESOURCE); 98 CmsResource file = cms.readResource(filename); 99 100 if(file.isFile()) { 102 template = "file"; 103 } 104 else { 105 template = "folder"; 106 if (! filename.endsWith("/")) { 107 filename += "/"; 108 } 109 } 110 Hashtable startSettings = (Hashtable )cms.getRequestContext().currentUser().getAdditionalInfo(CmsUserSettings.ADDITIONAL_INFO_STARTSETTINGS); 111 String showLockDialog = "off"; 112 if(startSettings!=null){ 113 showLockDialog = (String )startSettings.get(I_CmsConstants.C_START_LOCKDIALOG); 114 } 115 if(lock == null && !"on".equals(showLockDialog)) { 116 lock = "true"; 117 } 118 if(lock != null) { 119 if(lock.equals("true")) { 120 session.removeValue(CmsWorkplaceDefault.C_PARA_RESOURCE); 121 try{ 122 cms.lockResource(filename); 123 } catch(CmsException e){ 124 if(e instanceof CmsSecurityException) { 125 template = "erroraccessdenied"; 126 xmlTemplateDocument.setData("details", file.getName()); 127 }else { 128 xmlTemplateDocument.setData("details", e.toString()); 129 template = "error"; 130 } 131 xmlTemplateDocument.setData("lasturl", lasturl); 132 xmlTemplateDocument.setData("FILENAME", file.getName()); 133 return startProcessing(cms, xmlTemplateDocument, "", parameters, template); 135 } 136 137 try { 139 if(lasturl == null || "".equals(lasturl)) { 140 CmsXmlTemplateLoader.getResponse(cms.getRequestContext()).sendCmsRedirect(getConfigFile(cms).getWorkplaceActionPath() 141 + CmsWorkplaceAction.getExplorerFileUri(CmsXmlTemplateLoader.getRequest(cms.getRequestContext()).getOriginalRequest())); 142 } 143 else { 144 CmsXmlTemplateLoader.getResponse(cms.getRequestContext()).sendRedirect(lasturl); 145 } 146 } 147 catch(Exception e) { 148 throw new CmsLegacyException("Redirect fails :" 149 + getConfigFile(cms).getWorkplaceActionPath() 150 + CmsWorkplaceAction.getExplorerFileUri(CmsXmlTemplateLoader.getRequest(cms.getRequestContext()).getOriginalRequest()), e); 151 } 152 return null; 153 } 154 } 155 xmlTemplateDocument.setData("FILENAME", file.getName()); 156 157 return startProcessing(cms, xmlTemplateDocument, "", parameters, template); 159 } 160 161 171 172 public boolean isCacheable(CmsObject cms, String templateFile, String elementName, 173 Hashtable parameters, String templateSelector) { 174 return false; 175 } 176 } 177 178
| Popular Tags
|