From f636cc24d84dcc47201473eb896f972fe67df76d Mon Sep 17 00:00:00 2001 From: Jan Faracik <43062514+janfaracik@users.noreply.github.com> Date: Wed, 12 Jan 2022 23:23:53 +0000 Subject: [PATCH] add in page actions --- .../java/hudson/model/AbstractProject.java | 8 ++-- core/src/main/java/hudson/model/Run.java | 47 ++++++++++++++++++- core/src/main/java/hudson/search/Icon.java | 1 - .../java/hudson/search/ParsedQuickSilver.java | 2 +- .../hudson/search/SearchItemCategory.java | 1 + .../jenkins/model/ParameterizedJobMixIn.java | 34 +++++++++++++- 6 files changed, 83 insertions(+), 10 deletions(-) diff --git a/core/src/main/java/hudson/model/AbstractProject.java b/core/src/main/java/hudson/model/AbstractProject.java index 4fefff5776210..48666d0bad248 100644 --- a/core/src/main/java/hudson/model/AbstractProject.java +++ b/core/src/main/java/hudson/model/AbstractProject.java @@ -1681,10 +1681,10 @@ protected void buildDependencyGraph(DependencyGraph graph) { triggers().buildDependencyGraph(this, graph); } -// @Override -// protected SearchIndexBuilder makeSearchIndex() { -// return getParameterizedJobMixIn().extendSearchIndex(super.makeSearchIndex()); -// } + @Override + protected SearchIndexBuilder makeSearchIndex() { + return getParameterizedJobMixIn().extendSearchIndex(super.makeSearchIndex()); + } @Override protected HistoryWidget createHistoryWidget() { diff --git a/core/src/main/java/hudson/model/Run.java b/core/src/main/java/hudson/model/Run.java index e331a9e0c1725..dcfe9eef0a014 100644 --- a/core/src/main/java/hudson/model/Run.java +++ b/core/src/main/java/hudson/model/Run.java @@ -56,7 +56,10 @@ import hudson.model.listeners.RunListener; import hudson.model.listeners.SaveableListener; import hudson.model.queue.SubTask; +import hudson.search.SearchIndex; import hudson.search.SearchIndexBuilder; +import hudson.search.SearchItem; +import hudson.search.SearchItemCategory; import hudson.security.ACL; import hudson.security.AccessControlled; import hudson.security.Permission; @@ -1572,8 +1575,48 @@ public void writeWholeLogTo(@NonNull OutputStream out) throws IOException, Inter @Override protected @NonNull SearchIndexBuilder makeSearchIndex() { SearchIndexBuilder builder = super.makeSearchIndex() - .add("console") - .add("changes"); + .add(new SearchItem() { + @Override + public String getSearchName() { + return "Console"; + } + + @Override + public String getSearchUrl() { + return "console"; + } + + @Override + public SearchItemCategory getSearchItemCategory() { + return SearchItemCategory.IN_PAGE_ACTIONS; + } + + @Override + public SearchIndex getSearchIndex() { + return null; + } + }) + .add(new SearchItem() { + @Override + public String getSearchName() { + return "Changes"; + } + + @Override + public String getSearchUrl() { + return "changes"; + } + + @Override + public SearchItemCategory getSearchItemCategory() { + return SearchItemCategory.IN_PAGE_ACTIONS; + } + + @Override + public SearchIndex getSearchIndex() { + return null; + } + }); for (Action a : getAllActions()) { if(a.getIconFileName()!=null) builder.add(a.getUrlName()); diff --git a/core/src/main/java/hudson/search/Icon.java b/core/src/main/java/hudson/search/Icon.java index 8afe1fc1036aa..4b1bd1b70ded0 100644 --- a/core/src/main/java/hudson/search/Icon.java +++ b/core/src/main/java/hudson/search/Icon.java @@ -1,6 +1,5 @@ package hudson.search; -import jenkins.model.Jenkins; import org.kohsuke.stapler.export.Exported; import org.kohsuke.stapler.export.ExportedBean; diff --git a/core/src/main/java/hudson/search/ParsedQuickSilver.java b/core/src/main/java/hudson/search/ParsedQuickSilver.java index 9ae1c24539d68..6ecb80b3c8032 100644 --- a/core/src/main/java/hudson/search/ParsedQuickSilver.java +++ b/core/src/main/java/hudson/search/ParsedQuickSilver.java @@ -174,7 +174,7 @@ public String getSearchUrl() { @Override public SearchItemCategory getSearchItemCategory() { - return SearchItemCategory.NODES; + return SearchItemCategory.IN_PAGE_ACTIONS; } @Override diff --git a/core/src/main/java/hudson/search/SearchItemCategory.java b/core/src/main/java/hudson/search/SearchItemCategory.java index 6ef677bbcb947..ce99b5b525770 100644 --- a/core/src/main/java/hudson/search/SearchItemCategory.java +++ b/core/src/main/java/hudson/search/SearchItemCategory.java @@ -8,5 +8,6 @@ public enum SearchItemCategory { BUILDS, PEOPLE, NODES, + IN_PAGE_ACTIONS, OTHER } diff --git a/core/src/main/java/jenkins/model/ParameterizedJobMixIn.java b/core/src/main/java/jenkins/model/ParameterizedJobMixIn.java index 0752b0bcc2503..65cc9bdfff035 100644 --- a/core/src/main/java/jenkins/model/ParameterizedJobMixIn.java +++ b/core/src/main/java/jenkins/model/ParameterizedJobMixIn.java @@ -47,7 +47,11 @@ import hudson.model.Run; import hudson.model.listeners.ItemListener; import hudson.model.queue.QueueTaskFuture; +import hudson.search.Icon; +import hudson.search.SearchIndex; import hudson.search.SearchIndexBuilder; +import hudson.search.SearchItem; +import hudson.search.SearchItemCategory; import hudson.triggers.Trigger; import hudson.triggers.TriggerDescriptor; import hudson.util.AlternativeUiTextProvider; @@ -63,6 +67,7 @@ import jenkins.model.lazy.LazyBuildMixIn; import jenkins.triggers.SCMTriggerItem; import jenkins.util.TimeDuration; +import org.jenkins.ui.icon.IconSet; import org.kohsuke.accmod.Restricted; import org.kohsuke.accmod.restrictions.DoNotUse; import org.kohsuke.accmod.restrictions.NoExternalUse; @@ -259,8 +264,33 @@ public final void doCancelQueue( StaplerRequest req, StaplerResponse rsp ) throw * @return the value to return */ public final SearchIndexBuilder extendSearchIndex(SearchIndexBuilder sib) { - if (asJob().isBuildable() && asJob().hasPermission(Item.BUILD)) { - sib.add("build", "build"); + if (asJob().isBuildable() && asJob().isParameterized() && asJob().hasPermission(Item.BUILD)) { + sib.add(new SearchItem() { + @Override + public String getSearchName() { + return "Build project"; + } + + @Override + public String getSearchUrl() { + return "build"; + } + + @Override + public Icon getSearchItemIcon() { + return Icon.fromSvg(IconSet.getIonicon("play-outline", null)); + } + + @Override + public SearchItemCategory getSearchItemCategory() { + return SearchItemCategory.IN_PAGE_ACTIONS; + } + + @Override + public SearchIndex getSearchIndex() { + return null; + } + }); } return sib; }