[opencms-dev] getting the file resource from a link

Matthew Evans matte at solidstategroup.com
Mon Oct 20 17:34:01 CEST 2003


I'm not sure exactly what you are after, but I use this code to access files
in the VFS, maybe it will help you.
 
M at .
--------------------
 
 
<%@ page session="false" %>
<%@ taglib prefix="cms" uri="http://www.opencms.org/taglib/cms" %>
<%@ page import="java.util.*,
                 com.opencms.flex.jsp.*,
                 com.opencms.file.*,
                 com.opencms.file.CmsUser" %>
 
<cms:include property="template" element="head" />
 

<%   
//Get command line parameters
String download_dir = request.getParameter("download_dir");
 
// Create a JSP action element
com.opencms.flex.jsp.CmsJspActionElement cms = new
com.opencms.flex.jsp.CmsJspActionElement(pageContext, request, response);
 
String DEF_FILE_TYPE = "Downloadable File"; 
 
//out.println(download_dir); 
boolean hasFiles = false;
boolean hasFolders = false;
CmsObject cmso = cms.getCmsObject(); 
CmsFolder currentFolder = cmso.readFolder(download_dir);
 
if (download_dir != null && !"".equals(download_dir)) { 
    try { 
 
        // Print out the breadcrumb trail
        String endFolder = "";
        Vector dirTree = new Vector();
        int count = 0;
        while
(!currentFolder.getAbsolutePath().equals("/system/galleries/download/Content
s/")){
            dirTree.add(count,"<a href=\"RGLFiles.jsp?download_dir=" +
currentFolder.getAbsolutePath() + "&menunode=title3\">" +
cmso.readProperty(currentFolder.getAbsolutePath(),"Title") + "</a>");
            currentFolder = cmso.readFolder(currentFolder.getParent());
        }
        out.println("<p class=\"user\">");
        for (count = 0; count <= dirTree.size()-1; count++){
            out.println(" > " + dirTree.elementAt(count));
        }
        out.println("</p>");
 
        // Use the Cms* object to get all folders under the download_dir
        java.util.Vector allSubFolders = cmso.getSubFolders(download_dir);
 
        Iterator ii = allSubFolders.iterator();
        if(ii.hasNext()){
            hasFolders=true;
%>
<!-- Downloads table --> 
<p class="title">Folders</p>
<table border="0" width="100%"> 
 
<%
        }
 
        while (ii.hasNext()) {
            CmsFolder thisFolder = (CmsFolder)ii.next();
            out.println("<tr><td class=\"normal\"><a
href=\"RGLFiles.jsp?download_dir=" + thisFolder.getAbsolutePath() +
"&menunode=title3\">"  +
cmso.readProperty(thisFolder.getAbsolutePath(),"Title") + "</a></td></tr>");
        }   
        if (hasFolders==true){
            out.println("</table>");
        }
 
        // We have to use Cms* objects to get files that are not Pages. 
        Iterator i = cmso.getFilesInFolder(download_dir).iterator(); 
 
        if (i.hasNext()) {
            hasFiles = true;
%>
 
<!-- Downloads table --> 
<p class="title">Files</p>
<table border="0" width="100%"> 
 
<%
        }
 
int lines = 0; 
while (i.hasNext()) { 
CmsFile f = (CmsFile)i.next(); 
if(lines % 2 == 0) out.println("<tr>"); 
else out.println("<tr>"); 
 
// There is probably a built-in source for this.... 
HashMap fTypes = new HashMap(35); 
fTypes.put(".txt","Text File"); 
fTypes.put(".doc","MS Word Doc"); 
fTypes.put(".htm","Web (HTML) Document"); 
fTypes.put(".html","Web (HTML) Document"); 
fTypes.put(".jpg","JPEG Image File"); 
fTypes.put(".jpeg","JPEG Image File"); 
fTypes.put(".gif","GIF Image File"); 
fTypes.put(".pdf","Adobe PDF (Acrobat™) Document"); 
fTypes.put(".zip","ZIP Compressed File"); 
fTypes.put(".tar","UNIX Archive File"); 
fTypes.put(".tgz","GZip Compressed Archive File"); 
fTypes.put(".gz","GZip Compressed File"); 
fTypes.put(".gzip","GZip Compressed File"); 
fTypes.put(".xls","MS Excel Spreadsheet"); 
fTypes.put(".ppt","MS PowerPoint Slideshow"); 
fTypes.put(".exe","Windows/DOS Executable"); 
fTypes.put(".wmf","Windows Media File"); 
fTypes.put(".ram","Real Media File"); 
fTypes.put(".rpm","Real Media File"); 
fTypes.put(".mp3","MP3 Audio File"); 
fTypes.put(".mpg","MPEG Video File"); 
fTypes.put(".mpeg","MPEG Video File"); 
fTypes.put(".avi","AVI Video File"); 
 
String fName = f.getName(); 
String ext = f.getExtension(); 
int fLength = f.getLength(); 
String unit = "Kb"; 
if(fLength < 1024) unit = "bytes"; 
else fLength /= 1024; 
//out.println("Extension from CMS: "+ext+"<br>");//DEBUG 
String fTitle = cmso.readProperty(f.getAbsolutePath(),"Title");
 
String fileType; 
if("".equals(ext)) fileType = DEF_FILE_TYPE; 
else fileType = (fTypes.get(ext) !=
null)?fTypes.get(ext).toString():DEF_FILE_TYPE; 
 
out.println("<td class=\"normal\"><a href=\"" +
cms.link(f.getAbsolutePath())); 
out.print("\">");
if(fTitle !="" && fTitle != null) out.print(fTitle);
else out.print(fName);
out.println("</a></td>"); 
out.println("<td class=\"normal\">" + fileType + "</td>"); 
out.print("<td class=\"normal\" width=\"50\">"); 
out.print(fLength); 
out.println(" "+unit+"</td>"); 
++lines; 
 
} 
} catch (Exception e) { 
out.println(e.toString()); 
} 
 
} 
if (hasFiles==true){
    out.println("</table>");
}
%> 
 
<cms:include property="template" element="foot" />

 
 
Matthew Evans
SolidStateGroup
tel. +44 (0) 20 77402133
Mob. +44(0)7958 379562
http://www.solidstategroup.com <http://www.solidstategroup.com/> 
 


  _____  

From: opencms-dev-admin at opencms.org [mailto:opencms-dev-admin at opencms.org]
On Behalf Of Christian Fleron Guldner
Sent: 20 October 2003 15:04
To: opencms-dev at opencms.org



Hi, 
Hope you can help me. I have not been able to find the answer to my problem
by searching the list. 

I have a folder full of links, wich I use to generate a menu. When I need
another item in the menu, I create a new link to the page in this
"menu-folder". 
My problem: 
I need to get at the navigation information of the page I've linked to, not
the navigation info of the link. 

Obviously this: 

CmsJspActionElement cms = new CmsJspActionElement(pageContext, request,
response); 
String foldername =
com.opencms.file.CmsFile.getPath(cms.getRequestContext().getUri()); 
CmsJspNavElement  element =
cms.getNavigation().getNavigationForResource(foldername); 

does not work. element points to the link resource. 

Any ideas? 
Thanks, 

Christian Güldner


---
Incoming mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.524 / Virus Database: 321 - Release Date: 06/10/2003


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://webmail.opencms.org/pipermail/opencms-dev/attachments/20031020/a66a90d6/attachment.htm>


More information about the opencms-dev mailing list