diff --git a/core/src/main/java/jenkins/views/FullHeader.java b/core/src/main/java/jenkins/views/FullHeader.java index aa69ae0dca..d498257e3a 100644 --- a/core/src/main/java/jenkins/views/FullHeader.java +++ b/core/src/main/java/jenkins/views/FullHeader.java @@ -2,6 +2,8 @@ package jenkins.views; import hudson.model.Action; import java.util.List; + +import hudson.model.RootAction; import jenkins.model.Jenkins; import org.kohsuke.accmod.Restricted; import org.kohsuke.accmod.restrictions.NoExternalUse; @@ -24,11 +26,13 @@ public abstract class FullHeader extends Header { * @return a list of {@link Action} to show in the header, defaults to {@link hudson.model.RootAction} extensions */ @Restricted(NoExternalUse.class) - public List getActions() { + public List getActions() { return Jenkins.get() .getActions() .stream() .filter(e -> e.getIconFileName() != null) + .map(e -> (RootAction) e) + .map(e -> new HeaderAction(e.getDisplayName(), e.getIconFileName(), e.getUrlName(), e.getBadge())) .toList(); } } diff --git a/core/src/main/java/jenkins/views/HeaderAction.java b/core/src/main/java/jenkins/views/HeaderAction.java new file mode 100644 index 0000000000..68e924cfcb --- /dev/null +++ b/core/src/main/java/jenkins/views/HeaderAction.java @@ -0,0 +1,42 @@ +package jenkins.views; + +import edu.umd.cs.findbugs.annotations.NonNull; +import jenkins.management.Badge; +import org.jenkins.ui.icon.IconSpec; + +public class HeaderAction implements IconSpec { + + private final @NonNull String displayName; + + private final @NonNull String iconClassName; + + private final String url; + + private final Badge badge; + + public HeaderAction(@NonNull String displayName, @NonNull String iconClassName, String url, Badge badge) { + this.displayName = displayName; + this.iconClassName = iconClassName; + this.url = url; + this.badge = badge; + } + + @NonNull + public String getDisplayName() { + return displayName; + } + + public String getUrl() { + return url; + } + + public Badge getBadge() { + return badge; + } + + @Override + @NonNull + public String getIconClassName() { + return iconClassName; + } +} diff --git a/core/src/main/resources/jenkins/views/JenkinsHeader/headerContent.jelly b/core/src/main/resources/jenkins/views/JenkinsHeader/headerContent.jelly index 1a66039566..8b7f853b46 100644 --- a/core/src/main/resources/jenkins/views/JenkinsHeader/headerContent.jelly +++ b/core/src/main/resources/jenkins/views/JenkinsHeader/headerContent.jelly @@ -32,9 +32,9 @@
- + @@ -73,7 +73,7 @@ ${interactive ? 'dropdown' : 'tooltip'} false jenkins-button ${isCurrent ? '' : 'jenkins-button--tertiary'} - + ${action.displayName}