diff --git a/core/src/main/java/hudson/diagnosis/OldDataMonitor.java b/core/src/main/java/hudson/diagnosis/OldDataMonitor.java index 425c521509..e38555a2a4 100644 --- a/core/src/main/java/hudson/diagnosis/OldDataMonitor.java +++ b/core/src/main/java/hudson/diagnosis/OldDataMonitor.java @@ -460,7 +460,7 @@ public class OldDataMonitor extends AdministrativeMonitor { @Override public String getUrlName() { - return "administrativeMonitor/OldData/"; + return "administrativeMonitor/OldData/manage"; } @Override diff --git a/core/src/main/java/hudson/model/ManageJenkinsAction.java b/core/src/main/java/hudson/model/ManageJenkinsAction.java index c54926d197..2044856a12 100644 --- a/core/src/main/java/hudson/model/ManageJenkinsAction.java +++ b/core/src/main/java/hudson/model/ManageJenkinsAction.java @@ -28,16 +28,19 @@ import hudson.Extension; import hudson.Util; import hudson.util.HudsonIsLoading; import hudson.util.HudsonIsRestarting; +import jakarta.servlet.ServletException; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import jenkins.management.Badge; import jenkins.model.Jenkins; import jenkins.model.ModelObjectWithContextMenu; +import jenkins.model.experimentalflags.NewManageJenkinsUserExperimentalFlag; import org.apache.commons.jelly.JellyException; import org.jenkinsci.Symbol; import org.kohsuke.accmod.Restricted; import org.kohsuke.accmod.restrictions.NoExternalUse; +import org.kohsuke.stapler.HttpRedirect; import org.kohsuke.stapler.Stapler; import org.kohsuke.stapler.StaplerFallback; import org.kohsuke.stapler.StaplerRequest2; @@ -76,6 +79,21 @@ public class ManageJenkinsAction implements RootAction, StaplerFallback, ModelOb return true; } + public HttpRedirect doIndex(StaplerRequest2 req, StaplerResponse2 rsp) throws IOException { + try { + var newUiEnabled = new NewManageJenkinsUserExperimentalFlag().getFlagValue(); + + if (newUiEnabled) { + return new HttpRedirect("configure"); + } + + req.getView(this, "index.jelly").forward(req, rsp); + } catch (ServletException e) { + throw new RuntimeException(e); + } + return null; + } + @Override public Object getStaplerFallback() { return Jenkins.get(); diff --git a/core/src/main/java/jenkins/model/experimentalflags/NewManageJenkinsUserExperimentalFlag.java b/core/src/main/java/jenkins/model/experimentalflags/NewManageJenkinsUserExperimentalFlag.java new file mode 100644 index 0000000000..e04f7c6031 --- /dev/null +++ b/core/src/main/java/jenkins/model/experimentalflags/NewManageJenkinsUserExperimentalFlag.java @@ -0,0 +1,49 @@ +/* + * The MIT License + * + * Copyright (c) 2025, Jan Faracik + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package jenkins.model.experimentalflags; + +import edu.umd.cs.findbugs.annotations.Nullable; +import hudson.Extension; +import org.kohsuke.accmod.Restricted; +import org.kohsuke.accmod.restrictions.NoExternalUse; + +@Extension +@Restricted(NoExternalUse.class) +public class NewManageJenkinsUserExperimentalFlag extends BooleanUserExperimentalFlag { + public NewManageJenkinsUserExperimentalFlag() { + super("new-manage-jenkins.flag"); + } + + @Override + public String getDisplayName() { + return "New Manage Jenkins UI"; + } + + @Nullable + @Override + public String getShortDescription() { + return "Enables a sidebar for the Manage Jenkins pages for easier navigation."; + } +} diff --git a/core/src/main/resources/hudson/AboutJenkins/index.jelly b/core/src/main/resources/hudson/AboutJenkins/index.jelly index 6d589663f5..ba4c77a125 100644 --- a/core/src/main/resources/hudson/AboutJenkins/index.jelly +++ b/core/src/main/resources/hudson/AboutJenkins/index.jelly @@ -25,18 +25,9 @@ THE SOFTWARE. - - -