diff --git a/core/src/main/resources/hudson/PluginManager/PluginCycleDependenciesMonitor/message.jelly b/core/src/main/resources/hudson/PluginManager/PluginCycleDependenciesMonitor/message.jelly index cb20ebf8dfe7..1713ece9811d 100644 --- a/core/src/main/resources/hudson/PluginManager/PluginCycleDependenciesMonitor/message.jelly +++ b/core/src/main/resources/hudson/PluginManager/PluginCycleDependenciesMonitor/message.jelly @@ -24,12 +24,12 @@ THE SOFTWARE. -
+
${%PluginCycles}
-
+
diff --git a/core/src/main/resources/hudson/PluginManager/PluginDeprecationMonitor/message.jelly b/core/src/main/resources/hudson/PluginManager/PluginDeprecationMonitor/message.jelly index 1f5ec400bd3c..f898e197b59a 100644 --- a/core/src/main/resources/hudson/PluginManager/PluginDeprecationMonitor/message.jelly +++ b/core/src/main/resources/hudson/PluginManager/PluginDeprecationMonitor/message.jelly @@ -24,7 +24,7 @@ THE SOFTWARE. -
+
${%DeprecatedPlugins}
@@ -32,5 +32,5 @@ THE SOFTWARE.

${%DeprecatedPluginsDescription}

-
+
diff --git a/core/src/main/resources/hudson/PluginManager/PluginUpdateMonitor/message.jelly b/core/src/main/resources/hudson/PluginManager/PluginUpdateMonitor/message.jelly index b1f9ba193d49..f7029486491d 100644 --- a/core/src/main/resources/hudson/PluginManager/PluginUpdateMonitor/message.jelly +++ b/core/src/main/resources/hudson/PluginManager/PluginUpdateMonitor/message.jelly @@ -24,12 +24,12 @@ THE SOFTWARE. -
+
${%RequiredPluginUpdates}
-
+
diff --git a/core/src/main/resources/hudson/PluginWrapper/PluginWrapperAdministrativeMonitor/message.jelly b/core/src/main/resources/hudson/PluginWrapper/PluginWrapperAdministrativeMonitor/message.jelly index 725457e4aa22..193ab49ba188 100644 --- a/core/src/main/resources/hudson/PluginWrapper/PluginWrapperAdministrativeMonitor/message.jelly +++ b/core/src/main/resources/hudson/PluginWrapper/PluginWrapperAdministrativeMonitor/message.jelly @@ -1,10 +1,10 @@ - - + diff --git a/core/src/main/resources/hudson/diagnosis/HudsonHomeDiskUsageMonitor/index.jelly b/core/src/main/resources/hudson/diagnosis/HudsonHomeDiskUsageMonitor/index.jelly index 35988ba3635d..f73a32442330 100644 --- a/core/src/main/resources/hudson/diagnosis/HudsonHomeDiskUsageMonitor/index.jelly +++ b/core/src/main/resources/hudson/diagnosis/HudsonHomeDiskUsageMonitor/index.jelly @@ -27,7 +27,7 @@ THE SOFTWARE.

- + ${%blurb}

