From 07f39f0c0a3afe0b912a49b98c3e440bf8f11100 Mon Sep 17 00:00:00 2001 From: LucasC Date: Mon, 2 Sep 2024 14:40:10 +0200 Subject: [PATCH 01/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Part A --- .../src/main/resources/templates/changesdoc.vm | 8 ++------ .../src/main/resources/templates/passwd.vm | 4 ++-- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/changesdoc.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/changesdoc.vm index a72067369c87..3594381c5843 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/changesdoc.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/changesdoc.vm @@ -134,13 +134,9 @@ #if ($includes.contains('renderedChanges')) #set ($htmlDiff = $services.diff.html.unified($origdoc.renderedContent, $newdoc.renderedContent)) #if ($htmlDiff == '') -
- $escapetool.xml($services.localization.render('web.history.changes.noChanges')) -
+ #info($escapetool.xml($services.localization.render('web.history.changes.noChanges'))) #elseif ("$!htmlDiff" == '') -
- $escapetool.xml($services.localization.render('web.history.changes.failedToCompute')) -
+ #error($escapetool.xml($services.localization.render('web.history.changes.failedToCompute'))) #else #if (($origdoc.isRestricted() || $newdoc.isRestricted()) && ($services.user.allProperties.type == 'ADVANCED' || $stringtool.contains($htmlDiff, 'xwikirenderingerror'))) diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/passwd.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/passwd.vm index f70ac35ce4f0..b90ea884301b 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/passwd.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/passwd.vm @@ -18,7 +18,7 @@ ## 02110-1301 USA, or see the FSF site: http://www.fsf.org. ## --------------------------------------------------------------------------- ### -### Change a user's password +### Change a user's password from the user preferences. ### ### #template("startpage.vm") @@ -61,7 +61,7 @@ #end #end #if($request.xwikipassword && $isValidPassword) - $services.localization.render('platform.core.profile.passwd.success') + #info($services.localization.render('platform.core.profile.passwd.success')) $services.localization.render('platform.core.profile.passwd.return') #end #if(!$isValidPassword) From d6864472c5b4df13d1e96d864621601df1504ebb Mon Sep 17 00:00:00 2001 From: LucasC Date: Mon, 2 Sep 2024 17:13:50 +0200 Subject: [PATCH 02/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Velocity macro update --- .../resources/ApplicationResources.properties | 2 ++ .../src/main/resources/templates/macros.vm | 18 +++++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-oldcore/src/main/resources/ApplicationResources.properties b/xwiki-platform-core/xwiki-platform-oldcore/src/main/resources/ApplicationResources.properties index d3b6dfab9587..c3d24539f423 100644 --- a/xwiki-platform-core/xwiki-platform-oldcore/src/main/resources/ApplicationResources.properties +++ b/xwiki-platform-core/xwiki-platform-oldcore/src/main/resources/ApplicationResources.properties @@ -417,6 +417,8 @@ Error=Error error=Error warning=Warning Warning=Warning +info=Information +success=Success uploadavatarfile=Upload new user photo setthisavatar=Set this photo notauser=This is not a user! diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm index 75d1bd8f02ce..950e44e1b66a 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm @@ -953,16 +953,28 @@ $html ### message ### +#macro(genericMessage $text $classAffix $iconName $prettyNameKey) +
+ $services.icon.renderHTML($iconName) + $services.localization.render($prettyNameKey) + $text +
+#end + #macro(warning $text) -
$services.localization.render('warning'): $text
+#genericMessage($text 'warning' 'warning' 'warning') #end #macro(error $text) -
$services.localization.render('error'): $text
+#genericMessage($text 'error' 'error' 'error') #end #macro(info $text) -
$text
+#genericMessage($text 'info' 'info' 'info') +#end + +#macro(success $text) +#genericMessage($text 'success' 'success' 'success') #end #macro(message $text) From 358f3863ed3f7a5b6829b2fa9b85e0d36032358c Mon Sep 17 00:00:00 2001 From: LucasC Date: Tue, 3 Sep 2024 13:58:46 +0200 Subject: [PATCH 03/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Part B * extensionHistory.vm * extension.vm * distribution/macros.vm * template/macros.vm * Extensions.xml * AnnotationCode/Macros.xml --- .../main/resources/AnnotationCode/Macros.xml | 4 +- .../src/main/resources/XWiki/Extensions.xml | 56 +++++++++++-------- .../templates/distribution/macros.vm | 4 +- .../src/main/resources/templates/extension.vm | 14 ++--- .../resources/templates/extensionHistory.vm | 21 ++----- .../src/main/resources/templates/macros.vm | 2 +- 6 files changed, 49 insertions(+), 52 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-annotation/xwiki-platform-annotation-ui/src/main/resources/AnnotationCode/Macros.xml b/xwiki-platform-core/xwiki-platform-annotation/xwiki-platform-annotation-ui/src/main/resources/AnnotationCode/Macros.xml index 7a206f134a87..ef93fdf41f8a 100644 --- a/xwiki-platform-core/xwiki-platform-annotation/xwiki-platform-annotation-ui/src/main/resources/AnnotationCode/Macros.xml +++ b/xwiki-platform-core/xwiki-platform-annotation/xwiki-platform-annotation-ui/src/main/resources/AnnotationCode/Macros.xml @@ -119,7 +119,7 @@ #displayAnnotationBoxButtons('edit') </form> #else - <div class="box infomessage">$services.localization.render('annotations.action.edit.error.notfound')</div> + #info($services.localization.render('annotations.action.edit.error.notfound')) #end </div> #end @@ -152,7 +152,7 @@ ##<div class="clearfloats"></div> #displayAnnotationFromReference($ann $mode $docRef) #else - <div class="box infomessage">$services.localization.render('annotations.action.view.error.notfound')</div> + #info($services.localization.render('annotations.action.view.error.notfound')) #end </div> #end diff --git a/xwiki-platform-core/xwiki-platform-extension/xwiki-platform-extension-ui/src/main/resources/XWiki/Extensions.xml b/xwiki-platform-core/xwiki-platform-extension/xwiki-platform-extension-ui/src/main/resources/XWiki/Extensions.xml index 7490015b453f..ecdf5c45bb8a 100644 --- a/xwiki-platform-core/xwiki-platform-extension/xwiki-platform-extension-ui/src/main/resources/XWiki/Extensions.xml +++ b/xwiki-platform-core/xwiki-platform-extension/xwiki-platform-extension-ui/src/main/resources/XWiki/Extensions.xml @@ -116,13 +116,13 @@ #if ($recommended) #if (!$extensions.iterator().hasNext()) - <div class="box warningmessage">$services.localization.render('extensions.search.recommended.fallback', ["<em>$!escapetool.xml($request.search)</em>"])</div> + #warning($services.localization.render('extensions.search.recommended.fallback', ["<em>$!escapetool.xml($request.search)</em>"])) ## Search again with the recommended filter #set ($extensions = $repository.search("$!request.search", $paginationParams.firstItem, $paginationParams.itemsPerPage)) #set ($totalHits = $extensions.totalHits) #set ($recommended = false) #elseif (!$customExtensionFilter) - <div class="box infomessage"> + #macro (infoHeaderContent) #if ($compatible) $services.localization.render('extensions.search.compatiblerecommended.disclaimer') #else @@ -142,12 +142,13 @@ <input type="submit" value="${escapetool.xml($services.localization.render('extensions.search.all.label'))}" class="btn btn-default"/> #end </form> - </div> + #end + #info("#infoHeaderContent()") #end #end #if (!$extensions.iterator().hasNext()) - <div class="box infomessage">$services.localization.render($noResultsMessageKey, ["<em>$!escapetool.xml($request.search)</em>"])</div> + #info($services.localization.render($noResultsMessageKey, ["<em>$!escapetool.xml($request.search)</em>"])) #else #if ($totalHits && $totalHits > $paginationParams.itemsPerPage) #set ($hasPagination = true) @@ -165,39 +166,46 @@ #end #if ($indexed) + #macro (formContent) + <form action="${xwiki.relativeRequestURL}"> + #if ($request.section) + <input type="hidden" name="section" value="${escapetool.xml($request.section)}" /> + #end + <input type="hidden" name="search" value="$!{escapetool.xml($request.search)}" /> + <input type="hidden" name="recommended" value="$recommended" /> + <input type="hidden" name="indexed" value="$indexed" /> + <input type="hidden" name="compatible" value="$compatible" /> + #if ($indexJobStatus.state != 'RUNNING') + <input type="submit" value="${escapetool.xml($services.localization.render('extensions.search.indexed.reindex'))}" name="index_start" class="btn btn-default"/> + #end + </form> + #end #set ($indexJobStatus = $repository.getStatus("wiki:${xcontext.database}")) #if ($indexJobStatus) - <div class="box infomessage"> #if ($indexJobStatus.state != 'FINISHED') - $escapetool.xml($services.localization.render('extensions.search.indexed.started', [$xwiki.formatDate($indexJobStatus.startDate)])) #set ($discard = $xwiki.jsfx.use('uicomponents/job/job.js')) #set ($jobStatusURL = $doc.getURL('get', $escapetool.url({ 'xpage': 'job_status_json', 'outputSyntax': 'plain', 'jobId': $indexJobStatus.request.id }))) - <div class="xcontent job-status" data-url="$escapetool.xml($jobStatusURL)"> - #displayJobProgressBar($indexJobStatus, true) - </div> + #macro (infoFooterContent) + $escapetool.xml($services.localization.render('extensions.search.indexed.started', [$xwiki.formatDate($indexJobStatus.startDate)])) + <div class="xcontent job-status" data-url="$escapetool.xml($jobStatusURL)"> + #displayJobProgressBar($indexJobStatus, true) + </div> + #end #else - $escapetool.xml($services.localization.render('extensions.search.indexed.on', [$xwiki.formatDate($indexJobStatus.startDate)])) + #macro (infoFooterContent) + $escapetool.xml($services.localization.render('extensions.search.indexed.on', [$xwiki.formatDate($indexJobStatus.startDate)])) + #end #end + #info("#infoFooterContent() + #formContent()") #else - <div class="box warningmessage">$escapetool.xml($services.localization.render('extensions.search.indexed.nojob')) + #warning("$escapetool.xml($services.localization.render('extensions.search.indexed.nojob')) + #formContent()") #end - <form action="${xwiki.relativeRequestURL}"> - #if ($request.section) - <input type="hidden" name="section" value="${escapetool.xml($request.section)}" /> - #end - <input type="hidden" name="search" value="$!{escapetool.xml($request.search)}" /> - <input type="hidden" name="recommended" value="$recommended" /> - <input type="hidden" name="indexed" value="$indexed" /> - <input type="hidden" name="compatible" value="$compatible" /> - #if ($indexJobStatus.state != 'RUNNING') - <input type="submit" value="${escapetool.xml($services.localization.render('extensions.search.indexed.reindex'))}" name="index_start" class="btn btn-default"/> - #end - </form> - </div> #end #end </div> diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/distribution/macros.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/distribution/macros.vm index 3611685a9ee5..9b234bbfb967 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/distribution/macros.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/distribution/macros.vm @@ -121,9 +121,9 @@

#if ($request.previousUIId && $request.previousUIVersion && $wiki == $request.wiki) ## We shouldn't get here unless JavaScript is disabled (the form is submitted with AJAX normally). -
$services.localization.render('extensions.advancedSearch.noResults', + #info($services.localization.render('extensions.advancedSearch.noResults', ["$!escapetool.xml($request.previousUIId)", - "$!escapetool.xml($request.previousUIVersion)"])
+ "$!escapetool.xml($request.previousUIVersion)"])) #end #end diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/extension.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/extension.vm index e071f0d7fc56..899a6677116f 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/extension.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/extension.vm @@ -739,7 +739,7 @@ $namespace## 'installplan': 'extensions.install.error.alreadyInstalled', 'uninstallplan': 'extensions.uninstall.error.notInstalled' }) -
$services.localization.render($emptyPlanMessageKeys.get($plan.jobType))
+ #info($services.localization.render($emptyPlanMessageKeys.get($plan.jobType))) #else
#foreach($entry in $extensionsByAction.entrySet()) @@ -1118,15 +1118,15 @@ $namespace## #if ($extension) #displayExtension($extension, $readOnly) #else -
$services.localization.render('extensions.advancedSearch.noResults', + #info($services.localization.render('extensions.advancedSearch.noResults', ["$!escapetool.xml($request.extensionId)", - "$!escapetool.xml($request.extensionVersion)"])
+ "$!escapetool.xml($request.extensionVersion)"])) ## DEBUG START: Check if there is any job status associated with the specified extension. #getExtensionJobStatus($request.extensionId, $request.extensionVersion $jobStatus) #if ($jobStatus) ## Normally we shouldn't get here. -
We found an extension job associated with the missing extension:
+ #error("We found an extension job associated with the missing extension:") #displayExtensionJobStatus($jobStatus) #end ## DEBUG STOP @@ -1290,7 +1290,7 @@ $namespace## ## Send error back. $response.sendError(400, $errorMessage) #else -
$errorMessage #printThrowable($lastError)
+ #error("$errorMessage #printThrowable($lastError)") #end #else ## Redirect to extension display. @@ -1621,9 +1621,7 @@ $doc.getURL($xcontext.action, $escapetool.url($parameters))## #end ## #if ($outdated.isEmpty() && $invalid.isEmpty()) -
- $services.localization.render('platform.extension.updater.noUpdatesAvailable') -
+ #success($services.localization.render('platform.extension.updater.noUpdatesAvailable')) #else #displayExtensionUpdaterPlanActionByNamespace($invalid 'invalid') #displayExtensionUpdaterPlanActionByNamespace($outdated 'outdated') diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/extensionHistory.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/extensionHistory.vm index 98945c096e23..7638cf551c54 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/extensionHistory.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/extensionHistory.vm @@ -120,7 +120,7 @@ #set ($message = $services.localization.render('extension.history.currentJobInfo', ["$jobType", "$jobId"])) #end -
$services.icon.renderHTML('info') $message
+ #info($message) #end #end @@ -233,10 +233,7 @@
  • - - $services.icon.renderHTML('info') - $services.localization.render('extension.history.noRecords') - + #info($services.localization.render('extension.history.noRecords'))
@@ -465,10 +462,7 @@ #end #else -
- $services.icon.renderHTML('info') - $services.localization.render('extension.history.replayPlan.empty') -
+ #info($services.localization.render('extension.history.replayPlan.empty')) #end
#if ($hasGlobalAdmin && $records && $records.size() > 0) @@ -491,10 +485,7 @@ #displayExtensionHistoryReplayStatus($replayJobStatus) #else

$services.localization.render('extension.history.replayStatus.title')

-
- $services.icon.renderHTML('info') - $services.localization.render('extension.history.replayStatus.notFound', [$replayJobId]) -
+ #info($services.localization.render('extension.history.replayStatus.notFound', [$replayJobId])) #end #end @@ -600,8 +591,8 @@ #template('xwikivars.vm') #end #if ($request.extensionId && ($request.extensionVersion || $request.extensionVersionConstraint)) - #handleExtensionRequest + #handleExtensionRequest() #else - #handleExtensionHistoryRequest + #handleExtensionHistoryRequest() #end #end diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm index 950e44e1b66a..9c30d3e6adca 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm @@ -1527,7 +1527,7 @@ $Msz MB## #livetable_filters($collist $colprops $classname) -
$services.localization.render('platform.livetable.environmentCannotLoadTableMessage')
+ #warning($services.localization.render('platform.livetable.environmentCannotLoadTableMessage')) From 66d842dc552d4fe23a000cbf5dcd62a0807b86a7 Mon Sep 17 00:00:00 2001 From: LucasC Date: Tue, 3 Sep 2024 16:08:44 +0200 Subject: [PATCH 04/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Part C * ExtensionSecurity/Admin.xml * edit_macros.vm * LiveTableViewSheet.xml * OfficeImporterAdmin.xml * Annotations/Settings.xml --- .../main/resources/AnnotationCode/Settings.xml | 4 ++-- .../AppWithinMinutes/LiveTableViewSheet.xml | 10 ++-------- .../XWiki/Extension/Security/Code/Admin.xml | 16 +++++++++------- .../main/resources/XWiki/OfficeImporterAdmin.xml | 8 +++----- .../src/main/resources/templates/edit_macros.vm | 12 ++++-------- 5 files changed, 20 insertions(+), 30 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-annotation/xwiki-platform-annotation-ui/src/main/resources/AnnotationCode/Settings.xml b/xwiki-platform-core/xwiki-platform-annotation/xwiki-platform-annotation-ui/src/main/resources/AnnotationCode/Settings.xml index 3860c00c4fe9..1f2c9454db3a 100644 --- a/xwiki-platform-core/xwiki-platform-annotation/xwiki-platform-annotation-ui/src/main/resources/AnnotationCode/Settings.xml +++ b/xwiki-platform-core/xwiki-platform-annotation/xwiki-platform-annotation-ui/src/main/resources/AnnotationCode/Settings.xml @@ -148,10 +148,10 @@ </div> <div class="clearfloats" /> #else - <div class="box infomessage">$services.localization.render('annotations.settings.error.wrongsyntax')</div> + #info($services.localization.render('annotations.settings.error.wrongsyntax')) #end #else - <div class="box infomessage">$services.localization.render('annotations.settings.error.notarget')</div> + #info($services.localization.render('annotations.settings.error.notarget')) #end </div> {{/html}} diff --git a/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/LiveTableViewSheet.xml b/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/LiveTableViewSheet.xml index b0fb78ea7f43..1ed986853a89 100644 --- a/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/LiveTableViewSheet.xml +++ b/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/LiveTableViewSheet.xml @@ -183,14 +183,8 @@ #end #macro (renameAppModalBody) - <div class="box infomessage"> - $services.icon.renderHTML('info') - $services.localization.render('appWithinMinutes.renameApp.changeAppTitleInfo') - </div> - <div class="box warningmessage"> - $services.icon.renderHTML('warning') - $services.localization.render('appWithinMinutes.renameApp.regenerateAppCodeWarning') - </div> + #info($services.localization.render('appWithinMinutes.renameApp.changeAppTitleInfo')) + #warning($services.localization.render('appWithinMinutes.renameApp.regenerateAppCodeWarning')) <div class="hidden"> <input type="hidden" name="form_token" value="$!escapetool.xml($services.csrf.token)" /> <input type="hidden" name="oldAppReference" value="$escapetool.xml( diff --git a/xwiki-platform-core/xwiki-platform-extension/xwiki-platform-extension-security/xwiki-platform-extension-security-ui/src/main/resources/XWiki/Extension/Security/Code/Admin.xml b/xwiki-platform-core/xwiki-platform-extension/xwiki-platform-extension-security/xwiki-platform-extension-security-ui/src/main/resources/XWiki/Extension/Security/Code/Admin.xml index c90dcecd9ee8..def47ae2ebb7 100644 --- a/xwiki-platform-core/xwiki-platform-extension/xwiki-platform-extension-security/xwiki-platform-extension-security-ui/src/main/resources/XWiki/Extension/Security/Code/Admin.xml +++ b/xwiki-platform-core/xwiki-platform-extension/xwiki-platform-extension-security/xwiki-platform-extension-security-ui/src/main/resources/XWiki/Extension/Security/Code/Admin.xml @@ -89,7 +89,9 @@ #set ($indexJobStatus = $services.job.getJobStatus(['extension_security'])) #if ($indexJobStatus) - <div class="box infomessage"> + ## We use the velocity macro here instead of the XWiki macro, in order to keep HTML in the content + ## With the XWiki macro, the progress bar is not properly rendered. + #info(" #if ($indexJobStatus.state != 'FINISHED') $escapetool.xml($services.localization.render('extension.security.indexed.started', [$xwiki.formatDate($indexJobStatus.startDate)])) #set ($discard = $xwiki.jsfx.use('uicomponents/job/job.js')) @@ -98,16 +100,16 @@ 'outputSyntax': 'plain', 'jobId': $indexJobStatus.request.id }))) - <div class="xcontent job-status" data-url="$escapetool.xml($jobStatusURL)"> + <div class=""xcontent job-status"" data-url=""$escapetool.xml($jobStatusURL)""> #displayJobProgressBar($indexJobStatus, true) </div> - #else - $escapetool.xml($services.localization.render('extension.security.indexed.on', [$xwiki.formatDate($indexJobStatus.startDate)])) - #end -</div> #else - <div class="box warningmessage">$escapetool.xml($services.localization.render('extension.security.indexed.nojob'))</div> + $escapetool.xml($services.localization.render('extension.security.indexed.on', [$xwiki.formatDate($indexJobStatus.startDate)])) #end + ") + #else + {{warning}}$escapetool.xml($services.localization.render('extension.security.indexed.nojob')){{/warning}} + #end {{/html}} #end {{/velocity}} diff --git a/xwiki-platform-core/xwiki-platform-office/xwiki-platform-office-ui/src/main/resources/XWiki/OfficeImporterAdmin.xml b/xwiki-platform-core/xwiki-platform-office/xwiki-platform-office-ui/src/main/resources/XWiki/OfficeImporterAdmin.xml index e0be57986906..6f5edb4e19e9 100644 --- a/xwiki-platform-core/xwiki-platform-office/xwiki-platform-office-ui/src/main/resources/XWiki/OfficeImporterAdmin.xml +++ b/xwiki-platform-core/xwiki-platform-office/xwiki-platform-office-ui/src/main/resources/XWiki/OfficeImporterAdmin.xml @@ -91,10 +91,8 @@ ### Info about the place to modify the configuration ### <p> - <span class="box infomessage"> - ## TODO: we do not escape this string because we inject some HTML code. We should improve it. - $services.localization.render('admin.ooserver.options.source', ['<span class="monospace">xwiki.properties</span>']) - </span> + ## TODO: we do not escape this string because we inject some HTML code. We should improve it. + #info($services.localization.render('admin.ooserver.options.source', ['<span class="monospace">xwiki.properties</span>'])) </p> <dl> ### @@ -150,7 +148,7 @@ #if ("$!homePath" != '') $escapetool.html($homePath) #else - <div class="box errormessage">$escapetool.html($services.localization.render('office.configuration.serverpath.error.notSetNotAutodetected'))</div> + {{error}}$escapetool.html($services.localization.render('office.configuration.serverpath.error.notSetNotAutodetected')){{/error}} #end </dd> ### diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/edit_macros.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/edit_macros.vm index 196b41c5891b..67f712c43082 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/edit_macros.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/edit_macros.vm @@ -41,15 +41,11 @@ #set ($discard = $editConfirmation.put('title', $services.localization.render($titleKey))) #define ($message) #if ($checkResult.isError()) -
- #set ($messageKey = 'platform.core.editConfirmation.errors') - $escapetool.xml($services.localization.render($messageKey)) -
+ #set ($messageKey = 'platform.core.editConfirmation.errors') + #error($escapetool.xml($services.localization.render($messageKey))) #else -
- #set ($messageKey = 'platform.core.editConfirmation.warnings') - $escapetool.xml($services.localization.render($messageKey)) -
+ #set ($messageKey = 'platform.core.editConfirmation.warnings') + #warning($escapetool.xml($services.localization.render($messageKey))) #end #if (!$checkResult.errorMessages.isEmpty()) #foreach ($block in $checkResult.errorMessages) From 049209dae3a50a1c1f078f4e2982df5e8e20f0e1 Mon Sep 17 00:00:00 2001 From: LucasC Date: Tue, 3 Sep 2024 16:49:01 +0200 Subject: [PATCH 05/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * * Velocity macro update --- .../src/main/resources/templates/macros.vm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm index 9c30d3e6adca..b84e4580b49c 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm @@ -974,7 +974,7 @@ $html #end #macro(success $text) -#genericMessage($text 'success' 'success' 'success') +#genericMessage($text 'success' 'check' 'success') #end #macro(message $text) From 82afaa7613ea018e9d77bbe3381e7e610e6152cc Mon Sep 17 00:00:00 2001 From: LucasC Date: Wed, 4 Sep 2024 17:22:59 +0200 Subject: [PATCH 06/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Part D * job_macros.vm * children.vm * ExtensionBreakingQuestion.form.vm * XClassBreakingQuestion.form.vm --- .../src/main/resources/templates/children.vm | 4 +-- .../ExtensionBreakingQuestion.form.vm | 22 +++++++++---- .../question/XClassBreakingQuestion.form.vm | 31 ++++++++++++++----- .../main/resources/templates/job_macros.vm | 11 +++---- 4 files changed, 45 insertions(+), 23 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/children.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/children.vm index 130eeebde6a5..ade0f6600fd4 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/children.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/children.vm @@ -53,9 +53,7 @@ ####################################################### #macro(displayChildren) #if ($services.parentchild.isParentChildMechanismEnabled()) -
- $services.localization.render('core.children.warningParentChild') -
+ #warning($services.localization.render('core.children.warningParentChild')) #end #if ($doc.documentReference.name != 'WebHome') diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job/question/ExtensionBreakingQuestion.form.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job/question/ExtensionBreakingQuestion.form.vm index 999089c70152..1e9685702e76 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job/question/ExtensionBreakingQuestion.form.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job/question/ExtensionBreakingQuestion.form.vm @@ -17,15 +17,16 @@ ## Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA ## 02110-1301 USA, or see the FSF site: http://www.fsf.org. ## --------------------------------------------------------------------------- +##!source.syntax=xwiki/2.1 +{{velocity}} #template('job/question/macros.vm') - +{{html clean=false}} #questionHeader() - +{{/html}} #set ($jobStatus = $job.status) #set ($question = $jobStatus.question) - -
-

