From a0bcbd084b6df2284eac7f99a8c935327bd04e50 Mon Sep 17 00:00:00 2001 From: LucasC Date: Wed, 17 Sep 2025 18:38:38 +0200 Subject: [PATCH 1/2] XWIKI-23002: The attachment selector create should be a button instead of link * Updated the AttachmentSelector component to use a button instead of a link (kept backwards compatibility on JS). * Updated the custom styles of the user sheet to fit the new DOM * Updated the select and delete button selectors so that they work even when clicking the icon inside them (somehow they were bugged.) --- .../resources/XWiki/AttachmentSelector.xml | 33 +++++++++++++++---- .../main/resources/XWiki/XWikiUserSheet.xml | 8 ++--- 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-ui/src/main/resources/XWiki/AttachmentSelector.xml b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-ui/src/main/resources/XWiki/AttachmentSelector.xml index 0e81c56a9f3..1af86734b3e 100644 --- a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-ui/src/main/resources/XWiki/AttachmentSelector.xml +++ b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-ui/src/main/resources/XWiki/AttachmentSelector.xml @@ -637,7 +637,7 @@ $xwiki.jsx.use($attachmentPickerDocName) /** AJAX deletion of attachments. */ onDelete : function(event) { event.stop(); - deleteTool = event.element(); + deleteTool = event.element().up('a.delete') || event.element(); if (!deleteTool.disabled) { new XWiki.widgets.ConfirmedAjaxRequest( deleteTool.readAttribute('href'), @@ -680,7 +680,7 @@ $xwiki.jsx.use($attachmentPickerDocName) /** Update the property with the selected value without reloading the page. */ onSelect : function(event) { event.stop(); - var targetElement = event.element(); + var targetElement = event.element().up('a.select') || event.element(); var attachmentName = targetElement.up('.gallery_attachmentbox').down('.gallery_attachmenttitle').title; var imageSource = targetElement.up('.gallery_attachmentbox.gallery_image'); if (imageSource) { @@ -695,7 +695,14 @@ $xwiki.jsx.use($attachmentPickerDocName) if (this.directSave) { // save via ajax if (!targetElement.disabled) { - new Ajax.Request(event.element().href, { + let url = null; + if (targetElement.tagName === "a") { + url = targetElement.href; + } + else { + url = targetElement.dataset.modalUrl; + } + new Ajax.Request(url, { onCreate : function() { targetElement.disabled = true; targetElement._x_notif = new XWiki.widgets.Notification("$services.localization.render('core.widgets.confirmationBox.notification.inProgress')", 'inprogress'); @@ -789,7 +796,13 @@ $xwiki.jsx.use($attachmentPickerDocName) $$('.attachment-picker-start').invoke('observe', 'click', function(event) { event.stop(); var targetElement = event.element(); - var url = targetElement.href; + let url = null; + if (targetElement.tagName === "a") { + url = targetElement.href; + } + else { + url = targetElement.dataset.modalUrl; + } if (url.indexOf('?') < 0) { url += '?'; } @@ -1611,9 +1624,15 @@ $xwiki.ssx.use($xcontext.macro.doc.fullName)## #if ($hasTargetDoc) #set ($queryString.targetdocname = $targetdoc.fullName) #end - #set ($linkLabel = $services.rendering.escape($services.rendering.escape($buttontext, 'xwiki/2.1'), 'xwiki/2.1')) - (% class="buttonwrapper" %)[[$linkLabel>>${xcontext.macro.doc.fullName}||queryString="$escapetool.url($queryString)" - class="attachment-picker-start button" title="$services.rendering.escape($buttontext, 'xwiki/2.1')"]](%%)## + #set ($linkLabel = $escapetool.xml($buttontext)) + #set ($modalUrl = $escapetool.xml("$xcontext.macro.doc.URL?$escapetool.url($queryString)")) + (% class="buttonwrapper" %)## + {{html clean="false"}} + <button class="attachment-picker-start button" + title="$!{linkLabel}" + data-modal-url="${modalUrl}">$!linkLabel + </button> + {{/html}}(%%)## #end #end {{/velocity}} diff --git a/xwiki-platform-core/xwiki-platform-user/xwiki-platform-user-profile/xwiki-platform-user-profile-ui/src/main/resources/XWiki/XWikiUserSheet.xml b/xwiki-platform-core/xwiki-platform-user/xwiki-platform-user-profile/xwiki-platform-user-profile-ui/src/main/resources/XWiki/XWikiUserSheet.xml index 2b5b1be684f..fe335769f5f 100644 --- a/xwiki-platform-core/xwiki-platform-user/xwiki-platform-user-profile/xwiki-platform-user-profile-ui/src/main/resources/XWiki/XWikiUserSheet.xml +++ b/xwiki-platform-core/xwiki-platform-user/xwiki-platform-user-profile/xwiki-platform-user-profile-ui/src/main/resources/XWiki/XWikiUserSheet.xml @@ -666,12 +666,10 @@ span#avatarUpload { #user-menu-col .attachment-picker { .buttonwrapper { - .wikilink { - display: flex; - flex-flow: column; - } + display: flex; + flex-flow: column; - a.button { + .button { .btn; .btn-default; border-radius: 0 0 @border-radius-base @border-radius-base; From e53812b60986fd8c477888da9c6ebb4ba3bffce6 Mon Sep 17 00:00:00 2001 From: LucasC Date: Wed, 17 Sep 2025 18:55:18 +0200 Subject: [PATCH 2/2] XWIKI-23002: The attachment selector create should be a button instead of link * Reverted unwanted changes --- .../src/main/resources/XWiki/AttachmentSelector.xml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-ui/src/main/resources/XWiki/AttachmentSelector.xml b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-ui/src/main/resources/XWiki/AttachmentSelector.xml index 1af86734b3e..ec748a5af24 100644 --- a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-ui/src/main/resources/XWiki/AttachmentSelector.xml +++ b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-ui/src/main/resources/XWiki/AttachmentSelector.xml @@ -695,14 +695,7 @@ $xwiki.jsx.use($attachmentPickerDocName) if (this.directSave) { // save via ajax if (!targetElement.disabled) { - let url = null; - if (targetElement.tagName === "a") { - url = targetElement.href; - } - else { - url = targetElement.dataset.modalUrl; - } - new Ajax.Request(url, { + new Ajax.Request(targetElement.href, { onCreate : function() { targetElement.disabled = true; targetElement._x_notif = new XWiki.widgets.Notification("$services.localization.render('core.widgets.confirmationBox.notification.inProgress')", 'inprogress');