diff --git a/core/src/main/resources/hudson/diagnosis/HudsonHomeDiskUsageMonitor/message.jelly b/core/src/main/resources/hudson/diagnosis/HudsonHomeDiskUsageMonitor/message.jelly index 488407988acf..722f7f51ab31 100644 --- a/core/src/main/resources/hudson/diagnosis/HudsonHomeDiskUsageMonitor/message.jelly +++ b/core/src/main/resources/hudson/diagnosis/HudsonHomeDiskUsageMonitor/message.jelly @@ -24,11 +24,10 @@ THE SOFTWARE. -
-
- - - - ${%blurb(app.rootDir)} -
+ + + ${%blurb(app.rootDir)} +
diff --git a/core/src/main/resources/hudson/diagnosis/NullIdDescriptorMonitor/message.jelly b/core/src/main/resources/hudson/diagnosis/NullIdDescriptorMonitor/message.jelly index 06aee82322cb..6d3708596d58 100644 --- a/core/src/main/resources/hudson/diagnosis/NullIdDescriptorMonitor/message.jelly +++ b/core/src/main/resources/hudson/diagnosis/NullIdDescriptorMonitor/message.jelly @@ -24,12 +24,12 @@ THE SOFTWARE. -
-
-
${%blurb}
- -
${%problem(d, d.displayName, app.pluginManager.whichPlugin(d.getClass()))}
-
-
-
+ +
+
${%blurb}
+ +
${%problem(d, d.displayName, app.pluginManager.whichPlugin(d.getClass()))}
+
+
+
diff --git a/core/src/main/resources/hudson/diagnosis/OldDataMonitor/message.jelly b/core/src/main/resources/hudson/diagnosis/OldDataMonitor/message.jelly index c6d274d99031..16efb08a1aaf 100644 --- a/core/src/main/resources/hudson/diagnosis/OldDataMonitor/message.jelly +++ b/core/src/main/resources/hudson/diagnosis/OldDataMonitor/message.jelly @@ -24,11 +24,10 @@ THE SOFTWARE. -
-
- - - + + ${%You have data stored in an older format and/or unreadable data.} -
+
diff --git a/core/src/main/resources/hudson/diagnosis/ReverseProxySetupMonitor/message.jelly b/core/src/main/resources/hudson/diagnosis/ReverseProxySetupMonitor/message.jelly index c7367563a257..debf4c140090 100644 --- a/core/src/main/resources/hudson/diagnosis/ReverseProxySetupMonitor/message.jelly +++ b/core/src/main/resources/hudson/diagnosis/ReverseProxySetupMonitor/message.jelly @@ -23,16 +23,12 @@ THE SOFTWARE. --> -
-
- - - - - -
${%blurb}
-
${%missingContextMessage(rootURL)}
-
+ + +
+
${%blurb} ${%missingContextMessage(rootURL)}
+ diff --git a/core/src/main/resources/hudson/diagnosis/ReverseProxySetupMonitor/resources.js b/core/src/main/resources/hudson/diagnosis/ReverseProxySetupMonitor/resources.js index baf1a0654c77..1eb778e53845 100644 --- a/core/src/main/resources/hudson/diagnosis/ReverseProxySetupMonitor/resources.js +++ b/core/src/main/resources/hudson/diagnosis/ReverseProxySetupMonitor/resources.js @@ -1,5 +1,7 @@ (function () { var redirectForm = document.getElementById("redirect-error"); + const redirectData = document.getElementById("redirect-data"); + if (!redirectForm) { console.warn( 'This script expects to have an element with id="redirect-error" to be working.', @@ -7,7 +9,7 @@ return; } - var urlToTest = redirectForm.getAttribute("data-url"); + var urlToTest = redirectData.getAttribute("data-url"); var callUrlToTest = function (testWithContext, callback) { var headers = {}; var body = null; @@ -40,7 +42,7 @@ callUrlToTest(false, function (response) { if (response.status !== 200) { - var context = redirectForm.getAttribute("data-context"); + var context = redirectData.getAttribute("data-context"); // to cover the case where the JenkinsRootUrl is configured without the context if (context) { callUrlToTest(true, function (response2) { diff --git a/core/src/main/resources/hudson/diagnosis/TooManyJobsButNoView/message.jelly b/core/src/main/resources/hudson/diagnosis/TooManyJobsButNoView/message.jelly index 178bbebeddb6..98b35212e923 100644 --- a/core/src/main/resources/hudson/diagnosis/TooManyJobsButNoView/message.jelly +++ b/core/src/main/resources/hudson/diagnosis/TooManyJobsButNoView/message.jelly @@ -24,13 +24,10 @@ THE SOFTWARE. -
- -
- - - -
+ + ${%blurb} -
+
diff --git a/core/src/main/resources/hudson/model/UpdateCenter/CoreUpdateMonitor/message.jelly b/core/src/main/resources/hudson/model/UpdateCenter/CoreUpdateMonitor/message.jelly index efaa6159136e..926a0208b2eb 100644 --- a/core/src/main/resources/hudson/model/UpdateCenter/CoreUpdateMonitor/message.jelly +++ b/core/src/main/resources/hudson/model/UpdateCenter/CoreUpdateMonitor/message.jelly @@ -24,7 +24,7 @@ THE SOFTWARE. -
+ @@ -62,5 +62,5 @@ THE SOFTWARE. -
+
diff --git a/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message.jelly b/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message.jelly index 52a2bd1df659..ba82e941f3bb 100644 --- a/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message.jelly +++ b/core/src/main/resources/hudson/node_monitors/MonitorMarkedNodeOffline/message.jelly @@ -24,10 +24,7 @@ THE SOFTWARE. -
-
- - + ${%blurb(rootURL)} -
+
diff --git a/core/src/main/resources/hudson/security/csrf/DefaultCrumbIssuer/ExcludeSessionIdAdministrativeMonitor/message.jelly b/core/src/main/resources/hudson/security/csrf/DefaultCrumbIssuer/ExcludeSessionIdAdministrativeMonitor/message.jelly index a6730f9ad8fe..b601a92882f4 100644 --- a/core/src/main/resources/hudson/security/csrf/DefaultCrumbIssuer/ExcludeSessionIdAdministrativeMonitor/message.jelly +++ b/core/src/main/resources/hudson/security/csrf/DefaultCrumbIssuer/ExcludeSessionIdAdministrativeMonitor/message.jelly @@ -23,12 +23,11 @@ THE SOFTWARE. --> - -
-
- - - + + + ${%blurb} -
+
diff --git a/core/src/main/resources/hudson/triggers/SCMTrigger/AdministrativeMonitorImpl/message.jelly b/core/src/main/resources/hudson/triggers/SCMTrigger/AdministrativeMonitorImpl/message.jelly index 47cadeea4f34..5bdb4e4aa825 100644 --- a/core/src/main/resources/hudson/triggers/SCMTrigger/AdministrativeMonitorImpl/message.jelly +++ b/core/src/main/resources/hudson/triggers/SCMTrigger/AdministrativeMonitorImpl/message.jelly @@ -23,8 +23,8 @@ THE SOFTWARE. --> - -
+ + ${%blurb(rootURL)} -
+
diff --git a/core/src/main/resources/hudson/triggers/SlowTriggerAdminMonitor/message.groovy b/core/src/main/resources/hudson/triggers/SlowTriggerAdminMonitor/message.groovy index 22a175909c0c..e66b9d812775 100644 --- a/core/src/main/resources/hudson/triggers/SlowTriggerAdminMonitor/message.groovy +++ b/core/src/main/resources/hudson/triggers/SlowTriggerAdminMonitor/message.groovy @@ -7,16 +7,19 @@ import org.apache.commons.jelly.tags.fmt.FmtTagLibrary SlowTriggerAdminMonitor tam = my -dl { - div(class: "jenkins-alert jenkins-alert-warning") { - form(method: "post", name: "clear", action: rootURL + "/" + tam.url + "/clear") { - button(name: "clear", type: "submit", class: "jenkins-button jenkins-submit-button jenkins-button--primary") { - raw _("Dismiss") +l = namespace(lib.LayoutTagLib) +l.adminMonitor() { + dl(style: "width: 100%;") { + + div(style: "display: flex; justify-content: space-between; align-items: center;") { + text(_("blurb")) + form(method: "post", name: "clear", action: rootURL + "/" + tam.url + "/clear", style: "align-self: flex-start;") { + button(name: "clear", type: "submit", class: "jenkins-button jenkins-submit-button jenkins-button--primary") { + raw _("Clear") + } } } - text(_("blurb")) - table(class: "sortable jenkins-table jenkins-!-margin-top-2", width: "100%") { thead { tr { diff --git a/core/src/main/resources/hudson/util/DoubleLaunchChecker/message.jelly b/core/src/main/resources/hudson/util/DoubleLaunchChecker/message.jelly index 865906efd3ea..7e43623944f2 100644 --- a/core/src/main/resources/hudson/util/DoubleLaunchChecker/message.jelly +++ b/core/src/main/resources/hudson/util/DoubleLaunchChecker/message.jelly @@ -24,24 +24,20 @@ THE SOFTWARE. -
-

- ${%message(it.home)} -

- - - - - - - - - -
${%This Jenkins}:${it.id}
${%Other Jenkins}:${it.collidingId}
-
-
- - -
-
+ +
+ + + ${%message(it.home)} + + + + + + + + + +
${%This Jenkins}:${it.id}
${%Other Jenkins}:${it.collidingId}
+
\ No newline at end of file diff --git a/core/src/main/resources/jenkins/diagnosis/HsErrPidList/message.jelly b/core/src/main/resources/jenkins/diagnosis/HsErrPidList/message.jelly index dbd012f51c87..f0eeafaeb763 100644 --- a/core/src/main/resources/jenkins/diagnosis/HsErrPidList/message.jelly +++ b/core/src/main/resources/jenkins/diagnosis/HsErrPidList/message.jelly @@ -24,7 +24,7 @@ THE SOFTWARE. -
+ ${%blurb(rootURL+'/'+it.url)} -
+
\ No newline at end of file diff --git a/core/src/main/resources/jenkins/diagnostics/CompletedInitializationMonitor/message.jelly b/core/src/main/resources/jenkins/diagnostics/CompletedInitializationMonitor/message.jelly index 657efb6c2454..d14b5978eb3e 100644 --- a/core/src/main/resources/jenkins/diagnostics/CompletedInitializationMonitor/message.jelly +++ b/core/src/main/resources/jenkins/diagnostics/CompletedInitializationMonitor/message.jelly @@ -1,11 +1,11 @@ -
- ${%blurb(app.initLevel)} - ${%Example: usage of} @Initializer(after = InitMilestone.COMPLETED) ${%in a plugin} - (${%See documentation}). - ${%Please} ${%report a bug} ${%in the Jenkins bugtracker}. - - -
+ + ${%blurb(app.initLevel)} + ${%Example: usage of} @Initializer(after = InitMilestone.COMPLETED) ${%in a plugin} + (${%See documentation}). + ${%Please} ${%report a bug} ${%in the Jenkins bugtracker}. + + +
diff --git a/core/src/main/resources/jenkins/diagnostics/ControllerExecutorsAgents/message.jelly b/core/src/main/resources/jenkins/diagnostics/ControllerExecutorsAgents/message.jelly index 5cbd262425a3..0435f03b566a 100644 --- a/core/src/main/resources/jenkins/diagnostics/ControllerExecutorsAgents/message.jelly +++ b/core/src/main/resources/jenkins/diagnostics/ControllerExecutorsAgents/message.jelly @@ -24,12 +24,10 @@ THE SOFTWARE. -
-
- - - - + + ${%ExecutorsWarning} -
+
diff --git a/core/src/main/resources/jenkins/diagnostics/ControllerExecutorsNoAgents/message.jelly b/core/src/main/resources/jenkins/diagnostics/ControllerExecutorsNoAgents/message.jelly index 1f8f0fb8bd8c..324d8743adba 100644 --- a/core/src/main/resources/jenkins/diagnostics/ControllerExecutorsNoAgents/message.jelly +++ b/core/src/main/resources/jenkins/diagnostics/ControllerExecutorsNoAgents/message.jelly @@ -24,12 +24,11 @@ THE SOFTWARE. -
-
- - - - + + ${%ExecutorsWarning} -
+
diff --git a/core/src/main/resources/jenkins/diagnostics/RootUrlNotSetMonitor/message.jelly b/core/src/main/resources/jenkins/diagnostics/RootUrlNotSetMonitor/message.jelly index 94a5b777b58c..2487a424b583 100644 --- a/core/src/main/resources/jenkins/diagnostics/RootUrlNotSetMonitor/message.jelly +++ b/core/src/main/resources/jenkins/diagnostics/RootUrlNotSetMonitor/message.jelly @@ -23,12 +23,7 @@ THE SOFTWARE. --> -
- -
- - -
+ ${%actionUrlContent} @@ -45,5 +40,5 @@ THE SOFTWARE. -
+
diff --git a/core/src/main/resources/jenkins/diagnostics/SecurityIsOffMonitor/message.jelly b/core/src/main/resources/jenkins/diagnostics/SecurityIsOffMonitor/message.jelly index 65895c8c79c4..6cbd29713984 100644 --- a/core/src/main/resources/jenkins/diagnostics/SecurityIsOffMonitor/message.jelly +++ b/core/src/main/resources/jenkins/diagnostics/SecurityIsOffMonitor/message.jelly @@ -24,11 +24,10 @@ THE SOFTWARE. -
-
- - - + + ${%blurb} -
+
diff --git a/core/src/main/resources/jenkins/diagnostics/URICheckEncodingMonitor/message.jelly b/core/src/main/resources/jenkins/diagnostics/URICheckEncodingMonitor/message.jelly index e9081fa365cf..908e7bfef236 100644 --- a/core/src/main/resources/jenkins/diagnostics/URICheckEncodingMonitor/message.jelly +++ b/core/src/main/resources/jenkins/diagnostics/URICheckEncodingMonitor/message.jelly @@ -1,7 +1,7 @@ - -
- - + +
+ + diff --git a/core/src/main/resources/jenkins/diagnostics/URICheckEncodingMonitor/uri-check-encoding-monitor.js b/core/src/main/resources/jenkins/diagnostics/URICheckEncodingMonitor/uri-check-encoding-monitor.js index fda1897c03b1..6d9fc8b30c39 100644 --- a/core/src/main/resources/jenkins/diagnostics/URICheckEncodingMonitor/uri-check-encoding-monitor.js +++ b/core/src/main/resources/jenkins/diagnostics/URICheckEncodingMonitor/uri-check-encoding-monitor.js @@ -7,10 +7,11 @@ Behaviour.specify( var params = new URLSearchParams({ value: "\u57f7\u4e8b" }); fetch(url + "?" + params).then((rsp) => { rsp.text().then((responseText) => { - var message = document.getElementById( - "URICheckEncodingMonitor-message", - ); - message.innerHTML = responseText; + if (responseText !== "
") { + const alertDiv = element.closest(".app-adminmonitor"); + alertDiv.classList.remove("jenkins-hidden"); + element.innerHTML = responseText; + } }); }); }, diff --git a/core/src/main/resources/jenkins/model/BuiltInNodeMigration/message.jelly b/core/src/main/resources/jenkins/model/BuiltInNodeMigration/message.jelly index b9ea4fd3ed9c..2df0f18cc022 100644 --- a/core/src/main/resources/jenkins/model/BuiltInNodeMigration/message.jelly +++ b/core/src/main/resources/jenkins/model/BuiltInNodeMigration/message.jelly @@ -1,10 +1,9 @@ -
+
- - ${%blurb} -
+ ${%blurb} +
diff --git a/core/src/main/resources/jenkins/model/Jenkins/EnforceSlaveAgentPortAdministrativeMonitor/message.jelly b/core/src/main/resources/jenkins/model/Jenkins/EnforceSlaveAgentPortAdministrativeMonitor/message.jelly index 92bd204e2528..5f46478d137a 100644 --- a/core/src/main/resources/jenkins/model/Jenkins/EnforceSlaveAgentPortAdministrativeMonitor/message.jelly +++ b/core/src/main/resources/jenkins/model/Jenkins/EnforceSlaveAgentPortAdministrativeMonitor/message.jelly @@ -23,10 +23,10 @@ THE SOFTWARE. --> -
+
${%description(it.systemPropertyName, it.expectedPort)} -
+
diff --git a/core/src/main/resources/jenkins/monitor/JavaVersionRecommendationAdminMonitor/message.jelly b/core/src/main/resources/jenkins/monitor/JavaVersionRecommendationAdminMonitor/message.jelly index de3c496235bd..1a2dc43cb0dc 100644 --- a/core/src/main/resources/jenkins/monitor/JavaVersionRecommendationAdminMonitor/message.jelly +++ b/core/src/main/resources/jenkins/monitor/JavaVersionRecommendationAdminMonitor/message.jelly @@ -24,14 +24,11 @@ THE SOFTWARE. -
-
- - - - - -

${%Recommended_Java_Version_Heading(it.javaVersion)}

- ${%Recommended_Java_Version(it.javaVersion, it.endOfLifeAsDate)} -
+ + +

${%Recommended_Java_Version_Heading(it.javaVersion)}

+ ${%Recommended_Java_Version(it.javaVersion, it.endOfLifeAsDate)} +
diff --git a/core/src/main/resources/jenkins/monitor/OperatingSystemEndOfLifeAdminMonitor/message.jelly b/core/src/main/resources/jenkins/monitor/OperatingSystemEndOfLifeAdminMonitor/message.jelly index 096a8827f3cc..0749926a98fc 100644 --- a/core/src/main/resources/jenkins/monitor/OperatingSystemEndOfLifeAdminMonitor/message.jelly +++ b/core/src/main/resources/jenkins/monitor/OperatingSystemEndOfLifeAdminMonitor/message.jelly @@ -25,13 +25,10 @@ THE SOFTWARE. -
-
- - - - - + +

${it.displayName}

@@ -41,5 +38,5 @@ THE SOFTWARE. ${%Upcoming_End_of_Life(it.operatingSystemName, it.endOfLifeDate, it.documentationUrl)} -
+
diff --git a/core/src/main/resources/jenkins/security/ResourceDomainRecommendation/message.groovy b/core/src/main/resources/jenkins/security/ResourceDomainRecommendation/message.groovy index cb31f6204049..0dd22ef3b499 100644 --- a/core/src/main/resources/jenkins/security/ResourceDomainRecommendation/message.groovy +++ b/core/src/main/resources/jenkins/security/ResourceDomainRecommendation/message.groovy @@ -26,16 +26,14 @@ package jenkins.security.ResourceDomainRecommendation def f = namespace(lib.FormTagLib) def l = namespace(lib.LayoutTagLib) -dl { - div(class: "jenkins-alert jenkins-alert-info") { - a(name: "resource-root-url") +l = namespace(lib.LayoutTagLib) +l.adminMonitor(severity: "info") { + div(class: "buttons") { l.isAdmin() { - form(method: "post", action: "${rootURL}/${my.url}/act") { - f.submit(name: 'redirect', value: _("Configure resource root URL")) - f.submit(name: 'dismiss', value: _("Dismiss")) + a(href: "${rootURL}/configure", class: "jenkins-button jenkins-button--primary") { + raw _("Configure resource root URL") } } - - raw(_("blurb")) } -} + raw(_("blurb")) +} \ No newline at end of file diff --git a/core/src/main/resources/jenkins/security/UpdateSiteWarningsMonitor/message.groovy b/core/src/main/resources/jenkins/security/UpdateSiteWarningsMonitor/message.groovy index 89b634002006..4aa55bec5cca 100644 --- a/core/src/main/resources/jenkins/security/UpdateSiteWarningsMonitor/message.groovy +++ b/core/src/main/resources/jenkins/security/UpdateSiteWarningsMonitor/message.groovy @@ -64,17 +64,20 @@ def listWarnings(warnings, boolean core) { def coreWarnings = my.activeCoreWarnings def pluginWarnings = my.activePluginWarningsByPlugin -div(class: "jenkins-alert jenkins-alert-danger", role: "alert") { +l.adminMonitor(severity: "danger") { - l.isAdmin() { - form(method: "post", action: "${rootURL}/${my.url}/forward") { - if (!pluginWarnings.isEmpty()) { - f.submit(name: 'fix', value: _("pluginManager.link")) + div(class: "buttons") { + l.isAdmin() { + a(href: "${rootURL}/configureSecurity", class: "jenkins-button jenkins-button--primary") { + raw _("configureSecurity.link") } - f.submit(name: 'configure', value: _("configureSecurity.link")) + //if (!pluginWarnings.isEmpty()) { + a(href: "${rootURL}/pluginManager", class: "jenkins-button jenkins-button--primary") { + raw _("pluginManager.link") + } + //} } } - text(_("blurb")) if (!coreWarnings.isEmpty()) { diff --git a/core/src/main/resources/jenkins/security/apitoken/ApiTokenPropertyDisabledDefaultAdministrativeMonitor/message.jelly b/core/src/main/resources/jenkins/security/apitoken/ApiTokenPropertyDisabledDefaultAdministrativeMonitor/message.jelly index 0ff96ab3ebf4..2cb76259dac6 100644 --- a/core/src/main/resources/jenkins/security/apitoken/ApiTokenPropertyDisabledDefaultAdministrativeMonitor/message.jelly +++ b/core/src/main/resources/jenkins/security/apitoken/ApiTokenPropertyDisabledDefaultAdministrativeMonitor/message.jelly @@ -22,12 +22,11 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --> - -
+ +
- ${%warningMessage} -
+
diff --git a/core/src/main/resources/jenkins/security/apitoken/ApiTokenPropertyEnabledNewLegacyAdministrativeMonitor/message.jelly b/core/src/main/resources/jenkins/security/apitoken/ApiTokenPropertyEnabledNewLegacyAdministrativeMonitor/message.jelly index 0c11b2c72142..a2a81b409bec 100644 --- a/core/src/main/resources/jenkins/security/apitoken/ApiTokenPropertyEnabledNewLegacyAdministrativeMonitor/message.jelly +++ b/core/src/main/resources/jenkins/security/apitoken/ApiTokenPropertyEnabledNewLegacyAdministrativeMonitor/message.jelly @@ -22,12 +22,11 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --> - -
+ +
- ${%warningMessage} -
+
diff --git a/core/src/main/resources/jenkins/security/apitoken/LegacyApiTokenAdministrativeMonitor/message.jelly b/core/src/main/resources/jenkins/security/apitoken/LegacyApiTokenAdministrativeMonitor/message.jelly index 376eb6ca57ca..bec37ce52f8d 100644 --- a/core/src/main/resources/jenkins/security/apitoken/LegacyApiTokenAdministrativeMonitor/message.jelly +++ b/core/src/main/resources/jenkins/security/apitoken/LegacyApiTokenAdministrativeMonitor/message.jelly @@ -22,8 +22,8 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --> - -
- ${%warningMessage(rootURL, it.url)} -
+ + + ${%warningMessage(rootURL, it.url)} + diff --git a/core/src/main/resources/jenkins/security/csp/impl/CspRecommendation/message.jelly b/core/src/main/resources/jenkins/security/csp/impl/CspRecommendation/message.jelly index 02aed15ae431..2e42e5469052 100644 --- a/core/src/main/resources/jenkins/security/csp/impl/CspRecommendation/message.jelly +++ b/core/src/main/resources/jenkins/security/csp/impl/CspRecommendation/message.jelly @@ -22,12 +22,11 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --> - -
-
- - - - ${%blurb} + + + + ${%blurb} + diff --git a/core/src/main/resources/jenkins/security/csrf/CSRFAdministrativeMonitor/message.jelly b/core/src/main/resources/jenkins/security/csrf/CSRFAdministrativeMonitor/message.jelly index 392a1a8677bf..92628dd5a0c0 100644 --- a/core/src/main/resources/jenkins/security/csrf/CSRFAdministrativeMonitor/message.jelly +++ b/core/src/main/resources/jenkins/security/csrf/CSRFAdministrativeMonitor/message.jelly @@ -22,11 +22,8 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --> - -
-
- - + + ${%referenceUrlContent} @@ -36,5 +33,5 @@ THE SOFTWARE.

-

+
diff --git a/core/src/main/resources/lib/layout/admin-monitor.js b/core/src/main/resources/lib/layout/admin-monitor.js new file mode 100644 index 000000000000..a04df42c7653 --- /dev/null +++ b/core/src/main/resources/lib/layout/admin-monitor.js @@ -0,0 +1,34 @@ +Behaviour.specify( + ".app-adminmonitor-dismiss-button", + "admin-monitor", + 0, + function (element) { + element.addEventListener("click", function (event) { + event.preventDefault(); + const url = element.dataset.url; + fetch(url, { + method: "POST", + cache: "no-cache", + headers: crumb.wrap({ + "Content-Type": "application/x-www-form-urlencoded", + }), + body: new URLSearchParams({}), + }) + .then((response) => { + if (response.ok) { + const parent = element.closest(".app-adminmonitor"); + if (parent) { + parent.remove(); + } + } else { + console.warn( + `AdminMonitor dismiss request failed with status ${response.status}`, + ); + } + }) + .catch((error) => + console.warn(`AdminMonitor dismiss request failed: ${error}`), + ); + }); + }, +); diff --git a/core/src/main/resources/lib/layout/adminMonitor.jelly b/core/src/main/resources/lib/layout/adminMonitor.jelly new file mode 100644 index 000000000000..96bebb1fdd35 --- /dev/null +++ b/core/src/main/resources/lib/layout/adminMonitor.jelly @@ -0,0 +1,40 @@ + + + + + Severity of the alert, one of info, warning, danger or success. Defaults to warning if not specified. + + + If the alert can be dismissed by the user, defaults to true if not specified. + + + The value of the dismiss button. + + + Additional CSS class to add to the alert div. + + + The id attribute to add to the alert div. + + + + + + + +
+
+ +
+ + + + + +
+
\ No newline at end of file diff --git a/src/main/scss/pages/_manage-jenkins.scss b/src/main/scss/pages/_manage-jenkins.scss index 00e9d5bf080d..3c68b9f53808 100644 --- a/src/main/scss/pages/_manage-jenkins.scss +++ b/src/main/scss/pages/_manage-jenkins.scss @@ -1,3 +1,110 @@ +@use "../abstracts/mixins"; + +.app-adminmonitor { + display: flex; + gap: 1rem; + + &-content { + width: 100%; + + .buttons { + position: relative; + float: right; + margin: -6px 0 0 !important; + display: flex; + gap: 0.5rem; + } + } + + &-dismiss-button { + @include mixins.item; + + --item-background: color-mix(in sRGB, currentColor 7.5%, transparent); + --item-background--hover: color-mix(in sRGB, currentColor 15%, transparent); + --item-background--active: color-mix( + in sRGB, + currentColor 25%, + transparent + ); + --item-box-shadow--focus: color-mix( + in sRGB, + currentColor 7.5%, + transparent + ); + + margin-left: -18px; + top: -10px; + right: -10px; + display: grid; + place-items: center; + place-content: center; + width: 30px; + height: 30px; + color: var(--red); + padding: 0; + transition: var(--standard-transition); + font-size: 0.65rem; + + &::before, + &::after { + inset: 4px; + border-radius: 0.5rem; + } + + &::before { + border: var(--jenkins-border--inherit-subtle); + } + + // Center and overlap SVG and text content + * { + grid-area: container; + } + + svg { + width: 0.875rem; + height: 0.875rem; + transition: var(--standard-transition); + + * { + stroke-width: 40px; + } + } + + span { + opacity: 0; + transition: var(--standard-transition); + filter: blur(2px); + scale: 0.5; + text-wrap: nowrap; + } + + &:hover, + &:active, + &:focus { + // This value is set in Jelly - see adminMonitor.jelly + width: calc(var(--width) + 20px); + + &::before, + &::after { + border-radius: 1rem; + } + + svg { + opacity: 0; + filter: blur(2px); + scale: 0.6; + rotate: -90deg; + } + + span { + opacity: 1; + filter: none; + scale: 1; + } + } + } +} + .manage-messages a:not(.jenkins-button), .manage-messages a:visited:not(.jenkins-button) { color: inherit !important;