Skip to content

Commit 4df1ecc

Browse files
janfaraciktimja
andauthored
Add managementLink parameter for <l:settings-subpage /> (#23902)
Co-authored-by: Tim Jacomb <[email protected]>
1 parent ba5f8da commit 4df1ecc

File tree

7 files changed

+44
-27
lines changed

7 files changed

+44
-27
lines changed

core/src/main/java/hudson/diagnosis/OldDataMonitor.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
import jenkins.model.Jenkins;
6262
import org.jenkinsci.Symbol;
6363
import org.kohsuke.accmod.Restricted;
64+
import org.kohsuke.accmod.restrictions.DoNotUse;
6465
import org.kohsuke.accmod.restrictions.NoExternalUse;
6566
import org.kohsuke.stapler.HttpRedirect;
6667
import org.kohsuke.stapler.HttpResponse;
@@ -107,6 +108,12 @@ public boolean isActivated() {
107108
return !data.isEmpty();
108109
}
109110

111+
@SuppressWarnings("unused")
112+
@Restricted(DoNotUse.class) // used by jelly
113+
public ManagementLink getManagementLink() {
114+
return ExtensionList.lookupSingleton(ManagementLinkImpl.class);
115+
}
116+
110117
public Map<Saveable, VersionRange> getData() {
111118
Map<Saveable, VersionRange> r = new HashMap<>();
112119
for (Map.Entry<SaveableReference, VersionRange> entry : this.data.entrySet()) {

core/src/main/java/hudson/logging/LogRecorderManager.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,15 @@
2828
import static java.util.stream.Collectors.toMap;
2929

3030
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
31+
import hudson.ExtensionList;
3132
import hudson.FeedAdapter;
3233
import hudson.Functions;
3334
import hudson.RestrictedSince;
3435
import hudson.Util;
3536
import hudson.init.Initializer;
3637
import hudson.model.AbstractModelObject;
3738
import hudson.model.Failure;
39+
import hudson.model.ManagementLink;
3840
import hudson.model.RSS;
3941
import hudson.util.CopyOnWriteMap;
4042
import hudson.util.FormValidation;
@@ -54,13 +56,15 @@
5456
import java.util.logging.LogManager;
5557
import java.util.logging.LogRecord;
5658
import java.util.logging.Logger;
59+
import jenkins.management.SystemLogLink;
5760
import jenkins.model.Jenkins;
5861
import jenkins.model.JenkinsLocationConfiguration;
5962
import jenkins.model.ModelObjectWithChildren;
6063
import jenkins.model.ModelObjectWithContextMenu.ContextMenu;
6164
import jenkins.util.SystemProperties;
6265
import org.apache.commons.io.filefilter.WildcardFileFilter;
6366
import org.kohsuke.accmod.Restricted;
67+
import org.kohsuke.accmod.restrictions.DoNotUse;
6468
import org.kohsuke.accmod.restrictions.NoExternalUse;
6569
import org.kohsuke.stapler.DataBoundConstructor;
6670
import org.kohsuke.stapler.DataBoundSetter;
@@ -295,6 +299,12 @@ public Object getTarget() {
295299
return this;
296300
}
297301

302+
@SuppressWarnings("unused")
303+
@Restricted(DoNotUse.class) // used by jelly
304+
public ManagementLink getManagementLink() {
305+
return ExtensionList.lookupSingleton(SystemLogLink.class);
306+
}
307+
298308
/**
299309
* Escape hatch for StaplerProxy-based access control
300310
*/

core/src/main/java/jenkins/agents/CloudSet.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,15 @@
2525
package jenkins.agents;
2626

2727
import hudson.Extension;
28+
import hudson.ExtensionList;
2829
import hudson.Functions;
2930
import hudson.Util;
3031
import hudson.model.AbstractModelObject;
3132
import hudson.model.AutoCompletionCandidates;
3233
import hudson.model.Describable;
3334
import hudson.model.Descriptor;
3435
import hudson.model.Failure;
36+
import hudson.model.ManagementLink;
3537
import hudson.model.RootAction;
3638
import hudson.model.UpdateCenter;
3739
import hudson.slaves.Cloud;
@@ -101,6 +103,12 @@ public String getSearchUrl() {
101103
return "/cloud/";
102104
}
103105

106+
@SuppressWarnings("unused")
107+
@Restricted(DoNotUse.class) // used by jelly
108+
public ManagementLink getManagementLink() {
109+
return ExtensionList.lookupSingleton(CloudsLink.class);
110+
}
111+
104112
@SuppressWarnings("unused") // stapler
105113
@Restricted(DoNotUse.class) // stapler
106114
public String getCloudUrl(StaplerRequest2 request, Jenkins jenkins, Cloud cloud) {

core/src/main/resources/hudson/diagnosis/OldDataMonitor/manage.jelly

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,7 @@ THE SOFTWARE.
2424

2525
<?jelly escape-by-default='true'?>
2626
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
27-
<j:set var="previousIt" value="${it}" />
28-
<j:new var="it" className="hudson.diagnosis.OldDataMonitor$ManagementLinkImpl" />
29-
30-
<l:settings-subpage>
31-
<j:set var="it" value="${previousIt}" />
32-
27+
<l:settings-subpage managementLink="${it.managementLink}">
3328
<p class="jenkins-!-margin-top-0">${%blurb.1}</p>
3429
<p>${%blurb.2}</p>
3530

core/src/main/resources/hudson/logging/LogRecorderManager/index.jelly

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,8 @@ THE SOFTWARE.
2828
<?jelly escape-by-default='true'?>
2929
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
3030
<j:set var="header">
31-
<j:set var="previousIt" value="${it}" />
32-
<j:new var="it" className="jenkins.management.SystemLogLink" />
33-
3431
<l:view>
35-
<l:app-bar title="${it.displayName}">
32+
<l:app-bar title="${it.managementLink.displayName}">
3633
<l:isAdmin>
3734
<a href="new" class="jenkins-button jenkins-button--primary">
3835
<l:icon src="symbol-add" />
@@ -46,13 +43,12 @@ THE SOFTWARE.
4643
</l:app-bar>
4744

4845
<div class="jenkins-page-description">
49-
<j:out value="${it.description}" />
46+
<j:out value="${it.managementLink.description}" />
5047
</div>
5148
</l:view>
5249
</j:set>
5350

54-
<l:settings-subpage header="${header}" xmlns:local="local">
55-
<j:set var="it" value="${previousIt}" />
51+
<l:settings-subpage header="${header}" managementLink="${it.managementLink}" xmlns:local="local">
5652
<d:taglib uri="local">
5753
<d:tag name="row">
5854
<tr>

core/src/main/resources/jenkins/agents/CloudSet/index.jelly

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,7 @@ THE SOFTWARE.
2727
-->
2828
<?jelly escape-by-default='true'?>
2929
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:l="/lib/layout" xmlns:f="/lib/form">
30-
<j:set var="previousIt" value="${it}" />
31-
<j:new var="it" className="jenkins.agents.CloudsLink" />
32-
33-
<l:settings-subpage header="${null}">
34-
<j:set var="it" value="${previousIt}" />
35-
30+
<l:settings-subpage managementLink="${it.managementLink}" header="${null}">
3631
<l:isAdmin>
3732
<script src="${resURL}/jsbundles/pages/cloud-set.js" type="text/javascript" />
3833
<link rel="stylesheet" href="${resURL}/jsbundles/pages/cloud-set.css" type="text/css" />

core/src/main/resources/lib/layout/settings-subpage.jelly

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ THE SOFTWARE.
2626
<j:jelly xmlns:j="jelly:core" xmlns:l="/lib/layout" xmlns:d="jelly:define" xmlns:st="jelly:stapler" xmlns:f="/lib/form">
2727
<st:documentation>
2828
A reusable container for subpages relating under Manage Jenkins.
29+
<st:attribute name="managementLink" type="hudson.model.ManagementLink" use="optional">
30+
Specifies the object for which page details will be loaded from.
31+
Defaults to the "it" object in the current context.
32+
</st:attribute>
2933
<st:attribute name="permission">
3034
If given, this page is only made available to users who have the specified permission.
3135
(The permission will be checked against the "it" object.)
@@ -50,19 +54,21 @@ THE SOFTWARE.
5054
<j:new className="hudson.model.ManageJenkinsAction" var="manageJenkinsAction" />
5155
<l:userExperimentalFlag var="newManageJenkins" flagClassName="jenkins.model.experimentalflags.NewManageJenkinsUserExperimentalFlag" />
5256

53-
<l:layout title="${it.displayName} - ${manageJenkinsAction.displayName}"
57+
<j:set var="managementLink" value="${attrs.managementLink ?: it}" />
58+
59+
<l:layout title="${managementLink.displayName} - ${manageJenkinsAction.displayName}"
5460
permission="${attrs.permission}"
5561
permissions="${attrs.permissions}"
5662
type="${newManageJenkins ? 'two-column' : 'one-column'}">
5763

5864
<j:if test="${attrs.includeBreadcrumb}">
5965
<!-- Hacky - this will be improved in subsequent PRs -->
6066
<j:choose>
61-
<j:when test="${it.class.name eq 'jenkins.management.ConfigureLink'}">
62-
<f:breadcrumb-config-outline title="${it.displayName}" />
67+
<j:when test="${managementLink.class.name eq 'jenkins.management.ConfigureLink'}">
68+
<f:breadcrumb-config-outline title="${managementLink.displayName}" />
6369
</j:when>
6470
<j:otherwise>
65-
<l:breadcrumb title="${it.displayName}" />
71+
<l:breadcrumb title="${managementLink.displayName}" />
6672
</j:otherwise>
6773
</j:choose>
6874
</j:if>
@@ -98,9 +104,9 @@ THE SOFTWARE.
98104
<div class="app-settings-container">
99105
<div class="app-settings-container__inner">
100106
<j:if test="${!attrs.containsKey('header')}">
101-
<l:app-bar title="${it.displayName}" />
107+
<l:app-bar title="${managementLink.displayName}" />
102108
<div class="jenkins-page-description">
103-
${it.description}
109+
${managementLink.description}
104110
</div>
105111
</j:if>
106112

@@ -128,9 +134,9 @@ THE SOFTWARE.
128134
<j:otherwise>
129135
<l:main-panel>
130136
<j:if test="${!attrs.containsKey('header')}">
131-
<l:app-bar title="${it.displayName}" />
137+
<l:app-bar title="${managementLink.displayName}" />
132138
<div class="jenkins-page-description">
133-
${it.description}
139+
${managementLink.description}
134140
</div>
135141
</j:if>
136142

0 commit comments

Comments
 (0)