From 6bcf863a6806555c9d0279e588112ebd5dde341a Mon Sep 17 00:00:00 2001 From: Jan Faracik <43062514+janfaracik@users.noreply.github.com> Date: Sun, 17 Mar 2024 14:10:28 +0000 Subject: [PATCH] More --- .../model/view/ConfigureProjectMenuItem.java | 51 +++++++++++++++++ .../model/view/DeleteProjectMenuItem.java | 57 +++++++++++++++++++ .../lib/hudson/project/configurable.jelly | 26 ++++----- 3 files changed, 121 insertions(+), 13 deletions(-) create mode 100644 core/src/main/java/jenkins/model/view/ConfigureProjectMenuItem.java create mode 100644 core/src/main/java/jenkins/model/view/DeleteProjectMenuItem.java diff --git a/core/src/main/java/jenkins/model/view/ConfigureProjectMenuItem.java b/core/src/main/java/jenkins/model/view/ConfigureProjectMenuItem.java new file mode 100644 index 000000000000..62c5ab5ce0b3 --- /dev/null +++ b/core/src/main/java/jenkins/model/view/ConfigureProjectMenuItem.java @@ -0,0 +1,51 @@ +package jenkins.model.view; + +import hudson.Extension; +import hudson.model.Action; +import hudson.model.Job; +import java.util.Collection; +import java.util.Set; +import jenkins.model.TransientActionFactory; +import jenkins.model.menu.Group; +import jenkins.model.menu.event.LinkAction; + +public class ConfigureProjectMenuItem implements Action { + + @Override + public String getDisplayName() { + return "Configure"; + } + + @Override + public String getIconFileName() { + return "symbol-settings"; + } + + @Override + public Group getGroup() { + return Group.IN_APP_BAR; + } + + @Override + public jenkins.model.menu.event.Action getAction() { + return LinkAction.of("configure"); + } + + @Extension + public static class TransientActionFactoryImpl extends TransientActionFactory { + + @Override + public Class type() { + return Job.class; + } + + @Override + public Collection createFor(Job target) { + if (!target.hasPermission(Job.CONFIGURE)) { + return Set.of(); + } + + return Set.of(new ConfigureProjectMenuItem()); + } + } +} diff --git a/core/src/main/java/jenkins/model/view/DeleteProjectMenuItem.java b/core/src/main/java/jenkins/model/view/DeleteProjectMenuItem.java new file mode 100644 index 000000000000..aa28987cf45f --- /dev/null +++ b/core/src/main/java/jenkins/model/view/DeleteProjectMenuItem.java @@ -0,0 +1,57 @@ +package jenkins.model.view; + +import hudson.Extension; +import hudson.model.Action; +import hudson.model.Job; +import java.util.Collection; +import java.util.Set; +import jenkins.model.TransientActionFactory; +import jenkins.model.menu.Group; +import jenkins.model.menu.Semantic; +import jenkins.model.menu.event.LinkAction; + +public class DeleteProjectMenuItem implements Action { + + @Override + public String getDisplayName() { + return "Delete project"; + } + + @Override + public String getIconFileName() { + return "symbol-trash"; + } + + @Override + public Group getGroup() { + return Group.LAST_IN_MENU; + } + + @Override + public jenkins.model.menu.event.Action getAction() { + return LinkAction.of("delete"); + } + + @Override + public Semantic getSemantic() { + return Semantic.DESTRUCTIVE; + } + + @Extension + public static class TransientActionFactoryImpl extends TransientActionFactory { + + @Override + public Class type() { + return Job.class; + } + + @Override + public Collection createFor(Job target) { + if (!target.hasPermission(Job.DELETE)) { + return Set.of(); + } + + return Set.of(new DeleteProjectMenuItem()); + } + } +} diff --git a/core/src/main/resources/lib/hudson/project/configurable.jelly b/core/src/main/resources/lib/hudson/project/configurable.jelly index 44bac9b2b9bf..fa9d139972a3 100644 --- a/core/src/main/resources/lib/hudson/project/configurable.jelly +++ b/core/src/main/resources/lib/hudson/project/configurable.jelly @@ -25,17 +25,17 @@ THE SOFTWARE. - - - - - - - - - - - - - + + + + + + + + + + + + +