Skip to content

Commit

Permalink
Update with HeaderAction
Browse files Browse the repository at this point in the history
  • Loading branch information
janfaracik committed Jan 31, 2025
1 parent 79c1280 commit 2ea0b1f
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 4 deletions.
6 changes: 5 additions & 1 deletion core/src/main/java/jenkins/views/FullHeader.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

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;
Expand All @@ -24,11 +26,13 @@ public boolean isCompatible() {
* @return a list of {@link Action} to show in the header, defaults to {@link hudson.model.RootAction} extensions
*/
@Restricted(NoExternalUse.class)
public List<Action> getActions() {
public List<HeaderAction> 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();
}
}
42 changes: 42 additions & 0 deletions core/src/main/java/jenkins/views/HeaderAction.java
Original file line number Diff line number Diff line change
@@ -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;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@
<div class="jenkins-header__actions">
<l:overflowButton clazz="jenkins-button--tertiary jenkins-mobile-show">
<j:forEach var="action" items="${it.actions}">
<j:if test="${action.iconFileName != null}">
<j:if test="${action.iconClassName != null}">
<dd:item href="${h.getActionUrl(app.url, action)}"
icon="${action.iconFileName}"
icon="${action.iconClassName}"
text="${action.displayName}" />
</j:if>
</j:forEach>
Expand Down Expand Up @@ -73,7 +73,7 @@
<x:attribute name="data-tippy-theme">${interactive ? 'dropdown' : 'tooltip'}</x:attribute>
<x:attribute name="draggable">false</x:attribute>
<x:attribute name="class">jenkins-button ${isCurrent ? '' : 'jenkins-button--tertiary'}</x:attribute>
<l:icon src="${action.iconFileName}" />
<l:icon src="${action.iconClassName}" />
<span class="jenkins-visually-hidden">${action.displayName}</span>
<j:if test="${action.badge != null}">
<span class="jenkins-badge jenkins-!-${action.badge.severity}-color" />
Expand Down

0 comments on commit 2ea0b1f

Please sign in to comment.