Changes for page Attachments
Last modified by teamwire004 on 2026/01/13 09:09
From version 5.1
edited by teamwire004
on 2024/07/08 15:23
on 2024/07/08 15:23
Change comment:
Migrated property [type] from class [XWiki.WikiMacroParameterClass]
To version 13.1
edited by teamwire004
on 2026/01/13 09:09
on 2026/01/13 09:09
Change comment:
Install extension [org.xwiki.platform:xwiki-platform-attachment-ui/17.10.2]
Summary
-
Page properties (1 modified, 0 added, 0 removed)
-
Objects (3 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -10,7 +10,7 @@ 10 10 #set ($docAction = $request.get('docAction')) 11 11 #set ($attachmentList = $targetAttachDocument.getAttachmentList()) 12 12 #if ($attachmentList && $attachmentList.size() > 0) 13 - #set ($sortedAttachments = $ sorttool.sort($attachmentList, 'date:desc'))13 + #set ($sortedAttachments = $collectiontool.sort($attachmentList, 'date:desc')) 14 14 #set ($lastAttachment = $sortedAttachments.get(0)) 15 15 #end 16 16 $response.sendRedirect($targetDocument.getURL($docAction, $escapetool.url({ ... ... @@ -38,7 +38,7 @@ 38 38 * @param $targetAttachDocument the document to list/save attachments to 39 39 * @param $options generic picker options 40 40 *# 41 -#macro (attachmentPicker_displayAttachmentGallery $targetDocument, $targetAttachDocument, $options) 41 +#macro (_attachmentPicker_displayAttachmentGallery $targetDocument, $targetAttachDocument, $options) 42 42 #set ($currentValue = $targetDocument.getValue($options.property)) 43 43 #if ("$!{targetAttachDocument.getAttachment($currentValue)}" == '') 44 44 #set ($currentValue = "$!{options.defaultValue}") ... ... @@ -45,14 +45,19 @@ 45 45 #end 46 46 (% class="gallery" %)((( 47 47 ## Only display the upload form if they have edit permission on targetAttachDocument 48 - #attachmentPicker_displayUploadForm($targetDocument, $targetAttachDocument, $options) 49 - #attachmentPicker_displayAttachmentGalleryEmptyValue($targetDocument, $targetAttachDocument, $options, $currentValue) 50 - #set ($sortedAttachments = $sorttool.sort($targetAttachDocument.getAttachmentList(), "${options.sortAttachmentsBy}") ) 48 + #_attachmentPicker_displayUploadForm($targetDocument, $targetAttachDocument, $options) 49 + #_attachmentPicker_displayAttachmentGalleryEmptyValue($targetDocument, $targetAttachDocument, $options, $currentValue) 50 + #if ("$!services.temporaryAttachments" != '') 51 + #set ($unsortedAttachments = $services.temporaryAttachments.listAllAttachments($targetAttachDocument)) 52 + #set ($sortedAttachments = $collectiontool.sort($unsortedAttachments, "${options.sortAttachmentsBy}")) 53 + #else 54 + #set ($sortedAttachments = $collectiontool.sort($targetAttachDocument.getAttachmentList(), "${options.sortAttachmentsBy}") ) 55 + #end 51 51 #foreach ($attachment in $sortedAttachments) 52 52 #set ($extension = $attachment.getFilename()) 53 53 #set ($extension = $extension.substring($mathtool.add($extension.lastIndexOf('.'), 1)).toLowerCase()) 54 54 #if ($options.filter.size() == 0 || $options.filter.contains($extension)) 55 - #attachmentPicker_displayAttachmentBox($attachment $targetDocument $targetAttachDocument, $options $currentValue) 60 + #_attachmentPicker_displayAttachmentBox($attachment $targetDocument $targetAttachDocument, $options $currentValue) 56 56 #end 57 57 #end 58 58 ))) ... ... @@ -66,7 +66,7 @@ 66 66 * @param $options generic picker options 67 67 * @param $currentValue the currently selected file, used for determining if the box should be highlighted as the current value 68 68 *# 69 -#macro (attachmentPicker_displayAttachmentBox $attachment $targetDocument $targetAttachDocument, $options $currentValue) 74 +#macro (_attachmentPicker_displayAttachmentBox $attachment $targetDocument $targetAttachDocument, $options $currentValue) 70 70 #set ($hasTemporaryAttachment = "$!services.temporaryAttachments" != '') 71 71 #set ($canEdit = $xwiki.hasAccessLevel('edit', $xcontext.user, ${targetAttachDocument.fullName})) 72 72 #set ($isTemporaryAttachment = false) ... ... @@ -84,8 +84,8 @@ 84 84 #if ($isTemporaryAttachment) 85 85 #set ($discard = $cssClasses.add('temporary_attachment')) 86 86 #end 87 - #attachmentPicker_displayStartFrame({'value' : $attachment.filename, 'text' : $attachment.filename, 'cssClass' : "${stringtool.join($cssClasses, ' ')}"} $currentValue) 88 - #attachmentPicker_displayAttachmentDetails($attachment $options) 92 + #_attachmentPicker_displayStartFrame({'value' : $attachment.filename, 'text' : $attachment.filename, 'cssClass' : "${stringtool.join($cssClasses, ' ')}"} $currentValue) 93 + #_attachmentPicker_displayAttachmentDetails($attachment $options) 89 89 #set ($returnURL = $escapetool.url($doc.getURL('view', $request.queryString))) 90 90 #set ($deleteURL = $targetAttachDocument.getAttachmentURL($attachment.filename, 'delattachment', "xredirect=${returnURL}&form_token=$!{services.csrf.getToken()}") ) 91 91 #set ($viewURL = $targetAttachDocument.getAttachmentURL($attachment.filename) )##{'name' : 'download', 'url' : $viewURL, 'rel' : '__blank'} ... ... @@ -95,9 +95,9 @@ 95 95 }))) 96 96 ## Delete action is only proposed for users with the edit right on the document. 97 97 ## If the temporary attachment is available, the delete action is only allowed for non-temporary attachments. 98 - #set ($attachmentActions = [{'name' : 'select', 'url' : $selectURL}]) 103 + #set ($attachmentActions = [{'name' : 'select', 'url' : $selectURL, 'icon' : 'check', 'extraCssClass' : 'btn btn-xs btn-success'}]) 99 99 #if($canDeleteAttachment) 100 - #set ($discard = $attachmentActions.add({'name' : 'delete', 'url' : $deleteURL})) 105 + #set ($discard = $attachmentActions.add({'name' : 'delete', 'url' : $deleteURL, 'icon' : 'cross', 'extraCssClass' : 'btn btn-xs btn-danger'})) 101 101 #end 102 102 #define($additionalContent) 103 103 #if ($isTemporaryAttachment) ... ... @@ -106,7 +106,7 @@ 106 106 (% title="$titleMessage" %)$services.icon.render('clock')(%%) 107 107 #end 108 108 #end 109 - #attachmentPicker_displayEndFrame ($attachmentActions $additionalContent) 114 + #_attachmentPicker_displayEndFrame ($attachmentActions $additionalContent) 110 110 #end 111 111 112 112 #** ... ... @@ -116,9 +116,10 @@ 116 116 * the title to display (boxOptions.text), optional extra CSS classnames to put on the box (boxOptions.cssClass) 117 117 * @param $currentValue the currently selected file, used for determining if this attachment should be highlighted as the current value 118 118 *# 119 -#macro (attachmentPicker_displayStartFrame $boxOptions $currentValue) 124 +#macro (_attachmentPicker_displayStartFrame $boxOptions $currentValue) 120 120 (% class="gallery_attachmentbox $!{boxOptions.cssClass} #if ("$!{boxOptions.value}" == $currentValue) current#{end}" %)((( 121 121 (% class="gallery_attachmenttitle" title="$services.rendering.escape($!{boxOptions.value}, 'xwiki/2.1')" %)((( 127 + #if($!{boxOptions.cssClass} == 'gallery_upload')$services.icon.render('add') #end## 122 122 $services.rendering.escape($boxOptions.text, 'xwiki/2.1') 123 123 ))) 124 124 (% class="gallery_attachmentframe" %)((( ... ... @@ -131,7 +131,7 @@ 131 131 * @param $attachment the target attachment to display 132 132 * @param $options generic picker options 133 133 *# 134 -#macro (attachmentPicker_displayAttachmentDetails $attachment $options) 140 +#macro (_attachmentPicker_displayAttachmentDetails $attachment $options) 135 135 #if ($attachment) 136 136 ## Compute the attachment reference because there's no getter. 137 137 #set ($attachmentReference = $services.model.createAttachmentReference($attachment.document.documentReference, ... ... @@ -140,12 +140,12 @@ 140 140 #if ($attachment.isImage() && $options.displayImage) 141 141 ## We add the version to the query string in order to invalidate the cache when an image attachment is replaced. 142 142 #set ($queryString = $escapetool.url({'version': $attachment.version})) 143 - [[[[image:$attachmentStringReference||width=180 queryString="$queryString"]]>>attach:$attachmentStringReference]] 149 + [[[[image:${attachmentStringReference}||width=180 queryString="$queryString"]]>>attach:$attachmentStringReference]] 144 144 #else 145 145 * (% class="mime" %){{html wiki=false clean=false}}#mimetypeimg($attachment.getMimeType().toLowerCase() $attachment.getFilename().toLowerCase()){{/html}}(%%) (% class="filename" %)$services.rendering.escape($attachment.getFilename(), 'xwiki/2.1')(% %) 146 146 * v$attachment.getVersion() (#dynamicsize($attachment.longSize)) 147 147 * $services.localization.render('core.viewers.attachments.author', [$!{xwiki.getUserName($attachment.author, false)}]) $services.localization.render('core.viewers.attachments.date', [$!{xwiki.formatDate($attachment.date, 'dd/MM/yyyy hh:mm')}]) 148 - * (% class="buttonwrapper" %)[[${services.localization.render("${translationPrefix}.actions.download")}>>attach:$attachmentStringReference||title="$services.localization.render("${translationPrefix}.actions.download")" rel="__blank" class="button"]](%%) 154 + * (% class="buttonwrapper" %)[[${services.localization.render("${translationPrefix}.actions.download")}>>attach:${attachmentStringReference}||title="$services.localization.render("${translationPrefix}.actions.download")" rel="__blank" class="button"]](%%) 149 149 #end 150 150 #end 151 151 #end ... ... @@ -164,12 +164,14 @@ 164 164 * </dl> 165 165 * @param $additionalContent optional additional content that does not follow the structure of the actions 166 166 *# 167 -#macro (attachmentPicker_displayEndFrame $actions $additionalContent) 173 +#macro (_attachmentPicker_displayEndFrame $actions $additionalContent) 168 168 )))## attachmentframe 169 169 (% class="gallery_actions" %)((( 170 170 #foreach ($action in $actions) 171 171 #set( $actionname = $services.localization.render("${translationPrefix}.actions.${action.name}") ) 172 - [[${actionname}>>path:${action.url}||class="tool ${action.name}" title="${actionname}" #if($action.rel) rel="${action.rel}"#end]]## 178 + [[${services.icon.render($action.icon)}(% class="sr-only"%)${actionname}(%%)>>## 179 + path:${action.url}||class="tool ${action.name} $!{action.extraCssClass}"## 180 + title="${actionname}" #if($action.rel) rel="${action.rel}"#end]]## 173 173 #end 174 174 $!additionalContent 175 175 )))## actions ... ... @@ -183,8 +183,8 @@ 183 183 * @param $targetAttachDocument the document to upload the attachment to 184 184 * @param $options generic picker options 185 185 *# 186 -#macro (attachmentPicker_displayUploadForm $targetDocument, $targetAttachDocument, $options) 187 -#attachmentPicker_displayStartFrame({ 194 +#macro (_attachmentPicker_displayUploadForm $targetDocument, $targetAttachDocument, $options) 195 +#_attachmentPicker_displayStartFrame({ 188 188 'value' : $services.localization.render("${translationPrefix}.upload.title"), 189 189 'text' : $services.localization.render("${translationPrefix}.upload.title"), 190 190 'cssClass' : 'gallery_upload' ... ... @@ -231,7 +231,7 @@ 231 231 </div> 232 232 </form> 233 233 {{/html}} 234 -#attachmentPicker_displayEndFrame ([]) 242 +#_attachmentPicker_displayEndFrame ([]) 235 235 #end 236 236 237 237 #** ... ... @@ -242,7 +242,7 @@ 242 242 * @param $options generic picker options 243 243 * @param $currentValue the currently selected file, used for determining if the empty box should be highlighted as the current value 244 244 *# 245 -#macro (attachmentPicker_displayAttachmentGalleryEmptyValue $targetDocument, $targetAttachDocument, $options, $currentValue) 253 +#macro (_attachmentPicker_displayAttachmentGalleryEmptyValue $targetDocument, $targetAttachDocument, $options, $currentValue) 246 246 #if ("$!{options.get('defaultValue')}" != '') 247 247 #set ($reference = ${options.get('defaultValue')}) 248 248 #set ($docNameLimit = $reference.indexOf('@')) ... ... @@ -257,11 +257,11 @@ 257 257 #set($dcssClass = 'gallery_image') 258 258 #end 259 259 #end 260 - #attachmentPicker_displayStartFrame({'cssClass' : "gallery_emptyChoice $!{dcssClass}", 'text' : $services.localization.render("${translationPrefix}.default"), 'value' : "${options.defaultValue}"} $currentValue) 261 - #attachmentPicker_displayAttachmentDetails($defaultAttachment $options) 268 + #_attachmentPicker_displayStartFrame({'cssClass' : "gallery_emptyChoice $!{dcssClass}", 'text' : $services.localization.render("${translationPrefix}.default"), 'value' : "${options.defaultValue}"} $currentValue) 269 + #_attachmentPicker_displayAttachmentDetails($defaultAttachment $options) 262 262 #set ($returnURL = $escapetool.url($doc.getURL('view', $request.queryString))) 263 263 #set ($selectURL = $targetDocument.getURL(${options.get('docAction')}, "${options.get('classname')}_${options.get('object')}_${options.get('property')}=&form_token=$!{services.csrf.getToken()}")) 264 - #attachmentPicker_displayEndFrame ([{'name' : 'select', 'url' : $selectURL}]) 272 + #_attachmentPicker_displayEndFrame ([{'name' : 'select', 'url' : $selectURL, 'icon' : 'check', 'extraCssClass' : 'btn btn-xs btn-success'}]) 265 265 #end 266 266 {{/velocity}} 267 267 ... ... @@ -315,7 +315,7 @@ 315 315 #end 316 316 #set ($options = { 317 317 'classname' : ${request.get('classname')}, 318 - 'object' : $!{m athtool.toInteger($request.object)},326 + 'object' : $!{numbertool.toNumber($request.object).intValue()}, 319 319 'property' : ${request.property}, 320 320 'displayImage' : ${displayImage}, 321 321 'docAction' : ${docAction}, ... ... @@ -326,12 +326,12 @@ 326 326 'versionSummary': $request.versionSummary.equals('true') 327 327 }) 328 328 $!targetDocument.use($targetDocument.getObject($options.classname, $options.object))## 329 - #attachmentPicker_displayAttachmentGallery($targetDocument, $targetAttachDocument, $options) 337 + #_attachmentPicker_displayAttachmentGallery($targetDocument, $targetAttachDocument, $options) 330 330 331 331 #set ($cancelLinkName = $services.rendering.escape($services.rendering.escape($services.localization.render("${translationPrefix}.cancel"), 'xwiki/2.1'), 'xwiki/2.1')) 332 332 #set ($cancelLinkTarget = $services.rendering.escape($services.model.serialize($targetDocument), 'xwiki/2.1')) 333 333 (% class="gallery_buttons buttons" %)((( 334 - (% class="buttonwrapper secondary" %)[[$ services.localization.render("${translationPrefix}.cancel")>>$targetDocument||class="button secondary" id="attachment-picker-close"]]342 + (% class="buttonwrapper secondary" %)[[$cancelLinkName>>$cancelLinkTarget||class="button secondary" id="attachment-picker-close"]] 335 335 ))) 336 336 #end 337 337 {{/velocity}}
- XWiki.JavaScriptExtension[0]
-
- Code
-
... ... @@ -167,7 +167,7 @@ 167 167 /** AJAX deletion of attachments. */ 168 168 onDelete : function(event) { 169 169 event.stop(); 170 - deleteTool = event.ele ment();170 + const deleteTool = event.target.closest('.btn'); 171 171 if (!deleteTool.disabled) { 172 172 new XWiki.widgets.ConfirmedAjaxRequest( 173 173 deleteTool.readAttribute('href'), ... ... @@ -210,7 +210,7 @@ 210 210 /** Update the property with the selected value without reloading the page. */ 211 211 onSelect : function(event) { 212 212 event.stop(); 213 - vartargetElement = event.element();213 + const targetElement = event.target.closest('.btn'); 214 214 var attachmentName = targetElement.up('.gallery_attachmentbox').down('.gallery_attachmenttitle').title; 215 215 var imageSource = targetElement.up('.gallery_attachmentbox.gallery_image'); 216 216 if (imageSource) { ... ... @@ -225,7 +225,7 @@ 225 225 if (this.directSave) { 226 226 // save via ajax 227 227 if (!targetElement.disabled) { 228 - new Ajax.Request( event.element().href, {228 + new Ajax.Request(targetElement.href, { 229 229 onCreate : function() { 230 230 targetElement.disabled = true; 231 231 targetElement._x_notif = new XWiki.widgets.Notification("$services.localization.render('core.widgets.confirmationBox.notification.inProgress')", 'inprogress');
- XWiki.StyleSheetExtension[0]
-
- Code
-
... ... @@ -25,9 +25,12 @@ 25 25 margin: 0; 26 26 } 27 27 .gallery_attachmentbox { 28 + display: grid; 29 + gap: .2rem; 28 28 background: $theme.pageContentBackgroundColor; 31 + padding: .2rem; 29 29 border: 1px solid $theme.borderColor; 30 - border-radius: 5px;33 + border-radius: var(--border-radius-base); 31 31 float: left; 32 32 margin: ${boxMargin}px; 33 33 overflow: hidden; ... ... @@ -36,8 +36,6 @@ 36 36 } 37 37 .gallery .current { 38 38 background-color: $theme.highlightColor; 39 - border-width: 3px; 40 - margin: 3px; 41 41 } 42 42 .gallery .current .gallery_attachmenttitle { 43 43 font-weight: bold; ... ... @@ -47,9 +47,7 @@ 47 47 } 48 48 49 49 .gallery_attachmenttitle { 50 - background: $theme.backgroundSecondaryColor; 51 - border-bottom: 1px dotted $theme.borderColor; 52 - border-radius: 5px 5px 0px 0px; 51 + grid-area: 1 / 1 / 2 / 2; 53 53 font-size: 85%; 54 54 padding: 3px ${boxPadding}px; 55 55 overflow: hidden; ... ... @@ -62,7 +62,7 @@ 62 62 } 63 63 64 64 .gallery_attachmentframe { 65 - padding:${boxPadding}px;64 + grid-area: 2 / 1 / 3 / 3; 66 66 height: ${imgSize}px; 67 67 overflow: hidden; 68 68 position: relative; ... ... @@ -101,39 +101,16 @@ 101 101 } 102 102 103 103 /* Actions */ 104 -.gallery_actions { 105 - width:auto;106 - position:absolute;107 - bottom:0px;108 - right: ${boxPadding}px;103 +.gallery_actions p { 104 + grid-area: 1 / 2 / 2 / 3; 105 + display: flex; 106 + justify-content: flex-end; 107 + gap: .2rem; 109 109 } 110 110 .gallery_actions .tool { 111 - background: none no-repeat 50% transparent; 112 112 cursor: pointer; 113 113 display: block; 114 - float: left; 115 - height: ${actionsHeight}px; 116 - padding: 0 !important; 117 - overflow: hidden; 118 - text-indent: -1000em; 119 - opacity: 0.6; 120 - width: ${actionsWidth}px; 121 121 } 122 -.gallery_actions .tool:hover { 123 - opacity: 1; 124 -} 125 -.gallery_actions .select { 126 - background-image: url("$xwiki.getSkinFile('icons/silk/tick.png')"); 127 -} 128 -.gallery_actions .delete { 129 - background-image: url("$xwiki.getSkinFile('icons/silk/cross.png')"); 130 -} 131 -.gallery_actions .view { 132 - background-image: url("$xwiki.getSkinFile('icons/silk/link.png')"); 133 -} 134 -.gallery_actions .download { 135 - background-image: url("$xwiki.getSkinFile('icons/silk/arrow_down.png')"); 136 -} 137 137 /*--------------------------------------------------*/ 138 138 /* Upload form */ 139 139 .gallery_upload { ... ... @@ -144,12 +144,6 @@ 144 144 background-color: $theme.backgroundSecondaryColor; 145 145 } 146 146 147 -.gallery_upload .gallery_attachmenttitle { 148 - background-position: 1px center; 149 - background-image: url("$xwiki.getSkinFile('icons/silk/bullet_add.png')"); 150 - background-repeat: no-repeat; 151 - padding-left: 16px; 152 -} 153 153 .gallery_upload .gallery_attachmentframe { 154 154 height: auto; 155 155 }
- XWiki.WikiMacroClass[0]
-
- Macro code
-
... ... @@ -3,7 +3,6 @@ 3 3 $xwiki.ssfx.use('js/xwiki/widgets/modalPopup.css', true)## 4 4 $xwiki.jsx.use($xcontext.macro.doc.fullName)## 5 5 $xwiki.ssx.use($xcontext.macro.doc.fullName)## 6 -$xwiki.jsfx.use('js/scriptaculous/builder.js')## 7 7 ## Integrates the optional Lightbox widget (from http://extensions.xwiki.org/xwiki/bin/view/Extension/Lightbox+Application ) 8 8 #if ($xwiki.exists('XWiki.Lightbox')) 9 9 $xwiki.jsx.use('XWiki.Lightbox') ... ... @@ -32,7 +32,7 @@ 32 32 #end 33 33 #set ($classname = "$!{xcontext.macro.params.classname}") 34 34 #set ($property = "$!{xcontext.macro.params.property}") 35 -#set ($object = $m athtool.toInteger("$!{xcontext.macro.params.object}"))34 +#set ($object = $numbertool.toNumber("$!{xcontext.macro.params.object}").intValue()) 36 36 #if ("$!{object}" != $!{xcontext.macro.params.object}) 37 37 #set ($object = ${targetdoc.getObject($classname).number}) 38 38 #if ("$!{object}" == '') ... ... @@ -98,7 +98,7 @@ 98 98 #set ($propValue = "$!{targetdoc.getObject($classname, $object).getProperty($property).value}") 99 99 ## 100 100 101 -#macro (attachmentPicker_displayAttachment $name $displayImage $withLink $forceElement) 100 +#macro (_attachmentPicker_displayAttachment $name $displayImage $withLink $forceElement) 102 102 #set ($attachment = $targetdoc.getAttachment("$!{name}")) 103 103 #if ("$!{name}" != '' && "$!{attachment}" != '') 104 104 #set ($attachmentRef = $services.model.createAttachmentReference(${targetdoc.documentReference}, ${name})) ... ... @@ -131,7 +131,7 @@ 131 131 ## Display the "Choose an attachment" button if they can: 132 132 ## 1. Edit the current page 133 133 ## 2. View the target attachment page. (can be the same page) 134 -#macro (attachmentPicker_displayButton) 133 +#macro (_attachmentPicker_displayButton) 135 135 #if ($targetPermView) 136 136 #set ($queryString = { 137 137 'docname': $doc.fullName, ... ... @@ -147,8 +147,9 @@ 147 147 #if ($hasTargetDoc) 148 148 #set ($queryString.targetdocname = $targetdoc.fullName) 149 149 #end 150 - (% class="buttonwrapper" %)[[$buttontext>>$xcontext.macro.doc.fullName||queryString="$escapetool.url($queryString)" 151 - class="attachment-picker-start button" title="$buttontext"]](%%)## 149 + #set ($linkLabel = $services.rendering.escape($services.rendering.escape($buttontext, 'xwiki/2.1'), 'xwiki/2.1')) 150 + (% class="buttonwrapper" %)[[$linkLabel>>${xcontext.macro.doc.fullName}||queryString="$escapetool.url($queryString)" 151 + class="attachment-picker-start button" title="$services.rendering.escape($buttontext, 'xwiki/2.1')"]](%%)## 152 152 #end 153 153 #end 154 154 {{/velocity}} ... ... @@ -155,13 +155,13 @@ 155 155 156 156 {{velocity}} 157 157 #if ("${savemode}" == 'direct') 158 - (% class="attachment-picker" %)(((#attachmentPicker_displayAttachment($propValue $displayImage $link true) #attachmentPicker_displayButton()))) 158 + (% class="attachment-picker" %)(((#_attachmentPicker_displayAttachment($propValue $displayImage $link true) #_attachmentPicker_displayButton()))) 159 159 #elseif ($xcontext.action == 'inline' || $xcontext.action == 'edit') 160 160 (% class="attachment-picker" %)(((## 161 - #attachmentPicker_displayAttachment($propValue $displayImage false true) #attachmentPicker_displayButton()## 161 + #_attachmentPicker_displayAttachment($propValue $displayImage false true) #_attachmentPicker_displayButton()## 162 162 {{html}}<input type="hidden" name="$escapetool.xml("${classname}_${object}_${property}")" value="$escapetool.xml("${propValue}")" class="property-reference"/>{{/html}}## 163 163 ))) 164 164 #else 165 - #attachmentPicker_displayAttachment($propValue $displayImage $link false) 165 + #_attachmentPicker_displayAttachment($propValue $displayImage $link false) 166 166 #end 167 167 {{/velocity}}