Änderungen von Dokument View File Macro
Zuletzt geändert von xwikiadmin am 2025/01/07 12:27
Von Version 6.1
bearbeitet von xwikiadmin
am 2024/06/24 15:04
am 2024/06/24 15:04
Änderungskommentar:
Install extension [com.xwiki.pro:xwiki-pro-macros-ui/1.19.4]
Auf Version 5.1
bearbeitet von xwikiadmin
am 2023/10/26 10:38
am 2023/10/26 10:38
Änderungskommentar:
Install extension [com.xwiki.pro:xwiki-pro-macros/1.12]
Zusammenfassung
-
Seiteneigenschaften (1 geändert, 0 hinzugefügt, 0 gelöscht)
-
Objekte (2 geändert, 0 hinzugefügt, 6 gelöscht)
Details
- Seiteneigenschaften
-
- Inhalt
-
... ... @@ -1,34 +1,3 @@ 1 - Theview-filemacro displays attachments inadocument, in placeor ashumbnail and offers a preview.1 +{{view-file name="Test.ppt" /}} 2 2 3 -Limitation: the thumbnail is actually only an icon for now. 4 - 5 -= Parameters = 6 - 7 -|=Parameter|=Description|=Required|=Default 8 -|display|Kind of display. "button" for a button, "thumbnail" for a thumbnail, "full" to render the document in place|no|thumbnail (button in inline mode) 9 -|name|The attachment reference to display|if att-filename is not given| 10 -|width|The width of the view in % or px (e.g. 100%, 100px)|no|100% for the full view or 100px for the thumbnail 11 -|height|The height of the view in % or px (e.g. 100%, 100px)|no|1000px for the full view or 100px for the thumbnail 12 -|att-filename|Alias of name|If name is not given| 13 - 14 -= Example Usage = 15 - 16 -Thumbnails side by side: 17 - 18 -{{view-file display="thumbnail" name="Test.ppt"/}} {{view-file display="thumbnail" name="TestPDF.pdf"/}} 19 - 20 -Or standalone: 21 - 22 -{{view-file name="Test.ppt"/}} 23 - 24 -In a paragraph: {{view-file name="Test.ppt"/}} 25 - 26 - 27 -Full PDF: 28 - 29 -{{view-file display="full" name="TestPDF.pdf"/}} 30 - 31 -Full Presentation: 32 - 33 -{{view-file display="full" name="Test.ppt"/}} 34 - 3 +{{view-file name="TestPDF.pdf" /}}
- XWiki.JavaScriptExtension[0]
-
- Pufferstrategie
-
... ... @@ -1,1 +1,0 @@ 1 -long - Code
-
... ... @@ -1,33 +1,0 @@ 1 -window.addEventListener("DOMContentLoaded", function () { 2 - "use strict"; 3 - document.addEventListener("click", async function (e) { 4 - if (("" + document.getElementById("xwikicontent")?.contentEditable) == "true") { 5 - return; 6 - } 7 - const viewFile = e.target?.closest(".viewFileThumbnail"); 8 - if (viewFile && viewFile.dataset.preview === 'true') { 9 - const popup = new XWiki.widgets.ModalPopup(); 10 - popup.createDialog(); 11 - popup.setContent("<span class='fa fa-spinner'></span>"); 12 - popup.dialogBox.classList.add("viewFileModal"); 13 - popup.dialogBox.style.top = "2.5vh"; 14 - popup.dialogBox.style.width = "95vw"; 15 - popup.dialogBox.style.height = "95vh"; 16 - const a = e.target.closest('a'); 17 - const downloadLink = document.createElement("a"); 18 - downloadLink.download = true; 19 - downloadLink.textContent = a.textContent; 20 - downloadLink.className = "fa fa-download button button-primary viewFileModal-downloadLink"; 21 - downloadLink.href = a.href; 22 - popup.dialogBox.insertBefore(downloadLink, popup.dialogBox.firstChild) 23 - popup.showDialog(); 24 - e.preventDefault(); 25 - const response = await fetch(XWiki.contextPath + "/wiki/" + XWiki.currentWiki + "/get/Confluence/Macros/ViewFileService?action=render&attachment=" + encodeURIComponent(viewFile.dataset.ref)); 26 - popup.setContent(await response.text()); 27 - const gallery = popup.dialogBox.querySelector(".gallery"); 28 - if (gallery) { 29 - new XWiki.Gallery(gallery); 30 - } 31 - } 32 - }); 33 -}); - Inhalt parsen
-
... ... @@ -1,1 +1,0 @@ 1 -Nein - Benutze diese Erweiterung
-
... ... @@ -1,1 +1,0 @@ 1 -onDemand
- XWiki.StyleSheetExtension[0]
-
- Pufferstrategie
-
... ... @@ -1,1 +1,0 @@ 1 -long - Code
-
... ... @@ -1,74 +1,0 @@ 1 -.viewFileModal iframe, .viewFileModal .xdialog-content { 2 - height: calc(95vh - 5em); 3 -} 4 - 5 -.viewFileModal .xGallery, .viewFileFull .xGallery { 6 - height: 100%; 7 - width: 100%; 8 -} 9 - 10 -.viewFileModal .xdialog-content:before { 11 - clear: both; 12 -} 13 - 14 -.viewFileModal .xdialog-content { 15 - overflow: auto; 16 - margin:0 0.8em 0.8em 0.8em; 17 - width: calc(100% - 1.6em); 18 -} 19 - 20 -.viewFileContentThumb .modal-dialog { 21 - max-height: 90vh; 22 - width: 80%; 23 -} 24 - 25 -.viewFileContentThumb .modal-body { 26 - max-height: 80vh; 27 - overflow: auto; 28 -} 29 - 30 -.viewFileContentThumb.viewFilePresentation .modal-dialog { 31 - height: 90%; 32 - width: 90%; 33 - display: flex; 34 - flex-direction: column; 35 - align-items: center; 36 -} 37 - 38 -.viewFileThumbnailButton { 39 - display: inline-block; 40 - padding-right: 0.5ex; 41 -} 42 - 43 -.viewFileThumbnailCard, .viewFileFull { 44 - position: relative; 45 -} 46 - 47 -span.viewFileThumbnailCard { 48 - display: inline-block; 49 -} 50 - 51 -.viewFileThumbnailCard a { 52 - display: flex; 53 - gap: 3px; 54 - flex-direction: column; 55 - text-align: center; 56 - width: 100%; 57 - height: 100%; 58 -} 59 - 60 -.viewFileThumbnailCard a .attachmentMimeType { 61 - flex: 1; 62 - display: flex; 63 - align-items: center; 64 - align-self: center; 65 - text-align: center; 66 - justify-content: center; 67 - width: 100%; 68 - border: 1px solid; 69 - border-radius: 1rem; 70 -} 71 - 72 -.viewFileModal-downloadLink { 73 - margin-left: 2px; 74 -} - Content Type
-
... ... @@ -1,1 +1,0 @@ 1 -CSS - Name
-
... ... @@ -1,1 +1,0 @@ 1 -viewFileCSS - Inhalt parsen
-
... ... @@ -1,1 +1,0 @@ 1 -Nein - Benutze diese Erweiterung
-
... ... @@ -1,1 +1,0 @@ 1 -onDemand
- XWiki.WikiMacroClass[0]
-
- Makro-Code
-
... ... @@ -1,155 +1,36 @@ 1 1 {{velocity output="false"}} 2 -#template('attachment_macros.vm') 3 - 4 -#set ($officeExtensions = [ 'ppt', 'pptx', 'odp', 'doc', 'docx', 'odt', 'xls', 'xlsx', 'ods' ]) 5 -#set ($presentationExtensions = [ 'ppt', 'pptx', 'odp' ]) 6 -#set ($hasPDFViewer = $xwiki.exists("XWiki.PDFViewerMacro")) 7 - 8 -#macro (renderThumbnailButton $attachmentRef $previewSupported $width $height $forceCard) 9 - #set ($style = "") 10 - #if ("$!width" != "") 11 - #set ($style = $style + " width: $width") 12 - #end 13 - #if ("$!height" != "") 14 - #set ($style = $style + " height: $height") 15 - #end 16 - #if ("$!style" != "") 17 - #set ($style = "style='$style.trim()'") 18 - #set ($thumbnailStyle = "Card") 19 - #elseif ($forceCard) 20 - #set ($style = "style='width: 100px; height: 100px;'") 21 - #set ($height = "100px") 22 - #set ($thumbnailStyle = "Card") 23 - #else 24 - #set ($thumbnailStyle = "Button") 25 - #end 26 - #if ($wikimacro.context.isInline() || $thumbnailStyle == "Button") 27 - #set ($elem = "span") 28 - #else 29 - #set ($elem = "div") 30 - #end 31 - #set ($attachment = $xwiki.getDocument($attachmentRef.getParent()).getAttachment($attachmentRef.getName())) 32 - #set ($thumbnail = "#displayAttachmentMimeType($attachment)") 33 - #if ($thumbnail.charAt(0) == '#') 34 - ## #displayAttachmentMimeType is not supported (before July 2022) 35 - #set ($thumbnail = '<div class="attachmentMimeType"><span><span class="fa fa-paperclip" aria-hidden="true"></span></span></div>') 36 - #end 37 - #if ($elem == "span") 38 - #set ($thumbnail = $thumbnail.replace('</div>', '</span>').replace('<div ', '<span ')) 39 - #end 40 - 41 - {{html clean=false}} 42 - <$elem class="viewFileThumbnail viewFileThumbnail$thumbnailStyle" $style data-preview="$previewSupported" data-ref="$escapetool.xml($services.model.serialize($attachmentRef, 'default'))"> 43 - <a href="$escapetool.xml($xwiki.getURL($attachmentRef))" 44 - download="download" 45 - #if ($thumbnailStyle == "Button") class="button button-primary" #end 46 - title="$escapetool.xml($services.localization.render('rendering.macro.viewFile.thumbnail.button.title'))" 47 - > 48 - $thumbnail 49 - <span class="viewFileName">$escapetool.xml($attachmentRef.getName())</span> 50 - </a> 51 - </$elem> 52 - {{/html}} 53 - 54 -#end 55 - 56 -#macro (renderFull $extension $attachmentRef $width $height) 57 - #set ($escapedAttachmentReference = $services.rendering.escape($attachmentRef, $xwiki.currentContentSyntaxId)) 58 - #if ($officeExtensions.contains($extension)) 59 - 60 - {{html clean=false}} 61 - <div class="viewFileFull#if (!$presentationExtensions.contains($extension)) box#end" 62 - style="width: $width; height: $height; overflow: auto"> 63 - {{/html}} 64 - 65 - {{office reference="$escapedAttachmentReference" /}} 66 - 67 - {{html clean=false}} 68 - </div> 69 - {{/html}} 70 - 71 - #elseif ($extension == 'pdf' && $hasPDFViewer) 72 - #if ($height.endsWith("px")) 73 - #set ($height = $stringtool.removeEnd($height, "px")) 74 - #end 75 - #if ($width.endsWith("px")) 76 - #set ($width = $stringtool.removeEnd($width, "px")) 77 - #end 78 - 79 - {{pdfviewer file="$escapedAttachmentReference" height="$height" width="$width"/}} 80 - 81 - #else 82 - #renderThumbnailButton($attachmentRef false $width $height) 83 - #end 84 -#end 85 - 86 86 #macro (executeMacro) 3 + #set($hasPDFViewer = $xwiki.exists("XWiki.PDFViewerMacro")) 4 + #set($officeExtensions = [ 'ppt', 'pptx', 'odp', 'doc', 'docx', 'odt', 'xls', 'xlsx', 'ods' ]) 87 87 #set($unescapedFilename = $xcontext.macro.params.get('att--filename')) 88 88 #if(!$unescapedFilename) 89 89 #set($unescapedFilename = $xcontext.macro.params.get('name')) 90 90 #end 91 - #if(!$unescapedFilename) 9 + #set($extension = $unescapedFilename.substring($mathtool.add($unescapedFilename.lastIndexOf('.'), 1)).toLowerCase()) 10 + #set($escapedFilename = $services.rendering.escape($unescapedFilename, $xwiki.currentContentSyntaxId)) 11 + #if($extension == 'pdf' && $hasPDFViewer) 92 92 93 - {{error}} 94 - $escapetool.xml($services.localization.render('rendering.macro.viewFile.namerequired'))" 95 - {{/error}} 96 - #end 97 - #continueExecutingMacro## 98 -#end 13 + {{pdfviewer file="$escapedFilename" /}} 14 + #elseif($officeExtensions.contains($extension)) 99 99 100 -#macro (continueExecutingMacro) 101 - #set ($attachmentRef = $services.model.resolveAttachment($unescapedFilename)) 102 - #set ($discard = $xwiki.ssx.use('Confluence.Macros.ViewFile')) 103 - #set ($extension = $unescapedFilename.substring($unescapedFilename.lastIndexOf('.') + 1).toLowerCase()) 104 - #set ($width = $xcontext.macro.params.get('width')) 105 - #set ($height = $xcontext.macro.params.get('height')) 106 - #set ($display = $xcontext.macro.params.get('display')) 107 - #if ("$!width" != "") 108 - #set ($width = $escapetool.xml($width)) 109 - #if (!$width.endsWith("%") && !$width.endsWith("px")) 110 - #set($width = $width + "px") 111 - #end 16 + {{office reference="attach:$escapedFilename" /}} 17 + #elseif($doc.getAttachment($unescapedFilename)) 18 + [[attach:$escapedFilename]] 112 112 #end 113 - #if ("$!height" != "") 114 - #set ($height = $escapetool.xml($height)) 115 - #if (!$height.endsWith("%") && !$height.endsWith("px")) 116 - #set($height = $height + "px") 117 - #end 118 - #end 119 - #if (($display == 'FULL' || $display == 'full') && ($wikimacro.context.isInline() || ($xcontext.action == "edit" || $request.outputSyntax == "annotatedhtml"))) 120 - #set ($display = "thumbnail") 121 - #end 122 - #if ($display == 'FULL' || $display == 'full') 123 - #if ("$!width" == "") 124 - #set ($width = "100%") 125 - #end 126 - #if ("$!height" == "") 127 - #set ($height = "1000px") 128 - #end 129 - #renderFull($extension $attachmentRef $width $height) 130 - #else 131 - ## thumbnail or fallback 132 - #set ($hasPreview = ($extension == 'pdf' && $hasPDFViewer) || $officeExtensions.contains($extension)) 133 - #if ($hasPreview) 134 - #set ($discard = $xwiki.jsx.use('Confluence.Macros.ViewFile')) 135 - #end 136 - #set ($forceCard = ($display == 'THUMBNAIL' || $display == 'thumbnail' || ("$!display" == "" && !$wikimacro.context.isInline()))) 137 - #if ($presentationExtensions.contains($extension)) 138 - #set ($discard = $xwiki.jsfx.use("uicomponents/widgets/gallery/gallery.js", {"forceSkinAction": true})) 139 - #set ($discard = $xwiki.ssfx.use("uicomponents/widgets/gallery/gallery.css")) 140 - #end 141 - #renderThumbnailButton($attachmentRef $hasPreview $width $height $forceCard) 142 - #end 143 143 #end 144 144 {{/velocity}} 145 145 23 +{{include reference="Licenses.Code.VelocityMacros"/}} 24 + 146 146 {{velocity}} 147 147 ## We need to check if there is a valid license because the macro is registered even if the user doesn't have view right 148 148 ## on the macro definition page. See XWIKI-14828: Rendering macros defined in wiki pages are available to users that 149 149 ## don't have view right on those pages. 150 -#if ($services. promacrolicensing.hasLicensureForEntity($xcontext.macro.doc.documentReference))##151 - #executeMacro ##29 +#if ($services.licensing.licensor.hasLicensureForEntity($xcontext.macro.doc.documentReference)) 30 + #executeMacro 152 152 #else 153 - {{missingLicenseMessage extensionName="proMacros.extension.name"/}} 32 + {{error}} 33 + #getMissingLicenseMessage('proMacros.extension.name') 34 + {{/error}} 154 154 #end 155 155 {{/velocity}} - Verfügbarkeit von Makroinhalten
-
... ... @@ -1,1 +1,1 @@ 1 - Nocontent1 +Optional - Standardkategorie
-
... ... @@ -1,0 +1,1 @@ 1 +content - Unterstützt Inline-Modus
-
... ... @@ -1,1 +1,1 @@ 1 - Ja1 +Nein
- XWiki.WikiMacroParameterClass[0]
-
- Parameter-Beschreibung
-
... ... @@ -1,1 +1,0 @@ 1 -Alias of name (here for compatibility reasons) - Parameter verpflichtend
-
... ... @@ -1,1 +1,0 @@ 1 -Nein - Parameter-Typ
-
... ... @@ -1,1 +1,0 @@ 1 -org.xwiki.model.reference.AttachmentReference
- XWiki.WikiMacroParameterClass[1]
-
- Parameter-Beschreibung
-
... ... @@ -1,1 +1,0 @@ 1 -The width of the view in % or px (e.g. 100%, 100px) - Parameter verpflichtend
-
... ... @@ -1,1 +1,0 @@ 1 -Nein - Parameter-Name
-
... ... @@ -1,1 +1,0 @@ 1 -width
- XWiki.WikiMacroParameterClass[2]
-
- Parameter-Beschreibung
-
... ... @@ -1,1 +1,0 @@ 1 -The height of the view in % or px (e.g. 100%, 100px) - Parameter verpflichtend
-
... ... @@ -1,1 +1,0 @@ 1 -Nein - Parameter-Name
-
... ... @@ -1,1 +1,0 @@ 1 -height
- XWiki.WikiMacroParameterClass[3]
-
- Parameter-Beschreibung
-
... ... @@ -1,1 +1,0 @@ 1 -Kind of display. "button" for a button, "thumbnail" for a thumbnail, "full" to render the document in place - Parameter verpflichtend
-
... ... @@ -1,1 +1,0 @@ 1 -Nein - Parameter-Name
-
... ... @@ -1,1 +1,0 @@ 1 -display - Parameter-Typ
-
... ... @@ -1,1 +1,0 @@ 1 -com.xwiki.macros.internal.ViewFileDisplay
- XWiki.WikiMacroParameterClass[4]
-
- Parameter-Beschreibung
-
... ... @@ -1,1 +1,0 @@ 1 -The attachment reference to display - Parameter verpflichtend
-
... ... @@ -1,1 +1,0 @@ 1 -Nein - Parameter-Name
-
... ... @@ -1,1 +1,0 @@ 1 -name - Parameter-Typ
-
... ... @@ -1,1 +1,0 @@ 1 -org.xwiki.model.reference.AttachmentReference