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..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
@@ -244,7 +244,10 @@
#macro (maybeShowDeleteUserWarning $userReference $right)
#countPagesLastModifiedBy($userReference)
#if ($pageCount > 0)
- <div class="box errormessage xform">
+ {{/html}}
+
+ {{error cssClass="xform"}}
+ {{html}}
#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-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..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)
- <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-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 322c77c2a4cd..644700af3c01 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
@@ -429,7 +429,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-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 a30e619bcfc9..0b98b6123918 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-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/ClassEditSheet.xml b/xwiki-platform-core/xwiki-platform-appwithinminutes/xwiki-platform-appwithinminutes-ui/src/main/resources/AppWithinMinutes/ClassEditSheet.xml
index eade57c3b882..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,9 +228,7 @@ xcontext.put('propertyCustomDisplayer', new PropertyCustomDisplayer(xcontext))
["#pageLink($sheetReference)"])
</span>
#else
- <span class="warningmessage">
- $services.localization.render('platform.appwithinminutes.classEditorMultipleSheetsWarning')
- </span>
+ #inlineWarning($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/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-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..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,9 +337,7 @@
#updateAndSaveIcon()
#if ($action == 'save')
#if ($errorMessage)
- {{html clean="false"}}
- <div class="box errormessage">$errorMessage</div>
- {{/html}}
+ {{error}}$services.rendering.escape($errorMessage, 'xwiki/2.1'){{/error}}
#else
## Redirect to view mode.
$response.sendRedirect($doc.getURL())
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 6181193f9dbc..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
@@ -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(
@@ -242,7 +236,7 @@
#set ($classFullName = $doc.getValue('class'))
#if ("$!classFullName" == '' || !$xwiki.exists($classFullName))
{{warning}}
- {{translation key="platform.appwithinminutes.appHomePageMovedWarning"/}}
+ {{translation key="platform.appwithinminutes.appHomePageMovedWarning"/}}
{{/warning}}
#end
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-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..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
@@ -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;
@@ -31,7 +33,8 @@
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.icon.internal.DefaultIconRenderer;
import org.xwiki.job.JobExecutor;
import org.xwiki.model.internal.reference.converter.EntityReferenceConverter;
import org.xwiki.model.reference.DocumentReference;
@@ -43,8 +46,8 @@
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;
import com.xpn.xwiki.doc.XWikiDocument;
import com.xpn.xwiki.internal.model.reference.DocumentReferenceConverter;
@@ -60,7 +63,6 @@
* @since 14.0RC1
*/
@SecurityScriptServiceComponentList
-@IconManagerScriptServiceComponentList
@ComponentList({
ModelScriptService.class,
AttachmentScriptService.class,
@@ -80,8 +82,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;
@@ -89,12 +96,11 @@ 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.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)))
+ .then(invocationOnMock -> { return invocationOnMock.getArgument(0) + "Icon";});
}
@Test
@@ -122,7 +128,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("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());
@@ -153,7 +159,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("exclamationIcon error attachment.move.targetNotWritable",
render.getElementsByClass("errormessage").get(0).text());
}
@@ -164,7 +170,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("exclamationIcon error attachment.move.emptyName",
+ render.select(".errormessage").text());
}
@Test
@@ -194,7 +201,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("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 c7bfa5c1d854..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
@@ -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)))
+ .then(invocationOnMock -> invocationOnMock.getArgument(0) + "Icon");
}
@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("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-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 =
-xwiki.iconset.icon.url = $xwiki.getSkinFile("icons/silk/${icon}.png")
-
-chart-organisation = chart-organisation
-cross = cross
-home = home
\ 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/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..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
@@ -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.
+ #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'))
@@ -101,13 +103,14 @@
<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
+ #end
+ #info($infoMessageContent)
+ #else
+ {{warning}}{{translation key='extension.security.indexed.nojob'/}}{{/warning}}
+ #end
{{/html}}
#end
{{/velocity}}
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 7490015b453f..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
@@ -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">
+ #define ($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)
+ #define ($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>
+ #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
- $escapetool.xml($services.localization.render('extensions.search.indexed.on', [$xwiki.formatDate($indexJobStatus.startDate)]))
+ #define ($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-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..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,13 +43,11 @@
#set($finished = $jobStatus.state.name() == 'FINISHED')
#if ($finished)
#if (!$jobStatus.logTail.hasLogLevel('ERROR'))
- <div class="box successmessage">
- Done.
- </div>
+ ## Remove when the following issue is resolved:
+ ## TODO XWIKI-22710: Add translations for FilterStreamJobJSON
+ #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-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/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 007ae3cf90c8..46c2ac6b8f5c 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)
+
+#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,7 +109,8 @@
$services.localization.render('core.editors.object.removeDeprecatedProperties.link')
-
+ #end
+ #_warningWithExtraClass($warningMessageContent 'deprecatedProperties')
#end
#end
@@ -245,14 +261,14 @@
#if ($mustSync) #break #end
#end
#if ($mustSync)
-
+ #define ($warningMessageContent)
$services.localization.render('core.editors.object.removeDeprecatedProperties.all.info')
-
+ #end
+ #_warningWithExtraClass($warningMessageContent 'deprecatedProperties')
#end
#end ## checkPropertyDeprecation
##
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 71b2b9e83647..ad776b41fcdd 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
@@ -249,7 +249,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-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-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-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..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
@@ -119,18 +119,20 @@
## 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}}
#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.rendering.escape($services.localization.render('xe.invitation.displayMessage.theAddressIsInvalid'), 'xwiki/2.1')
#else
#if($invalid.size() > 1)
- $escapetool.xml($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
- $escapetool.xml($services.localization.render('xe.invitation.displayMessage.anAddressesIsInvalid'))
+ $services.rendering.escape($services.localization.render('xe.invitation.displayMessage.anAddressesIsInvalid'), 'xwiki/2.1')
#end
#end
- </span>
+ {{/error}}
+ {{html wiki=false clean=false}}
</p>
#end
## Subject:
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 cc45a0bcf04d..3407cc93792e 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-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..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,10 +91,7 @@
### 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>
+ #info($escapetool.html($services.localization.render('admin.ooserver.options.source', ['__VALUE__'])).replaceFirst('__VALUE__', '<span class="monospace">xwiki.properties</span>'))
</p>
<dl>
###
@@ -150,7 +147,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')))
#end
</dd>
###
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 c52cd5b76028..516bfc5e76b0 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
@@ -420,6 +420,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-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}}
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();
}
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/children.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/children.vm
index 1029fa49a5d2..2ed282f5d52e 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
@@ -109,9 +109,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/createinline.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/createinline.vm
index 07c8c0f5616e..aa882dcc9e82 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
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/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)
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 b35b836fcd0a..d478e221fbc9 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
@@ -740,7 +740,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())
@@ -1186,15 +1186,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
@@ -1358,7 +1358,7 @@ $namespace##
## Send error back.
$response.sendError(400, $errorMessage)
#else
- $errorMessage #printThrowable($lastError)
+ #error("$errorMessage #printThrowable($lastError)")
#end
#else
## Redirect to extension display.
@@ -1689,9 +1689,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..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
@@ -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
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..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
@@ -18,14 +18,10 @@
## 02110-1301 USA, or see the FSF site: http://www.fsf.org.
## ---------------------------------------------------------------------------
#template('job/question/macros.vm')
-
#questionHeader()
-
#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)
$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 +38,8 @@
#questionButtons($jobStatus)
-
+#end
+
+#_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 53bf7e360303..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
@@ -24,8 +24,7 @@
#questionHeader()
#if ($question.isRefactoringForbidden())
-
-
$services.icon.renderHTML('warning') $escapetool.xml($services.localization.render("job.question.XClassBreakingQuestion.${job.type}.forbiddenTitle"))
+#define ($errorMessageContent)
$escapetool.xml($services.localization.render("job.question.XClassBreakingQuestion.${job.type}.forbiddenExplanation"))
@@ -43,10 +42,10 @@
$escapetool.xml($services.localization.render(["job.question.${status.jobType}.cancel", 'job.question.button.cancel']))
-
+#end
+#_genericMessage("$errorMessageContent", 'error', 'exclamation', 'error', false, 'deleteWarningXClass', $escapetool.xml($services.localization.render("job.question.XClassBreakingQuestion.${job.type}.forbiddenTitle")))
#else
-
-
$services.icon.renderHTML('warning') $escapetool.xml($services.localization.render("job.question.XClassBreakingQuestion.${job.type}.title"))
+#define ($warningMessageContent)
$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 +61,7 @@
#questionButtons($jobStatus)
-
#end
-
-#questionFooter()
\ No newline at end of file
+#_genericMessage("$warningMessageContent", 'warning', 'warning', 'warning', false, 'deleteWarningXClass', $escapetool.xml($services.localization.render("job.question.XClassBreakingQuestion.${job.type}.title")))
+#end
+#questionFooter()
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)
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 f5a029f9d6fb..d953d00635a9 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
@@ -28,7 +28,5 @@
#outputJobStatusJSON($jobStatus, $translationPrefix)
#else
$response.setStatus(404)
-
- $escapetool.xml($services.localization.render("${translationPrefix}.notFound"))
-
+ #error($escapetool.xml($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/macros.vm b/xwiki-platform-core/xwiki-platform-web/xwiki-platform-web-templates/src/main/resources/templates/macros.vm
index 0046153f558e..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
@@ -953,16 +953,57 @@ $html
### message
###
+### 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 $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($isInline)span#{else}div#end>
+#end
+
+## Display a block warning message with the content $text.
#macro(warning $text)
-$services.localization.render('warning'): $text
+#_genericMessage($text 'warning' 'warning' 'warning')
#end
+## Display an inline warning message with the content $text.
+#macro(inlineWarning $text)
+#_genericMessage($text 'warning' 'warning' 'warning' true)
+#end
+
+## Display a block error message with the content $text.
#macro(error $text)
-$services.localization.render('error'): $text
+#_genericMessage($text 'error' 'exclamation' 'error')
+#end
+
+## Display an inline error message with the content $text.
+#macro(inlineError $text)
+ #_genericMessage($text 'error' 'exclamation' 'error' true)
#end
+## Display a block info message with the content $text.
#macro(info $text)
-$text
+#_genericMessage($text 'info' 'info' 'info')
+#end
+
+## Display an inline info message with the content $text.
+#macro(inlineInfo $text)
+ #_genericMessage($text 'info' 'info' 'info' true)
+#end
+
+## Display a block success message with the content $text.
+#macro(success $text)
+#_genericMessage($text 'success' 'check' 'success')
+#end
+
+## Display an inline success message with the content $text.
+#macro(inlineSuccess $text)
+ #_genericMessage($text 'success' 'check' 'success' true)
#end
#macro(message $text)
@@ -1516,7 +1557,7 @@ $Msz MB##
#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-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..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
@@ -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')
+ #inlineInfo($services.localization.render('platform.core.profile.passwd.success'))
$services.localization.render('platform.core.profile.passwd.return')
#end
#if(!$isValidPassword)
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
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..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)} : $!{escapetool.xml($file.value)}
+ $!{escapetool.xml($file.key)} : #inlineError($!{escapetool.xml($file.value)})
#end
#end
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..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
@@ -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,12 @@
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;
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 +46,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 +68,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 +87,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)))
+ .then(invocationOnMock -> { return invocationOnMock.getArgument(0) + "Icon";});
}
/**
@@ -159,10 +173,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("exclamationIcon 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("exclamationIcon 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..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
@@ -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,6 +85,10 @@ class EditMacrosPageTest extends PageTest
@MockComponent
private ReplaceCharacterEntityNameValidationConfiguration replaceCharacterEntityNameValidationConfiguration;
+ @MockComponent(classToMock = IconManagerScriptService.class)
+ @Named("icon")
+ private ScriptService iconManagerScriptService;
+
@Mock
private HttpSession httpSession;
@@ -88,6 +96,8 @@ class EditMacrosPageTest extends PageTest
void setUp()
{
this.request.setSession(this.httpSession);
+ when(((IconManagerScriptService)this.iconManagerScriptService).renderHTML(any(String.class)))
+ .then(invocationOnMock -> { return invocationOnMock.getArgument(0) + "Icon";});
}
@Test
@@ -126,7 +136,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("warningIcon 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 +171,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("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"));
assertNull(editConfirmation.get("confirm"));
@@ -216,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("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"));
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
+
"""));
}
}
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..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
@@ -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,24 @@
#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 +1138,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');