1 28 29 30 package com.opencms.workplace; 31 32 import org.opencms.db.CmsUserSettings; 33 import org.opencms.file.CmsFile; 34 import org.opencms.file.CmsObject; 35 import org.opencms.file.CmsPropertyDefinition; 36 import org.opencms.file.CmsResource; 37 import org.opencms.i18n.CmsEncoder; 38 import org.opencms.main.CmsException; 39 import org.opencms.main.CmsLog; 40 41 import com.opencms.core.I_CmsSession; 42 import com.opencms.legacy.CmsXmlTemplateLoader; 43 44 import java.util.Hashtable ; 45 import java.util.List ; 46 import java.util.Vector ; 47 48 58 59 public class CmsDownloadBrowser extends A_CmsGalleryBrowser implements I_CmsFileListUsers { 60 61 72 73 public byte[] getContent(CmsObject cms, String templateFile, String elementName, Hashtable parameters, String templateSelector) throws CmsException { 74 if(CmsLog.getLog(this).isDebugEnabled() && C_DEBUG) { 75 CmsLog.getLog(this).debug("Getting content of element " + ((elementName==null)?"<root>":elementName)); 76 CmsLog.getLog(this).debug("Template file is: " + templateFile); 77 CmsLog.getLog(this).debug("Selected template section is: " + ((templateSelector==null)?"<default>":templateSelector)); 78 } 79 I_CmsSession session = CmsXmlTemplateLoader.getSession(cms.getRequestContext(), true); 80 CmsXmlWpTemplateFile xmlTemplateDocument = (CmsXmlWpTemplateFile)getOwnTemplateFile(cms, 81 templateFile, elementName, parameters, templateSelector); 82 83 try { 85 cms.readResource(getConfigFile(cms).getDownGalleryPath()); 86 } 87 catch(CmsException e) { 88 xmlTemplateDocument.setData("ERRORDETAILS", CmsException.getStackTraceAsString(e)); 89 templateSelector = "error"; 90 } 91 if(!"error".equals(templateSelector)) { 92 93 if(parameters.get(CmsWorkplaceDefault.C_PARA_INITIAL) != null) { 95 session.removeValue(CmsWorkplaceDefault.C_PARA_FOLDER); 96 session.removeValue(CmsWorkplaceDefault.C_PARA_PAGE); 97 session.removeValue("_DOWNLIST_"); 98 session.removeValue(CmsWorkplaceDefault.C_PARA_FILTER); 99 session.removeValue("numfiles"); 100 session.removeValue("lasturl"); 101 } 102 103 String folder = (String )parameters.get(CmsWorkplaceDefault.C_PARA_FOLDER); 105 if(folder != null) { 106 session.putValue(CmsWorkplaceDefault.C_PARA_FOLDER, folder); 107 } 108 folder = (String )session.getValue(CmsWorkplaceDefault.C_PARA_FOLDER); 109 if(folder == null || "".equals(folder)) { 110 folder = getConfigFile(cms).getDownGalleryPath(); 111 List galleries = cms.getSubFolders(folder); 112 if(galleries.size() > 0) { 113 114 folder = cms.getSitePath((CmsResource)galleries.get(0)); 116 session.putValue(CmsWorkplaceDefault.C_PARA_FOLDER, folder); 117 } 118 else { 119 120 templateSelector = "error_no_gallery"; 122 } 123 } 124 if(!"error_no_gallery".equals(templateSelector)) { 125 String pageText = (String )parameters.get(CmsWorkplaceDefault.C_PARA_PAGE); 126 String filter = (String )parameters.get(CmsWorkplaceDefault.C_PARA_FILTER); 127 128 String deleteAction = (String )parameters.get("action"); 130 if ("delete".equals(deleteAction)) { 131 String deleteResource = (String )parameters.get("resource"); 132 if (deleteResource != null && !"".equals(deleteResource)) { 133 try { 134 CmsResource res = cms.readResource(deleteResource); 136 if (cms.getLock(res).isNullLock()) { 137 cms.lockResource(deleteResource); 138 } 139 cms.deleteResource(deleteResource, CmsResource.DELETE_PRESERVE_SIBLINGS); 140 } catch (CmsException e) { 141 xmlTemplateDocument.setData("ERRORDETAILS", CmsException.getStackTraceAsString(e)); 142 templateSelector = "error"; 143 return startProcessing(cms, xmlTemplateDocument, elementName, parameters, templateSelector); 144 } 145 } 146 } 147 148 149 150 if(pageText == null || "".equals(pageText)) { 152 pageText = "1"; 153 parameters.put(CmsWorkplaceDefault.C_PARA_PAGE, pageText); 154 } 155 session.putValue(CmsWorkplaceDefault.C_PARA_PAGE, pageText); 156 157 if(filter == null) { 159 filter = ""; 160 session.putValue(CmsWorkplaceDefault.C_PARA_FILTER, filter); 161 parameters.put(CmsWorkplaceDefault.C_PARA_FILTER, filter); 162 } 163 164 Vector filteredFiles = getFilteredDownList(cms, folder, filter); 166 int maxpage = ((filteredFiles.size() - 1) / CmsWorkplaceDefault.C_DOWNBROWSER_MAXENTRIES) + 1; 167 168 xmlTemplateDocument.setData(CmsWorkplaceDefault.C_PARA_FOLDER, CmsEncoder.escape(folder, 170 cms.getRequestContext().getEncoding())); 171 xmlTemplateDocument.setData(CmsWorkplaceDefault.C_PARA_PAGE, pageText); 172 xmlTemplateDocument.setData(CmsWorkplaceDefault.C_PARA_FILTER, filter); 173 xmlTemplateDocument.setData(CmsWorkplaceDefault.C_PARA_MAXPAGE, "" + maxpage); 174 session.putValue("_DOWNLIST_", filteredFiles); 175 session.putValue("numfiles", new Integer (filteredFiles.size())); } 177 } 178 179 return startProcessing(cms, xmlTemplateDocument, elementName, parameters, 181 templateSelector); 182 } 183 184 198 199 public void getCustomizedColumnValues(CmsObject cms, CmsXmlWpTemplateFile filelistTemplate, 200 CmsResource res, CmsXmlLanguageFile lang) throws CmsException { 201 String servletPath = CmsXmlTemplateLoader.getRequest(cms.getRequestContext()).getServletUrl(); 202 String downloadPath = servletPath + cms.getSitePath(res); 203 filelistTemplate.setData("fullpath", downloadPath); 204 filelistTemplate.setData("name_value", res.getName()); 205 filelistTemplate.setData("filepath", cms.getSitePath(res)); 206 if ((cms.getPermissions(cms.getSitePath(res)).getPermissions() & com.opencms.core.I_CmsConstants.C_ACCESS_WRITE) > 0 ) { 207 filelistTemplate.setData("delete", filelistTemplate.getProcessedDataValue("deleteentry", this)); 208 } else { 209 filelistTemplate.setData("delete", " "); 210 } 211 212 String title = ""; 213 try { 214 title = cms.readProperty(cms.getSitePath(res), CmsPropertyDefinition.PROPERTY_TITLE); 215 } 216 catch(CmsException e) { 217 218 } 219 if(title == null) { 220 title = ""; 221 } 222 filelistTemplate.setData("title_value", title); 223 } 224 225 public Integer getDownGalleryNames(CmsObject cms, CmsXmlLanguageFile lang, 226 Vector names, Vector values, Hashtable parameters) throws CmsException { 227 return getGalleryNames(cms, getConfigFile(cms).getDownGalleryPath(), lang, names, values, parameters); 228 } 229 230 238 239 public List getFiles(CmsObject cms) throws CmsException { 240 I_CmsSession session = CmsXmlTemplateLoader.getSession(cms.getRequestContext(), true); 241 Vector files = new Vector (); 242 243 Vector filteredFiles = (Vector )session.getValue("_DOWNLIST_"); 245 int numFiles = filteredFiles.size(); 246 247 String pageText = (String )session.getValue(CmsWorkplaceDefault.C_PARA_PAGE); 249 if(pageText == null || "".equals(pageText)) { 250 pageText = "1"; 251 } 252 int page = new Integer (pageText).intValue(); 253 int from = (page - 1) * CmsWorkplaceDefault.C_DOWNBROWSER_MAXENTRIES; 254 int to = ((from + CmsWorkplaceDefault.C_DOWNBROWSER_MAXENTRIES) > numFiles) ? numFiles : (from + CmsWorkplaceDefault.C_DOWNBROWSER_MAXENTRIES); 255 String folder = (String )session.getValue(CmsWorkplaceDefault.C_PARA_FOLDER); 256 if(folder == null || "".equals(folder)) { 257 folder = getConfigFile(cms).getDownGalleryPath(); 258 List galleries = cms.getSubFolders(folder); 259 if(galleries.size() > 0) { 260 261 folder = cms.getSitePath((CmsResource)galleries.get(0)); 263 } 264 session.putValue(CmsWorkplaceDefault.C_PARA_FOLDER, folder); 265 } 266 267 for(int i = from;i < to;i++) { 269 CmsResource currFile = (CmsResource)filteredFiles.elementAt(i); 270 files.addElement(currFile); 271 } 272 return files; 273 } 274 275 284 285 protected Vector getFilteredDownList(CmsObject cms, String folder, String filter) 286 throws CmsException { 287 288 List allFiles = cms.getFilesInFolder(folder); 290 291 Vector filteredFiles = new Vector (); 293 for(int i=0; i<allFiles.size(); i++) { 294 CmsFile file = (CmsFile)allFiles.get(i); 295 if (file.getState() != CmsResource.STATE_DELETED) { 296 String filename = file.getName(); 297 String title = cms.readProperty(cms.getSitePath(file), CmsPropertyDefinition.PROPERTY_TITLE); 298 boolean filenameFilter = inFilter(filename, filter); 299 boolean titleFilter = ((title == null) || ("".equals(title))) ? false : inFilter(title, filter); 300 if (filenameFilter || titleFilter) { 301 filteredFiles.addElement(file); 302 } 303 } 304 } 305 return filteredFiles; 306 } 307 308 318 319 public boolean isCacheable(CmsObject cms, String templateFile, String elementName, 320 Hashtable parameters, String templateSelector) { 321 return false; 322 } 323 324 334 335 public int modifyDisplayedColumns(CmsObject cms, int prefs) { 336 337 prefs = ((prefs & CmsUserSettings.FILELIST_NAME) == 0) ? prefs : (prefs - CmsUserSettings.FILELIST_NAME); 339 prefs = ((prefs & CmsUserSettings.FILELIST_TITLE) == 0) ? prefs : (prefs - CmsUserSettings.FILELIST_TITLE); 340 prefs = ((prefs & CmsUserSettings.FILELIST_USER_CREATED) == 0) ? prefs : (prefs - CmsUserSettings.FILELIST_USER_CREATED); 341 prefs = ((prefs & CmsWorkplaceDefault.C_FILELIST_GROUP) == 0) ? prefs : (prefs - CmsWorkplaceDefault.C_FILELIST_GROUP); 342 prefs = ((prefs & CmsUserSettings.FILELIST_PERMISSIONS) == 0) ? prefs : (prefs - CmsUserSettings.FILELIST_PERMISSIONS); 343 prefs = ((prefs & CmsUserSettings.FILELIST_STATE) == 0) ? prefs : (prefs - CmsUserSettings.FILELIST_STATE); 344 prefs = ((prefs & CmsUserSettings.FILELIST_LOCKEDBY) == 0) ? prefs : (prefs - CmsUserSettings.FILELIST_LOCKEDBY); 345 return prefs; 346 } 347 348 361 362 public Boolean showBackButton(CmsObject cms, CmsXmlLanguageFile lang, 363 Hashtable parameters) { 364 365 String pageText = (String )parameters.get(CmsWorkplaceDefault.C_PARA_PAGE); 367 int page = new Integer (pageText).intValue(); 368 return new Boolean (page > 1); 369 } 370 371 384 385 public Boolean showNextButton(CmsObject cms, CmsXmlLanguageFile lang, 386 Hashtable parameters) { 387 I_CmsSession session = CmsXmlTemplateLoader.getSession(cms.getRequestContext(), true); 388 389 String pageText = (String )parameters.get(CmsWorkplaceDefault.C_PARA_PAGE); 391 int page = new Integer (pageText).intValue(); 392 393 int numFiles = ((Integer )session.getValue("numfiles")).intValue(); 395 396 int maxpage = ((numFiles - 1) / CmsWorkplaceDefault.C_DOWNBROWSER_MAXENTRIES) + 1; 398 return new Boolean (page < maxpage); 399 } 400 } 401
| Popular Tags
|