diff --git a/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/XWiki.java b/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/XWiki.java index 6ad32ad..8a13f34 100644 --- a/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/XWiki.java +++ b/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/XWiki.java @@ -4543,7 +4543,9 @@ public String getAttachmentURL(String fullname, String filename, String queryStr throws XWikiException { XWikiDocument doc = new XWikiDocument(this.currentMixedDocumentReferenceResolver.resolve(fullname)); - return doc.getAttachmentURL(filename, "download", queryString, context); + XWikiAttachment attachment = doc.getAttachment(filename); + String attachmentVersion = (attachment != null) ? attachment.getVersion() : "1.1"; + return doc.getAttachmentRevisionURL(filename, attachmentVersion, queryString, context); } // Usefull date functions diff --git a/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/api/Document.java b/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/api/Document.java index 3fdc82f..0629342 100644 --- a/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/api/Document.java +++ b/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/api/Document.java @@ -708,7 +708,7 @@ public boolean isNew() */ public String getAttachmentURL(String filename) { - return this.doc.getAttachmentURL(filename, "download", getXWikiContext()); + return this.doc.getAttachmentURL(filename, getXWikiContext()); } /** diff --git a/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/doc/DefaultDocumentAccessBridge.java b/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/doc/DefaultDocumentAccessBridge.java index 3702a9e..0bf9c0d 100644 --- a/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/doc/DefaultDocumentAccessBridge.java +++ b/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/doc/DefaultDocumentAccessBridge.java @@ -606,12 +606,26 @@ public String getAttachmentURL(AttachmentReference attachmentReference, String q String url; if (isFullURL) { XWikiContext xcontext = getContext(); - url = - xcontext.getURLFactory().getURL( - xcontext.getURLFactory().createAttachmentURL(attachmentReference.getName(), - attachmentReference.getDocumentReference().getLastSpaceReference().getName(), - attachmentReference.getDocumentReference().getName(), "download", queryString, - attachmentReference.getDocumentReference().getWikiReference().getName(), xcontext), xcontext); + try{ + XWikiDocument attachmentDocument = xcontext.getWiki().getDocument( + attachmentReference.getDocumentReference(), xcontext); + XWikiAttachment attachment = attachmentDocument.getAttachment(attachmentReference.getName()); + String attachmentVersion = (attachment != null) ? attachment.getVersion() : "1.1"; + url = + xcontext.getURLFactory().getURL( + xcontext.getURLFactory().createAttachmentRevisionURL(attachmentReference.getName(), + attachmentReference.getDocumentReference().getLastSpaceReference().getName(), + attachmentReference.getDocumentReference().getName(), attachmentVersion, queryString, + attachmentReference.getDocumentReference().getWikiReference().getName(), xcontext), xcontext); + }catch(XWikiException e){ + // The attachment might not exist yet, but we still want the URL (for the future). + url = + xcontext.getURLFactory().getURL( + xcontext.getURLFactory().createAttachmentURL(attachmentReference.getName(), + attachmentReference.getDocumentReference().getLastSpaceReference().getName(), + attachmentReference.getDocumentReference().getName(), "download", queryString, + attachmentReference.getDocumentReference().getWikiReference().getName(), xcontext), xcontext); + } } else { XWikiContext xcontext = getContext(); String documentReference = diff --git a/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/doc/XWikiDocument.java b/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/doc/XWikiDocument.java index 67d8e7b..6bd0533 100644 --- a/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/doc/XWikiDocument.java +++ b/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/doc/XWikiDocument.java @@ -1530,7 +1530,9 @@ public void setMetaDataDirty(boolean metaDataDirty) public String getAttachmentURL(String filename, XWikiContext context) { - return getAttachmentURL(filename, "download", context); + XWikiAttachment attachment = getAttachment(filename); + String attachmentVersion = ( attachment != null ) ? attachment.getVersion() : "1.1"; + return getAttachmentRevisionURL(filename, attachmentVersion, context); } public String getAttachmentURL(String filename, String action, XWikiContext context) diff --git a/xwiki-platform-core/xwiki-platform-web/src/main/webapp/templates/attachmentslist.vm b/xwiki-platform-core/xwiki-platform-web/src/main/webapp/templates/attachmentslist.vm index ab97681..77b1015 100644 --- a/xwiki-platform-core/xwiki-platform-web/src/main/webapp/templates/attachmentslist.vm +++ b/xwiki-platform-core/xwiki-platform-web/src/main/webapp/templates/attachmentslist.vm @@ -20,7 +20,7 @@
#mimetypeimg($attach.getMimeType().toLowerCase() $attach.getFilename().toLowerCase())
- $escapetool.xml($attach.filename) #if($hasEdit || $hasAdmin)