Index: lams_build/lib/lams/lams-contentrepository.jar =================================================================== RCS file: /usr/local/cvsroot/lams_build/lib/lams/lams-contentrepository.jar,v diff -u -r1.26 -r1.27 Binary files differ Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/IVersionedNode.java =================================================================== RCS file: /usr/local/cvsroot/lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/IVersionedNode.java,v diff -u -r1.6 -r1.7 --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/IVersionedNode.java 17 Sep 2006 06:16:10 -0000 1.6 +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/IVersionedNode.java 7 Nov 2007 03:25:16 -0000 1.7 @@ -167,6 +167,18 @@ public String getPath() ; /** + * Get zip compatible filename/path. + * + * There are problems with zipping up files where the names are UTF-8 names - depending on what platform + * and what zip utility you are using, the filename may be corrupted. To avoid this, we can produce a filename (and + * path) where the normal "names" are replaced with the uuid but the extension is kept. This will allow downloaded + * files to be opened by their applications + * + * @return a file path (from parent) or filename that may be used for naming a file put in a zip archive. + */ + public String getZipCompatiblePath() ; + + /** * Get the ticket through which this node was accessed. * * @return A (@link ITicket} object. Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleVersionedNode.java =================================================================== RCS file: /usr/local/cvsroot/lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleVersionedNode.java,v diff -u -r1.10 -r1.11 --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleVersionedNode.java 17 Sep 2006 06:16:10 -0000 1.10 +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleVersionedNode.java 7 Nov 2007 03:25:16 -0000 1.11 @@ -268,6 +268,43 @@ } /** + * @see org.lamsfoundation.lams.contentrepository.IVersionedNode#getZipCompatiblePath() + */ + public String getZipCompatiblePath() { + nodeObjectInitilised("Unable to get path."); + String path = node.getPath(); + if ( path == null ) { + return null; + } else { + String uuidString = node.getNodeId().toString(); + + path = path.trim(); + int dotPos = path.lastIndexOf("."); + String extension = dotPos >= 0 ? path.substring(dotPos + 1, path.length()) : null; + + // convert each section of the path to the number + // should try to handle funny paths like ones with leading or trailing slashes + String modified = ""; + if ( path.startsWith("/") ) { + modified = "/" + modified; + path = path.substring(1,path.length()); + } + + String[] pathParts = path.split("[/]+"); + for ( int i=0; i