From 4ecb27bc627ba5e73dbfa9418b30fe1e81db3598 Mon Sep 17 00:00:00 2001 From: kohsuke Date: Fri, 2 Feb 2007 14:59:26 +0000 Subject: [PATCH] re-implemented the "create new job" page. git-svn-id: https://hudson.dev.java.net/svn/hudson/trunk/hudson/main@2027 71c3de6d-444a-0410-be80-ed276b4c234a --- .../java/hudson/maven/MavenModuleSet.java | 18 +++++--- .../main/java/hudson/model/ExternalJob.java | 12 +++-- core/src/main/java/hudson/model/Hudson.java | 24 +++++----- core/src/main/java/hudson/model/Project.java | 12 +++-- .../hudson/model/TopLevelItemDescriptor.java | 4 ++ .../maven/MavenModuleSet/newJobDetail.jelly | 4 ++ .../model/ExternalJob/newJobDetail.jelly | 6 +++ .../hudson/model/Project/newJobDetail.jelly | 5 +++ .../resources/hudson/model/View/newJob.jelly | 44 +++++++++---------- 9 files changed, 84 insertions(+), 45 deletions(-) create mode 100644 core/src/main/resources/hudson/maven/MavenModuleSet/newJobDetail.jelly create mode 100644 core/src/main/resources/hudson/model/ExternalJob/newJobDetail.jelly create mode 100644 core/src/main/resources/hudson/model/Project/newJobDetail.jelly diff --git a/core/src/main/java/hudson/maven/MavenModuleSet.java b/core/src/main/java/hudson/maven/MavenModuleSet.java index f354f898b0..9cc4fd7464 100644 --- a/core/src/main/java/hudson/maven/MavenModuleSet.java +++ b/core/src/main/java/hudson/maven/MavenModuleSet.java @@ -245,17 +245,23 @@ public class MavenModuleSet extends AbstractProject implements Top return DESCRIPTOR; } - public static final TopLevelItemDescriptor DESCRIPTOR = new TopLevelItemDescriptor(ExternalJob.class) { + public static final TopLevelItemDescriptor DESCRIPTOR = new DescriptorImpl(); + + public static final class DescriptorImpl extends TopLevelItemDescriptor { + private DescriptorImpl() { + super(ExternalJob.class); + } + public String getDisplayName() { - return "Monitoring an external job"; + return "Monitor an external job"; } public ExternalJob newInstance(String name) { return new ExternalJob(name); } - }; + } } diff --git a/core/src/main/java/hudson/model/Hudson.java b/core/src/main/java/hudson/model/Hudson.java index d476e0ade0..87ef50638e 100644 --- a/core/src/main/java/hudson/model/Hudson.java +++ b/core/src/main/java/hudson/model/Hudson.java @@ -426,6 +426,16 @@ public final class Hudson extends View implements ItemGroup, Node return names; } + /** + * Gets the names of all the {@link TopLevelItem}s. + */ + public Collection getTopLevelItemNames() { + List names = new ArrayList(); + for (TopLevelItem j : items.values()) + names.add(j.getName()); + return names; + } + /** * Every job belongs to us. * @@ -944,7 +954,6 @@ public final class Hudson extends View implements ItemGroup, Node req.setCharacterEncoding("UTF-8"); String name = req.getParameter("name").trim(); - String jobType = req.getParameter("type"); String mode = req.getParameter("mode"); try { @@ -966,15 +975,7 @@ public final class Hudson extends View implements ItemGroup, Node TopLevelItem result; - if(mode.equals("newJob")) { - if(jobType ==null) { - // request forged? - rsp.sendError(HttpServletResponse.SC_BAD_REQUEST); - return null; - } - // redirect to the project config screen - result = createProject(Items.getDescriptor(jobType), name); - } else { + if(mode.equals("copyJob")) { TopLevelItem src = getItem(req.getParameter("from")); if(src==null) { rsp.sendError(HttpServletResponse.SC_BAD_REQUEST); @@ -990,6 +991,9 @@ public final class Hudson extends View implements ItemGroup, Node result = (TopLevelItem)Items.load(this,result.getRootDir()); result.onCopiedFrom(src); items.put(name,result); + } else { + // redirect to the project config screen + result = createProject(Items.getDescriptor(mode), name); } for (ItemListener l : viewItemListeners) diff --git a/core/src/main/java/hudson/model/Project.java b/core/src/main/java/hudson/model/Project.java index 03edaee08c..0c481faba6 100644 --- a/core/src/main/java/hudson/model/Project.java +++ b/core/src/main/java/hudson/model/Project.java @@ -270,13 +270,19 @@ public class Project extends AbstractProject implements TopLevelI return DESCRIPTOR; } - public static final TopLevelItemDescriptor DESCRIPTOR = new TopLevelItemDescriptor(Project.class) { + public static final TopLevelItemDescriptor DESCRIPTOR = new DescriptorImpl(); + + public static final class DescriptorImpl extends TopLevelItemDescriptor { + private DescriptorImpl() { + super(Project.class); + } + public String getDisplayName() { - return "Building a software project"; + return "Build a free-style software project"; } public Project newInstance(String name) { return new Project(Hudson.getInstance(),name); } - }; + } } \ No newline at end of file diff --git a/core/src/main/java/hudson/model/TopLevelItemDescriptor.java b/core/src/main/java/hudson/model/TopLevelItemDescriptor.java index 91cc3c2f44..66b79e6492 100644 --- a/core/src/main/java/hudson/model/TopLevelItemDescriptor.java +++ b/core/src/main/java/hudson/model/TopLevelItemDescriptor.java @@ -26,6 +26,10 @@ public abstract class TopLevelItemDescriptor extends Descriptor { */ public abstract String getDisplayName(); + public final String getNewJobDetailPage() { + return '/'+clazz.getName().replace('.','/').replace('$','/')+"/newJobDetail.jelly"; + } + /** * @deprecated * This is not a valid operation for {@link Job}s. diff --git a/core/src/main/resources/hudson/maven/MavenModuleSet/newJobDetail.jelly b/core/src/main/resources/hudson/maven/MavenModuleSet/newJobDetail.jelly new file mode 100644 index 0000000000..73a399a46c --- /dev/null +++ b/core/src/main/resources/hudson/maven/MavenModuleSet/newJobDetail.jelly @@ -0,0 +1,4 @@ +
+ Build a maven2 project. Hudson takes advantage of your POM files and + drastically reduces the configuration. +
\ No newline at end of file diff --git a/core/src/main/resources/hudson/model/ExternalJob/newJobDetail.jelly b/core/src/main/resources/hudson/model/ExternalJob/newJobDetail.jelly new file mode 100644 index 0000000000..b8ded69dac --- /dev/null +++ b/core/src/main/resources/hudson/model/ExternalJob/newJobDetail.jelly @@ -0,0 +1,6 @@ +
+ This type of job allows you to record the execution of a process run outside Hudson + (perhaps even on a remote machine.) This is designed so that you can use Hudson + as a dashboard of your existing automation system. See + the documentation for more details. +
\ No newline at end of file diff --git a/core/src/main/resources/hudson/model/Project/newJobDetail.jelly b/core/src/main/resources/hudson/model/Project/newJobDetail.jelly new file mode 100644 index 0000000000..e1889efbad --- /dev/null +++ b/core/src/main/resources/hudson/model/Project/newJobDetail.jelly @@ -0,0 +1,5 @@ +
+ This is the central feature of Hudson. Hudson will build your project, + You can combine any SCM with any build system, and this can be even used + for something other than software build. +
\ No newline at end of file diff --git a/core/src/main/resources/hudson/model/View/newJob.jelly b/core/src/main/resources/hudson/model/View/newJob.jelly index f322ebd9b4..0dbd02d50e 100644 --- a/core/src/main/resources/hudson/model/View/newJob.jelly +++ b/core/src/main/resources/hudson/model/View/newJob.jelly @@ -9,29 +9,27 @@ - - - - - - - - - - + + + + + + + ${d.displayName} + + + + + + + + + Copy existing job + + + Copy from + + -- GitLab