$services.icon.renderHTML('warning') $escapetool.xml($services.localization.render("job.question.ExtensionBreakingQuestion.${job.type}.title"))

+#define ($warningMessageContent) +{{html clean=false}}

$escapetool.xml($services.localization.render("job.question.ExtensionBreakingQuestion.${job.type}.explanation"))

#set ($url = $xwiki.getURL($services.model.createDocumentReference('', 'XWiki', 'XWikiPreferences'), 'admin', 'section=XWiki.Extensions&search=&repo=installed')) #set ($link = '') @@ -42,5 +43,14 @@
#questionButtons($jobStatus) - +{{/html}}#end + +## We want to use the XWiki macro here because we need its parameters +{{warning cssClass='deleteWarningExtensions' title='$escapetool.xml($services.localization.render("job.question.ExtensionBreakingQuestion.${job.type}.title"))'}} +$warningMessageContent +{{/warning}} + +{{html clean=false}} #questionFooter() +{{/html}} +{{/velocity}} diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job/question/XClassBreakingQuestion.form.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job/question/XClassBreakingQuestion.form.vm index 53bf7e360303..fae5cae8fec8 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job/question/XClassBreakingQuestion.form.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job/question/XClassBreakingQuestion.form.vm @@ -17,15 +17,19 @@ ## Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA ## 02110-1301 USA, or see the FSF site: http://www.fsf.org. ## --------------------------------------------------------------------------- +##!source.syntax=xwiki/2.1 +{{velocity}} #template('job/question/macros.vm') #set ($jobStatus = $job.status) #set ($question = $jobStatus.question) +{{html clean=false}} #questionHeader() +{{/html}} #if ($question.isRefactoringForbidden()) -
-

$services.icon.renderHTML('warning') $escapetool.xml($services.localization.render("job.question.XClassBreakingQuestion.${job.type}.forbiddenTitle"))

+#define ($errorMessageContent) +{{html clean=false}}

$escapetool.xml($services.localization.render("job.question.XClassBreakingQuestion.${job.type}.forbiddenExplanation"))

@@ -43,10 +47,15 @@
-
+{{/html}}#end + +## We want to use the XWiki macro here because we need its parameters +{{error cssClass='deleteWarningXClass' title='$escapetool.xml($services.localization.render("job.question.XClassBreakingQuestion.${job.type}.forbiddenTitle"))'}} + $errorMessageContent +{{/error}} #else -
-

$services.icon.renderHTML('warning') $escapetool.xml($services.localization.render("job.question.XClassBreakingQuestion.${job.type}.title"))

+#define ($warningMessageContent) +{{html clean=false}}

$escapetool.xml($services.localization.render("job.question.XClassBreakingQuestion.${job.type}.explanation"))

#if ($question.isObjectsPotentiallyHidden())

$escapetool.xml($services.localization.render("job.question.XClassBreakingQuestion.objectsPotentiallyMissingWarning"))

