diff --git a/core/src/main/java/hudson/model/Hudson.java b/core/src/main/java/hudson/model/Hudson.java index beb3647ba447f6dd4953d6259be28d3383e37f1e..f2f1e185a9a03f2f22714464d0ef6ff4db574649 100644 --- a/core/src/main/java/hudson/model/Hudson.java +++ b/core/src/main/java/hudson/model/Hudson.java @@ -24,6 +24,7 @@ package hudson.model; import com.thoughtworks.xstream.XStream; +import groovy.lang.GroovyShell; import hudson.BulkChange; import hudson.FilePath; import hudson.Functions; @@ -125,6 +126,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.commons.jelly.Script; import org.apache.commons.jelly.JellyException; import org.apache.commons.io.FileUtils; +import org.kohsuke.stapler.Ancestor; import org.kohsuke.stapler.MetaClass; import org.kohsuke.stapler.Stapler; import org.kohsuke.stapler.StaplerProxy; @@ -200,8 +202,6 @@ import java.nio.charset.Charset; import javax.servlet.RequestDispatcher; import javax.crypto.SecretKey; -import groovy.lang.GroovyShell; - /** * Root object of the system. * @@ -2460,7 +2460,17 @@ public final class Hudson extends Node implements ItemGroup, Stapl } // send the browser to the config page - rsp.sendRedirect2(result.getUrl()+"configure"); + // use View to trim view/{default-view} from URL if possible + String redirect = result.getUrl()+"configure"; + List ancestors = req.getAncestors(); + for (int i = ancestors.size() - 1; i >= 0; i--) { + Object o = ancestors.get(i).getObject(); + if (o instanceof View) { + redirect = req.getContextPath() + '/' + ((View)o).getUrl() + redirect; + break; + } + } + rsp.sendRedirect2(redirect); return result; }