Ä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
Ä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
Änderungskommentar: Install extension [com.xwiki.pro:xwiki-pro-macros/1.7]

Zusammenfassung

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 upload
107 - #set ($upload = "$!wikimacro.parameters.upload")
108 - #if ($upload == 'true' && ($hasEdit || $hasAdmin) && $xcontext.action == 'view')
109 - <form
110 - id="AddAttachment"
111 - action="$doc.getURL("upload")"
112 - method="post"
113 - enctype="multipart/form-data"
114 - >
115 - <div>
116 - ## CSRF prevention
117 - <input
118 - 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 - <label
130 - 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 -