@@ -62,7 +71,15 @@
#questionButtons($jobStatus) - +{{/html}}#end + +## We want to use the XWiki macro here because we need its parameters +{{warning cssClass='deleteWarningXClass' title='$escapetool.xml($services.localization.render("job.question.XClassBreakingQuestion.${job.type}.title"))'}} + $warningMessageContent +{{/warning}} #end -#questionFooter() \ No newline at end of file +{{html clean=false}} +#questionFooter() +{{/html}} +{{/velocity}} \ No newline at end of file diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job_macros.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job_macros.vm index 0aa586c76f69..9649817b607b 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job_macros.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job_macros.vm @@ -113,20 +113,17 @@ $services.template.execute('logging_macros.vm') #macro (jobFinishedMessage $status $translationPrefix $successKey $errorKey $canceledKey $warningKey) #if ($status.error) #set($messageKeys = [$errorKey, "${translationPrefix}.finish.error", "job.status.${status.jobType}.error", 'job.status.error']) - #set($messageClass = 'errormessage') + #error($services.localization.render($messageKeys)) #elseif ($status.canceled) #set($messageKeys = [$canceledKey, "${translationPrefix}.finish.canceled", "job.status.${status.jobType}.canceled", 'job.status.canceled']) - #set($messageClass = 'warningmessage') + #warning($services.localization.render($messageKeys)) #elseif ($status.logTail.hasLogLevel('error')) #set($messageKeys = [$warningKey, "${translationPrefix}.finish.warning", "job.status.${status.jobType}.warning", 'job.status.warning']) - #set($messageClass = 'warningmessage') + #warning($services.localization.render($messageKeys)) #else #set($messageKeys = [$successKey, "${translationPrefix}.finish.success", "job.status.${status.jobType}.success", 'job.status.success']) - #set($messageClass = 'successmessage') + #success($services.localization.render($messageKeys)) #end -
- $services.localization.render($messageKeys) -
#end #macro (displayJobFinishedMessage $status $successKey $errorKey $canceledKey $translationPrefix) From 66b57613397d6e35ee14110b6475e222a118ddae Mon Sep 17 00:00:00 2001 From: LucasC Date: Wed, 4 Sep 2024 17:23:39 +0200 Subject: [PATCH 07/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Misc - doubled icon regression --- .../src/main/resources/AppWithinMinutes/LiveTableViewSheet.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/LiveTableViewSheet.xml b/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/LiveTableViewSheet.xml index 1ed986853a89..1d6e895f354c 100644 --- a/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/LiveTableViewSheet.xml +++ b/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/LiveTableViewSheet.xml @@ -236,7 +236,7 @@ #set ($classFullName = $doc.getValue('class')) #if ("$!classFullName" == '' || !$xwiki.exists($classFullName)) {{warning}} - $services.icon.render('warning') {{translation key="platform.appwithinminutes.appHomePageMovedWarning"/}} + {{translation key="platform.appwithinminutes.appHomePageMovedWarning"/}} {{/warning}} #end From fd3109fd71cbaad9510e93b6a3f2daf3ba651fd3 Mon Sep 17 00:00:00 2001 From: LucasC Date: Fri, 6 Sep 2024 14:52:12 +0200 Subject: [PATCH 08/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Part E * AttachmentGalleryPickerMacro.java fails with `You must inject a component role. Got [org.xwiki.rendering.internal.macro.message.WarningMessageMacro] at L.87` --- .../pom.xml | 5 +++ .../AttachmentGalleryPickerMacro.java | 39 ++++++++++++------ .../AttachmentGalleryPickerMacroTest.java | 40 ++++++++++++------- 3 files changed, 56 insertions(+), 28 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-picker/xwiki-platform-attachment-picker-macro/pom.xml b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-picker/xwiki-platform-attachment-picker-macro/pom.xml index 3ec37591b4fa..e0a2f6d4bad5 100644 --- a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-picker/xwiki-platform-attachment-picker-macro/pom.xml +++ b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-picker/xwiki-platform-attachment-picker-macro/pom.xml @@ -54,6 +54,11 @@ xwiki-rendering-transformation-macro ${rendering.version} + + org.xwiki.rendering + xwiki-rendering-macro-message + ${rendering.version} + org.xwiki.platform xwiki-platform-skin-api diff --git a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-picker/xwiki-platform-attachment-picker-macro/src/main/java/org/xwiki/attachment/picker/internal/AttachmentGalleryPickerMacro.java b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-picker/xwiki-platform-attachment-picker-macro/src/main/java/org/xwiki/attachment/picker/internal/AttachmentGalleryPickerMacro.java index bcf7036ed667..81d795145b87 100644 --- a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-picker/xwiki-platform-attachment-picker-macro/src/main/java/org/xwiki/attachment/picker/internal/AttachmentGalleryPickerMacro.java +++ b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-picker/xwiki-platform-attachment-picker-macro/src/main/java/org/xwiki/attachment/picker/internal/AttachmentGalleryPickerMacro.java @@ -33,7 +33,10 @@ import org.xwiki.localization.ContextualLocalizationManager; import org.xwiki.rendering.block.Block; import org.xwiki.rendering.block.GroupBlock; +import org.xwiki.rendering.internal.macro.message.WarningMessageMacro; import org.xwiki.rendering.macro.AbstractMacro; +import org.xwiki.rendering.macro.MacroExecutionException; +import org.xwiki.rendering.macro.box.BoxMacroParameters; import org.xwiki.rendering.transformation.MacroTransformationContext; import org.xwiki.skinx.SkinExtension; @@ -78,6 +81,10 @@ public class AttachmentGalleryPickerMacro extends AbstractMacro execute(AttachmentGalleryPickerMacroParameters parameters, St if (parameters.getTarget() != null) { attachmentPickerParameters.put("data-xwiki-attachment-picker-target", parameters.getTarget()); } - - return List.of(new GroupBlock(List.of( - // Search block. - new GroupBlock(List.of(), Map.of(BLOCK_PARAM_CLASS, "attachmentPickerSearch")), - // Results block. - new GroupBlock(Map.of(BLOCK_PARAM_CLASS, "attachmentPickerResults")), - // No results block. - new GroupBlock(List.of(this.l10n.getTranslation("attachment.picker.macro.notResult.message").render()), - Map.of(BLOCK_PARAM_CLASS, "attachmentPickerNoResults hidden box warningmessage")), - new GroupBlock( - List.of(this.l10n.getTranslation("attachment.picker.macro.globalSelection.message").render()), - Map.of(BLOCK_PARAM_CLASS, "attachmentPickerGlobalSelection hidden box warningmessage")) - ), attachmentPickerParameters)); + BoxMacroParameters warningParams1 = new BoxMacroParameters(); + warningParams1.setCssClass("attachmentPickerNoResults hidden"); + BoxMacroParameters warningParams2 = new BoxMacroParameters(); + warningParams2.setCssClass("attachmentPickerGlobalSelection hidden"); + try { + return List.of(new GroupBlock(List.of( + // Search block. + new GroupBlock(List.of(), Map.of(BLOCK_PARAM_CLASS, "attachmentPickerSearch")), + // Results block. + new GroupBlock(Map.of(BLOCK_PARAM_CLASS, "attachmentPickerResults")), + // No results block. + new GroupBlock(warningMacro.execute(warningParams1, + this.l10n.getTranslationPlain("attachment.picker.macro.notResult.message"), context)), + new GroupBlock(warningMacro.execute(warningParams2, + this.l10n.getTranslationPlain("attachment.picker.macro.globalSelection.message"), context)) + ), attachmentPickerParameters)); + } catch (MacroExecutionException e) { + throw new RuntimeException(e); + } } } diff --git a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-picker/xwiki-platform-attachment-picker-macro/src/test/java/org/xwiki/attachment/picker/internal/AttachmentGalleryPickerMacroTest.java b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-picker/xwiki-platform-attachment-picker-macro/src/test/java/org/xwiki/attachment/picker/internal/AttachmentGalleryPickerMacroTest.java index c947188dc37a..901306ba6d82 100644 --- a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-picker/xwiki-platform-attachment-picker-macro/src/test/java/org/xwiki/attachment/picker/internal/AttachmentGalleryPickerMacroTest.java +++ b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-picker/xwiki-platform-attachment-picker-macro/src/test/java/org/xwiki/attachment/picker/internal/AttachmentGalleryPickerMacroTest.java @@ -29,9 +29,11 @@ import org.mockito.Mock; import org.xwiki.attachment.picker.AttachmentGalleryPickerMacroParameters; import org.xwiki.localization.ContextualLocalizationManager; -import org.xwiki.localization.Translation; import org.xwiki.rendering.block.Block; import org.xwiki.rendering.block.GroupBlock; +import org.xwiki.rendering.internal.macro.message.WarningMessageMacro; +import org.xwiki.rendering.macro.MacroExecutionException; +import org.xwiki.rendering.macro.box.BoxMacroParameters; import org.xwiki.rendering.transformation.MacroTransformationContext; import org.xwiki.skinx.SkinExtension; import org.xwiki.test.junit5.mockito.ComponentTest; @@ -40,7 +42,8 @@ import static java.util.Map.entry; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.mockito.Mockito.mock; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -69,6 +72,10 @@ class AttachmentGalleryPickerMacroTest @Mock private MacroTransformationContext macroTransformationContext; + + @MockComponent + @Named("warning") + private WarningMessageMacro warningMacro; @Mock private Block translationRenderBlockNoResult; @@ -79,13 +86,20 @@ class AttachmentGalleryPickerMacroTest @BeforeEach void setUp() { - Translation translationNoResult = mock(Translation.class); - Translation translationGlobalSelection = mock(Translation.class); - when(this.l10n.getTranslation("attachment.picker.macro.notResult.message")).thenReturn(translationNoResult); - when(this.l10n.getTranslation("attachment.picker.macro.globalSelection.message")) - .thenReturn(translationGlobalSelection); - when(translationNoResult.render()).thenReturn(this.translationRenderBlockNoResult); - when(translationGlobalSelection.render()).thenReturn(this.translationRenderBlockGlobalSelection); + String translationRenderNoResult = "noresult"; + String translationRenderGlobalSelection = "globalselection"; + when(this.l10n.getTranslationPlain("attachment.picker.macro.notResult.message")) + .thenReturn(translationRenderNoResult); + when(this.l10n.getTranslationPlain("attachment.picker.macro.globalSelection.message")) + .thenReturn(translationRenderGlobalSelection); + try { + when(warningMacro.execute(any(BoxMacroParameters.class), eq(translationRenderNoResult), any(MacroTransformationContext.class))) + .thenReturn(List.of(this.translationRenderBlockNoResult)); + when(warningMacro.execute(any(BoxMacroParameters.class), eq(translationRenderGlobalSelection), any(MacroTransformationContext.class))) + .thenReturn(List.of(this.translationRenderBlockGlobalSelection)); + } catch (MacroExecutionException e) { + throw new RuntimeException(e); + } } @Test @@ -97,12 +111,8 @@ void execute() assertEquals(List.of(new GroupBlock(List.of( new GroupBlock(List.of(), Map.of("class", "attachmentPickerSearch")), new GroupBlock(Map.of("class", "attachmentPickerResults")), - new GroupBlock(List.of(this.translationRenderBlockNoResult), - Map.of("class", "attachmentPickerNoResults hidden box warningmessage")), - new GroupBlock( - List.of(this.translationRenderBlockGlobalSelection), - Map.of("class", "attachmentPickerGlobalSelection hidden box warningmessage")) - + new GroupBlock(List.of(this.translationRenderBlockNoResult)), + new GroupBlock(List.of(this.translationRenderBlockGlobalSelection)) ), Map.ofEntries( entry("id", "my-id"), entry("class", "attachmentGalleryPicker"), From c96ff8675a8ab89872ff6f829013421682c4077b Mon Sep 17 00:00:00 2001 From: LucasC Date: Mon, 16 Sep 2024 15:40:32 +0200 Subject: [PATCH 09/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Part E * OfficeImporter.xml * XObjectDisplayerProvider.java (WIP) * CreateApplication.xml --- .../AppWithinMinutes/CreateApplication.xml | 8 ++---- .../main/resources/XWiki/OfficeImporter.xml | 19 +++++++------ .../pom.xml | 6 ++++ .../display/XObjectDisplayerProvider.java | 28 ++++++++++++++----- 4 files changed, 40 insertions(+), 21 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/CreateApplication.xml b/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/CreateApplication.xml index 836021546319..7af845d4df12 100644 --- a/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/CreateApplication.xml +++ b/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/CreateApplication.xml @@ -140,14 +140,10 @@ </dl> #set ($appHomeRef = $services.model.resolveDocument('', 'default', $appReference)) #if ($appDescriptor || $xwiki.exists($appHomeRef) || $xwiki.exists($appClassRef)) - <div class="box warningmessage"> - $services.localization.render('platform.appwithinminutes.appNameIsUsedWarning') - </div> + #warning($services.localization.render('platform.appwithinminutes.appNameIsUsedWarning')) #end #if (!$services.security.authorization.hasAccess('script', $xcontext.userReference, $appHomeRef)) - <div class="box errormessage"> - $escapetool.xml($services.localization.render('platform.appwithinminutes.appHomePageNoScriptRight')) - </div> + #error($escapetool.xml($services.localization.render('platform.appwithinminutes.appHomePageNoScriptRight'))) #end #end #end diff --git a/xwiki-platform-core/xwiki-platform-office/xwiki-platform-office-ui/src/main/resources/XWiki/OfficeImporter.xml b/xwiki-platform-core/xwiki-platform-office/xwiki-platform-office-ui/src/main/resources/XWiki/OfficeImporter.xml index 66d9864395c7..2b25b1f9b7d7 100644 --- a/xwiki-platform-core/xwiki-platform-office/xwiki-platform-office-ui/src/main/resources/XWiki/OfficeImporter.xml +++ b/xwiki-platform-core/xwiki-platform-office/xwiki-platform-office-ui/src/main/resources/XWiki/OfficeImporter.xml @@ -148,14 +148,17 @@ #end #macro (officeImporterForm_overwriteContent) - <dt class="box warningmessage"> - <label> - <input name="overwriteContent" type="checkbox" value="true" checked /> - $escapetool.xml($services.localization.render('office.import.overwriteContent')) - </label> - <span class="xHint"> - $escapetool.xml($services.localization.render('office.import.overwriteContent.hint')) - </span> + <dt> + #define($warningMessageContent) + <label> + <input name="overwriteContent" type="checkbox" value="true" checked /> + $escapetool.xml($services.localization.render('office.import.overwriteContent')) + </label> + <span class="xHint"> + $escapetool.xml($services.localization.render('office.import.overwriteContent.hint')) + </span> + #end + #warning($warningMessageContent) </dt> <dd> #officeImporterForm_confirmationModal({ diff --git a/xwiki-platform-core/xwiki-platform-security/xwiki-platform-security-requiredrights/xwiki-platform-security-requiredrights-default/pom.xml b/xwiki-platform-core/xwiki-platform-security/xwiki-platform-security-requiredrights/xwiki-platform-security-requiredrights-default/pom.xml index a3dc5b03e5a4..9f71eea41402 100644 --- a/xwiki-platform-core/xwiki-platform-security/xwiki-platform-security-requiredrights/xwiki-platform-security-requiredrights-default/pom.xml +++ b/xwiki-platform-core/xwiki-platform-security/xwiki-platform-security-requiredrights/xwiki-platform-security-requiredrights-default/pom.xml @@ -76,5 +76,11 @@ ${commons.version} test + + org.xwiki.rendering + xwiki-rendering-macro-message + ${rendering.version} + compile + diff --git a/xwiki-platform-core/xwiki-platform-security/xwiki-platform-security-requiredrights/xwiki-platform-security-requiredrights-default/src/main/java/org/xwiki/platform/security/requiredrights/internal/display/XObjectDisplayerProvider.java b/xwiki-platform-core/xwiki-platform-security/xwiki-platform-security-requiredrights/xwiki-platform-security-requiredrights-default/src/main/java/org/xwiki/platform/security/requiredrights/internal/display/XObjectDisplayerProvider.java index e6f7cc520c90..ae3638c708b1 100644 --- a/xwiki-platform-core/xwiki-platform-security/xwiki-platform-security-requiredrights/xwiki-platform-security-requiredrights-default/src/main/java/org/xwiki/platform/security/requiredrights/internal/display/XObjectDisplayerProvider.java +++ b/xwiki-platform-core/xwiki-platform-security/xwiki-platform-security-requiredrights/xwiki-platform-security-requiredrights-default/src/main/java/org/xwiki/platform/security/requiredrights/internal/display/XObjectDisplayerProvider.java @@ -21,21 +21,21 @@ import java.util.Arrays; import java.util.List; -import java.util.Map; import java.util.function.Supplier; import java.util.stream.Collectors; import javax.inject.Inject; +import javax.inject.Named; import javax.inject.Provider; import javax.inject.Singleton; import org.xwiki.component.annotation.Component; import org.xwiki.localization.ContextualLocalizationManager; -import org.xwiki.localization.Translation; import org.xwiki.rendering.block.Block; import org.xwiki.rendering.block.CompositeBlock; import org.xwiki.rendering.block.FormatBlock; import org.xwiki.rendering.block.GroupBlock; +import org.xwiki.rendering.internal.macro.message.WarningMessageMacro; import org.xwiki.rendering.listener.Format; import com.xpn.xwiki.XWikiContext; @@ -43,6 +43,9 @@ import com.xpn.xwiki.objects.classes.BaseClass; import com.xpn.xwiki.objects.classes.PropertyClass; import com.xpn.xwiki.objects.classes.TextAreaClass; +import org.xwiki.rendering.macro.MacroExecutionException; +import org.xwiki.rendering.macro.box.BoxMacroParameters; +import org.xwiki.rendering.transformation.MacroTransformationContext; /** * Provider for a displayer for an XObject. @@ -59,6 +62,10 @@ public class XObjectDisplayerProvider extends AbstractBlockSupplierProvider get(BaseObject object, Object... parameters) @@ -85,8 +92,8 @@ public Supplier get(BaseObject object, Object... parameters) .map(p -> new PropertyDisplay(p.getName(), null, p.getValue().toString(), false)) .collect(Collectors.toList()); - Translation removedPropertiesMessage = - this.contextualLocalizationManager.getTranslation("core.editors.object.removeDeprecatedProperties.info"); + String removedPropertiesMessage = + this.contextualLocalizationManager.getTranslationPlain("core.editors.object.removeDeprecatedProperties.info",xClass.getPrettyName()); return () -> { // Display the properties Block propertiesBlock = renderProperties(propertyNamesHintsValues); @@ -94,11 +101,18 @@ public Supplier get(BaseObject object, Object... parameters) // Display deprecated properties if (!deprecatedPropertyNamesValues.isEmpty()) { - Block deprecatedPropertiesBlock = - new GroupBlock(Map.of(CLASS_ATTRIBUTE, "box warningmessage deprecatedProperties")); + BoxMacroParameters warningParams = new BoxMacroParameters(); + warningParams.setCssClass("deprecatedProperties"); + Block deprecatedPropertiesBlock = null; + try { + deprecatedPropertiesBlock = new GroupBlock(warningMacro.execute(warningParams, + removedPropertiesMessage, new MacroTransformationContext())); + } catch (MacroExecutionException e) { + throw new RuntimeException(e); + } if (removedPropertiesMessage != null) { deprecatedPropertiesBlock.addChild( - new FormatBlock(List.of(removedPropertiesMessage.render(xClass.getPrettyName())), Format.BOLD)); + new FormatBlock(List.of(), Format.BOLD)); } deprecatedPropertiesBlock.addChild(renderProperties(deprecatedPropertyNamesValues)); result.addChild(deprecatedPropertiesBlock); From 72bbd40cbc14aaa810d076a767d7f2f996dfd46b Mon Sep 17 00:00:00 2001 From: LucasC Date: Mon, 16 Sep 2024 15:41:10 +0200 Subject: [PATCH 10/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Velocity macro update --- .../src/main/resources/templates/macros.vm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm index b84e4580b49c..aabba3c512ef 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm @@ -966,7 +966,7 @@ $html #end #macro(error $text) -#genericMessage($text 'error' 'error' 'error') +#genericMessage($text 'error' 'exclamation' 'error') #end #macro(info $text) From 47b7d7cb9404bb521c73a818a8f4254d8c9e56d8 Mon Sep 17 00:00:00 2001 From: LucasC Date: Tue, 17 Sep 2024 10:14:08 +0200 Subject: [PATCH 11/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Part F * ClassEditSheet.xml * CreateWiki.xml (partially tested) * LiveTableEditSheet.xml * macros.vm * editobject.vm (WIP) --- .../AppWithinMinutes/ClassEditSheet.xml | 6 +-- .../AppWithinMinutes/LiveTableEditSheet.xml | 6 +-- .../src/main/resources/flamingo/editobject.vm | 1 + .../src/main/resources/flamingo/macros.vm | 2 +- .../main/resources/WikiManager/CreateWiki.xml | 48 +++++++++++-------- 5 files changed, 35 insertions(+), 28 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/ClassEditSheet.xml b/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/ClassEditSheet.xml index eade57c3b882..caf9bf4db2be 100644 --- a/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/ClassEditSheet.xml +++ b/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/ClassEditSheet.xml @@ -228,9 +228,7 @@ xcontext.put('propertyCustomDisplayer', new PropertyCustomDisplayer(xcontext)) ["#pageLink($sheetReference)"]) </span> #else - <span class="warningmessage"> - $services.localization.render('platform.appwithinminutes.classEditorMultipleSheetsWarning') - </span> + #warning($services.localization.render('platform.appwithinminutes.classEditorMultipleSheetsWarning')) #end </dd> <dt> @@ -705,7 +703,7 @@ xcontext.put('propertyCustomDisplayer', new PropertyCustomDisplayer(xcontext)) #updateAndSaveTranslations #if ($action == 'save') #if ($errorMessage) - <div class="box errormessage">$errorMessage</div> + #error($errorMessage) #elseif ("$!request.wizard" == 'true') ## Redirect to next wizard step. #set ($className = $stringtool.removeEnd($doc.fullName, 'Class')) diff --git a/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/LiveTableEditSheet.xml b/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/LiveTableEditSheet.xml index d594b89dbc2c..5c1487fb0e16 100644 --- a/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/LiveTableEditSheet.xml +++ b/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/LiveTableEditSheet.xml @@ -337,9 +337,9 @@ #updateAndSaveIcon() #if ($action == 'save') #if ($errorMessage) - {{html clean="false"}} - <div class="box errormessage">$errorMessage</div> - {{/html}} + + {{error}}{{html clean="false"}}$errorMessage{{/html}}{/error}} + #else ## Redirect to view mode. $response.sendRedirect($doc.getURL()) diff --git a/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/editobject.vm b/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/editobject.vm index 4efda110a452..4e17a0c23218 100644 --- a/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/editobject.vm +++ b/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/editobject.vm @@ -95,6 +95,7 @@
+ #warning($warningMessageContent) #end #end diff --git a/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/macros.vm b/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/macros.vm index a3072a43e844..c73783d1e959 100644 --- a/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/macros.vm +++ b/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/macros.vm @@ -248,7 +248,7 @@ #livetable_filters($collist $colprops $classname) -
$services.localization.render('platform.livetable.environmentCannotLoadTableMessage')
+ #warning($services.localization.render('platform.livetable.environmentCannotLoadTableMessage')) diff --git a/xwiki-platform-core/xwiki-platform-wiki/xwiki-platform-wiki-ui/xwiki-platform-wiki-ui-mainwiki/src/main/resources/WikiManager/CreateWiki.xml b/xwiki-platform-core/xwiki-platform-wiki/xwiki-platform-wiki-ui/xwiki-platform-wiki-ui-mainwiki/src/main/resources/WikiManager/CreateWiki.xml index c33e1af07e43..96d0b00120cd 100644 --- a/xwiki-platform-core/xwiki-platform-wiki/xwiki-platform-wiki-ui/xwiki-platform-wiki-ui-mainwiki/src/main/resources/WikiManager/CreateWiki.xml +++ b/xwiki-platform-core/xwiki-platform-wiki/xwiki-platform-wiki-ui/xwiki-platform-wiki-ui-mainwiki/src/main/resources/WikiManager/CreateWiki.xml @@ -562,7 +562,7 @@ #set ($discard = $xwiki.ssfx.use('uicomponents/logging/logging.css', true)) #set ($discard = $xwiki.jsfx.use('uicomponents/logging/logging.js', true)) #set ($status = $services.wiki.creationjob.getJobStatus($request.wikiname)) - {{html}} + {{html clean="false"}} <form class="xform" method="post" action="$doc.getURL()"> <input type="hidden" name="wikiId" id="wikiId" value="$!escapetool.xml($request.wikiname)" /> <input type="hidden" name="csrf" id="csrf" value="$!escapetool.xml($services.csrf.getToken())" /> @@ -583,15 +583,21 @@ </div> #end #set($hasErrors = $status.logTail.hasLogLevel('ERROR')) - <p class="successmessage box #if($status.error || $state != 'FINISHED')hidden#end" id="successMessage"> - $services.localization.render('platform.wiki.create.wizard.step.creation.complete', ["<strong>$escapetool.xml($request.wikiname)</strong>"]) - </p> - <p class="warningmessage box #if(!$hasErrors || $state != 'FINISHED')hidden#end" id="errorlogMessage"> - $services.localization.render('platform.wiki.create.wizard.step.creation.errorlog', ["<strong>$escapetool.xml($request.wikiname)</strong>"]) - </p> - <p class="errormessage box #if(!$status.error || $state != 'FINISHED')hidden#end" id="errorMessage"> - $services.localization.render('platform.wiki.create.wizard.step.creation.error', ["<strong>$escapetool.xml($request.wikiname)</strong>"]) - </p> + {{/html}} + + {{success cssClass="successMessage #if($status.error || $state != 'FINISHED')hidden#end"}} + {{html}}$services.localization.render('platform.wiki.create.wizard.step.creation.complete', ["<strong>$escapetool.xml($request.wikiname)</strong>"]){{/html}} + {{/success}} + + {{warning cssClass="errorlogMessage #if(!$hasErrors || $state != 'FINISHED')hidden#end"}} + {{html}}$services.localization.render('platform.wiki.create.wizard.step.creation.errorlog', ["<strong>$escapetool.xml($request.wikiname)</strong>"]){{/html}} + {{/warning}} + + {{error cssClass="errorMessage #if(!$status.error || $state != 'FINISHED')hidden#end"}} + {{html}}$services.localization.render('platform.wiki.create.wizard.step.creation.error', ["<strong>$escapetool.xml($request.wikiname)</strong>"]){{/html}} + {{/error}} + + {{html clean="false"}} </div> ## Log #template('logging_macros.vm') @@ -660,18 +666,20 @@ #end #else #set($wikiId = $request.wikiId) - {{html}} + {{html clean="false"}} #wizardHeader($services.localization.render('platform.wiki.create.wizard.step.cleaningUp')) <div class="wizard-body"> + {{/html}} #if($request.deleteOk) - <p class="successmessage box"> - $services.localization.render('platform.wiki.create.wizard.step.cleaningup.success', ["<strong>$wikiId</strong>"]) - </p> + {{success}} + {{html}}$services.localization.render('platform.wiki.create.wizard.step.cleaningup.success', ["<strong>$wikiId</strong>"]){{/html}} + {{/success}} #else - <p class="errormessage box"> - $services.localization.render('platform.wiki.create.wizard.step.cleaningup.error', ["<strong>$wikiId</strong>"]) - </p> + {{error}} + {{html}}$services.localization.render('platform.wiki.create.wizard.step.cleaningup.error', ["<strong>$wikiId</strong>"]){{/html}} + {{/error}} #end + {{html clean="false"}} </div> </form> {{/html}} @@ -1126,13 +1134,13 @@ XWiki.WikiCreationStatusBar = Class.create({ $('ui-progress').addClassName('hidden'); // We need to know if we have error if (response.error.length > 0) { - $('errorMessage').removeClassName('hidden'); + $('.errorMessage').removeClassName('hidden'); $('cleanUp').removeClassName('hidden'); } else { // Success - $('successMessage').removeClassName('hidden'); + $('.successMessage').removeClassName('hidden'); if (response.hasErrorLog) { - $('errorlogMessage').removeClassName('hidden'); + $('.errorlogMessage').removeClassName('hidden'); $('cleanUp').removeClassName('hidden'); } $('finalize').removeClassName('hidden'); From 3a0b6bcbe1e2f362f279622be9bb86443ec89a24 Mon Sep 17 00:00:00 2001 From: LucasC Date: Wed, 18 Sep 2024 14:10:32 +0200 Subject: [PATCH 12/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Part G * job_status_json.vm * uploadfailure.vm * FilterStreamJobJSON.xml --- .../src/main/resources/Filter/FilterStreamJobJSON.xml | 8 ++------ .../src/main/resources/templates/job_status_json.vm | 6 ++---- .../src/main/resources/templates/uploadfailure.vm | 2 +- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-filter/xwiki-platform-filter-ui/src/main/resources/Filter/FilterStreamJobJSON.xml b/xwiki-platform-core/xwiki-platform-filter/xwiki-platform-filter-ui/src/main/resources/Filter/FilterStreamJobJSON.xml index f885600b8afe..0c65a3c14996 100644 --- a/xwiki-platform-core/xwiki-platform-filter/xwiki-platform-filter-ui/src/main/resources/Filter/FilterStreamJobJSON.xml +++ b/xwiki-platform-core/xwiki-platform-filter/xwiki-platform-filter-ui/src/main/resources/Filter/FilterStreamJobJSON.xml @@ -43,13 +43,9 @@ #set($finished = $jobStatus.state.name() == 'FINISHED') #if ($finished) #if (!$jobStatus.logTail.hasLogLevel('ERROR')) - <div class="box successmessage"> - Done. - </div> + #success('Done.') #else - <div class="box errormessage"> - Error has been found during the conversion ! - </div> + #error('Error has been found during the conversion !') #end #end #end diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job_status_json.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job_status_json.vm index 0608aa27812d..b6080323fc3d 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job_status_json.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job_status_json.vm @@ -24,11 +24,9 @@ #set($jobStatus = $services.job.getJobStatus($jobId)) -#if ($jobStatus) +#if (!$jobStatus) #outputJobStatusJSON($jobStatus, $translationPrefix) #else $response.setStatus(404) -
- $services.localization.render("${translationPrefix}.notFound") -
+ #error($services.localization.render("${translationPrefix}.notFound")) #end \ No newline at end of file diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/uploadfailure.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/uploadfailure.vm index 9a9e61064b41..4e580f8aaeb8 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/uploadfailure.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/uploadfailure.vm @@ -49,7 +49,7 @@ $response.setStatus(500)##

$services.localization.render('core.action.upload.failure.failedFiles')

    #foreach ($file in $failedFiles.entrySet()) -
  • $!{escapetool.xml($file.key)}: $!{escapetool.xml($file.value)}
  • +
  • $!{escapetool.xml($file.key)}: #error($!{escapetool.xml($file.value)})
  • #end
