... |
... |
@@ -2,24 +2,64 @@ |
2 |
2 |
#set($width = $context.macro.params.width) |
3 |
3 |
#set($height = $context.macro.params.height) |
4 |
4 |
#set($file = $context.macro.params.file) |
|
5 |
+#set($docname = $context.macro.params.document) |
|
6 |
+#set($asAuthor = $context.macro.params.asauthor && ($context.macro.params.asauthor == "true" || $context.macro.params.asauthor == "yes" || $context.macro.params.asauthor == "1")) |
5 |
5 |
#if(!$file) |
6 |
|
-No pdf URL provided |
|
8 |
+ {{error}}$services.localization.render('pdfviewer.error.nofile'){{/error}} |
7 |
7 |
#else |
8 |
|
-#if($file.startsWith("http")) |
9 |
|
- #set($url = $file) |
10 |
|
-#else |
11 |
|
- #set($url = $doc.getAttachmentURL($file)) |
|
10 |
+ #if($file.startsWith("http://") || $file.startsWith("https://")) |
|
11 |
+ #set($url = $file) |
|
12 |
+ #else |
|
13 |
+ #if("$!docname" != "") |
|
14 |
+ #set($document = $xwiki.getDocument($docname)) |
|
15 |
+ #else |
|
16 |
+ #set($document = $doc) |
|
17 |
+ #end |
|
18 |
+ #set($attachment = $document.getAttachment($file)) |
|
19 |
+ #set($url = $NULL) |
|
20 |
+ #if($attachment) |
|
21 |
+ #set($url = $document.getAttachmentURL($file)) |
|
22 |
+ #elseif ($asAuthor && $xwiki.hasProgrammingRights() && $xwiki.exists('XWiki.PDFViewerService')) |
|
23 |
+ #set($document = $xwiki.getDocumentAsAuthor($docname)) |
|
24 |
+ #set($attachment = $document.getAttachment($file)) |
|
25 |
+ #if($attachment) |
|
26 |
+ #set($digestFactory = $services.component.getInstance('org.xwiki.crypto.DigestFactory', 'SHA-1')) |
|
27 |
+ #set($encoder = $services.component.getInstance('org.xwiki.crypto.BinaryStringEncoder', 'URLBase64')) |
|
28 |
+ #if ($digestFactory && $encoder) |
|
29 |
+ #set($contentAuthor = $services.model.serialize($doc.contentAuthorReference, 'default')) |
|
30 |
+ #set($digest = $digestFactory.instance) |
|
31 |
+ #set($is = $digest.getInputStream($attachment.contentInputStream)) |
|
32 |
+ #set($discard = $digest.getInputStream($attachment.contentInputStream).skip(1000)) |
|
33 |
+ #set($discard = $is.close()) |
|
34 |
+ #if ($xcontext.userReference) |
|
35 |
+ #set($discard = $digest.update($services.model.serialize($xcontext.userReference, 'default').getBytes('UTF-8'))) |
|
36 |
+ #end |
|
37 |
+ #set($discard = $digest.update($contentAuthor.getBytes('UTF-8'))) |
|
38 |
+ #set($digest = $encoder.encode($digest.digest)) |
|
39 |
+ #set($url = $xwiki.getDocument("XWiki.PDFViewerService").getExternalURL('get', "reference=$escapetool.url($services.model.serialize($document.documentReference, 'default'))&filename=$escapetool.url($attachment.filename)&user=$escapetool.url($contentAuthor)&key=$digest")) |
|
40 |
+ #end |
|
41 |
+ #end |
|
42 |
+ #end |
|
43 |
+ #end |
|
44 |
+ #if ($url) |
|
45 |
+ #set($url = $escapetool.url($url)) |
|
46 |
+ #set($pdfviewerurl = $xwiki.getDocument("XWiki.PDFViewerMacro").getAttachmentURL("pdfviewer.zip")) |
|
47 |
+ ## Attachment URL have query parameters for cache issue. |
|
48 |
+ #set($pdfviewerurl = $pdfviewerurl.split("\?")[0]) |
|
49 |
+ {{html clean=false}} |
|
50 |
+ <div> |
|
51 |
+ <!--[if lt IE 10]> |
|
52 |
+ <div class="box warningmessage">PDF Viewer : Not compatible with IE < 10</div> |
|
53 |
+ <![endif]--> |
|
54 |
+ <![if !(lt IE 10)]> |
|
55 |
+ <iframe src="${pdfviewerurl}/pdf-viewer/web/viewer.html?file=${url}#locale=${context.language}" width="${width}" height="${height}"></iframe> |
|
56 |
+ <![endif]--> |
|
57 |
+ </div> |
|
58 |
+ {{/html}} |
|
59 |
+ #elseif (!$document || $document.isNew()) |
|
60 |
+ {{error}}$services.localization.render('pdfviewer.error.nodocument', [$escapetool.html($escapetool.html($docname))]){{/error}} |
|
61 |
+ #else |
|
62 |
+ {{error}}$services.localization.render('pdfviewer.error.noattachment', [$escapetool.html($file), $escapetool.html($services.model.serialize($document.documentReference, 'default'))]){{/error}} |
|
63 |
+ #end |
12 |
12 |
#end |
13 |
|
-#set($url = $escapetool.url($url)) |
14 |
|
-#set($pdfviewerurl = $xwiki.getDocument("XWiki.PDFViewerMacro").getAttachmentURL("pdfviewer.zip")) |
15 |
|
-{{html clean=false}} |
16 |
|
- <!--[if lt IE 10]> |
17 |
|
- <div class="box warningmessage">PDF Viewer : Not compatible with IE < 10</div> |
18 |
|
- <![endif]--> |
19 |
|
- <![if !(lt IE 10)]> |
20 |
|
- <iframe src="${pdfviewerurl}/pdf-viewer/web/viewer.html?file=${url}#locale=${context.language}" width="${width}" height="${height}"&></iframe> |
21 |
|
- <![endif]--> |
22 |
|
- </script> |
23 |
|
-{{/html}} |
24 |
|
-#end |
25 |
25 |
{{/velocity}} |