提交 e094b90e 编写于 作者: K Kohsuke Kawaguchi

Prevent 404 in .../contextMenu link when there's no context menu

上级 31bda578
......@@ -58,6 +58,7 @@ import hudson.views.ViewsTabBar;
import hudson.widgets.RenderOnDemandClosure;
import jenkins.model.GlobalConfiguration;
import jenkins.model.Jenkins;
import jenkins.model.ModelObjectWithContextMenu;
import org.acegisecurity.providers.anonymous.AnonymousAuthenticationToken;
import org.apache.commons.jelly.JellyContext;
import org.apache.commons.jelly.JellyTagException;
......@@ -146,6 +147,10 @@ public class Functions {
return o instanceof ModelObject;
}
public static boolean isModelWithContextMenu(Object o) {
return o instanceof ModelObjectWithContextMenu;
}
public static String xsDate(Calendar cal) {
return Util.XS_DATETIME_FORMATTER.format(cal.getTime());
}
......
......@@ -24,6 +24,7 @@
package hudson.matrix;
import hudson.Util;
import hudson.remoting.LocalChannel;
import hudson.util.AlternativeUiTextProvider;
import hudson.util.DescribableList;
import hudson.model.AbstractBuild;
......@@ -31,6 +32,7 @@ import hudson.model.Cause;
import hudson.model.CauseAction;
import hudson.model.DependencyGraph;
import hudson.model.Descriptor;
import hudson.util.RemotingDiagnostics;
import jenkins.model.Jenkins;
import hudson.model.Item;
import hudson.model.ItemGroup;
......@@ -46,8 +48,11 @@ import hudson.tasks.BuildWrapper;
import hudson.tasks.Builder;
import hudson.tasks.LogRotator;
import hudson.tasks.Publisher;
import jenkins.model.Jenkins.MasterComputer;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.List;
import java.util.Map;
......
......@@ -163,6 +163,12 @@ public interface ModelObjectWithContextMenu extends ModelObject {
@Exported
public String icon;
/**
* If this is a submenu, definition of subitems.
*/
@Exported(inline=true)
public ContextMenu subMenu;
public MenuItem(String url, String icon, String displayName) {
this.url = URI.create(Stapler.getCurrentRequest().getRequestURI()).resolve(url).toString();
this.icon = icon;
......
......@@ -58,7 +58,7 @@ THE SOFTWARE.
<ul id="breadcrumbs">
<j:forEach var="anc" items="${request.ancestors}">
<j:if test="${h.isModel(anc.object) and anc.prev.url!=anc.url}">
<li>
<li class="${h.isModelWithContextMenu(anc.object)}?null:'no-context-menu'}">
<a href="${anc.url}/">
${anc.object.displayName}
</a>
......
......@@ -116,7 +116,9 @@ var breadcrumbs = (function() {
jenkinsRules["#breadcrumbs LI"] = function (e) {
// when the mouse hovers over LI, activate the menu
$(e).observe("mouseover", function () { handleHover(e.firstChild,0) });
e = $(e);
if (e.hasClassName("no-context-menu")) return;
e.observe("mouseover", function () { handleHover(e.firstChild,0) });
};
jenkinsRules["A.model-link"] = function (a) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册