#end From 3e07ab83414a0649e1facab4998dac5a1e35e7ab Mon Sep 17 00:00:00 2001 From: LucasC Date: Thu, 19 Sep 2024 10:37:21 +0200 Subject: [PATCH 13/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Part H --- .../src/main/resources/XWiki/AdminUsersSheet.xml | 10 ++++++++-- .../src/main/resources/flamingo/restore.vm | 3 +-- .../src/main/resources/SkinsCode/XWikiSkinsSheet.xml | 4 +--- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-ui/src/main/resources/XWiki/AdminUsersSheet.xml b/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-ui/src/main/resources/XWiki/AdminUsersSheet.xml index 1f6b50f1a328..df817dd56dc3 100644 --- a/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-ui/src/main/resources/XWiki/AdminUsersSheet.xml +++ b/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-ui/src/main/resources/XWiki/AdminUsersSheet.xml @@ -244,7 +244,10 @@ #macro (maybeShowDeleteUserWarning $userReference $right) #countPagesLastModifiedBy($userReference) #if ($pageCount > 0) - <div class="box errormessage xform"> + {{/html}} + + {{error cssClass="xform"}} + {{html clean="false"}} #set ($pageIndexReference = $services.model.createDocumentReference( $userReference.wikiReference.name, 'Main', 'AllDocs')) #set ($pageIndexURL = $xwiki.getURL($pageIndexReference) + '#|t=alldocs&doc.author=' + @@ -273,7 +276,10 @@ [$rightTranslation]))</span> </dd> </dl> - </div> + {{/html}} + {{/error}} + + {{html clean="false"}} #end #end diff --git a/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/restore.vm b/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/restore.vm index e6ecd268972c..b8cfa4b54477 100644 --- a/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/restore.vm +++ b/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/restore.vm @@ -96,8 +96,7 @@ #end #else $response.setStatus(404) -
- $services.localization.render('core.restore.status.notFound') + #error($services.localization.render('core.restore.status.notFound'))
#end #end diff --git a/xwiki-platform-core/xwiki-platform-skin/xwiki-platform-skin-ui/src/main/resources/SkinsCode/XWikiSkinsSheet.xml b/xwiki-platform-core/xwiki-platform-skin/xwiki-platform-skin-ui/src/main/resources/SkinsCode/XWikiSkinsSheet.xml index b37222669c8c..145535bc98ac 100644 --- a/xwiki-platform-core/xwiki-platform-skin/xwiki-platform-skin-ui/src/main/resources/SkinsCode/XWikiSkinsSheet.xml +++ b/xwiki-platform-core/xwiki-platform-skin/xwiki-platform-skin-ui/src/main/resources/SkinsCode/XWikiSkinsSheet.xml @@ -99,9 +99,7 @@ {{html}} <noscript> - <div class="box errormessage"> - $escapetool.xml($services.localization.render('skin.sheet.nojs', ['LINK_START', 'LINK_END', 'XWiki.XWikiSkinFileOverrideClass'])).replace('LINK_START', "<a href='$escapetool.xml($doc.getURL('edit', 'editor=object'))'>").replace('LINK_END', '</a>') - </div> + #error($escapetool.xml($services.localization.render('skin.sheet.nojs', ['LINK_START', 'LINK_END', 'XWiki.XWikiSkinFileOverrideClass'])).replace('LINK_START', "<a href='$escapetool.xml($doc.getURL('edit', 'editor=object'))'>").replace('LINK_END', '</a>')) </noscript> {{/html}} From 49c949425a18f0ef05a5983cf3c4e9ecc640b35a Mon Sep 17 00:00:00 2001 From: LucasC Date: Wed, 9 Oct 2024 12:04:17 +0200 Subject: [PATCH 14/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Part H --- .../main/resources/XWiki/ColorThemePropertyDisplayer.xml | 2 +- .../src/main/resources/Invitation/InvitationCommon.xml | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-ui/src/main/resources/XWiki/ColorThemePropertyDisplayer.xml b/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-ui/src/main/resources/XWiki/ColorThemePropertyDisplayer.xml index b28294577634..20ca5c413324 100644 --- a/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-ui/src/main/resources/XWiki/ColorThemePropertyDisplayer.xml +++ b/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-ui/src/main/resources/XWiki/ColorThemePropertyDisplayer.xml @@ -129,7 +129,7 @@ <div class="XWikiColorThemeDisplayer"> #set ($colorThemeExists = $xwiki.exists($services.model.resolveDocument($value))) #if ("$!value" != '' && !$colorThemeExists) - <p class="errormessage">$services.localization.render('admin.colorthemes.invalidtheme', $escapetool.xml($value))</p> + #error("<p>$services.localization.render('admin.colorthemes.invalidtheme', $escapetool.xml($value))</p>) #end #if ($isSubWiki && (!$flamingoThemesFromMainWiki.isEmpty() || !$colibriThemesFromMainWiki.isEmpty())) diff --git a/xwiki-platform-core/xwiki-platform-invitation/xwiki-platform-invitation-ui/src/main/resources/Invitation/InvitationCommon.xml b/xwiki-platform-core/xwiki-platform-invitation/xwiki-platform-invitation-ui/src/main/resources/Invitation/InvitationCommon.xml index c25358801da4..8bdcd60a8aa0 100644 --- a/xwiki-platform-core/xwiki-platform-invitation/xwiki-platform-invitation-ui/src/main/resources/Invitation/InvitationCommon.xml +++ b/xwiki-platform-core/xwiki-platform-invitation/xwiki-platform-invitation-ui/src/main/resources/Invitation/InvitationCommon.xml @@ -119,7 +119,9 @@ ## Tell the user that some of the email addresses are invalid. #if($invalidAddresses && $invalidAddresses.size() > 0) <p class="invalid-address-message"> - <span class="errormessage"> + {{/html}} + {{error}} + {{html clean=false}} #if($recips.size() == 1) ## The email address given is invalid and will not be sent to. $escapetool.xml($services.localization.render('xe.invitation.displayMessage.theAddressIsInvalid')) @@ -130,7 +132,9 @@ $escapetool.xml($services.localization.render('xe.invitation.displayMessage.anAddressesIsInvalid')) #end #end - </span> + {{/html}} + {{/error}} + {{html clean=false}} </p> #end ## Subject: From dae36ae1f362623e0a0ee8eddff9de6329243a25 Mon Sep 17 00:00:00 2001 From: LucasC Date: Wed, 9 Oct 2024 16:41:33 +0200 Subject: [PATCH 15/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Part I --- .../main/resources/templates/attachment/moveStatus.vm | 4 +--- .../Extension/Security/Code/NotificationAlert.xml | 4 +--- .../src/main/resources/XWiki/Extensions.xml | 10 +++++----- .../src/main/resources/templates/createinline.vm | 7 ++++--- 4 files changed, 11 insertions(+), 14 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/main/resources/templates/attachment/moveStatus.vm b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/main/resources/templates/attachment/moveStatus.vm index ffa47d70c2fd..e9167c233f5b 100644 --- a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/main/resources/templates/attachment/moveStatus.vm +++ b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/main/resources/templates/attachment/moveStatus.vm @@ -67,7 +67,5 @@ #end #else $response.setStatus(404) -
- $escapetool.xml($services.localization.render('attachment.move.status.notFound')) -
+ #error($escapetool.xml($services.localization.render('attachment.move.status.notFound'))) #end \ No newline at end of file diff --git a/xwiki-platform-core/xwiki-platform-extension/xwiki-platform-extension-security/xwiki-platform-extension-security-ui/src/main/resources/XWiki/Extension/Security/Code/NotificationAlert.xml b/xwiki-platform-core/xwiki-platform-extension/xwiki-platform-extension-security/xwiki-platform-extension-security-ui/src/main/resources/XWiki/Extension/Security/Code/NotificationAlert.xml index fc2cc7cc851e..7d3f40b0639b 100644 --- a/xwiki-platform-core/xwiki-platform-extension/xwiki-platform-extension-security/xwiki-platform-extension-security-ui/src/main/resources/XWiki/Extension/Security/Code/NotificationAlert.xml +++ b/xwiki-platform-core/xwiki-platform-extension/xwiki-platform-extension-security/xwiki-platform-extension-security-ui/src/main/resources/XWiki/Extension/Security/Code/NotificationAlert.xml @@ -307,9 +307,7 @@ #set ($parameters = [$count, $htmlLink]) {{html wiki='false' clean='false'}} <li> - <div class='box errormessage'> - $services.localization.render('extension.security.notification.message', $parameters) - </div> + #error($services.localization.render('extension.security.notification.message', $parameters)) </li> {{/html}} #end diff --git a/xwiki-platform-core/xwiki-platform-extension/xwiki-platform-extension-ui/src/main/resources/XWiki/Extensions.xml b/xwiki-platform-core/xwiki-platform-extension/xwiki-platform-extension-ui/src/main/resources/XWiki/Extensions.xml index ecdf5c45bb8a..83b22b63ded5 100644 --- a/xwiki-platform-core/xwiki-platform-extension/xwiki-platform-extension-ui/src/main/resources/XWiki/Extensions.xml +++ b/xwiki-platform-core/xwiki-platform-extension/xwiki-platform-extension-ui/src/main/resources/XWiki/Extensions.xml @@ -122,7 +122,7 @@ #set ($totalHits = $extensions.totalHits) #set ($recommended = false) #elseif (!$customExtensionFilter) - #macro (infoHeaderContent) + #define ($infoHeaderContent) #if ($compatible) $services.localization.render('extensions.search.compatiblerecommended.disclaimer') #else @@ -143,7 +143,7 @@ #end </form> #end - #info("#infoHeaderContent()") + #info("$infoHeaderContent") #end #end @@ -189,18 +189,18 @@ 'outputSyntax': 'plain', 'jobId': $indexJobStatus.request.id }))) - #macro (infoFooterContent) + #define ($infoFooterContent) $escapetool.xml($services.localization.render('extensions.search.indexed.started', [$xwiki.formatDate($indexJobStatus.startDate)])) <div class="xcontent job-status" data-url="$escapetool.xml($jobStatusURL)"> #displayJobProgressBar($indexJobStatus, true) </div> #end #else - #macro (infoFooterContent) + #define ($infoFooterContent) $escapetool.xml($services.localization.render('extensions.search.indexed.on', [$xwiki.formatDate($indexJobStatus.startDate)])) #end #end - #info("#infoFooterContent() + #info("$infoFooterContent #formContent()") #else #warning("$escapetool.xml($services.localization.render('extensions.search.indexed.nojob')) diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/createinline.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/createinline.vm index 9c743c2d3cc2..4b1c00380ab5 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/createinline.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/createinline.vm @@ -84,8 +84,8 @@ #set ($disableModalConfirmation = false) ## check if the exception is about the non-allowed spaces for template #if("$!exception" != '' && $exception.code == 11016) -
- #set($allowedSpaces = $createAllowedSpaces) + #set($allowedSpaces = $createAllowedSpaces) + #define ($errorMessageContent) #if ($allowedSpaces.size() == 1) $escapetool.xml($services.localization.render('core.create.template.allowedspace.inline', [$templateProvider, $allowedSpaces.get(0)])) @@ -93,7 +93,8 @@ $escapetool.xml($services.localization.render('core.create.template.allowedspaces.inline', [$templateProvider, $allowedSpaces.toString()])) #end -
+ #end + #error($errorMessageContent) #set ($disableModalConfirmation = true) #end ## check if the exception is about the document which already exists From 3884bded7a37cbdebd9d421a3ae2c7d964a0c0d9 Mon Sep 17 00:00:00 2001 From: Sereza7 Date: Fri, 11 Oct 2024 13:48:12 +0200 Subject: [PATCH 16/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Part J * Added velocity macro to support the inline mode --- .../resources/XWiki/ConfigurableClass.xml | 2 +- .../src/main/resources/flamingo/copy.vm | 4 +-- .../main/resources/flamingo/renameStatus.vm | 4 +-- .../src/main/resources/templates/macros.vm | 28 +++++++++++++++---- .../main/resources/templates/renameStatus.vm | 4 +-- 5 files changed, 26 insertions(+), 16 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-ui/src/main/resources/XWiki/ConfigurableClass.xml b/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-ui/src/main/resources/XWiki/ConfigurableClass.xml index 7f60c604f9ac..659a8e77fd0f 100644 --- a/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-ui/src/main/resources/XWiki/ConfigurableClass.xml +++ b/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-ui/src/main/resources/XWiki/ConfigurableClass.xml @@ -428,7 +428,7 @@ $xwiki.jsfx.use('js/xwiki/actionbuttons/actionButtons.js', true) $escapetool.xml($sectionDisplayName) </span> #if(!$hasAccess) - <br/><span class="errormessage">$services.localization.render('xe.admin.configurable.sectionIconNoAccess')</span> + <br/>#inlineError($services.localization.render('xe.admin.configurable.sectionIconNoAccess')) #end </a> </li> diff --git a/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/copy.vm b/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/copy.vm index b1db398c8c34..0ce44650c147 100644 --- a/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/copy.vm +++ b/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/copy.vm @@ -292,9 +292,7 @@ #end #else $response.setStatus(404) -
- $services.localization.render('core.copy.status.notFound') -
+ #error($services.localization.render('core.copy.status.notFound')) #end #end diff --git a/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/renameStatus.vm b/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/renameStatus.vm index 6f1bb689fc52..d1ecdd24f77c 100644 --- a/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/renameStatus.vm +++ b/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/renameStatus.vm @@ -94,7 +94,5 @@ #end #else $response.setStatus(404) -
- $services.localization.render('core.rename.status.notFound') -
+ #error($services.localization.render('core.rename.status.notFound')) #end diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm index aabba3c512ef..d822e4de5875 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm @@ -953,30 +953,46 @@ $html ### message ### -#macro(genericMessage $text $classAffix $iconName $prettyNameKey) -
- $services.icon.renderHTML($iconName) - $services.localization.render($prettyNameKey) - $text -
+#macro(genericMessage $text $classAffix $iconName $prettyNameKey $isInline) + <#if($isInline)span#{else}div#end class="box ${classAffix}message"> + $services.icon.renderHTML($iconName) + $services.localization.render($prettyNameKey) + $text + #end #macro(warning $text) #genericMessage($text 'warning' 'warning' 'warning') #end +#macro(inlineWarning $text) +#genericMessage($text 'warning' 'warning' 'warning' true) +#end + #macro(error $text) #genericMessage($text 'error' 'exclamation' 'error') #end +#macro(inlineError $text) + #genericMessage($text 'error' 'exclamation' 'error' true) +#end + #macro(info $text) #genericMessage($text 'info' 'info' 'info') #end +#macro(inlineInfo $text) + #genericMessage($text 'info' 'info' 'info' true) +#end + #macro(success $text) #genericMessage($text 'success' 'check' 'success') #end +#macro(inlineSuccess $text) + #genericMessage($text 'success' 'check' 'success' true) +#end + #macro(message $text)
$text
#end diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/renameStatus.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/renameStatus.vm index 8686b09af05e..638d08f655a1 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/renameStatus.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/renameStatus.vm @@ -96,7 +96,5 @@ #end #else $response.setStatus(404) -
- $services.localization.render('core.rename.status.notFound') -
+ #error($services.localization.render('core.rename.status.notFound')) #end From 6def82e9c67b961eb3c1b83cd6a5ed04ad32b1b0 Mon Sep 17 00:00:00 2001 From: Sereza7 Date: Fri, 11 Oct 2024 15:20:04 +0200 Subject: [PATCH 17/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Part H - fix --- .../src/main/resources/XWiki/ColorThemePropertyDisplayer.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-ui/src/main/resources/XWiki/ColorThemePropertyDisplayer.xml b/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-ui/src/main/resources/XWiki/ColorThemePropertyDisplayer.xml index 20ca5c413324..c0d66c2af6cc 100644 --- a/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-ui/src/main/resources/XWiki/ColorThemePropertyDisplayer.xml +++ b/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-ui/src/main/resources/XWiki/ColorThemePropertyDisplayer.xml @@ -129,7 +129,7 @@ <div class="XWikiColorThemeDisplayer"> #set ($colorThemeExists = $xwiki.exists($services.model.resolveDocument($value))) #if ("$!value" != '' && !$colorThemeExists) - #error("<p>$services.localization.render('admin.colorthemes.invalidtheme', $escapetool.xml($value))</p>) + #error(<p>$services.localization.render('admin.colorthemes.invalidtheme', $escapetool.xml($value))</p>) #end #if ($isSubWiki && (!$flamingoThemesFromMainWiki.isEmpty() || !$colibriThemesFromMainWiki.isEmpty())) From a5f8f97e733afc87ca0b1e08537c3697ec194459 Mon Sep 17 00:00:00 2001 From: Sereza7 Date: Fri, 11 Oct 2024 15:23:41 +0200 Subject: [PATCH 18/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Part F - fix --- .../src/main/resources/AppWithinMinutes/ClassEditSheet.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/ClassEditSheet.xml b/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/ClassEditSheet.xml index caf9bf4db2be..aba665d1fbfe 100644 --- a/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/ClassEditSheet.xml +++ b/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/ClassEditSheet.xml @@ -228,7 +228,7 @@ xcontext.put('propertyCustomDisplayer', new PropertyCustomDisplayer(xcontext)) ["#pageLink($sheetReference)"]) </span> #else - #warning($services.localization.render('platform.appwithinminutes.classEditorMultipleSheetsWarning')) + #inlineWarning($services.localization.render('platform.appwithinminutes.classEditorMultipleSheetsWarning')) #end </dd> <dt> From 1c7764b9ace41e9bf77d1df2d1b593e2fc39e4ff Mon Sep 17 00:00:00 2001 From: Sereza7 Date: Fri, 11 Oct 2024 15:43:23 +0200 Subject: [PATCH 19/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Part C - fix --- .../main/resources/XWiki/Extension/Security/Code/Admin.xml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-extension/xwiki-platform-extension-security/xwiki-platform-extension-security-ui/src/main/resources/XWiki/Extension/Security/Code/Admin.xml b/xwiki-platform-core/xwiki-platform-extension/xwiki-platform-extension-security/xwiki-platform-extension-security-ui/src/main/resources/XWiki/Extension/Security/Code/Admin.xml index def47ae2ebb7..ade2012d31b8 100644 --- a/xwiki-platform-core/xwiki-platform-extension/xwiki-platform-extension-security/xwiki-platform-extension-security-ui/src/main/resources/XWiki/Extension/Security/Code/Admin.xml +++ b/xwiki-platform-core/xwiki-platform-extension/xwiki-platform-extension-security/xwiki-platform-extension-security-ui/src/main/resources/XWiki/Extension/Security/Code/Admin.xml @@ -91,7 +91,7 @@ #if ($indexJobStatus) ## We use the velocity macro here instead of the XWiki macro, in order to keep HTML in the content ## With the XWiki macro, the progress bar is not properly rendered. - #info(" + #define ($infoMessageContent) #if ($indexJobStatus.state != 'FINISHED') $escapetool.xml($services.localization.render('extension.security.indexed.started', [$xwiki.formatDate($indexJobStatus.startDate)])) #set ($discard = $xwiki.jsfx.use('uicomponents/job/job.js')) @@ -100,13 +100,14 @@ 'outputSyntax': 'plain', 'jobId': $indexJobStatus.request.id }))) - <div class=""xcontent job-status"" data-url=""$escapetool.xml($jobStatusURL)""> + <div class="xcontent job-status" data-url="$escapetool.xml($jobStatusURL)"> #displayJobProgressBar($indexJobStatus, true) </div> #else $escapetool.xml($services.localization.render('extension.security.indexed.on', [$xwiki.formatDate($indexJobStatus.startDate)])) #end - ") + #end + #info($infoMessageContent) #else {{warning}}$escapetool.xml($services.localization.render('extension.security.indexed.nojob')){{/warning}} #end From 016dc7afaca12bb94ea43f42124aaac5f0330676 Mon Sep 17 00:00:00 2001 From: Sereza7 Date: Fri, 11 Oct 2024 15:57:39 +0200 Subject: [PATCH 20/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Part B - fix --- .../src/main/resources/XWiki/Extensions.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-extension/xwiki-platform-extension-ui/src/main/resources/XWiki/Extensions.xml b/xwiki-platform-core/xwiki-platform-extension/xwiki-platform-extension-ui/src/main/resources/XWiki/Extensions.xml index 83b22b63ded5..5e358dfe79a7 100644 --- a/xwiki-platform-core/xwiki-platform-extension/xwiki-platform-extension-ui/src/main/resources/XWiki/Extensions.xml +++ b/xwiki-platform-core/xwiki-platform-extension/xwiki-platform-extension-ui/src/main/resources/XWiki/Extensions.xml @@ -166,7 +166,7 @@ #end #if ($indexed) - #macro (formContent) + #define ($formContent) <form action="${xwiki.relativeRequestURL}"> #if ($request.section) <input type="hidden" name="section" value="${escapetool.xml($request.section)}" /> @@ -201,10 +201,10 @@ #end #end #info("$infoFooterContent - #formContent()") + $formContent") #else #warning("$escapetool.xml($services.localization.render('extensions.search.indexed.nojob')) - #formContent()") + $formContent") #end #end #end From 422b1c4f761d1b168ac35418dca22858b6d54d84 Mon Sep 17 00:00:00 2001 From: Sereza7 Date: Fri, 11 Oct 2024 16:21:38 +0200 Subject: [PATCH 21/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Part F - fix --- .../src/main/resources/flamingo/editobject.vm | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/editobject.vm b/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/editobject.vm index 4e17a0c23218..e1c8bfbfe878 100644 --- a/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/editobject.vm +++ b/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/editobject.vm @@ -30,6 +30,21 @@ * Displays a class name without its space prefix. XML-escapes the output. *# #macro(cleanClassname $classname)$!{escapetool.xml($classname.substring($classname.indexOf('.')).substring(1))}#end + +#* + * Displays a warning box, with an extra class. Note that the implementation of this macro should be very close to the + * one of the #warning macro defined in the web templates macros. + * This is the only place where we use this extraClass feature, so the implementation is contained here. + * Note that the exact context this content is rendered in is not fixed, using the XWiki macro + * would have ended up in unstable behaviour. + *# +#macro (warningWithExtraClass $text $extraClass) +
+ $services.icon.renderHTML('warning') + $services.localization.render('warning') + $text +
+#end ## #* * Display an object @@ -79,7 +94,7 @@
#set ($deprecatedProperties = $class.getDeprecatedObjectProperties($obj)) #if ($deprecatedProperties.size() > 0) -
+ #define ($warningMessageContent) $services.localization.render('core.editors.object.removeDeprecatedProperties.info', [${escapetool.xml($class.name)}])
#foreach ($prop in $deprecatedProperties) @@ -94,8 +109,8 @@ $services.localization.render('core.editors.object.removeDeprecatedProperties.link')
- - #warning($warningMessageContent) + #end + #warningWithExtraClass($warningMessageContent 'deprecatedProperties') #end #end @@ -246,10 +261,11 @@ #if ($mustSync) #break #end #end #if ($mustSync) -
+ #define ($warningMessageContent) $services.localization.render('core.editors.object.removeDeprecatedProperties.all.info')
$services.localization.render('core.editors.object.removeDeprecatedProperties.all.link')
-
+ #end + #warningWithExtraClass($warningMessageContent 'deprecatedProperties') #end #end ## checkPropertyDeprecation ## From 734ab84691242ff3073226dc960170080d95aeb3 Mon Sep 17 00:00:00 2001 From: Sereza7 Date: Fri, 11 Oct 2024 16:29:06 +0200 Subject: [PATCH 22/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Part E - codestyle --- .../src/main/resources/XWiki/OfficeImporter.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xwiki-platform-core/xwiki-platform-office/xwiki-platform-office-ui/src/main/resources/XWiki/OfficeImporter.xml b/xwiki-platform-core/xwiki-platform-office/xwiki-platform-office-ui/src/main/resources/XWiki/OfficeImporter.xml index 2b25b1f9b7d7..8a22ecd4c60c 100644 --- a/xwiki-platform-core/xwiki-platform-office/xwiki-platform-office-ui/src/main/resources/XWiki/OfficeImporter.xml +++ b/xwiki-platform-core/xwiki-platform-office/xwiki-platform-office-ui/src/main/resources/XWiki/OfficeImporter.xml @@ -149,7 +149,7 @@ #macro (officeImporterForm_overwriteContent) <dt> - #define($warningMessageContent) + #define ($warningMessageContent) <label> <input name="overwriteContent" type="checkbox" value="true" checked /> $escapetool.xml($services.localization.render('office.import.overwriteContent')) From a0e4fdccc3ed1d8b8a344e397ae118180d8431de Mon Sep 17 00:00:00 2001 From: Sereza7 Date: Fri, 11 Oct 2024 16:49:27 +0200 Subject: [PATCH 23/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Part C - fix --- .../src/main/resources/XWiki/OfficeImporterAdmin.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xwiki-platform-core/xwiki-platform-office/xwiki-platform-office-ui/src/main/resources/XWiki/OfficeImporterAdmin.xml b/xwiki-platform-core/xwiki-platform-office/xwiki-platform-office-ui/src/main/resources/XWiki/OfficeImporterAdmin.xml index 6f5edb4e19e9..f4c2cfcf93e8 100644 --- a/xwiki-platform-core/xwiki-platform-office/xwiki-platform-office-ui/src/main/resources/XWiki/OfficeImporterAdmin.xml +++ b/xwiki-platform-core/xwiki-platform-office/xwiki-platform-office-ui/src/main/resources/XWiki/OfficeImporterAdmin.xml @@ -148,7 +148,7 @@ #if ("$!homePath" != '') $escapetool.html($homePath) #else - {{error}}$escapetool.html($services.localization.render('office.configuration.serverpath.error.notSetNotAutodetected')){{/error}} + #error($escapetool.html($services.localization.render('office.configuration.serverpath.error.notSetNotAutodetected'))) #end </dd> ### From 6452b5c92c6218e5a4592f2975cc9cb758ad270e Mon Sep 17 00:00:00 2001 From: Sereza7 Date: Tue, 15 Oct 2024 14:46:04 +0200 Subject: [PATCH 24/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Part A - fix --- .../src/main/resources/templates/passwd.vm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/passwd.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/passwd.vm index b90ea884301b..16bf66a2af31 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/passwd.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/passwd.vm @@ -61,7 +61,7 @@ #end #end #if($request.xwikipassword && $isValidPassword) - #info($services.localization.render('platform.core.profile.passwd.success')) + #inlineInfo($services.localization.render('platform.core.profile.passwd.success')) $services.localization.render('platform.core.profile.passwd.return') #end #if(!$isValidPassword) From 950cbdba0a7f87e32cfddf6dd78279d08d9170a3 Mon Sep 17 00:00:00 2001 From: Sereza7 Date: Tue, 15 Oct 2024 15:10:32 +0200 Subject: [PATCH 25/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Part G - fix --- .../src/main/resources/templates/job_status_json.vm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job_status_json.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job_status_json.vm index b6080323fc3d..72ea3ac43d8f 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job_status_json.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job_status_json.vm @@ -24,7 +24,7 @@ #set($jobStatus = $services.job.getJobStatus($jobId)) -#if (!$jobStatus) +#if ($jobStatus) #outputJobStatusJSON($jobStatus, $translationPrefix) #else $response.setStatus(404) From 35814cc95b96b8930559932d63d02e4013eb7ab3 Mon Sep 17 00:00:00 2001 From: Sereza7 Date: Tue, 15 Oct 2024 15:28:45 +0200 Subject: [PATCH 26/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Part G - fix --- .../src/main/resources/templates/uploadfailure.vm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/uploadfailure.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/uploadfailure.vm index 4e580f8aaeb8..62015e018cc0 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/uploadfailure.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/uploadfailure.vm @@ -49,7 +49,7 @@ $response.setStatus(500)##

