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 54 55 public class CmsLockChange extends CmsWorkplaceDefault { 56 57 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 72 String template = null; 74 75 String initial = (String )parameters.get(CmsWorkplaceDefault.C_PARA_INITIAL); 77 if(initial != null) { 78 79 session.removeValue(CmsWorkplaceDefault.C_PARA_RESOURCE); 81 session.removeValue("lasturl"); 82 } 83 84 String lasturl = getLastUrl(cms, parameters); 86 String lock = (String )parameters.get(CmsWorkplaceDefault.C_PARA_LOCK); 87 String filename = (String )parameters.get(CmsWorkplaceDefault.C_PARA_RESOURCE); 88 if(filename != null) { 89 session.putValue(CmsWorkplaceDefault.C_PARA_RESOURCE, filename); 90 } 91 92 filename = (String )session.getValue(CmsWorkplaceDefault.C_PARA_RESOURCE); 95 CmsResource file = cms.readResource(filename); 96 97 if(file.isFile()) { 99 template = "file"; 100 } 101 else { 102 template = "folder"; 103 if (! filename.endsWith("/")) { 104 filename += "/"; 105 } 106 } 107 Hashtable startSettings = (Hashtable )cms.getRequestContext().currentUser().getAdditionalInfo(CmsUserSettings.ADDITIONAL_INFO_STARTSETTINGS); 108 String showLockDialog = "off"; 109 if(startSettings!=null){ 110 showLockDialog = (String )startSettings.get(I_CmsConstants.C_START_LOCKDIALOG); 111 } 112 if(lock == null && !"on".equals(showLockDialog)) { 113 lock = "true"; 114 } 115 if(lock != null) { 116 if(lock.equals("true")) { 117 session.removeValue(CmsWorkplaceDefault.C_PARA_RESOURCE); 118 try{ 119 cms.changeLock(filename); 122 } catch (CmsException e){ 123 CmsXmlWpTemplateFile xmlTemplateDocument = new CmsXmlWpTemplateFile(cms, templateFile); 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 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 } 144 else { 145 CmsXmlTemplateLoader.getResponse(cms.getRequestContext()).sendRedirect(lasturl); 146 } 147 } 148 catch(Exception e) { 149 throw new CmsLegacyException("Redirect fails :" 150 + getConfigFile(cms).getWorkplaceActionPath() 151 + CmsWorkplaceAction.getExplorerFileUri(CmsXmlTemplateLoader.getRequest(cms.getRequestContext()).getOriginalRequest()), e); 152 } 153 return null; 154 } 155 CmsXmlWpTemplateFile xmlTemplateDocument = new CmsXmlWpTemplateFile(cms, 156 templateFile); 157 xmlTemplateDocument.setData("FILENAME", file.getName()); 158 159 return startProcessing(cms, xmlTemplateDocument, "", parameters, template); 161 } 162 163 173 174 public boolean isCacheable(CmsObject cms, String templateFile, String elementName, 175 Hashtable parameters, String templateSelector) { 176 return false; 177 } 178 } 179 180
| Popular Tags
|