Änderungen von Dokument Attachments
Zuletzt geändert von xwikiadmin am 2026/03/05 08:08
Von Version 2.1
bearbeitet von xwikiadmin
am 2023/04/25 11:49
am 2023/04/25 11:49
Änderungskommentar:
Install extension [com.xwiki.pro:xwiki-pro-macros/1.7.1]
Auf Version 1.1
bearbeitet von xwikiadmin
am 2023/03/07 16:26
am 2023/03/07 16:26
Änderungskommentar:
Install extension [com.xwiki.pro:xwiki-pro-macros/1.7]
Zusammenfassung
-
Objekte (1 geändert, 0 hinzugefügt, 0 gelöscht)
Details
- XWiki.WikiMacroClass[0]
-
- Makro-Code
-
... ... @@ -1,187 +1,169 @@ 1 1 {{velocity output="false"}} 2 -#macro (filterAndSortAttachments $attachmentsFiltered $invalidSortBy $invalidSortOrder) 3 - $xwiki.ssx.use('Confluence.Macros.Attachments') 4 - $xwiki.jsx.use('Confluence.Macros.Attachments') 5 - #if ("$!{request.forceTestRights}" == "1")#template("xwikivars.vm")#end 6 - #template('attachment_macros.vm') 7 - ## Get attachments 8 - #if ("$!wikimacro.parameters.tags" != '') 9 - #set ($tags = $!wikimacro.parameters.tags.split(',')) 10 - #set ($pageReferenceSet = $collectiontool.getSet()) 11 - #foreach ($tag in $tags) 12 - #set ($references = $xwiki.tag.getDocumentsWithTag("$tag")) 13 - #set ($discard = $pageReferenceSet.addAll($references)) 14 - #end 15 - #set ($attachments = []) 16 - #foreach ($pageReference in $pageReferenceSet) 17 - #set ($document = $xwiki.getDocument($pageReference)) 18 - #set ($documentAttachments = $document.attachmentList) 19 - #set ($discard = $attachments.addAll($documentAttachments)) 20 - #end 21 - #else 22 - #set ($attachments = $doc.attachmentList) 23 - #if ("$!wikimacro.parameters.page" != '') 24 - #set ($document = $xwiki.getDocument("$!wikimacro.parameters.page")) 25 - #set ($attachments = $document.attachmentList) 26 - #end 2 +$xwiki.ssx.use('Confluence.Macros.Attachments') 3 +$xwiki.jsx.use('Confluence.Macros.Attachments') 4 +#if ("$!{request.forceTestRights}" == "1")#template("xwikivars.vm")#end 5 +#template('attachment_macros.vm') 6 +## Get attachments 7 +#if ("$!wikimacro.parameters.tags" != '') 8 + #set ($tags = $!wikimacro.parameters.tags.split(',')) 9 + #set ($pageReferenceSet = $collectiontool.getSet()) 10 + #foreach ($tag in $tags) 11 + #set ($references = $xwiki.tag.getDocumentsWithTag("$tag")) 12 + #set ($discard = $pageReferenceSet.addAll($references)) 27 27 #end 28 - ## Filter attachments 29 - #set ($confluencePatterns = "$!wikimacro.parameters.patterns") 30 - #if ($confluencePatterns == '') 31 - #set($attachmentsFiltered = $attachments) 32 - #else 33 - #set ($patterns = $!confluencePatterns.split(',')) 34 - #set($attachmentsFiltered = []) 35 - #foreach ($attachment in $attachments) 36 - #foreach ($pattern in $patterns) 37 - #set ($matches = $attachment.filename.matches("(?i)$!pattern")) 38 - #if ($matches) 39 - #set ($discard = $attachmentsFiltered.add($attachment)) 40 - #break 41 - #end 14 + #set ($attachments = []) 15 + #foreach ($pageReference in $pageReferenceSet) 16 + #set ($document = $xwiki.getDocument($pageReference)) 17 + #set ($documentAttachments = $document.attachmentList) 18 + #set ($discard = $attachments.addAll($documentAttachments)) 19 + #end 20 +#else 21 + #set ($attachments = $doc.attachmentList) 22 + #if ("$!wikimacro.parameters.page" != '') 23 + #set ($document = $xwiki.getDocument("$!wikimacro.parameters.page")) 24 + #set ($attachments = $document.attachmentList) 25 + #end 26 +#end 27 +## Filter attachments 28 +#set ($confluencePatterns = "$!wikimacro.parameters.patterns") 29 +#if ($confluencePatterns == '') 30 + #set($attachmentsFiltered = $attachments) 31 +#else 32 + #set ($patterns = $!confluencePatterns.split(',')) 33 + #set($attachmentsFiltered = []) 34 + #foreach ($attachment in $attachments) 35 + #foreach ($pattern in $patterns) 36 + #set ($matches = $attachment.filename.matches("(?i)$!pattern")) 37 + #if ($matches) 38 + #set ($discard = $attachmentsFiltered.add($attachment)) 39 + #break 42 42 #end 43 43 #end 44 44 #end 45 - ## Sort attachments 46 - #set ($confluenceSortBy = "$!wikimacro.parameters.sortBy") 47 - #set ($invalidSortBy = false) 48 - #if ($confluenceSortBy == 'date') 49 - #set ($sortBy = 'date') 50 - #elseif ($confluenceSortBy == 'size') 51 - #set ($sortBy = 'filesize') 52 - #elseif ($confluenceSortBy == 'name') 53 - #set ($sortBy = 'filename') 54 - #elseif ($confluenceSortBy == 'creation date') 55 - #set ($sortBy = 'date') 43 +#end 44 +## Sort attachments 45 +#set ($confluenceSortBy = "$!wikimacro.parameters.sortBy") 46 +#set ($invalidSortBy = false) 47 +#if ($confluenceSortBy == 'date') 48 + #set ($sortBy = 'date') 49 +#elseif ($confluenceSortBy == 'size') 50 + #set ($sortBy = 'filesize') 51 +#elseif ($confluenceSortBy == 'name') 52 + #set ($sortBy = 'filename') 53 +#elseif ($confluenceSortBy == 'creation date') 54 + #set ($sortBy = 'date') 55 +#else 56 + #set ($invalidSortBy = true) 57 +#end 58 +#set ($confluenceSortOrder = "$!wikimacro.parameters.sortOrder") 59 +#set ($invalidSortOrder = false) 60 +#set ($reverseSortOrderProperties = ['filesize', 'date']) 61 +#if ($confluenceSortOrder == 'ascending') 62 + #if ($reverseSortOrderProperties.contains($sortBy)) 63 + #set ($sortOrder = 'desc') 56 56 #else 57 - #set ($ invalidSortBy=true)65 + #set ($sortOrder = 'asc') 58 58 #end 59 - #set ($confluenceSortOrder = "$!wikimacro.parameters.sortOrder") 60 - #set ($invalidSortOrder = false) 61 - #set ($reverseSortOrderProperties = ['filesize', 'date']) 62 - #if ($confluenceSortOrder == 'ascending') 63 - #if ($reverseSortOrderProperties.contains($sortBy)) 64 - #set ($sortOrder = 'desc') 65 - #else 66 - #set ($sortOrder = 'asc') 67 - #end 68 - #elseif ($confluenceSortOrder == 'descending') 69 - #if ($reverseSortOrderProperties.contains($sortBy)) 70 - #set ($sortOrder = 'asc') 71 - #else 72 - #set ($sortOrder = 'desc') 73 - #end 67 +#elseif ($confluenceSortOrder == 'descending') 68 + #if ($reverseSortOrderProperties.contains($sortBy)) 69 + #set ($sortOrder = 'asc') 74 74 #else 75 - #set ($ invalidSortOrder =false)71 + #set ($sortOrder = 'desc') 76 76 #end 77 - #set ($attachmentsFiltered = $collectiontool.sort($attachmentsFiltered, "$sortBy:$sortOrder")) 73 +#else 74 + #set ($invalidSortOrder = false) 78 78 #end 76 +#set ($attachmentsFiltered = $collectiontool.sort($attachmentsFiltered, "$sortBy:$sortOrder")) 77 +{{/velocity}} 79 79 80 -#macro (executeMacro) 81 - #filterAndSortAttachments($attachmentsFiltered $invalidSortBy $invalidSortOrder) 82 - #if ($invalidSortBy) 83 - {{error}} 84 - Attachment macro error: sortBy parameter must be one of 'date', 'size', or 'name' 85 - {{/error}} 86 - #break 87 - #end 88 - #if ($invalidSortOrder) 89 - {{error}} 90 - Attachment macro error: sortOrder parameter must be one of 'ascending' or 'descending' 91 - {{/error}} 92 - #break 93 - #end 94 - ## Display attachments 95 - {{html clean="false"}} 96 - <div class="confluence-attachment-macro"> 97 - #if ($attachmentsFiltered.size() > 0) 98 - #displayAttachments($attachmentsFiltered) 99 - #deleteAttachmentModal() 100 - #else 101 - <p class="noitems"> 102 - $!escapetool.xml($services.localization.render('core.viewers.attachments.noAttachments')) 103 - </p> 104 - #end 79 +{{velocity}} 80 +#if ($invalidSortBy) 81 + {{error}} 82 + Attachment macro error: sortBy parameter must be one of 'date', 'size', or 'name' 83 + {{/error}} 84 + #break 85 +#end 86 +#if ($invalidSortOrder) 87 + {{error}} 88 + Attachment macro error: sortOrder parameter must be one of 'ascending' or 'descending' 89 + {{/error}} 90 + #break 91 +#end 92 +## Display attachments 93 +{{html clean="false"}} 94 + <div class="confluence-attachment-macro"> 95 + #if ($attachmentsFiltered.size() > 0) 96 + #displayAttachments($attachmentsFiltered) 97 + #deleteAttachmentModal() 98 + #else 99 + <p class="noitems"> 100 + $!escapetool.xml($services.localization.render('core.viewers.attachments.noAttachments')) 101 + </p> 102 + #end 105 105 106 - ## Allow upload107 - #set ($upload = "$!wikimacro.parameters.upload")108 - #if ($upload == 'true' && ($hasEdit || $hasAdmin) && $xcontext.action == 'view')109 - <form110 - id="AddAttachment"111 - action="$doc.getURL("upload")"112 - method="post"113 - enctype="multipart/form-data"114 - >115 - <div>116 - ## CSRF prevention117 - <input118 - type="hidden"119 - name="form_token"120 - value="$!{services.csrf.getToken()}"121 - />104 + ## Allow upload 105 + #set ($upload = "$!wikimacro.parameters.upload") 106 + #if ($upload == 'true' && ($hasEdit || $hasAdmin) && $xcontext.action == 'view') 107 + <form 108 + id="AddAttachment" 109 + action="$doc.getURL("upload")" 110 + method="post" 111 + enctype="multipart/form-data" 112 + > 113 + <div> 114 + ## CSRF prevention 115 + <input 116 + type="hidden" 117 + name="form_token" 118 + value="$!{services.csrf.getToken()}" 119 + /> 122 122 123 - <fieldset id="attachform">124 - <legend>125 - $!escapetool.xml($services.localization.render('core.viewers.attachments.upload.title'))126 - </legend>121 + <fieldset id="attachform"> 122 + <legend> 123 + $!escapetool.xml($services.localization.render('core.viewers.attachments.upload.title')) 124 + </legend> 127 127 128 - <div class="fileupload-field">129 - <label130 - class="hidden"131 - for="xwikiuploadfile"132 - >133 - $!escapetool.xml($services.localization.render('core.viewers.attachments.upload.file'))134 - </label>126 + <div class="fileupload-field"> 127 + <label 128 + class="hidden" 129 + for="xwikiuploadfile" 130 + > 131 + $!escapetool.xml($services.localization.render('core.viewers.attachments.upload.file')) 132 + </label> 135 135 134 + <input 135 + id="xwikiuploadfile" 136 + class="uploadFileInput noitems" 137 + type="file" 138 + name="filepath" 139 + size="40" 140 + data-max-file-size="$!escapetool.xml($xwiki.getSpacePreference('upload_maxsize'))" 141 + /> 142 + </div> 143 + 144 + <div> 145 + <span class="buttonwrapper"> 136 136 <input 137 - id="xwikiuploadfile" 138 - class="uploadFileInput noitems" 139 - type="file" 140 - name="filepath" 141 - size="40" 142 - data-max-file-size="$!escapetool.xml($xwiki.getSpacePreference('upload_maxsize'))" 147 + class="button btn btn-primary" 148 + type="submit" 149 + value="$!escapetool.xml($services.localization.render('core.viewers.attachments.upload.submit'))" 143 143 /> 144 - </ div>151 + </span> 145 145 146 - <div> 147 - <span class="buttonwrapper"> 148 - <input 149 - class="button btn btn-primary" 150 - type="submit" 151 - value="$!escapetool.xml($services.localization.render('core.viewers.attachments.upload.submit'))" 152 - /> 153 - </span> 154 - 155 - <span class="buttonwrapper"> 156 - <a 157 - class="cancel secondary button btn btn-primary" 158 - href="$doc.getURL()" 159 - > 160 - $!escapetool.xml($services.localization.render('core.viewers.attachments.upload.cancel')) 161 - </a> 162 - </span> 163 - </div> 164 - </fieldset> 165 - </div> 166 - </form> 167 - #end 168 - </div> ## .confluence-attachment-macro 169 - {{/html}} 170 -#end 153 + <span class="buttonwrapper"> 154 + <a 155 + class="cancel secondary button btn btn-primary" 156 + href="$doc.getURL()" 157 + > 158 + $!escapetool.xml($services.localization.render('core.viewers.attachments.upload.cancel')) 159 + </a> 160 + </span> 161 + </div> 162 + </fieldset> 163 + </div> 164 + </form> 165 + #end 166 + </div> ## .confluence-attachment-macro 167 +{{/html}} 171 171 {{/velocity}} 172 172 173 -{{include reference="Licenses.Code.VelocityMacros"/}} 174 - 175 -{{velocity}} 176 -## We need to check if there is a valid license because the macro is registered even if the user doesn't have view right 177 -## on the macro definition page. See XWIKI-14828: Rendering macros defined in wiki pages are available to users that 178 -## don't have view right on those pages. 179 -#if ($services.licensing.licensor.hasLicensureForEntity($xcontext.macro.doc.documentReference)) 180 - #executeMacro 181 -#else 182 - {{error}} 183 - #getMissingLicenseMessage('proMacros.extension.name') 184 - {{/error}} 185 -#end 186 -{{/velocity}} 187 -