$services.localization.render('core.action.upload.failure.failedFiles')

    #foreach ($file in $failedFiles.entrySet()) -
  • $!{escapetool.xml($file.key)}: #error($!{escapetool.xml($file.value)})
  • +
  • $!{escapetool.xml($file.key)}: #inlineError($!{escapetool.xml($file.value)})
  • #end
#end From 6fbafbdfc90b4bdf2b027aa2906e81c0db27ae0d Mon Sep 17 00:00:00 2001 From: Sereza7 Date: Tue, 15 Oct 2024 15:32:58 +0200 Subject: [PATCH 27/58] Revert "XWIKI-22433: Provide consistency in info / warning / error class usages in templates" This reverts commit fd3109fd71cbaad9510e93b6a3f2daf3ba651fd3. --- .../pom.xml | 5 --- .../AttachmentGalleryPickerMacro.java | 39 ++++++------------ .../AttachmentGalleryPickerMacroTest.java | 40 +++++++------------ 3 files changed, 28 insertions(+), 56 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-picker/xwiki-platform-attachment-picker-macro/pom.xml b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-picker/xwiki-platform-attachment-picker-macro/pom.xml index a074eabb0ee6..a8e998389914 100644 --- a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-picker/xwiki-platform-attachment-picker-macro/pom.xml +++ b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-picker/xwiki-platform-attachment-picker-macro/pom.xml @@ -54,11 +54,6 @@ xwiki-rendering-transformation-macro ${rendering.version} - - org.xwiki.rendering - xwiki-rendering-macro-message - ${rendering.version} - org.xwiki.platform xwiki-platform-skin-api diff --git a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-picker/xwiki-platform-attachment-picker-macro/src/main/java/org/xwiki/attachment/picker/internal/AttachmentGalleryPickerMacro.java b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-picker/xwiki-platform-attachment-picker-macro/src/main/java/org/xwiki/attachment/picker/internal/AttachmentGalleryPickerMacro.java index 81d795145b87..bcf7036ed667 100644 --- a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-picker/xwiki-platform-attachment-picker-macro/src/main/java/org/xwiki/attachment/picker/internal/AttachmentGalleryPickerMacro.java +++ b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-picker/xwiki-platform-attachment-picker-macro/src/main/java/org/xwiki/attachment/picker/internal/AttachmentGalleryPickerMacro.java @@ -33,10 +33,7 @@ import org.xwiki.localization.ContextualLocalizationManager; import org.xwiki.rendering.block.Block; import org.xwiki.rendering.block.GroupBlock; -import org.xwiki.rendering.internal.macro.message.WarningMessageMacro; import org.xwiki.rendering.macro.AbstractMacro; -import org.xwiki.rendering.macro.MacroExecutionException; -import org.xwiki.rendering.macro.box.BoxMacroParameters; import org.xwiki.rendering.transformation.MacroTransformationContext; import org.xwiki.skinx.SkinExtension; @@ -81,10 +78,6 @@ public class AttachmentGalleryPickerMacro extends AbstractMacro execute(AttachmentGalleryPickerMacroParameters parameters, St if (parameters.getTarget() != null) { attachmentPickerParameters.put("data-xwiki-attachment-picker-target", parameters.getTarget()); } - BoxMacroParameters warningParams1 = new BoxMacroParameters(); - warningParams1.setCssClass("attachmentPickerNoResults hidden"); - BoxMacroParameters warningParams2 = new BoxMacroParameters(); - warningParams2.setCssClass("attachmentPickerGlobalSelection hidden"); - try { - return List.of(new GroupBlock(List.of( - // Search block. - new GroupBlock(List.of(), Map.of(BLOCK_PARAM_CLASS, "attachmentPickerSearch")), - // Results block. - new GroupBlock(Map.of(BLOCK_PARAM_CLASS, "attachmentPickerResults")), - // No results block. - new GroupBlock(warningMacro.execute(warningParams1, - this.l10n.getTranslationPlain("attachment.picker.macro.notResult.message"), context)), - new GroupBlock(warningMacro.execute(warningParams2, - this.l10n.getTranslationPlain("attachment.picker.macro.globalSelection.message"), context)) - ), attachmentPickerParameters)); - } catch (MacroExecutionException e) { - throw new RuntimeException(e); - } + + return List.of(new GroupBlock(List.of( + // Search block. + new GroupBlock(List.of(), Map.of(BLOCK_PARAM_CLASS, "attachmentPickerSearch")), + // Results block. + new GroupBlock(Map.of(BLOCK_PARAM_CLASS, "attachmentPickerResults")), + // No results block. + new GroupBlock(List.of(this.l10n.getTranslation("attachment.picker.macro.notResult.message").render()), + Map.of(BLOCK_PARAM_CLASS, "attachmentPickerNoResults hidden box warningmessage")), + new GroupBlock( + List.of(this.l10n.getTranslation("attachment.picker.macro.globalSelection.message").render()), + Map.of(BLOCK_PARAM_CLASS, "attachmentPickerGlobalSelection hidden box warningmessage")) + ), attachmentPickerParameters)); } } diff --git a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-picker/xwiki-platform-attachment-picker-macro/src/test/java/org/xwiki/attachment/picker/internal/AttachmentGalleryPickerMacroTest.java b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-picker/xwiki-platform-attachment-picker-macro/src/test/java/org/xwiki/attachment/picker/internal/AttachmentGalleryPickerMacroTest.java index 901306ba6d82..c947188dc37a 100644 --- a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-picker/xwiki-platform-attachment-picker-macro/src/test/java/org/xwiki/attachment/picker/internal/AttachmentGalleryPickerMacroTest.java +++ b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-picker/xwiki-platform-attachment-picker-macro/src/test/java/org/xwiki/attachment/picker/internal/AttachmentGalleryPickerMacroTest.java @@ -29,11 +29,9 @@ import org.mockito.Mock; import org.xwiki.attachment.picker.AttachmentGalleryPickerMacroParameters; import org.xwiki.localization.ContextualLocalizationManager; +import org.xwiki.localization.Translation; import org.xwiki.rendering.block.Block; import org.xwiki.rendering.block.GroupBlock; -import org.xwiki.rendering.internal.macro.message.WarningMessageMacro; -import org.xwiki.rendering.macro.MacroExecutionException; -import org.xwiki.rendering.macro.box.BoxMacroParameters; import org.xwiki.rendering.transformation.MacroTransformationContext; import org.xwiki.skinx.SkinExtension; import org.xwiki.test.junit5.mockito.ComponentTest; @@ -42,8 +40,7 @@ import static java.util.Map.entry; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -72,10 +69,6 @@ class AttachmentGalleryPickerMacroTest @Mock private MacroTransformationContext macroTransformationContext; - - @MockComponent - @Named("warning") - private WarningMessageMacro warningMacro; @Mock private Block translationRenderBlockNoResult; @@ -86,20 +79,13 @@ class AttachmentGalleryPickerMacroTest @BeforeEach void setUp() { - String translationRenderNoResult = "noresult"; - String translationRenderGlobalSelection = "globalselection"; - when(this.l10n.getTranslationPlain("attachment.picker.macro.notResult.message")) - .thenReturn(translationRenderNoResult); - when(this.l10n.getTranslationPlain("attachment.picker.macro.globalSelection.message")) - .thenReturn(translationRenderGlobalSelection); - try { - when(warningMacro.execute(any(BoxMacroParameters.class), eq(translationRenderNoResult), any(MacroTransformationContext.class))) - .thenReturn(List.of(this.translationRenderBlockNoResult)); - when(warningMacro.execute(any(BoxMacroParameters.class), eq(translationRenderGlobalSelection), any(MacroTransformationContext.class))) - .thenReturn(List.of(this.translationRenderBlockGlobalSelection)); - } catch (MacroExecutionException e) { - throw new RuntimeException(e); - } + Translation translationNoResult = mock(Translation.class); + Translation translationGlobalSelection = mock(Translation.class); + when(this.l10n.getTranslation("attachment.picker.macro.notResult.message")).thenReturn(translationNoResult); + when(this.l10n.getTranslation("attachment.picker.macro.globalSelection.message")) + .thenReturn(translationGlobalSelection); + when(translationNoResult.render()).thenReturn(this.translationRenderBlockNoResult); + when(translationGlobalSelection.render()).thenReturn(this.translationRenderBlockGlobalSelection); } @Test @@ -111,8 +97,12 @@ void execute() assertEquals(List.of(new GroupBlock(List.of( new GroupBlock(List.of(), Map.of("class", "attachmentPickerSearch")), new GroupBlock(Map.of("class", "attachmentPickerResults")), - new GroupBlock(List.of(this.translationRenderBlockNoResult)), - new GroupBlock(List.of(this.translationRenderBlockGlobalSelection)) + new GroupBlock(List.of(this.translationRenderBlockNoResult), + Map.of("class", "attachmentPickerNoResults hidden box warningmessage")), + new GroupBlock( + List.of(this.translationRenderBlockGlobalSelection), + Map.of("class", "attachmentPickerGlobalSelection hidden box warningmessage")) + ), Map.ofEntries( entry("id", "my-id"), entry("class", "attachmentGalleryPicker"), From 07dfee67da038bb31ebb8cb925348c11a3db0418 Mon Sep 17 00:00:00 2001 From: Sereza7 Date: Tue, 15 Oct 2024 15:35:12 +0200 Subject: [PATCH 28/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Part E - reverted java changes --- .../pom.xml | 6 ---- .../display/XObjectDisplayerProvider.java | 28 +++++-------------- 2 files changed, 7 insertions(+), 27 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-security/xwiki-platform-security-requiredrights/xwiki-platform-security-requiredrights-default/pom.xml b/xwiki-platform-core/xwiki-platform-security/xwiki-platform-security-requiredrights/xwiki-platform-security-requiredrights-default/pom.xml index 69bf926c4c1c..6c60a6806f02 100644 --- a/xwiki-platform-core/xwiki-platform-security/xwiki-platform-security-requiredrights/xwiki-platform-security-requiredrights-default/pom.xml +++ b/xwiki-platform-core/xwiki-platform-security/xwiki-platform-security-requiredrights/xwiki-platform-security-requiredrights-default/pom.xml @@ -76,11 +76,5 @@ ${commons.version} test - - org.xwiki.rendering - xwiki-rendering-macro-message - ${rendering.version} - compile - diff --git a/xwiki-platform-core/xwiki-platform-security/xwiki-platform-security-requiredrights/xwiki-platform-security-requiredrights-default/src/main/java/org/xwiki/platform/security/requiredrights/internal/display/XObjectDisplayerProvider.java b/xwiki-platform-core/xwiki-platform-security/xwiki-platform-security-requiredrights/xwiki-platform-security-requiredrights-default/src/main/java/org/xwiki/platform/security/requiredrights/internal/display/XObjectDisplayerProvider.java index ae3638c708b1..e6f7cc520c90 100644 --- a/xwiki-platform-core/xwiki-platform-security/xwiki-platform-security-requiredrights/xwiki-platform-security-requiredrights-default/src/main/java/org/xwiki/platform/security/requiredrights/internal/display/XObjectDisplayerProvider.java +++ b/xwiki-platform-core/xwiki-platform-security/xwiki-platform-security-requiredrights/xwiki-platform-security-requiredrights-default/src/main/java/org/xwiki/platform/security/requiredrights/internal/display/XObjectDisplayerProvider.java @@ -21,21 +21,21 @@ import java.util.Arrays; import java.util.List; +import java.util.Map; import java.util.function.Supplier; import java.util.stream.Collectors; import javax.inject.Inject; -import javax.inject.Named; import javax.inject.Provider; import javax.inject.Singleton; import org.xwiki.component.annotation.Component; import org.xwiki.localization.ContextualLocalizationManager; +import org.xwiki.localization.Translation; import org.xwiki.rendering.block.Block; import org.xwiki.rendering.block.CompositeBlock; import org.xwiki.rendering.block.FormatBlock; import org.xwiki.rendering.block.GroupBlock; -import org.xwiki.rendering.internal.macro.message.WarningMessageMacro; import org.xwiki.rendering.listener.Format; import com.xpn.xwiki.XWikiContext; @@ -43,9 +43,6 @@ import com.xpn.xwiki.objects.classes.BaseClass; import com.xpn.xwiki.objects.classes.PropertyClass; import com.xpn.xwiki.objects.classes.TextAreaClass; -import org.xwiki.rendering.macro.MacroExecutionException; -import org.xwiki.rendering.macro.box.BoxMacroParameters; -import org.xwiki.rendering.transformation.MacroTransformationContext; /** * Provider for a displayer for an XObject. @@ -62,10 +59,6 @@ public class XObjectDisplayerProvider extends AbstractBlockSupplierProvider get(BaseObject object, Object... parameters) @@ -92,8 +85,8 @@ public Supplier get(BaseObject object, Object... parameters) .map(p -> new PropertyDisplay(p.getName(), null, p.getValue().toString(), false)) .collect(Collectors.toList()); - String removedPropertiesMessage = - this.contextualLocalizationManager.getTranslationPlain("core.editors.object.removeDeprecatedProperties.info",xClass.getPrettyName()); + Translation removedPropertiesMessage = + this.contextualLocalizationManager.getTranslation("core.editors.object.removeDeprecatedProperties.info"); return () -> { // Display the properties Block propertiesBlock = renderProperties(propertyNamesHintsValues); @@ -101,18 +94,11 @@ public Supplier get(BaseObject object, Object... parameters) // Display deprecated properties if (!deprecatedPropertyNamesValues.isEmpty()) { - BoxMacroParameters warningParams = new BoxMacroParameters(); - warningParams.setCssClass("deprecatedProperties"); - Block deprecatedPropertiesBlock = null; - try { - deprecatedPropertiesBlock = new GroupBlock(warningMacro.execute(warningParams, - removedPropertiesMessage, new MacroTransformationContext())); - } catch (MacroExecutionException e) { - throw new RuntimeException(e); - } + Block deprecatedPropertiesBlock = + new GroupBlock(Map.of(CLASS_ATTRIBUTE, "box warningmessage deprecatedProperties")); if (removedPropertiesMessage != null) { deprecatedPropertiesBlock.addChild( - new FormatBlock(List.of(), Format.BOLD)); + new FormatBlock(List.of(removedPropertiesMessage.render(xClass.getPrettyName())), Format.BOLD)); } deprecatedPropertiesBlock.addChild(renderProperties(deprecatedPropertyNamesValues)); result.addChild(deprecatedPropertiesBlock); From 6b9cce1fbefb87c115ba6647c3ef851314cccf94 Mon Sep 17 00:00:00 2001 From: Sereza7 Date: Mon, 2 Dec 2024 17:36:33 +0100 Subject: [PATCH 29/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Updated the velociMacros ** Added comments on the message boxes macros. ** Set the genericMessage as an internal macro. --- .../src/main/resources/templates/macros.vm | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm index d72abd2d6c37..407b5391b13a 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm @@ -953,7 +953,9 @@ $html ### message ### -#macro(genericMessage $text $classAffix $iconName $prettyNameKey $isInline) +### This velocity macro aims at providing an element similar to a XWiki Macro-Message in places where this XWikiMacro +### cannot be used. +#macro(_genericMessage $text $classAffix $iconName $prettyNameKey $isInline) <#if($isInline)span#{else}div#end class="box ${classAffix}message"> $services.icon.renderHTML($iconName) $services.localization.render($prettyNameKey) @@ -961,36 +963,44 @@ $html #end +## Display a block warning message with the content $text. #macro(warning $text) -#genericMessage($text 'warning' 'warning' 'warning') +#_genericMessage($text 'warning' 'warning' 'warning') #end +## Display an inline warning message with the content $text. #macro(inlineWarning $text) -#genericMessage($text 'warning' 'warning' 'warning' true) +#_genericMessage($text 'warning' 'warning' 'warning' true) #end +## Display a block error message with the content $text. #macro(error $text) -#genericMessage($text 'error' 'exclamation' 'error') +#_genericMessage($text 'error' 'exclamation' 'error') #end +## Display an inline error message with the content $text. #macro(inlineError $text) - #genericMessage($text 'error' 'exclamation' 'error' true) + #_genericMessage($text 'error' 'exclamation' 'error' true) #end +## Display a block info message with the content $text. #macro(info $text) -#genericMessage($text 'info' 'info' 'info') +#_genericMessage($text 'info' 'info' 'info') #end +## Display an inline info message with the content $text. #macro(inlineInfo $text) - #genericMessage($text 'info' 'info' 'info' true) + #_genericMessage($text 'info' 'info' 'info' true) #end +## Display a block success message with the content $text. #macro(success $text) -#genericMessage($text 'success' 'check' 'success') +#_genericMessage($text 'success' 'check' 'success') #end +## Display an inline success message with the content $text. #macro(inlineSuccess $text) - #genericMessage($text 'success' 'check' 'success' true) + #_genericMessage($text 'success' 'check' 'success' true) #end #macro(message $text) From 87fe4a4a9033dff7331aaa62f22753f75cdf524f Mon Sep 17 00:00:00 2001 From: Sereza7 Date: Tue, 3 Dec 2024 11:33:40 +0100 Subject: [PATCH 30/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Added a reference to the newly created issue for translations --- .../src/main/resources/Filter/FilterStreamJobJSON.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/xwiki-platform-core/xwiki-platform-filter/xwiki-platform-filter-ui/src/main/resources/Filter/FilterStreamJobJSON.xml b/xwiki-platform-core/xwiki-platform-filter/xwiki-platform-filter-ui/src/main/resources/Filter/FilterStreamJobJSON.xml index 0c65a3c14996..9e09cd5ab1a0 100644 --- a/xwiki-platform-core/xwiki-platform-filter/xwiki-platform-filter-ui/src/main/resources/Filter/FilterStreamJobJSON.xml +++ b/xwiki-platform-core/xwiki-platform-filter/xwiki-platform-filter-ui/src/main/resources/Filter/FilterStreamJobJSON.xml @@ -43,6 +43,8 @@ #set($finished = $jobStatus.state.name() == 'FINISHED') #if ($finished) #if (!$jobStatus.logTail.hasLogLevel('ERROR')) + ## Remove when the following issue is resolved: + ## TODO XWIKI-22710: Add translations for FilterStreamJobJSON #success('Done.') #else #error('Error has been found during the conversion !') From f75a44cf02b6545d672d8ceab0751fe0656d96bf Mon Sep 17 00:00:00 2001 From: Sereza7 Date: Tue, 3 Dec 2024 11:40:58 +0100 Subject: [PATCH 31/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Set the warningWithExtraClass velocimacro as internal. --- .../src/main/resources/flamingo/editobject.vm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/editobject.vm b/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/editobject.vm index e1c8bfbfe878..943af8cf8977 100644 --- a/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/editobject.vm +++ b/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/editobject.vm @@ -38,7 +38,7 @@ * Note that the exact context this content is rendered in is not fixed, using the XWiki macro * would have ended up in unstable behaviour. *# -#macro (warningWithExtraClass $text $extraClass) +#macro (_warningWithExtraClass $text $extraClass)
$services.icon.renderHTML('warning') $services.localization.render('warning') From 4b60a9234c155ecc698d5c50025779dfef58cc9d Mon Sep 17 00:00:00 2001 From: Sereza7 Date: Mon, 9 Dec 2024 13:56:48 +0100 Subject: [PATCH 32/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Part C * Removed the TODO and implemented the solution described by Michael --- .../src/main/resources/XWiki/OfficeImporterAdmin.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-office/xwiki-platform-office-ui/src/main/resources/XWiki/OfficeImporterAdmin.xml b/xwiki-platform-core/xwiki-platform-office/xwiki-platform-office-ui/src/main/resources/XWiki/OfficeImporterAdmin.xml index f4c2cfcf93e8..427af336cdd6 100644 --- a/xwiki-platform-core/xwiki-platform-office/xwiki-platform-office-ui/src/main/resources/XWiki/OfficeImporterAdmin.xml +++ b/xwiki-platform-core/xwiki-platform-office/xwiki-platform-office-ui/src/main/resources/XWiki/OfficeImporterAdmin.xml @@ -91,8 +91,7 @@ ### Info about the place to modify the configuration ### <p> - ## TODO: we do not escape this string because we inject some HTML code. We should improve it. - #info($services.localization.render('admin.ooserver.options.source', ['<span class="monospace">xwiki.properties</span>'])) + #info($escapetool.html($services.localization.render('admin.ooserver.options.source', ['__VALUE__'])).replaceFirst('__VALUE__', '<span class="monospace">xwiki.properties</span>')) </p> <dl> ### From 3e3ddb89322f2f1aa38f1f662c58bfde9fce772f Mon Sep 17 00:00:00 2001 From: Sereza7 Date: Mon, 9 Dec 2024 14:05:48 +0100 Subject: [PATCH 33/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Fixed an inconsistency in the velocimacro compared to the XWiki macro. --- .../src/main/resources/templates/macros.vm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm index 407b5391b13a..82a697cefc67 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm @@ -959,7 +959,7 @@ $html <#if($isInline)span#{else}div#end class="box ${classAffix}message"> $services.icon.renderHTML($iconName) $services.localization.render($prettyNameKey) - $text +

$text

#end From 8d2d174d8103556518f62867e909d8c9fe99852b Mon Sep 17 00:00:00 2001 From: Sereza7 Date: Mon, 9 Dec 2024 15:12:16 +0100 Subject: [PATCH 34/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Part F * Escaped the errorMessage * removed the useless HTML macro. --- .../main/resources/AppWithinMinutes/LiveTableEditSheet.xml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/LiveTableEditSheet.xml b/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/LiveTableEditSheet.xml index 5c1487fb0e16..90e176a4264e 100644 --- a/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/LiveTableEditSheet.xml +++ b/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/LiveTableEditSheet.xml @@ -337,9 +337,7 @@ #updateAndSaveIcon() #if ($action == 'save') #if ($errorMessage) - - {{error}}{{html clean="false"}}$errorMessage{{/html}}{/error}} - + {{error}}$!escapetool.xml($errorMessage){/error}} #else ## Redirect to view mode. $response.sendRedirect($doc.getURL()) From 161d3d09292aaf65d9cd0db0882cbf49f897bfbb Mon Sep 17 00:00:00 2001 From: Sereza7 Date: Mon, 9 Dec 2024 16:06:30 +0100 Subject: [PATCH 35/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Part D * Updated the internal velocimacro to also take into account equivalents to rarely used XWikiMacro parameters. --- .../job/question/ExtensionBreakingQuestion.form.vm | 14 ++------------ .../src/main/resources/templates/macros.vm | 6 ++++-- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job/question/ExtensionBreakingQuestion.form.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job/question/ExtensionBreakingQuestion.form.vm index 1e9685702e76..8c2087ca21da 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job/question/ExtensionBreakingQuestion.form.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job/question/ExtensionBreakingQuestion.form.vm @@ -17,16 +17,11 @@ ## Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA ## 02110-1301 USA, or see the FSF site: http://www.fsf.org. ## --------------------------------------------------------------------------- -##!source.syntax=xwiki/2.1 -{{velocity}} #template('job/question/macros.vm') -{{html clean=false}} #questionHeader() -{{/html}} #set ($jobStatus = $job.status) #set ($question = $jobStatus.question) #define ($warningMessageContent) -{{html clean=false}}

$escapetool.xml($services.localization.render("job.question.ExtensionBreakingQuestion.${job.type}.explanation"))

#set ($url = $xwiki.getURL($services.model.createDocumentReference('', 'XWiki', 'XWikiPreferences'), 'admin', 'section=XWiki.Extensions&search=&repo=installed')) #set ($link = '') @@ -43,14 +38,9 @@
#questionButtons($jobStatus) -{{/html}}#end +#end ## We want to use the XWiki macro here because we need its parameters -{{warning cssClass='deleteWarningExtensions' title='$escapetool.xml($services.localization.render("job.question.ExtensionBreakingQuestion.${job.type}.title"))'}} -$warningMessageContent -{{/warning}} +#_genericMessage("$warningMessageContent", 'warning', 'warning', 'warning', false, 'deleteWarningExtensions', $escapetool.xml($services.localization.render("job.question.ExtensionBreakingQuestion.${job.type}.title"))) -{{html clean=false}} #questionFooter() -{{/html}} -{{/velocity}} diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm index 82a697cefc67..7e757e7abb66 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm @@ -955,11 +955,13 @@ $html ### This velocity macro aims at providing an element similar to a XWiki Macro-Message in places where this XWikiMacro ### cannot be used. -#macro(_genericMessage $text $classAffix $iconName $prettyNameKey $isInline) - <#if($isInline)span#{else}div#end class="box ${classAffix}message"> +#macro(_genericMessage $text $classAffix $iconName $prettyNameKey $isInline $extraClass $title) + <#if($isInline)span#{else}div#end class="box ${classAffix}message $!{extraClass}"> $services.icon.renderHTML($iconName) $services.localization.render($prettyNameKey) + #if("$!title" != "")
$!title
#end

$text

+ #if("$!title" != "")
#end #end From 20b86efed16cab5a8fe3fc1f7df64aace070a8e4 Mon Sep 17 00:00:00 2001 From: Sereza7 Date: Mon, 9 Dec 2024 16:19:41 +0100 Subject: [PATCH 36/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Part D * Reverted the change of syntax for XClassBreakingQuestion.form.vm --- .../ExtensionBreakingQuestion.form.vm | 1 - .../question/XClassBreakingQuestion.form.vm | 26 +++---------------- 2 files changed, 4 insertions(+), 23 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job/question/ExtensionBreakingQuestion.form.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job/question/ExtensionBreakingQuestion.form.vm index 8c2087ca21da..5a1cf83354e7 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job/question/ExtensionBreakingQuestion.form.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job/question/ExtensionBreakingQuestion.form.vm @@ -40,7 +40,6 @@ #questionButtons($jobStatus) #end -## We want to use the XWiki macro here because we need its parameters #_genericMessage("$warningMessageContent", 'warning', 'warning', 'warning', false, 'deleteWarningExtensions', $escapetool.xml($services.localization.render("job.question.ExtensionBreakingQuestion.${job.type}.title"))) #questionFooter() diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job/question/XClassBreakingQuestion.form.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job/question/XClassBreakingQuestion.form.vm index fae5cae8fec8..7f1ea4e42071 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job/question/XClassBreakingQuestion.form.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/job/question/XClassBreakingQuestion.form.vm @@ -17,19 +17,14 @@ ## Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA ## 02110-1301 USA, or see the FSF site: http://www.fsf.org. ## --------------------------------------------------------------------------- -##!source.syntax=xwiki/2.1 -{{velocity}} #template('job/question/macros.vm') #set ($jobStatus = $job.status) #set ($question = $jobStatus.question) -{{html clean=false}} #questionHeader() -{{/html}} #if ($question.isRefactoringForbidden()) #define ($errorMessageContent) -{{html clean=false}}

$escapetool.xml($services.localization.render("job.question.XClassBreakingQuestion.${job.type}.forbiddenExplanation"))

@@ -47,15 +42,10 @@
-{{/html}}#end - -## We want to use the XWiki macro here because we need its parameters -{{error cssClass='deleteWarningXClass' title='$escapetool.xml($services.localization.render("job.question.XClassBreakingQuestion.${job.type}.forbiddenTitle"))'}} - $errorMessageContent -{{/error}} +#end +#_genericMessage("$errorMessageContent", 'error', 'exclamation', 'error', false, 'deleteWarningXClass', $escapetool.xml($services.localization.render("job.question.XClassBreakingQuestion.${job.type}.forbiddenTitle"))) #else #define ($warningMessageContent) -{{html clean=false}}

$escapetool.xml($services.localization.render("job.question.XClassBreakingQuestion.${job.type}.explanation"))

#if ($question.isObjectsPotentiallyHidden())

$escapetool.xml($services.localization.render("job.question.XClassBreakingQuestion.objectsPotentiallyMissingWarning"))

@@ -71,15 +61,7 @@ #questionButtons($jobStatus) -{{/html}}#end - -## We want to use the XWiki macro here because we need its parameters -{{warning cssClass='deleteWarningXClass' title='$escapetool.xml($services.localization.render("job.question.XClassBreakingQuestion.${job.type}.title"))'}} - $warningMessageContent -{{/warning}} #end - -{{html clean=false}} +#_genericMessage("$warningMessageContent", 'warning', 'warning', 'warning', false, 'deleteWarningXClass', $escapetool.xml($services.localization.render("job.question.XClassBreakingQuestion.${job.type}.title"))) +#end #questionFooter() -{{/html}} -{{/velocity}} \ No newline at end of file From c1313564ff81e8c88729c5432250e087e47c7001 Mon Sep 17 00:00:00 2001 From: Sereza7 Date: Mon, 9 Dec 2024 16:21:37 +0100 Subject: [PATCH 37/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Fixed changes unrelated to the ticket for this PR. --- .../src/main/resources/templates/extensionHistory.vm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/extensionHistory.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/extensionHistory.vm index 7638cf551c54..279dcb6a2a68 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/extensionHistory.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/extensionHistory.vm @@ -591,8 +591,8 @@ #template('xwikivars.vm') #end #if ($request.extensionId && ($request.extensionVersion || $request.extensionVersionConstraint)) - #handleExtensionRequest() + #handleExtensionRequest #else - #handleExtensionHistoryRequest() + #handleExtensionHistoryRequest #end #end From 7a3e02c4510f428bf110d9c1984efe6815dad281 Mon Sep 17 00:00:00 2001 From: Sereza7 Date: Mon, 9 Dec 2024 16:49:01 +0100 Subject: [PATCH 38/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Fixed incorrect HTML context in the content of the error macro. --- .../src/main/resources/Invitation/InvitationCommon.xml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-invitation/xwiki-platform-invitation-ui/src/main/resources/Invitation/InvitationCommon.xml b/xwiki-platform-core/xwiki-platform-invitation/xwiki-platform-invitation-ui/src/main/resources/Invitation/InvitationCommon.xml index 8bdcd60a8aa0..da9d88bebd35 100644 --- a/xwiki-platform-core/xwiki-platform-invitation/xwiki-platform-invitation-ui/src/main/resources/Invitation/InvitationCommon.xml +++ b/xwiki-platform-core/xwiki-platform-invitation/xwiki-platform-invitation-ui/src/main/resources/Invitation/InvitationCommon.xml @@ -121,7 +121,6 @@ <p class="invalid-address-message"> {{/html}} {{error}} - {{html clean=false}} #if($recips.size() == 1) ## The email address given is invalid and will not be sent to. $escapetool.xml($services.localization.render('xe.invitation.displayMessage.theAddressIsInvalid')) @@ -132,9 +131,8 @@ $escapetool.xml($services.localization.render('xe.invitation.displayMessage.anAddressesIsInvalid')) #end #end - {{/html}} {{/error}} - {{html clean=false}} + {{html wiki=false clean=false}} </p> #end ## Subject: From f676d11e8c8276ecbde90cdfb3f6e8de494a9edd Mon Sep 17 00:00:00 2001 From: LucasC Date: Wed, 5 Feb 2025 10:33:45 +0100 Subject: [PATCH 39/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Added back HTML cleaning on AdminUsersSheet.xml --- .../src/main/resources/XWiki/AdminUsersSheet.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-ui/src/main/resources/XWiki/AdminUsersSheet.xml b/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-ui/src/main/resources/XWiki/AdminUsersSheet.xml index df817dd56dc3..866c419a7c6c 100644 --- a/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-ui/src/main/resources/XWiki/AdminUsersSheet.xml +++ b/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-ui/src/main/resources/XWiki/AdminUsersSheet.xml @@ -247,7 +247,7 @@ {{/html}} {{error cssClass="xform"}} - {{html clean="false"}} + {{html}} #set ($pageIndexReference = $services.model.createDocumentReference( $userReference.wikiReference.name, 'Main', 'AllDocs')) #set ($pageIndexURL = $xwiki.getURL($pageIndexReference) + '#|t=alldocs&doc.author=' + From 77a3aab590ceda51bee5c365a736ed1416779765 Mon Sep 17 00:00:00 2001 From: LucasC Date: Wed, 5 Feb 2025 14:22:30 +0100 Subject: [PATCH 40/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Fixed some page tests. --- .../test/java/org/xwiki/attachment/MovePageTest.java | 10 +++++----- .../java/org/xwiki/attachment/MoveStatusPagesTest.java | 3 ++- .../test/java/org/xwiki/web/CreateInlinePageTest.java | 6 ++++-- .../test/java/org/xwiki/web/EditMacrosPageTest.java | 10 ++++++---- 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MovePageTest.java b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MovePageTest.java index eff9247d12a2..9d833aa593f7 100644 --- a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MovePageTest.java +++ b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MovePageTest.java @@ -31,7 +31,7 @@ import org.xwiki.attachment.internal.configuration.DefaultAttachmentConfiguration; import org.xwiki.attachment.script.AttachmentScriptService; import org.xwiki.csrf.script.CSRFTokenScriptService; -import org.xwiki.icon.IconManagerScriptServiceComponentList; +import org.xwiki.icon.IconManagerScriptService; import org.xwiki.job.JobExecutor; import org.xwiki.model.internal.reference.converter.EntityReferenceConverter; import org.xwiki.model.reference.DocumentReference; @@ -60,7 +60,6 @@ * @since 14.0RC1 */ @SecurityScriptServiceComponentList -@IconManagerScriptServiceComponentList @ComponentList({ ModelScriptService.class, AttachmentScriptService.class, @@ -153,7 +152,7 @@ void submitMoveTargetEditNotAllowed() throws Exception this.request.put("step", "2"); Document render = Jsoup.parse(this.templateManager.render(MOVE_TEMPLATE)); - assertEquals("error: attachment.move.targetNotWritable", + assertEquals("$services.icon.renderHTML($iconName) error attachment.move.targetNotWritable", render.getElementsByClass("errormessage").get(0).text()); } @@ -164,7 +163,8 @@ void submitTargetAttachmentNameEmpty() throws Exception this.request.put("step", "2"); this.request.put("form_token", "a6DSv7pKWcPargoTvyx2Ww"); Document render = Jsoup.parse(this.templateManager.render(MOVE_TEMPLATE)); - assertEquals("error: attachment.move.emptyName", render.select(".errormessage").text()); + assertEquals("$services.icon.renderHTML($iconName) error attachment.move.emptyName", + render.select(".errormessage").text()); } @Test @@ -194,7 +194,7 @@ void submitMoveTargetAlreadyExists() throws Exception this.request.put("step", "2"); Document render = Jsoup.parse(this.templateManager.render(MOVE_TEMPLATE)); - assertEquals("error: attachment.move.alreadyExists " + assertEquals("$services.icon.renderHTML($iconName) error attachment.move.alreadyExists " + "[attachment.txt, Space.Target\"', /xwiki/bin/view/Space/Target%22%27]", render.getElementsByClass("errormessage").get(0).text()); } diff --git a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MoveStatusPagesTest.java b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MoveStatusPagesTest.java index c7bfa5c1d854..fc7565a94e0d 100644 --- a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MoveStatusPagesTest.java +++ b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MoveStatusPagesTest.java @@ -85,7 +85,8 @@ void renderScriptStatusUnknown() throws Exception { this.request.put("moveId", "42"); Document render = Jsoup.parse(this.templateManager.render(MOVE_STATUS_TEMPLATE)); - assertEquals("attachment.move.status.notFound", render.select(".errormessage").text()); + assertEquals("$services.icon.renderHTML($iconName) error " + + "attachment.move.status.notFound", render.select(".errormessage").text()); verify(this.jobScriptService).getJobStatus(List.of("refactoring", "moveAttachment", "42")); } diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/test/java/org/xwiki/web/CreateInlinePageTest.java b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/test/java/org/xwiki/web/CreateInlinePageTest.java index 6f8aaa215d5c..826142d0b6f5 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/test/java/org/xwiki/web/CreateInlinePageTest.java +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/test/java/org/xwiki/web/CreateInlinePageTest.java @@ -159,10 +159,12 @@ void templateProviderRestrictionErrorEscaping(List allowedSpaces) throws String expectedMessage; if (allowedSpaces.size() == 1) { - expectedMessage = String.format("core.create.template.allowedspace.inline [%s, %s]", + expectedMessage = String.format("$services.icon.renderHTML($iconName) error " + + "core.create.template.allowedspace.inline [%s, %s]", provider, allowedSpaces.get(0)); } else { - expectedMessage = String.format("core.create.template.allowedspaces.inline [%s, %s]", + expectedMessage = String.format("$services.icon.renderHTML($iconName) error " + + "core.create.template.allowedspaces.inline [%s, %s]", provider, allowedSpaces); } assertEquals(expectedMessage, errormessage.text()); diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/test/java/org/xwiki/web/EditMacrosPageTest.java b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/test/java/org/xwiki/web/EditMacrosPageTest.java index ea7927a8acf6..7db7c27d48e0 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/test/java/org/xwiki/web/EditMacrosPageTest.java +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/test/java/org/xwiki/web/EditMacrosPageTest.java @@ -85,7 +85,7 @@ class EditMacrosPageTest extends PageTest private HttpSession httpSession; @BeforeEach - void setUp() + void setUp() throws Exception { this.request.setSession(this.httpSession); } @@ -126,7 +126,8 @@ void oneWarningCheck() throws Exception Map editConfirmation = (Map) scriptContext.getAttribute("editConfirmation"); assertEquals("warning", editConfirmation.get("title")); Document message = Jsoup.parse(editConfirmation.get("message")); - assertEquals("platform.core.editConfirmation.warnings", message.selectFirst(".warningmessage").text()); + assertEquals("$services.icon.renderHTML($iconName) warning " + + "platform.core.editConfirmation.warnings", message.selectFirst(".warningmessage").text()); assertEquals("Warning", message.selectFirst("#warning1").text()); assertEquals("cancel", editConfirmation.get("reject")); assertEquals("forcelock", editConfirmation.get("confirm")); @@ -160,7 +161,8 @@ void twoWarningsTwoErrorsCheck() throws Exception assertEquals("error", editConfirmation.get("title")); Document message = Jsoup.parse(editConfirmation.get("message")); // This test is not to test the structure, but to verify the order in which the text are displayed. - assertEquals("platform.core.editConfirmation.errors Error 1 Error 2 platform.core.editConfirmation" + assertEquals("$services.icon.renderHTML($iconName) error " + + "platform.core.editConfirmation.errors Error 1 Error 2 platform.core.editConfirmation" + ".additionalWarnings Warning 1 Warning 2", message.text()); assertEquals("cancel", editConfirmation.get("reject")); assertNull(editConfirmation.get("confirm")); @@ -216,7 +218,7 @@ void oneErrorEditForced() throws Exception Map editConfirmation = (Map) scriptContext.getAttribute("editConfirmation"); assertEquals("error", editConfirmation.get("title")); Document message = Jsoup.parse(editConfirmation.get("message")); - assertEquals("platform.core.editConfirmation.errors", message.selectFirst(".errormessage").text()); + assertEquals("$services.icon.renderHTML($iconName) error platform.core.editConfirmation.errors", message.selectFirst(".errormessage").text()); assertEquals("Error", message.selectFirst("#error1").text()); assertEquals("cancel", editConfirmation.get("reject")); assertNull(editConfirmation.get("confirm")); From 87e33d567ededf07f6db19718daf02f7203190f3 Mon Sep 17 00:00:00 2001 From: LucasC Date: Thu, 6 Feb 2025 14:20:49 +0100 Subject: [PATCH 41/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Fixed flamingo skin docker tests. --- .../src/main/resources/flamingo/editobject.vm | 4 ++-- .../main/java/org/xwiki/test/ui/po/diff/RenderedChanges.java | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/editobject.vm b/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/editobject.vm index 943af8cf8977..155f5be6356b 100644 --- a/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/editobject.vm +++ b/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/editobject.vm @@ -110,7 +110,7 @@
#end - #warningWithExtraClass($warningMessageContent 'deprecatedProperties') + #_warningWithExtraClass($warningMessageContent 'deprecatedProperties') #end #end @@ -265,7 +265,7 @@ $services.localization.render('core.editors.object.removeDeprecatedProperties.all.info') #end - #warningWithExtraClass($warningMessageContent 'deprecatedProperties') + #_warningWithExtraClass($warningMessageContent 'deprecatedProperties') #end #end ## checkPropertyDeprecation ## diff --git a/xwiki-platform-core/xwiki-platform-test/xwiki-platform-test-ui/src/main/java/org/xwiki/test/ui/po/diff/RenderedChanges.java b/xwiki-platform-core/xwiki-platform-test/xwiki-platform-test-ui/src/main/java/org/xwiki/test/ui/po/diff/RenderedChanges.java index ef026898c196..acb66c61d5de 100644 --- a/xwiki-platform-core/xwiki-platform-test/xwiki-platform-test-ui/src/main/java/org/xwiki/test/ui/po/diff/RenderedChanges.java +++ b/xwiki-platform-core/xwiki-platform-test/xwiki-platform-test-ui/src/main/java/org/xwiki/test/ui/po/diff/RenderedChanges.java @@ -51,7 +51,8 @@ public RenderedChanges(WebElement container) public boolean hasNoChanges() { return !getDriver().findElementsWithoutWaiting(this.container, - By.xpath("//div[@class = 'infomessage' and contains(text(), 'No changes')]")).isEmpty() + By.xpath("//div[contains(@class, 'infomessage')]" + + "/descendant-or-self::*[contains(text(),'No changes')]")).isEmpty() && getChangedBlocks().isEmpty(); } From 58940572b7e5fca5e2fbcaf25031e81f9fd59c75 Mon Sep 17 00:00:00 2001 From: LucasC Date: Mon, 24 Feb 2025 17:19:57 +0100 Subject: [PATCH 42/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Properly mocked the icon script service --- .../org/xwiki/attachment/MovePageTest.java | 26 +++++++++++++------ .../xwiki/attachment/MoveStatusPagesTest.java | 12 ++++++++- .../org/xwiki/web/CreateInlinePageTest.java | 17 ++++++++++-- .../org/xwiki/web/EditMacrosPageTest.java | 18 ++++++++++--- 4 files changed, 58 insertions(+), 15 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MovePageTest.java b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MovePageTest.java index 9d833aa593f7..a83c5b1b1e1b 100644 --- a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MovePageTest.java +++ b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MovePageTest.java @@ -21,6 +21,8 @@ import java.nio.charset.Charset; +import javax.inject.Named; + import org.apache.commons.io.IOUtils; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; @@ -32,6 +34,7 @@ import org.xwiki.attachment.script.AttachmentScriptService; import org.xwiki.csrf.script.CSRFTokenScriptService; import org.xwiki.icon.IconManagerScriptService; +import org.xwiki.icon.internal.DefaultIconRenderer; import org.xwiki.job.JobExecutor; import org.xwiki.model.internal.reference.converter.EntityReferenceConverter; import org.xwiki.model.reference.DocumentReference; @@ -45,6 +48,7 @@ import org.xwiki.test.annotation.ComponentList; import org.xwiki.test.page.IconSetup; import org.xwiki.test.page.PageTest; +import org.xwiki.test.junit5.mockito.MockComponent; import com.xpn.xwiki.doc.XWikiDocument; import com.xpn.xwiki.internal.model.reference.DocumentReferenceConverter; @@ -79,8 +83,13 @@ class MovePageTest extends PageTest private TemplateManager templateManager; - @Mock - private CSRFTokenScriptService csrfScriptService; + @MockComponent(classToMock = CSRFTokenScriptService.class) + @Named("csrf") + private ScriptService csrfScriptService; + + @MockComponent(classToMock = IconManagerScriptService.class) + @Named("icon") + private ScriptService iconManagerScriptService; private ContextualAuthorizationManager contextualAuthorizationManager; @@ -90,10 +99,11 @@ void setUp() throws Exception this.templateManager = this.oldcore.getMocker().getInstance(TemplateManager.class); // Initializes then environment for the icon extension. IconSetup.setUp(this, "/icons/default.iconset"); - this.componentManager.registerComponent(ScriptService.class, "csrf", this.csrfScriptService); this.componentManager.registerMockComponent(JobExecutor.class); - when(this.csrfScriptService.isTokenValid(any(String.class))).thenReturn(true); + when(((CSRFTokenScriptService)this.csrfScriptService).isTokenValid(any(String.class))).thenReturn(true); this.contextualAuthorizationManager = this.componentManager.getInstance(ContextualAuthorizationManager.class); + when(((IconManagerScriptService)this.iconManagerScriptService).renderHTML(any(String.class))) + .thenReturn("errorIcon"); } @Test @@ -121,7 +131,7 @@ void move() throws Exception this.context.setDoc(document); this.request.put("attachment", ATTACHMENT_NAME); Document render = Jsoup.parse(this.templateManager.render(MOVE_TEMPLATE)); - assertEquals("Space Page attachment.txt", render.getElementsByClass("breadcrumb").get(0).text()); + assertEquals("errorIcon Space Page attachment.txt", render.getElementsByClass("breadcrumb").get(0).text()); assertEquals(ATTACHMENT_NAME, render.getElementById("targetAttachmentNameTitle").val()); assertEquals("xwiki:Space.Page", render.getElementsByAttributeValue("name", "sourceLocation").val()); assertEquals(ATTACHMENT_NAME, render.getElementsByAttributeValue("name", "sourceAttachmentName").val()); @@ -152,7 +162,7 @@ void submitMoveTargetEditNotAllowed() throws Exception this.request.put("step", "2"); Document render = Jsoup.parse(this.templateManager.render(MOVE_TEMPLATE)); - assertEquals("$services.icon.renderHTML($iconName) error attachment.move.targetNotWritable", + assertEquals("errorIcon error attachment.move.targetNotWritable", render.getElementsByClass("errormessage").get(0).text()); } @@ -163,7 +173,7 @@ void submitTargetAttachmentNameEmpty() throws Exception this.request.put("step", "2"); this.request.put("form_token", "a6DSv7pKWcPargoTvyx2Ww"); Document render = Jsoup.parse(this.templateManager.render(MOVE_TEMPLATE)); - assertEquals("$services.icon.renderHTML($iconName) error attachment.move.emptyName", + assertEquals("errorIcon error attachment.move.emptyName", render.select(".errormessage").text()); } @@ -194,7 +204,7 @@ void submitMoveTargetAlreadyExists() throws Exception this.request.put("step", "2"); Document render = Jsoup.parse(this.templateManager.render(MOVE_TEMPLATE)); - assertEquals("$services.icon.renderHTML($iconName) error attachment.move.alreadyExists " + assertEquals("errorIcon error attachment.move.alreadyExists " + "[attachment.txt, Space.Target\"', /xwiki/bin/view/Space/Target%22%27]", render.getElementsByClass("errormessage").get(0).text()); } diff --git a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MoveStatusPagesTest.java b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MoveStatusPagesTest.java index fc7565a94e0d..895ee1405a5e 100644 --- a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MoveStatusPagesTest.java +++ b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MoveStatusPagesTest.java @@ -22,6 +22,8 @@ import java.util.List; import java.util.Map; +import javax.inject.Named; + import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; @@ -29,6 +31,7 @@ import org.junit.jupiter.api.Test; import org.mockito.Mock; import org.xwiki.attachment.refactoring.MoveAttachmentRequest; +import org.xwiki.icon.IconManagerScriptService; import org.xwiki.job.Request; import org.xwiki.job.event.status.JobProgress; import org.xwiki.job.event.status.JobStatus; @@ -40,6 +43,7 @@ import org.xwiki.template.TemplateManager; import org.xwiki.template.script.TemplateScriptService; import org.xwiki.test.annotation.ComponentList; +import org.xwiki.test.junit5.mockito.MockComponent; import org.xwiki.test.page.HTML50ComponentList; import org.xwiki.test.page.PageTest; import org.xwiki.test.page.XWikiSyntax21ComponentList; @@ -73,11 +77,17 @@ class MoveStatusPagesTest extends PageTest @Mock private JobScriptService jobScriptService; + @MockComponent(classToMock = IconManagerScriptService.class) + @Named("icon") + private ScriptService iconManagerScriptService; + @BeforeEach void setUp() throws Exception { this.templateManager = this.oldcore.getMocker().getInstance(TemplateManager.class); this.componentManager.registerComponent(ScriptService.class, "job", this.jobScriptService); + when(((IconManagerScriptService)this.iconManagerScriptService).renderHTML(any(String.class))) + .thenReturn("errorIcon"); } @Test @@ -85,7 +95,7 @@ void renderScriptStatusUnknown() throws Exception { this.request.put("moveId", "42"); Document render = Jsoup.parse(this.templateManager.render(MOVE_STATUS_TEMPLATE)); - assertEquals("$services.icon.renderHTML($iconName) error " + assertEquals("errorIcon error " + "attachment.move.status.notFound", render.select(".errormessage").text()); verify(this.jobScriptService).getJobStatus(List.of("refactoring", "moveAttachment", "42")); } diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/test/java/org/xwiki/web/CreateInlinePageTest.java b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/test/java/org/xwiki/web/CreateInlinePageTest.java index 826142d0b6f5..8324e0d46a9d 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/test/java/org/xwiki/web/CreateInlinePageTest.java +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/test/java/org/xwiki/web/CreateInlinePageTest.java @@ -23,6 +23,7 @@ import java.util.stream.Stream; import javax.inject.Inject; +import javax.inject.Named; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; @@ -31,8 +32,11 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; +import org.xwiki.icon.IconManagerScriptService; import org.xwiki.model.reference.DocumentReference; +import org.xwiki.script.service.ScriptService; import org.xwiki.template.TemplateManager; +import org.xwiki.test.junit5.mockito.MockComponent; import org.xwiki.test.page.PageTest; import org.xwiki.velocity.VelocityManager; @@ -41,6 +45,8 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; /** * Tests the {@code createinline.vm} template. @@ -61,6 +67,10 @@ class CreateInlinePageTest extends PageTest private static final String CREATE_EXCEPTION_VELOCITY_KEY = "createException"; private static final String ERROR_MESSAGE_CLASS = "errormessage"; + + @MockComponent(classToMock = IconManagerScriptService.class) + @Named("icon") + private ScriptService iconManagerScriptService; @Inject private VelocityManager velocityManager; @@ -76,6 +86,9 @@ void setup() // Set a context document to avoid problems this.oldcore.getXWikiContext().setDoc(new XWikiDocument(new DocumentReference("xwiki", "space", "page"))); + + when(((IconManagerScriptService)this.iconManagerScriptService).renderHTML(any(String.class))) + .thenReturn("errorIcon"); } /** @@ -159,11 +172,11 @@ void templateProviderRestrictionErrorEscaping(List allowedSpaces) throws String expectedMessage; if (allowedSpaces.size() == 1) { - expectedMessage = String.format("$services.icon.renderHTML($iconName) error " + expectedMessage = String.format("errorIcon error " + "core.create.template.allowedspace.inline [%s, %s]", provider, allowedSpaces.get(0)); } else { - expectedMessage = String.format("$services.icon.renderHTML($iconName) error " + expectedMessage = String.format("errorIcon error " + "core.create.template.allowedspaces.inline [%s, %s]", provider, allowedSpaces); } diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/test/java/org/xwiki/web/EditMacrosPageTest.java b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/test/java/org/xwiki/web/EditMacrosPageTest.java index 7db7c27d48e0..6be1989a5678 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/test/java/org/xwiki/web/EditMacrosPageTest.java +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/test/java/org/xwiki/web/EditMacrosPageTest.java @@ -23,6 +23,7 @@ import java.util.Map; import java.util.Optional; +import javax.inject.Named; import javax.script.ScriptContext; import javax.servlet.http.HttpSession; @@ -31,6 +32,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mock; +import org.xwiki.icon.IconManagerScriptService; import org.xwiki.model.reference.DocumentReference; import org.xwiki.model.validation.edit.EditConfirmationChecker; import org.xwiki.model.validation.edit.EditConfirmationCheckerResult; @@ -45,6 +47,7 @@ import org.xwiki.rendering.internal.configuration.RenderingConfigClassDocumentConfigurationSource; import org.xwiki.rendering.syntax.Syntax; import org.xwiki.script.ScriptContextManager; +import org.xwiki.script.service.ScriptService; import org.xwiki.template.internal.macro.TemplateMacro; import org.xwiki.test.annotation.ComponentList; import org.xwiki.test.junit5.mockito.MockComponent; @@ -56,6 +59,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; /** @@ -81,13 +85,19 @@ class EditMacrosPageTest extends PageTest @MockComponent private ReplaceCharacterEntityNameValidationConfiguration replaceCharacterEntityNameValidationConfiguration; + @MockComponent(classToMock = IconManagerScriptService.class) + @Named("icon") + private ScriptService iconManagerScriptService; + @Mock private HttpSession httpSession; @BeforeEach - void setUp() throws Exception + void setUp() { this.request.setSession(this.httpSession); + when(((IconManagerScriptService)this.iconManagerScriptService).renderHTML(any(String.class))) + .thenReturn("errorIcon"); } @Test @@ -126,7 +136,7 @@ void oneWarningCheck() throws Exception Map editConfirmation = (Map) scriptContext.getAttribute("editConfirmation"); assertEquals("warning", editConfirmation.get("title")); Document message = Jsoup.parse(editConfirmation.get("message")); - assertEquals("$services.icon.renderHTML($iconName) warning " + assertEquals("errorIcon warning " + "platform.core.editConfirmation.warnings", message.selectFirst(".warningmessage").text()); assertEquals("Warning", message.selectFirst("#warning1").text()); assertEquals("cancel", editConfirmation.get("reject")); @@ -161,7 +171,7 @@ void twoWarningsTwoErrorsCheck() throws Exception assertEquals("error", editConfirmation.get("title")); Document message = Jsoup.parse(editConfirmation.get("message")); // This test is not to test the structure, but to verify the order in which the text are displayed. - assertEquals("$services.icon.renderHTML($iconName) error " + assertEquals("errorIcon error " + "platform.core.editConfirmation.errors Error 1 Error 2 platform.core.editConfirmation" + ".additionalWarnings Warning 1 Warning 2", message.text()); assertEquals("cancel", editConfirmation.get("reject")); @@ -218,7 +228,7 @@ void oneErrorEditForced() throws Exception Map editConfirmation = (Map) scriptContext.getAttribute("editConfirmation"); assertEquals("error", editConfirmation.get("title")); Document message = Jsoup.parse(editConfirmation.get("message")); - assertEquals("$services.icon.renderHTML($iconName) error platform.core.editConfirmation.errors", message.selectFirst(".errormessage").text()); + assertEquals("errorIcon error platform.core.editConfirmation.errors", message.selectFirst(".errormessage").text()); assertEquals("Error", message.selectFirst("#error1").text()); assertEquals("cancel", editConfirmation.get("reject")); assertNull(editConfirmation.get("confirm")); From 397f9ee90578ad08c5bb43e9c3fbe6b989c67c76 Mon Sep 17 00:00:00 2001 From: LucasC Date: Tue, 25 Feb 2025 10:38:32 +0100 Subject: [PATCH 43/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Fixed escaping and syntax in LiveTableEditSheet.xml --- .../src/main/resources/AppWithinMinutes/LiveTableEditSheet.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/LiveTableEditSheet.xml b/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/LiveTableEditSheet.xml index 90e176a4264e..2f3d03e14490 100644 --- a/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/LiveTableEditSheet.xml +++ b/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/LiveTableEditSheet.xml @@ -337,7 +337,7 @@ #updateAndSaveIcon() #if ($action == 'save') #if ($errorMessage) - {{error}}$!escapetool.xml($errorMessage){/error}} + {{error}}$errorMessage{{/error}} #else ## Redirect to view mode. $response.sendRedirect($doc.getURL()) From 3ee6cb7a2a7962b6d9b33187c2d8a263935078c6 Mon Sep 17 00:00:00 2001 From: LucasC Date: Tue, 25 Feb 2025 11:39:42 +0100 Subject: [PATCH 44/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Fixed icon mock in MovePageTest.java --- .../java/org/xwiki/attachment/MovePageTest.java | 14 +++++++++----- .../org/xwiki/attachment/MoveStatusPagesTest.java | 3 +-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MovePageTest.java b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MovePageTest.java index a83c5b1b1e1b..5341c4d709d1 100644 --- a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MovePageTest.java +++ b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MovePageTest.java @@ -102,8 +102,12 @@ void setUp() throws Exception this.componentManager.registerMockComponent(JobExecutor.class); when(((CSRFTokenScriptService)this.csrfScriptService).isTokenValid(any(String.class))).thenReturn(true); this.contextualAuthorizationManager = this.componentManager.getInstance(ContextualAuthorizationManager.class); - when(((IconManagerScriptService)this.iconManagerScriptService).renderHTML(any(String.class))) + when(((IconManagerScriptService)this.iconManagerScriptService).renderHTML("cross")) .thenReturn("errorIcon"); + when(((IconManagerScriptService)this.iconManagerScriptService).renderHTML("exclamation")) + .thenReturn("errorIcon"); + when(((IconManagerScriptService)this.iconManagerScriptService).renderHTML("home")) + .thenReturn("homeIcon"); } @Test @@ -131,7 +135,7 @@ void move() throws Exception this.context.setDoc(document); this.request.put("attachment", ATTACHMENT_NAME); Document render = Jsoup.parse(this.templateManager.render(MOVE_TEMPLATE)); - assertEquals("errorIcon Space Page attachment.txt", render.getElementsByClass("breadcrumb").get(0).text()); + assertEquals("homeIcon Space Page attachment.txt", render.getElementsByClass("breadcrumb").get(0).text()); assertEquals(ATTACHMENT_NAME, render.getElementById("targetAttachmentNameTitle").val()); assertEquals("xwiki:Space.Page", render.getElementsByAttributeValue("name", "sourceLocation").val()); assertEquals(ATTACHMENT_NAME, render.getElementsByAttributeValue("name", "sourceAttachmentName").val()); @@ -162,7 +166,7 @@ void submitMoveTargetEditNotAllowed() throws Exception this.request.put("step", "2"); Document render = Jsoup.parse(this.templateManager.render(MOVE_TEMPLATE)); - assertEquals("errorIcon error attachment.move.targetNotWritable", + assertEquals("error: attachment.move.targetNotWritable", render.getElementsByClass("errormessage").get(0).text()); } @@ -173,7 +177,7 @@ void submitTargetAttachmentNameEmpty() throws Exception this.request.put("step", "2"); this.request.put("form_token", "a6DSv7pKWcPargoTvyx2Ww"); Document render = Jsoup.parse(this.templateManager.render(MOVE_TEMPLATE)); - assertEquals("errorIcon error attachment.move.emptyName", + assertEquals("error: attachment.move.emptyName", render.select(".errormessage").text()); } @@ -204,7 +208,7 @@ void submitMoveTargetAlreadyExists() throws Exception this.request.put("step", "2"); Document render = Jsoup.parse(this.templateManager.render(MOVE_TEMPLATE)); - assertEquals("errorIcon error attachment.move.alreadyExists " + assertEquals("error: attachment.move.alreadyExists " + "[attachment.txt, Space.Target\"', /xwiki/bin/view/Space/Target%22%27]", render.getElementsByClass("errormessage").get(0).text()); } diff --git a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MoveStatusPagesTest.java b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MoveStatusPagesTest.java index 895ee1405a5e..55fd0fcf7cb6 100644 --- a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MoveStatusPagesTest.java +++ b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MoveStatusPagesTest.java @@ -95,8 +95,7 @@ void renderScriptStatusUnknown() throws Exception { this.request.put("moveId", "42"); Document render = Jsoup.parse(this.templateManager.render(MOVE_STATUS_TEMPLATE)); - assertEquals("errorIcon error " - + "attachment.move.status.notFound", render.select(".errormessage").text()); + assertEquals("error: attachment.move.status.notFound", render.select(".errormessage").text()); verify(this.jobScriptService).getJobStatus(List.of("refactoring", "moveAttachment", "42")); } From 42ee86bebc331c05f16a92d9ab38f30664504aba Mon Sep 17 00:00:00 2001 From: LucasC Date: Tue, 25 Feb 2025 11:51:28 +0100 Subject: [PATCH 45/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Fixed icon mock in MovePageTest.java --- .../src/test/java/org/xwiki/attachment/MovePageTest.java | 8 +++----- .../java/org/xwiki/attachment/MoveStatusPagesTest.java | 4 ++-- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MovePageTest.java b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MovePageTest.java index 5341c4d709d1..d4a030e2581c 100644 --- a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MovePageTest.java +++ b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MovePageTest.java @@ -102,8 +102,6 @@ void setUp() throws Exception this.componentManager.registerMockComponent(JobExecutor.class); when(((CSRFTokenScriptService)this.csrfScriptService).isTokenValid(any(String.class))).thenReturn(true); this.contextualAuthorizationManager = this.componentManager.getInstance(ContextualAuthorizationManager.class); - when(((IconManagerScriptService)this.iconManagerScriptService).renderHTML("cross")) - .thenReturn("errorIcon"); when(((IconManagerScriptService)this.iconManagerScriptService).renderHTML("exclamation")) .thenReturn("errorIcon"); when(((IconManagerScriptService)this.iconManagerScriptService).renderHTML("home")) @@ -166,7 +164,7 @@ void submitMoveTargetEditNotAllowed() throws Exception this.request.put("step", "2"); Document render = Jsoup.parse(this.templateManager.render(MOVE_TEMPLATE)); - assertEquals("error: attachment.move.targetNotWritable", + assertEquals("errorIcon error attachment.move.targetNotWritable", render.getElementsByClass("errormessage").get(0).text()); } @@ -177,7 +175,7 @@ void submitTargetAttachmentNameEmpty() throws Exception this.request.put("step", "2"); this.request.put("form_token", "a6DSv7pKWcPargoTvyx2Ww"); Document render = Jsoup.parse(this.templateManager.render(MOVE_TEMPLATE)); - assertEquals("error: attachment.move.emptyName", + assertEquals("errorIcon error attachment.move.emptyName", render.select(".errormessage").text()); } @@ -208,7 +206,7 @@ void submitMoveTargetAlreadyExists() throws Exception this.request.put("step", "2"); Document render = Jsoup.parse(this.templateManager.render(MOVE_TEMPLATE)); - assertEquals("error: attachment.move.alreadyExists " + assertEquals("errorIcon error attachment.move.alreadyExists " + "[attachment.txt, Space.Target\"', /xwiki/bin/view/Space/Target%22%27]", render.getElementsByClass("errormessage").get(0).text()); } diff --git a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MoveStatusPagesTest.java b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MoveStatusPagesTest.java index 55fd0fcf7cb6..9712fa5fa227 100644 --- a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MoveStatusPagesTest.java +++ b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MoveStatusPagesTest.java @@ -86,7 +86,7 @@ void setUp() throws Exception { this.templateManager = this.oldcore.getMocker().getInstance(TemplateManager.class); this.componentManager.registerComponent(ScriptService.class, "job", this.jobScriptService); - when(((IconManagerScriptService)this.iconManagerScriptService).renderHTML(any(String.class))) + when(((IconManagerScriptService)this.iconManagerScriptService).renderHTML("exclamation")) .thenReturn("errorIcon"); } @@ -95,7 +95,7 @@ void renderScriptStatusUnknown() throws Exception { this.request.put("moveId", "42"); Document render = Jsoup.parse(this.templateManager.render(MOVE_STATUS_TEMPLATE)); - assertEquals("error: attachment.move.status.notFound", render.select(".errormessage").text()); + assertEquals("errorIcon error attachment.move.status.notFound", render.select(".errormessage").text()); verify(this.jobScriptService).getJobStatus(List.of("refactoring", "moveAttachment", "42")); } From 66bc66e0b304094dba7f3f44b6fc5f14f0f1c825 Mon Sep 17 00:00:00 2001 From: LucasC Date: Tue, 25 Feb 2025 11:57:26 +0100 Subject: [PATCH 46/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Removed a now useless setup step. --- .../src/test/java/org/xwiki/attachment/MovePageTest.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MovePageTest.java b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MovePageTest.java index d4a030e2581c..332d732b9436 100644 --- a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MovePageTest.java +++ b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MovePageTest.java @@ -46,7 +46,6 @@ import org.xwiki.template.TemplateManager; import org.xwiki.template.script.TemplateScriptService; import org.xwiki.test.annotation.ComponentList; -import org.xwiki.test.page.IconSetup; import org.xwiki.test.page.PageTest; import org.xwiki.test.junit5.mockito.MockComponent; @@ -97,8 +96,6 @@ class MovePageTest extends PageTest void setUp() throws Exception { this.templateManager = this.oldcore.getMocker().getInstance(TemplateManager.class); - // Initializes then environment for the icon extension. - IconSetup.setUp(this, "/icons/default.iconset"); this.componentManager.registerMockComponent(JobExecutor.class); when(((CSRFTokenScriptService)this.csrfScriptService).isTokenValid(any(String.class))).thenReturn(true); this.contextualAuthorizationManager = this.componentManager.getInstance(ContextualAuthorizationManager.class); From 2aff1cbfc5ced78086bea17de572b52a73fbe276 Mon Sep 17 00:00:00 2001 From: LucasC Date: Tue, 25 Feb 2025 11:58:45 +0100 Subject: [PATCH 47/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Removed a now useless resource file. --- .../src/test/resources/icons/default.iconset | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/resources/icons/default.iconset diff --git a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/resources/icons/default.iconset b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/resources/icons/default.iconset deleted file mode 100644 index b58e21cc1010..000000000000 --- a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/resources/icons/default.iconset +++ /dev/null @@ -1,9 +0,0 @@ -## General settings -xwiki.iconset.type = image -xwiki.iconset.render.wiki = [[image:path:$xwiki.getSkinFile("icons/silk/${icon}.png")||data-xwiki-lightbox="false"]] -xwiki.iconset.render.html = Icon -xwiki.iconset.icon.url = $xwiki.getSkinFile("icons/silk/${icon}.png") - -chart-organisation = chart-organisation -cross = cross -home = home \ No newline at end of file From 12534be6b762a44edd194c0936d5c6afd8d781ae Mon Sep 17 00:00:00 2001 From: LucasC Date: Tue, 25 Feb 2025 13:51:05 +0100 Subject: [PATCH 48/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Replaced a velocity translation call with the standard translation macro. --- .../src/main/resources/XWiki/Extension/Security/Code/Admin.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xwiki-platform-core/xwiki-platform-extension/xwiki-platform-extension-security/xwiki-platform-extension-security-ui/src/main/resources/XWiki/Extension/Security/Code/Admin.xml b/xwiki-platform-core/xwiki-platform-extension/xwiki-platform-extension-security/xwiki-platform-extension-security-ui/src/main/resources/XWiki/Extension/Security/Code/Admin.xml index ade2012d31b8..5e42d94faac3 100644 --- a/xwiki-platform-core/xwiki-platform-extension/xwiki-platform-extension-security/xwiki-platform-extension-security-ui/src/main/resources/XWiki/Extension/Security/Code/Admin.xml +++ b/xwiki-platform-core/xwiki-platform-extension/xwiki-platform-extension-security/xwiki-platform-extension-security-ui/src/main/resources/XWiki/Extension/Security/Code/Admin.xml @@ -109,7 +109,7 @@ #end #info($infoMessageContent) #else - {{warning}}$escapetool.xml($services.localization.render('extension.security.indexed.nojob')){{/warning}} + {{warning}}{{translation key='extension.security.indexed.nojob'/}}{{/warning}} #end {{/html}} #end From d2ff384d1c8d522fd6ff2171f32708da1a416ed1 Mon Sep 17 00:00:00 2001 From: LucasC Date: Tue, 25 Feb 2025 13:56:51 +0100 Subject: [PATCH 49/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Updated the structure of the verlocimacros to take into account the latest bugfixes on the XWiki macros. --- .../src/main/resources/flamingo/editobject.vm | 2 +- .../src/main/resources/templates/macros.vm | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/editobject.vm b/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/editobject.vm index f8c40cbdb77c..6a5d0b20f26f 100644 --- a/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/editobject.vm +++ b/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/xwiki-platform-flamingo-skin-resources/src/main/resources/flamingo/editobject.vm @@ -42,7 +42,7 @@
$services.icon.renderHTML('warning') $services.localization.render('warning') - $text +
$text
#end ## diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm index 6bd80819e570..0f13e43eea59 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm @@ -959,9 +959,9 @@ $html <#if($isInline)span#{else}div#end class="box ${classAffix}message $!{extraClass}"> $services.icon.renderHTML($iconName) $services.localization.render($prettyNameKey) - #if("$!title" != "")
$!title
#end +
#if("$!title" != "")
$!title
#end

$text

- #if("$!title" != "")
#end +
#end From 159191227f8b362907f1566b38c0410afe4dc013 Mon Sep 17 00:00:00 2001 From: LucasC Date: Tue, 25 Feb 2025 16:26:43 +0100 Subject: [PATCH 50/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Updated mocking in CreateInlinePageTest.java --- .../src/test/java/org/xwiki/web/CreateInlinePageTest.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/test/java/org/xwiki/web/CreateInlinePageTest.java b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/test/java/org/xwiki/web/CreateInlinePageTest.java index 8324e0d46a9d..aeea48e19a9b 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/test/java/org/xwiki/web/CreateInlinePageTest.java +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/test/java/org/xwiki/web/CreateInlinePageTest.java @@ -32,6 +32,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; +import org.mockito.invocation.InvocationOnMock; import org.xwiki.icon.IconManagerScriptService; import org.xwiki.model.reference.DocumentReference; import org.xwiki.script.service.ScriptService; @@ -88,7 +89,7 @@ void setup() this.oldcore.getXWikiContext().setDoc(new XWikiDocument(new DocumentReference("xwiki", "space", "page"))); when(((IconManagerScriptService)this.iconManagerScriptService).renderHTML(any(String.class))) - .thenReturn("errorIcon"); + .then(invocationOnMock -> { return invocationOnMock.getArgument(0) + "Icon";}); } /** @@ -172,11 +173,11 @@ void templateProviderRestrictionErrorEscaping(List allowedSpaces) throws String expectedMessage; if (allowedSpaces.size() == 1) { - expectedMessage = String.format("errorIcon error " + expectedMessage = String.format("exclamationIcon error " + "core.create.template.allowedspace.inline [%s, %s]", provider, allowedSpaces.get(0)); } else { - expectedMessage = String.format("errorIcon error " + expectedMessage = String.format("exclamationIcon error " + "core.create.template.allowedspaces.inline [%s, %s]", provider, allowedSpaces); } From d985cc19b67354167d2b022ad082767725b59a70 Mon Sep 17 00:00:00 2001 From: LucasC Date: Tue, 25 Feb 2025 17:08:24 +0100 Subject: [PATCH 51/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Updated the structure of the verlocimacros to take into account the latest bugfixes on the XWiki macros. --- .../src/main/resources/templates/macros.vm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm index 0f13e43eea59..86763c1ab3ea 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm @@ -959,8 +959,9 @@ $html <#if($isInline)span#{else}div#end class="box ${classAffix}message $!{extraClass}"> $services.icon.renderHTML($iconName) $services.localization.render($prettyNameKey) -
#if("$!title" != "")
$!title
#end -

$text

+
+ #if("$!title" != "")
$!title
#end + $text
#end From 0939fda5a9671ead160560969f6660e2a0b99317 Mon Sep 17 00:00:00 2001 From: LucasC Date: Tue, 25 Feb 2025 17:25:52 +0100 Subject: [PATCH 52/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Updated mocking of the IconManagerScriptService --- .../test/java/org/xwiki/attachment/MovePageTest.java | 12 +++++------- .../org/xwiki/attachment/MoveStatusPagesTest.java | 6 +++--- .../test/java/org/xwiki/web/EditMacrosPageTest.java | 8 ++++---- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MovePageTest.java b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MovePageTest.java index 332d732b9436..d2375b7eaae6 100644 --- a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MovePageTest.java +++ b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MovePageTest.java @@ -99,10 +99,8 @@ void setUp() throws Exception this.componentManager.registerMockComponent(JobExecutor.class); when(((CSRFTokenScriptService)this.csrfScriptService).isTokenValid(any(String.class))).thenReturn(true); this.contextualAuthorizationManager = this.componentManager.getInstance(ContextualAuthorizationManager.class); - when(((IconManagerScriptService)this.iconManagerScriptService).renderHTML("exclamation")) - .thenReturn("errorIcon"); - when(((IconManagerScriptService)this.iconManagerScriptService).renderHTML("home")) - .thenReturn("homeIcon"); + when(((IconManagerScriptService)this.iconManagerScriptService).renderHTML(any(String.class))) + .then(invocationOnMock -> { return invocationOnMock.getArgument(0) + "Icon";}); } @Test @@ -161,7 +159,7 @@ void submitMoveTargetEditNotAllowed() throws Exception this.request.put("step", "2"); Document render = Jsoup.parse(this.templateManager.render(MOVE_TEMPLATE)); - assertEquals("errorIcon error attachment.move.targetNotWritable", + assertEquals("exclamationIcon error attachment.move.targetNotWritable", render.getElementsByClass("errormessage").get(0).text()); } @@ -172,7 +170,7 @@ void submitTargetAttachmentNameEmpty() throws Exception this.request.put("step", "2"); this.request.put("form_token", "a6DSv7pKWcPargoTvyx2Ww"); Document render = Jsoup.parse(this.templateManager.render(MOVE_TEMPLATE)); - assertEquals("errorIcon error attachment.move.emptyName", + assertEquals("exclamationIcon error attachment.move.emptyName", render.select(".errormessage").text()); } @@ -203,7 +201,7 @@ void submitMoveTargetAlreadyExists() throws Exception this.request.put("step", "2"); Document render = Jsoup.parse(this.templateManager.render(MOVE_TEMPLATE)); - assertEquals("errorIcon error attachment.move.alreadyExists " + assertEquals("exclamationIcon error attachment.move.alreadyExists " + "[attachment.txt, Space.Target\"', /xwiki/bin/view/Space/Target%22%27]", render.getElementsByClass("errormessage").get(0).text()); } diff --git a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MoveStatusPagesTest.java b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MoveStatusPagesTest.java index 9712fa5fa227..7342951dceaa 100644 --- a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MoveStatusPagesTest.java +++ b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MoveStatusPagesTest.java @@ -86,8 +86,8 @@ void setUp() throws Exception { this.templateManager = this.oldcore.getMocker().getInstance(TemplateManager.class); this.componentManager.registerComponent(ScriptService.class, "job", this.jobScriptService); - when(((IconManagerScriptService)this.iconManagerScriptService).renderHTML("exclamation")) - .thenReturn("errorIcon"); + when(((IconManagerScriptService)this.iconManagerScriptService).renderHTML(any(String.class))) + .then(invocationOnMock -> { return invocationOnMock.getArgument(0) + "Icon";}); } @Test @@ -95,7 +95,7 @@ void renderScriptStatusUnknown() throws Exception { this.request.put("moveId", "42"); Document render = Jsoup.parse(this.templateManager.render(MOVE_STATUS_TEMPLATE)); - assertEquals("errorIcon error attachment.move.status.notFound", render.select(".errormessage").text()); + assertEquals("exclamationIcon error attachment.move.status.notFound", render.select(".errormessage").text()); verify(this.jobScriptService).getJobStatus(List.of("refactoring", "moveAttachment", "42")); } diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/test/java/org/xwiki/web/EditMacrosPageTest.java b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/test/java/org/xwiki/web/EditMacrosPageTest.java index 6be1989a5678..6f27b2e9a93d 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/test/java/org/xwiki/web/EditMacrosPageTest.java +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/test/java/org/xwiki/web/EditMacrosPageTest.java @@ -97,7 +97,7 @@ void setUp() { this.request.setSession(this.httpSession); when(((IconManagerScriptService)this.iconManagerScriptService).renderHTML(any(String.class))) - .thenReturn("errorIcon"); + .then(invocationOnMock -> { return invocationOnMock.getArgument(0) + "Icon";}); } @Test @@ -136,7 +136,7 @@ void oneWarningCheck() throws Exception Map editConfirmation = (Map) scriptContext.getAttribute("editConfirmation"); assertEquals("warning", editConfirmation.get("title")); Document message = Jsoup.parse(editConfirmation.get("message")); - assertEquals("errorIcon warning " + assertEquals("warningIcon warning " + "platform.core.editConfirmation.warnings", message.selectFirst(".warningmessage").text()); assertEquals("Warning", message.selectFirst("#warning1").text()); assertEquals("cancel", editConfirmation.get("reject")); @@ -171,7 +171,7 @@ void twoWarningsTwoErrorsCheck() throws Exception assertEquals("error", editConfirmation.get("title")); Document message = Jsoup.parse(editConfirmation.get("message")); // This test is not to test the structure, but to verify the order in which the text are displayed. - assertEquals("errorIcon error " + assertEquals("exclamationIcon error " + "platform.core.editConfirmation.errors Error 1 Error 2 platform.core.editConfirmation" + ".additionalWarnings Warning 1 Warning 2", message.text()); assertEquals("cancel", editConfirmation.get("reject")); @@ -228,7 +228,7 @@ void oneErrorEditForced() throws Exception Map editConfirmation = (Map) scriptContext.getAttribute("editConfirmation"); assertEquals("error", editConfirmation.get("title")); Document message = Jsoup.parse(editConfirmation.get("message")); - assertEquals("errorIcon error platform.core.editConfirmation.errors", message.selectFirst(".errormessage").text()); + assertEquals("exclamationIcon error platform.core.editConfirmation.errors", message.selectFirst(".errormessage").text()); assertEquals("Error", message.selectFirst("#error1").text()); assertEquals("cancel", editConfirmation.get("reject")); assertNull(editConfirmation.get("confirm")); From 4854870a8bf0a1a9fc396387fb09c14dba72f4f9 Mon Sep 17 00:00:00 2001 From: LucasC Date: Tue, 18 Mar 2025 14:04:51 +0100 Subject: [PATCH 53/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Removed escaping from strings that are not in a HTML context anymore --- .../src/main/resources/Invitation/InvitationCommon.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-invitation/xwiki-platform-invitation-ui/src/main/resources/Invitation/InvitationCommon.xml b/xwiki-platform-core/xwiki-platform-invitation/xwiki-platform-invitation-ui/src/main/resources/Invitation/InvitationCommon.xml index da9d88bebd35..6c24a42d0605 100644 --- a/xwiki-platform-core/xwiki-platform-invitation/xwiki-platform-invitation-ui/src/main/resources/Invitation/InvitationCommon.xml +++ b/xwiki-platform-core/xwiki-platform-invitation/xwiki-platform-invitation-ui/src/main/resources/Invitation/InvitationCommon.xml @@ -123,12 +123,12 @@ {{error}} #if($recips.size() == 1) ## The email address given is invalid and will not be sent to. - $escapetool.xml($services.localization.render('xe.invitation.displayMessage.theAddressIsInvalid')) + $services.localization.render('xe.invitation.displayMessage.theAddressIsInvalid') #else #if($invalid.size() > 1) - $escapetool.xml($services.localization.render('xe.invitation.displayMessage.someAddressesAreInvalid', [$invalidAddresses.size()])) + $services.localization.render('xe.invitation.displayMessage.someAddressesAreInvalid', [$invalidAddresses.size()]) #else - $escapetool.xml($services.localization.render('xe.invitation.displayMessage.anAddressesIsInvalid')) + $services.localization.render('xe.invitation.displayMessage.anAddressesIsInvalid') #end #end {{/error}} From 693fdc6d308e42d516037269674dfcc01335f8d9 Mon Sep 17 00:00:00 2001 From: LucasC Date: Tue, 18 Mar 2025 14:18:29 +0100 Subject: [PATCH 54/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Added XWiki 2.1 escaping --- .../src/main/resources/Invitation/InvitationCommon.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-invitation/xwiki-platform-invitation-ui/src/main/resources/Invitation/InvitationCommon.xml b/xwiki-platform-core/xwiki-platform-invitation/xwiki-platform-invitation-ui/src/main/resources/Invitation/InvitationCommon.xml index 6c24a42d0605..0bd75bdd2a8b 100644 --- a/xwiki-platform-core/xwiki-platform-invitation/xwiki-platform-invitation-ui/src/main/resources/Invitation/InvitationCommon.xml +++ b/xwiki-platform-core/xwiki-platform-invitation/xwiki-platform-invitation-ui/src/main/resources/Invitation/InvitationCommon.xml @@ -123,12 +123,12 @@ {{error}} #if($recips.size() == 1) ## The email address given is invalid and will not be sent to. - $services.localization.render('xe.invitation.displayMessage.theAddressIsInvalid') + $services.rendering.escape($services.localization.render('xe.invitation.displayMessage.theAddressIsInvalid'), 'xwiki/2.1') #else #if($invalid.size() > 1) - $services.localization.render('xe.invitation.displayMessage.someAddressesAreInvalid', [$invalidAddresses.size()]) + $services.rendering.escape($services.localization.render('xe.invitation.displayMessage.someAddressesAreInvalid', [$invalidAddresses.size()]), 'xwiki/2.1') #else - $services.localization.render('xe.invitation.displayMessage.anAddressesIsInvalid') + $services.rendering.escape($services.localization.render('xe.invitation.displayMessage.anAddressesIsInvalid'), 'xwiki/2.1') #end #end {{/error}} From 65753317c61eefd4bcdd8c767c099ed42c1d7715 Mon Sep 17 00:00:00 2001 From: LucasC Date: Tue, 18 Mar 2025 14:21:44 +0100 Subject: [PATCH 55/58] Open XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Replaced a statement lambda with an expression lambda Co-authored-by: Michael Hamann --- .../src/test/java/org/xwiki/attachment/MoveStatusPagesTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MoveStatusPagesTest.java b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MoveStatusPagesTest.java index 7342951dceaa..58716199221f 100644 --- a/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MoveStatusPagesTest.java +++ b/xwiki-platform-core/xwiki-platform-attachment/xwiki-platform-attachment-api/src/test/java/org/xwiki/attachment/MoveStatusPagesTest.java @@ -87,7 +87,7 @@ void setUp() throws Exception this.templateManager = this.oldcore.getMocker().getInstance(TemplateManager.class); this.componentManager.registerComponent(ScriptService.class, "job", this.jobScriptService); when(((IconManagerScriptService)this.iconManagerScriptService).renderHTML(any(String.class))) - .then(invocationOnMock -> { return invocationOnMock.getArgument(0) + "Icon";}); + .then(invocationOnMock -> invocationOnMock.getArgument(0) + "Icon"); } @Test From f3f63de6e4a46df7b729b8f801eceabca7c41b45 Mon Sep 17 00:00:00 2001 From: LucasC Date: Tue, 18 Mar 2025 14:48:10 +0100 Subject: [PATCH 56/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Added XWiki 2.1 escaping --- .../src/main/resources/AppWithinMinutes/LiveTableEditSheet.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/LiveTableEditSheet.xml b/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/LiveTableEditSheet.xml index 2f3d03e14490..3d721de0c527 100644 --- a/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/LiveTableEditSheet.xml +++ b/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/LiveTableEditSheet.xml @@ -337,7 +337,7 @@ #updateAndSaveIcon() #if ($action == 'save') #if ($errorMessage) - {{error}}$errorMessage{{/error}} + {{error}}$services.rendering.escape($errorMessage, 'xwiki/2.1'){{/error}} #else ## Redirect to view mode. $response.sendRedirect($doc.getURL()) From 9b30decca01e46d9b709201c3071374161fd2d98 Mon Sep 17 00:00:00 2001 From: LucasC Date: Tue, 18 Mar 2025 16:48:59 +0100 Subject: [PATCH 57/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Added newlines around macros to make sure they are rendered standalone. --- .../src/main/resources/WikiManager/CreateWiki.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/xwiki-platform-core/xwiki-platform-wiki/xwiki-platform-wiki-ui/xwiki-platform-wiki-ui-mainwiki/src/main/resources/WikiManager/CreateWiki.xml b/xwiki-platform-core/xwiki-platform-wiki/xwiki-platform-wiki-ui/xwiki-platform-wiki-ui-mainwiki/src/main/resources/WikiManager/CreateWiki.xml index 96d0b00120cd..7221a43fe0f3 100644 --- a/xwiki-platform-core/xwiki-platform-wiki/xwiki-platform-wiki-ui/xwiki-platform-wiki-ui-mainwiki/src/main/resources/WikiManager/CreateWiki.xml +++ b/xwiki-platform-core/xwiki-platform-wiki/xwiki-platform-wiki-ui/xwiki-platform-wiki-ui-mainwiki/src/main/resources/WikiManager/CreateWiki.xml @@ -671,13 +671,17 @@ <div class="wizard-body"> {{/html}} #if($request.deleteOk) + {{success}} {{html}}$services.localization.render('platform.wiki.create.wizard.step.cleaningup.success', ["<strong>$wikiId</strong>"]){{/html}} {{/success}} + #else + {{error}} {{html}}$services.localization.render('platform.wiki.create.wizard.step.cleaningup.error', ["<strong>$wikiId</strong>"]){{/html}} {{/error}} + #end {{html clean="false"}} </div> From 3c049086f7b4c7cb03de92ec75a3e6d61b651a64 Mon Sep 17 00:00:00 2001 From: LucasC Date: Mon, 14 Apr 2025 12:11:02 +0200 Subject: [PATCH 58/58] XWIKI-22433: Provide consistency in info / warning / error class usages in templates * Fixed the latest tests so that JobStatusJSONPageTest build properly with the changes to the error box. --- .../test/java/org/xwiki/web/JobStatusJSONPageTest.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/test/java/org/xwiki/web/JobStatusJSONPageTest.java b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/test/java/org/xwiki/web/JobStatusJSONPageTest.java index 7eae4f61a2c0..6fe6cf901102 100644 --- a/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/test/java/org/xwiki/web/JobStatusJSONPageTest.java +++ b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/test/java/org/xwiki/web/JobStatusJSONPageTest.java @@ -46,9 +46,13 @@ void nonExistingJob() throws Exception String output = this.templateManager.render("job_status_json.vm"); - assertThat(output, equalToCompressingWhiteSpace(""" -
- <test>.notFound + assertThat(output.strip(), equalToCompressingWhiteSpace(""" +
+ $services.icon.renderHTML($iconName) + error +
+ <test>.notFound +
""")); } }