| 1 28 29 30 package com.opencms.workplace; 31 32 import org.opencms.file.CmsFile; 33 import org.opencms.file.CmsObject; 34 import org.opencms.file.CmsPropertyDefinition; 35 import org.opencms.file.CmsResource; 36 import org.opencms.i18n.CmsEncoder; 37 import org.opencms.main.CmsException; 38 import org.opencms.main.CmsLog; 39 40 import com.opencms.core.I_CmsSession; 41 import com.opencms.legacy.CmsXmlTemplateLoader; 42 import com.opencms.template.A_CmsXmlContent; 43 44 import java.io.UnsupportedEncodingException ; 45 import java.util.Hashtable ; 46 import java.util.List ; 47 import java.util.Vector ; 48 49 60 61 public class CmsHtmlBrowser extends A_CmsGalleryBrowser { 62 63 74 75 public byte[] getContent(CmsObject cms, String templateFile, String elementName, Hashtable parameters, String templateSelector) throws CmsException { 76 if(CmsLog.getLog(this).isDebugEnabled() && C_DEBUG) { 77 CmsLog.getLog(this).debug("Getting content of element " + ((elementName==null)?"<root>":elementName)); 78 CmsLog.getLog(this).debug("Template file is: " + templateFile); 79 CmsLog.getLog(this).debug("Selected template section is: " + ((templateSelector==null)?"<default>":templateSelector)); 80 } 81 I_CmsSession session = CmsXmlTemplateLoader.getSession(cms.getRequestContext(), true); 82 CmsXmlWpTemplateFile xmlTemplateDocument = (CmsXmlWpTemplateFile)getOwnTemplateFile(cms, 83 templateFile, elementName, parameters, templateSelector); 84 85 try { 87 cms.readResource(CmsWorkplaceDefault.C_VFS_GALLERY_EXTERNALLINKS); 88 } catch(CmsException e) { 89 xmlTemplateDocument.setData("ERRORDETAILS", CmsException.getStackTraceAsString(e)); 90 templateSelector = "error"; 91 } 92 if(!"error".equals(templateSelector)) { 93 if(parameters.get(CmsWorkplaceDefault.C_PARA_INITIAL) != null) { 94 session.removeValue(CmsWorkplaceDefault.C_PARA_FOLDER); 95 session.removeValue("htmlBrowser_for_ext_nav"); 96 } 97 String setOnClick = (String )parameters.get("setonclick"); 98 if(setOnClick != null){ 99 session.putValue("htmlBrowser_for_ext_nav", setOnClick); 100 } 101 setOnClick = (String )session.getValue("htmlBrowser_for_ext_nav"); 102 String folder = (String )parameters.get(CmsWorkplaceDefault.C_PARA_FOLDER); 103 if(folder != null) { 104 session.putValue(CmsWorkplaceDefault.C_PARA_FOLDER, folder); 105 } 106 folder = (String )session.getValue(CmsWorkplaceDefault.C_PARA_FOLDER); 107 if(folder == null || "".equals(folder)) { 108 List galleries = cms.getSubFolders(getConfigFile(cms).getHtmlGalleryPath()); 109 if(galleries.size() > 0) { 110 111 folder = cms.getSitePath((CmsResource)galleries.get(0)); 113 session.putValue(CmsWorkplaceDefault.C_PARA_FOLDER, folder); 114 } else { 115 116 templateSelector = "error_no_gallery"; 118 } 119 } 120 if(!"error_no_gallery".equals(templateSelector)) { 121 String pageText = (String )parameters.get(CmsWorkplaceDefault.C_PARA_PAGE); 122 String filter = (String )parameters.get(CmsWorkplaceDefault.C_PARA_FILTER); 123 124 if(pageText == null || "".equals(pageText)) { 126 pageText = "1"; 127 parameters.put(CmsWorkplaceDefault.C_PARA_PAGE, pageText); 128 } 129 130 if(filter == null) { 132 filter = ""; 133 parameters.put(CmsWorkplaceDefault.C_PARA_FILTER, filter); 134 } 135 136 Vector filteredLinks = getFilteredHtmlList(cms, folder, filter); 138 int maxpage = ((filteredLinks.size() - 1) / CmsWorkplaceDefault.C_PICBROWSER_MAXIMAGES) + 1; 139 140 xmlTemplateDocument.setData(CmsWorkplaceDefault.C_PARA_FOLDER, CmsEncoder.escape(folder, 142 cms.getRequestContext().getEncoding())); 143 xmlTemplateDocument.setData(CmsWorkplaceDefault.C_PARA_PAGE, pageText); 144 xmlTemplateDocument.setData(CmsWorkplaceDefault.C_PARA_FILTER, filter); 145 xmlTemplateDocument.setData(CmsWorkplaceDefault.C_PARA_MAXPAGE, "" + maxpage); 146 if(setOnClick == null || !"true".equals(setOnClick)){ 147 xmlTemplateDocument.setData("setonclick", ""); 148 }else{ 149 xmlTemplateDocument.setData("setonclick", "true"); 150 } 151 parameters.put("_HTMLLIST_", filteredLinks); 152 } 153 } 154 155 return startProcessing(cms, xmlTemplateDocument, elementName, parameters, templateSelector); 157 } 158 159 167 168 private Vector getFilteredHtmlList(CmsObject cms, String folder, String filter) throws CmsException { 169 170 List allLinks = cms.getFilesInFolder(folder); 172 173 Vector filteredLinks = new Vector (); 175 for(int i = 0;i < allLinks.size();i++) { 176 CmsFile file = (CmsFile)allLinks.get(i); 177 String filename = file.getName(); 178 String title = cms.readProperty(cms.getSitePath(file), CmsPropertyDefinition.PROPERTY_TITLE); 179 boolean filenameFilter = inFilter(filename, filter); 180 boolean titleFilter = ((title == null) || ("".equals(title))) ? false : inFilter(title, filter); 181 if((filenameFilter || titleFilter)) { 182 filteredLinks.addElement(file); 183 } 184 } 185 return filteredLinks; 186 } 187 188 202 public Integer getHtmlGalleryNames(CmsObject cms, CmsXmlLanguageFile lang, 203 Vector names, Vector values, Hashtable parameters) throws CmsException { 204 return getGalleryNames(cms, getConfigFile(cms).getHtmlGalleryPath(), lang, names, values, parameters); 205 } 206 207 217 218 public boolean isCacheable(CmsObject cms, String templateFile, String elementName, 219 Hashtable parameters, String templateSelector) { 220 return false; 221 } 222 223 239 240 public Object htmlList(CmsObject cms, String tagcontent, A_CmsXmlContent doc, 241 Object userObj) throws CmsException { 242 I_CmsSession session = CmsXmlTemplateLoader.getSession(cms.getRequestContext(), true); 243 Hashtable parameters = (Hashtable )userObj; 244 CmsXmlWpTemplateFile xmlTemplateDocument = (CmsXmlWpTemplateFile)doc; 245 StringBuffer result = new StringBuffer (); 246 String pageText = (String )parameters.get(CmsWorkplaceDefault.C_PARA_PAGE); 247 248 Vector filteredLinks = (Vector )parameters.get("_HTMLLIST_"); 250 int numLinks = filteredLinks.size(); 251 252 int page = new Integer (pageText).intValue(); 254 int from = (page - 1) * CmsWorkplaceDefault.C_PICBROWSER_MAXIMAGES; 255 int to = ((from + CmsWorkplaceDefault.C_PICBROWSER_MAXIMAGES) > numLinks) ? numLinks : (from + CmsWorkplaceDefault.C_PICBROWSER_MAXIMAGES); 256 String folder = (String )parameters.get(CmsWorkplaceDefault.C_PARA_FOLDER); 257 if(folder == null) { 258 folder = (String )session.getValue(CmsWorkplaceDefault.C_PARA_FOLDER); 259 } 260 if(folder == null || "".equals(folder)) { 261 folder = getConfigFile(cms).getHtmlGalleryPath(); 262 parameters.put(CmsWorkplaceDefault.C_PARA_FOLDER, folder); 263 } 264 265 String linkUrl = CmsXmlTemplateLoader.getRequest(cms.getRequestContext()).getServletUrl() + folder; 266 267 for(int i = from;i < to;i++) { 269 CmsFile file = cms.readFile(cms.getSitePath((CmsFile)filteredLinks.elementAt(i))); 270 String filename = file.getName(); 271 String title = cms.readProperty(cms.getSitePath(file), CmsPropertyDefinition.PROPERTY_TITLE); 272 273 int dotIndex = filename.lastIndexOf("."); 276 if(title == null) { 277 if(dotIndex > 0) { 278 title = filename.substring(0, dotIndex); 279 } 280 else { 281 title = filename; 282 } 283 } 284 285 xmlTemplateDocument.setData("linksource", linkUrl + file.getName()); 287 xmlTemplateDocument.setData("filename", cms.getSitePath(file)); 288 xmlTemplateDocument.setData("title", filename); 289 xmlTemplateDocument.setData("linktext", filename); 290 xmlTemplateDocument.setData("snippetid", "" + i); 291 xmlTemplateDocument.setData("filecontent", new String (file.getContents())); 292 try { 293 xmlTemplateDocument.setData("filecontent_escaped", CmsEncoder.escape( 294 new String (file.getContents(), cms.getRequestContext().getEncoding()), 295 cms.getRequestContext().getEncoding())); 296 } catch (UnsupportedEncodingException e) { 297 xmlTemplateDocument.setData("filecontent_escaped", CmsEncoder.escape( 298 new String (file.getContents()), 299 cms.getRequestContext().getEncoding())); 300 } 301 302 String paraSetOnClick = (String )session.getValue("htmlBrowser_for_ext_nav"); 304 String setOnClick = ""; 305 if ("true".equals(paraSetOnClick)){ 306 setOnClick = xmlTemplateDocument.getProcessedDataValue("clickentry"); 307 } 308 xmlTemplateDocument.setData("toclickornot", setOnClick); 309 result.append(xmlTemplateDocument.getProcessedDataValue("htmllistentry", this, userObj)); 310 } 311 return result.toString(); 312 } 313 314 327 328 public Boolean showBackButton(CmsObject cms, CmsXmlLanguageFile lang, Hashtable parameters) { 329 330 String pageText = (String )parameters.get(CmsWorkplaceDefault.C_PARA_PAGE); 332 int page = new Integer (pageText).intValue(); 333 return new Boolean (page > 1); 334 } 335 336 349 350 public Boolean showNextButton(CmsObject cms, CmsXmlLanguageFile lang, Hashtable parameters) { 351 352 String pageText = (String )parameters.get(CmsWorkplaceDefault.C_PARA_PAGE); 354 int page = new Integer (pageText).intValue(); 355 356 Vector filteredLinks = (Vector )parameters.get("_HTMLLIST_"); 358 int numLinks = filteredLinks.size(); 359 360 int maxpage = ((numLinks - 1) / CmsWorkplaceDefault.C_PICBROWSER_MAXIMAGES) + 1; 362 return new Boolean (page < maxpage); 363 } 364 } 365 | Popular Tags |