Commits

Anonymous committed b2e6993

organize jsp/vm pages/decorators

git-svn-id: http://svn.opensymphony.com/svn/quartz/trunk@23169f7d36a-ea1c-0410-88ea-9fd03e4c9665

Comments (0)

Files changed (42)

webapp/webroot/WEB-INF/decorators.xml

 <decorators>
-
-  <decorator name="simple" page="/WEB-INF/jsp/layout/main.jsp">
+  
+  <decorator name="simple" page="/WEB-INF/decorators/main.jsp">
     <pattern>*</pattern>
   </decorator>
-
-  <decorator name="window" page="/WEB-INF/jsp/layout/window.jsp"/>
-  <decorator name="nav" page="/WEB-INF/vm/layout/nav.vm"/>
+  <decorator name="window" page="/WEB-INF/decorators/window.jsp"/>
+  <decorator name="nav" page="/WEB-INF/decorators/nav.vm"/>
 
 
 </decorators>

webapp/webroot/WEB-INF/decorators/foot.jsp

 <div class="footer micro">
-	footer content here<br />
+	<br />
 	<br />
 </div>

webapp/webroot/WEB-INF/jsp/cronExpressionHelp.htm

-<p>For those unfamiliar with "cron", this means being able to create a
- firing schedule such as:  "At 8:00am every Monday through Friday" or
- "At 1:30am every last Friday of the month".</p>
-
-<p>A "Cron-Expression" is a string comprised of 6 or 7 fields separated by
- white space. The 6 mandatory and 1 optional fields are as follows:<br>
-
- <table cellspacing="8">
-   <tr>
-     <th align="left">Field Name</th>
-     <th align="left">&nbsp;</th>
-     <th align="left">Allowed Values</th>
-     <th align="left">&nbsp;</th>
-     <th align="left">Allowed Special Characters</th>
-   </tr>
-   <tr>
-     <td align="left"><code>Seconds</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>0-59</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>, - * /</code></td>
-   </tr>
-   <tr>
-     <td align="left"><code>Minutes</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>0-59</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>, - * /</code></td>
-   </tr>
-   <tr>
-     <td align="left"><code>Hours</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>0-23</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>, - * /</code></td>
-   </tr>
-   <tr>
-     <td align="left"><code>Day-of-month</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>1-31</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>, - * ? / L C</code></td>
-   </tr>
-   <tr>
-     <td align="left"><code>Month</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>1-12 or JAN-DEC</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>, - * /</code></td>
-   </tr>
-   <tr>
-     <td align="left"><code>Day-of-Week</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>1-7 or SUN-SAT</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>, - * ? / L C #</code></td>
-   </tr>
-   <tr>
-     <td align="left"><code>Year (Optional)</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>empty, 1970-2099</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>, - * /</code></td>
-   </tr>
- </table>
- </p>
-
- <p>The '*' character is used to specify all values. For example, "*" in
- the minute field means "every minute".</p>
-
- <p>The '?' character is allowed for the day-of-month and day-of-week fields.
- It is used to specify 'no specific value'. This is useful when you need
- to specify something in one of the two fileds, but not the other. See the
- examples below for clarification.</p>
-
- <p>The '-' character is used to specify ranges For example "10-12" in the
- hour field means "the hours 10, 11 and 12".</p>
-
- <p>The ',' character is used to specify additional values. For example
- "MON,WED,FRI" in the day-of-week field means "the days Monday,
- Wednesday, and Friday".</p>
-
- <p>The '/' character is used to specify increments. For example "0/15" in
- the seconds field means "the seconds 0, 15, 30, and 45".  And "5/15" in
- the seconds field means "the seconds 5, 20, 35, and 50".  You can also
- specify '/' after the '*' character - in this case '*' is equivalent to
- having '0' before the '/'.</p>
-
- <p>The 'L' character is allowed for the day-of-month and day-of-week fields.
- This character is short-hand for "last", but it has different meaning in each of
- the two fields.  For example, the value "L" in the  day-of-month field means
- "the last day of the month" - day 31 for  January, day 28 for February on
- non-leap years.  If used in the day-of-week field by itself, it simply
- means "7" or "SAT". But if used in the day-of-week field after another value,
- it means "the last xxx day of the month" - for example "6L" means
- "the last friday of the month".  When using the 'L' option, it is
- important not to specify lists, or ranges of values, as you'll get confusing
- results.</p>
-
- <p>The '#' character is allowed for the day-of-week field.  This character
- is used to specify "the nth" XXX day of the month.  For example, the value
- of "6#3" in the day-of-week field means the third Friday of the month
- (day 6 = Friday and "#3" = the 3rd one in the month). Other
- examples: "2#1" = the first Monday of the month and  "4#5" = the fifth
- Wednesday of the month.  Note that if you specify "#5" and there is not 5 of
- the given day-of-week in the month, then no firing will occur that month.</p>
-
- <p>The 'C' character is allowed for the day-of-month and day-of-week fields.
- This character is short-hand for "calendar".  This means values are
- calculated against the associated calendar, if any.  If no calendar is
- associated, then it is equivalent to having an all-inclusive calendar.
- A value of "5C" in the day-of-month field means "the first day included by
- the calendar on or after the 5th".  A value of "1C" in the day-of-week field
- means "the first day included by the calendar on or after sunday".</p>
-
- <p>The legal characters and the names of months and days of the week are not
- case sensitive.</p>
-
- <p>Here are some full examples:<br>
- <table cellspacing="8">
-   <tr>
-     <th align="left">Expression</th>
-     <th align="left">&nbsp;</th>
-     <th align="left">Meaning</th>
-   </tr>
-   <tr>
-     <td align="left"><code>"0 0 12 * * ?"</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>Fire at 12pm (noon) every day</code></td>
-   </tr>
-   <tr>
-     <td align="left"><code>"0 15 10 ? * *"</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>Fire at 10:15am every day</code></td>
-   </tr>
-   <tr>
-     <td align="left"><code>"0 15 10 * * ?"</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>Fire at 10:15am every day</code></td>
-   </tr>
-   <tr>
-     <td align="left"><code>"0 15 10 * * ? *"</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>Fire at 10:15am every day</code></td>
-   </tr>
-   <tr>
-     <td align="left"><code>"0 15 10 * * ? 2005"</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>Fire at 10:15am every day during the year 2005</code></td>
-   </tr>
-   <tr>
-     <td align="left"><code>"0 * 14 * * ?"</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>Fire every minute starting at 2pm and ending at 2:59pm, every day</code></td>
-   </tr>
-   <tr>
-     <td align="left"><code>"0 0/5 14 * * ?"</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>Fire every 5 minutes starting at 2pm and ending at 2:55pm, every day</code></td>
-   </tr>
-   <tr>
-     <td align="left"><code>"0 0/5 14,18 * * ?"</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>Fire every 5 minutes starting at 2pm and ending at 2:55pm, AND fire every 5 minutes starting at 6pm and ending at 6:55pm, every day</code></td>
-   </tr>
-   <tr>
-     <td align="left"><code>"0 0-5 14 * * ?"</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>Fire every minute starting at 2pm and ending at 2:05pm, every day</code></td>
-   </tr>
-   <tr>
-     <td align="left"><code>"0 10,44 14 ? 3 WED"</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>Fire at 2:10pm and at 2:44pm every Wednesday in the month of March.</code></td>
-   </tr>
-   <tr>
-     <td align="left"><code>"0 15 10 ? * MON-FRI"</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>Fire at 10:15am every Monday, Tuesday, Wednesday, Thursday and Friday</code></td>
-   </tr>
-   <tr>
-     <td align="left"><code>"0 15 10 15 * ?"</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>Fire at 10:15am on the 15th day of every month</code></td>
-   </tr>
-   <tr>
-     <td align="left"><code>"0 15 10 L * ?"</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>Fire at 10:15am on the last day of every month</code></td>
-   </tr>
-   <tr>
-     <td align="left"><code>"0 15 10 ? * 6L"</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>Fire at 10:15am on the last Friday of every month</code></td>
-   </tr>
-   <tr>
-     <td align="left"><code>"0 15 10 ? * 6L"</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>Fire at 10:15am on the last Friday of every month</code></td>
-   </tr>
-   <tr>
-     <td align="left"><code>"0 15 10 * * 6L 2002-2005"</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>Fire at 10:15am on EVERY DAY of every month during the years 2002, 2003, 2004 and 2005</code></td>
-   </tr>
-   <tr>
-     <td align="left"><code>"0 15 10 * * 6#3"</code></td>
-     <td align="left">&nbsp;</th>
-     <td align="left"><code>Fire at 10:15am on the third Friday of every month</code></td>
-   </tr>
- </table>
- </p>
-
- <p>Pay attention to the effects of '?' and '*' in the day-of-week and
- day-of-month fields!</p>
-
- <p><b>NOTES:</b>
- <ul>
-   <li>
-      Support for the features described for the 'C' character is
-      not complete.
-   </li>
-   <li>
-      Support for specifying both a day-of-week and a day-of-month
-      value is not complete (you'll need to use the '?' character in on of these
-      fields).
-   </li>
- </ul>
- </p>
-

webapp/webroot/WEB-INF/jsp/layout/foot.jsp

-<div class="footer micro">
-	<br />
-	<br />
-</div>

webapp/webroot/WEB-INF/jsp/layout/head.jsp

-<%    String root = request.getContextPath(); %>
-<table width="100%" border="0" cellspacing="0" cellpadding="0">
-	<tr>
-		<td width="145" align="left"><a href="http://www.quartzscheduler.com/" target="_blank"><img src="<%= request.getContextPath()%>/icons/quartzEJS.jpg"/></a></td>
-		<td width="10" valign="bottom">
-		&nbsp;	<%  if (request.getRemoteUser() != null){ %>
-			User:  <%=request.getRemoteUser()%> <a href="<%=root%>/logout.action">[Sign out] </a>
-			<% } else { %>
-				<a href="<%=root%>/logout.action">[Sign In]</a>
-		 <%	}  %>
-		 </td>
-		<td></td>
-	</tr>
-	<tr><td height="10" width="145"  colspan="3" class="nav" >&nbsp; </td>
-	</tr>
-</table>

webapp/webroot/WEB-INF/jsp/layout/main.jsp

-<%@ taglib uri="sitemesh-decorator" prefix="decorator" %>
-<%@ taglib uri="sitemesh-page" prefix="page" %>
-<%@ taglib uri="webwork" prefix="webwork" %>
-<%@ taglib uri="/WEB-INF/tlds/c.tld" prefix="c" %>
-<html>
-  <head>
-    <title><decorator:title/></title>
-    <link rel="stylesheet" href="decorators/style.css">
-    <c:url var="url" value="/style/default.css"/>
-    <c:url var="displaytag_css" value="/style/display.css"/>
-    <link rel=stylesheet type=text/css href='<c:out value="${url}"/>'/>
-    <link rel=stylesheet type=text/css href='<c:out value="${displaytag_css}"/>'/>
-    <decorator:head/>
-  </head>
-  	<body>
-		<table width="100%" border="0" cellspacing="0" cellpadding="0">
-			<tr><td><jsp:include page="/WEB-INF/jsp/layout/head.jsp"/></td></tr>
-			<tr>
-				<table width="100%" border="0" cellspacing="0" cellpadding="0">
-					<tr>
-						<td width="145" height="100%" valign="top"><jsp:include page="/WEB-INF/jsp/layout/nav.jsp"/></td>
-						<td width="10">&nbsp;</td>
-						<td ><!--insert attribute="bodyhead"--><decorator:body/></td>
-						  <webwork:if test="(actionErrors != null && actionErrors.size() > 0) || (fieldErrors != null && fieldErrors.size() > 0)">
-						<td valign="top">
-							<page:applyDecorator name="window" title="Errors" page="/WEB-INF/jsp/layout/msg.jsp"  />
-						</td>
-						</webwork:if>
-					</tr>
-				</table>
-			</tr>
-			<tr><td><jsp:include page="/WEB-INF/jsp/layout/foot.jsp"/></td></tr>
-		</table>
-	</body>
-</html>

webapp/webroot/WEB-INF/jsp/layout/msg.jsp

-<%@ taglib uri="webwork" prefix="webwork" %>
-  <webwork:if test="actionErrors != null && actionErrors.size() > 0">
-  	<p>
-	<font color="red">
-	<b>Action errors:</b><br/>
-	<ul> 
-	<webwork:iterator value="actionErrors">
-            <li><webwork:property /></li>
-        </webwork:iterator>
-	</ul>
-	</font>
-	</p>
-    </webwork:if>
-     <webwork:if test="fieldErrors != null && fieldErrors.size() > 0">
-     	<p>
-	<font color="red">
-	<b>Field errors:</b><br/>
-	<ul>
-	<webwork:iterator value="fieldErrors">
-            <li><webwork:property /></li>
-	</webwork:iterator>
-	</ul>
-	</font>
-	</p>
-     </webwork:if>
-

webapp/webroot/WEB-INF/jsp/layout/nav.jsp

-
-<%  String root = request.getContextPath(); %>
-<table width="145" height="100%" class="nav" border="0" cellspacing="0" cellpadding="0">
-	<tr>
-		<td width="142" valign="top">
-		<a href="<%=root%>/schedule/scheduleControl.action">Schedule Control</a>
-		<td width="3" >&nbsp;</td>
-	</tr>
-	<tr>
-		<td width="142" valign="top">
-		<a href="<%=root%>/definition/list.action">Job Definitions</a>
-		<td width="3" >&nbsp;</td>
-	</tr>
-	<tr>
-		<td width="142" valign="top" ><a href="<%=root%>/jobs/createJob.action">Create Job</a></td>
-		<td width="3" >&nbsp;</td>
-	</tr>
-	<tr>
-		<td width="142" valign="top" ><a href="<%=root%>/schedule/listJobs.action">List Jobs</a></td>
-		<td width="3" >&nbsp;</td>
-	</tr>
-	<tr>
-		<td width="142" valign="top" ><a href="<%=root%>/schedule/listTriggers.action">List all Triggers</a></td>
-		<td width="3" >&nbsp;</td>
-	</tr>
-	<tr>
-		<td width="142" valign="top" ><a href="<%=root%>/quartzLog.action">Logging</a></td>
-		<td width="3" >&nbsp;</td>
-	</tr>
-	<tr height="100%">
-		<td width="142" valign="top" >&nbsp;</td>
-		<td width="3" >&nbsp;</td>
-	</tr>
-</table>

webapp/webroot/WEB-INF/jsp/layout/window.jsp

-<%@ taglib uri="sitemesh-decorator" prefix="decorator" %>
-<table class="simple">
-  <tr>
-    <th><!--<img src="decorators/snazzy.gif">--><decorator:title/></th>
-  </tr>
-  <tr>
-    <td>
-      <decorator:body/>
-    </td>
-  </tr>
-</table>

webapp/webroot/WEB-INF/jsp/listAllJobs.jsp

-<%@ taglib uri="/WEB-INF/tlds/c.tld" prefix="c" %>
-<%@ taglib uri="/WEB-INF/tlds/fmt.tld" prefix="fmt" %>
-<%@ taglib uri="/WEB-INF/tlds/displaytag-el-12.tld" prefix="display" %>
-<%@ taglib uri="/WEB-INF/tlds/webwork.tld" prefix="ww" %>
-
-<ww:set name="jobz" value="jobs" scope="request" />
-<%  String root = request.getContextPath(); %>
-
-<h1><fmt:message key="title.listAllJobs"/></h1>
-<!--decorator="org.quartz.ui.Decorator"  -->
-Find job(s) by name: <form name="JobSearchForm" method="post" action="<%=root%>/schedule/listJobs.action")>
-<input type="text" name="jobName" value="<ww:property value="jobName"/>"/>
-<input type="submit" value="Search" name="jobSearchSubmit"/>
-</form><p>
-<display:table name="jobz" class="simple" id="row" requestURI="listJobs.action">
-  <display:column  titleKey="label.global.actions" > 
-  		<c:url var="viewurl" value="/jobs/viewJob.action">
-			<c:param name="jobName" value="${row.name}"/>
-  			<c:param name="jobGroup" value="${row.group}"/>
-		</c:url>   
-		<c:url var="editurl" value="/jobs/editJob.action">
-			<c:param name="jobName" value="${row.name}"/>
-  			<c:param name="jobGroup" value="${row.group}"/>
-		</c:url>   
-  		<c:url var="exeurl" value="/jobs/executeJob.action">
-			<c:param name="jobName" value="${row.name}"/>
-  			<c:param name="jobGroup" value="${row.group}"/>
-  			<c:param name="executeJobAction" value="execute"/>
-		</c:url>   
-	<a href='<c:out value="${viewurl}"/>'><fmt:message key="label.global.view"/></a> |
-	<a href='<c:out value="${editurl}"/>'><fmt:message key="label.global.edit"/></a> |
-	<a href='<c:out value="${exeurl}"/>'><fmt:message key="label.global.execute"/></a> &nbsp;  
-  </display:column> 
-
-  <display:column property="group" titleKey="label.job.group" sortable="true"   />
-  <display:column property="name" titleKey="label.job.name" sortable="true"  />
-  <display:column property="description" titleKey="label.job.description" />
-  <display:column property="jobClass" titleKey="label.job.jobClass" sortable="true"  />
-
-</display:table>
-<script language="Javascript">
-	try {
-		document.JobSearchForm.jobName.focus()
-	} catch (e) {
-	}
-</script>

webapp/webroot/WEB-INF/jsp/listAllTriggers.jsp

-<%@ taglib uri="/WEB-INF/tlds/c.tld" prefix="c" %>
-<%@ taglib uri="/WEB-INF/tlds/fmt.tld" prefix="fmt" %>
-<%@ taglib uri="/WEB-INF/tlds/displaytag-el-12.tld" prefix="display" %>
-<%@ taglib uri="/WEB-INF/tlds/webwork.tld" prefix="ww" %>
-<h1><fmt:message key="title.listAllTriggers"/></h1>
-<ww:set name="triggers" value="triggers" scope="request" />
-
-<display:table name="triggers" class="simple" id="row" requestURI="listTriggers.action">
-  <display:column  titleKey="label.global.actions" > 
-  		<c:url var="joburl" value="/jobs/viewJob.action">
-			<c:param name="jobName" value="${row.jobName}"/>
-  			<c:param name="jobGroup" value="${row.jobGroup}"/>
-		</c:url>   
-	<a href='<c:out value="${joburl}"/>'><fmt:message key="label.global.view"/></a> &nbsp;  
-  </display:column> 
-  <display:column property="group" title="Job/Group" sortable="true" >
-	  <c:out value="${row.jobName}" /> - <c:out value="${row.jobGroup}" /> 
-  </display:column>
-  <display:column property="group" titleKey="label.trigger.group" sortable="true"   />
-  <display:column property="name" titleKey="label.trigger.name" sortable="true"  />
-  <display:column property="description" titleKey="label.trigger.description" />
-  <display:column property="class.name" titleKey="label.trigger.type" sortable="true"  />
-  <display:column property="nextFireTime" titleKey="label.trigger.nextFireTime" sortable="true"  />
-  <display:column property="startTime" titleKey="label.trigger.startTime" sortable="true"  />
-  <display:column property="endTime" titleKey="label.trigger.stopTime" sortable="true"  />
-  <display:column property="previousFireTime" titleKey="label.trigger.previousFireTime" sortable="true"  />
-  <display:column property="misfireInstruction" titleKey="label.trigger.misFireInstruction" sortable="true"  />
-</display:table>

webapp/webroot/WEB-INF/vm/CreateSimpleTrigger.vm

-<form name="jobDetailForm" method="post" action="${req.contextPath}/schedule/simpleSchedule.action">
-<h1>#text("title.desc")</em> </h1>
-	<input type="hidden" name="jobName" value="$jobName">
-	<input type="hidden" name="jobGroup" value="$jobGroup">
-<table>
-	<tr>
-		<td>#text("label.trigger.group")</td>
-		<td><input type="text" name="triggerGroup" value="$!triggerGroup"/></td>
-		<td><i>#text("hint.trigger.group")</i></td>
-	</tr>
-	<tr>
-		<td>#text("label.trigger.name")</td>
-		<td><input type="text" name="triggerName" value="$!{triggerName}"/></td>
-		<td><i>#text("hint.trigger.name")</i></td>
-	</tr>
-	<tr>
-		<td>#text("label.trigger.description")</td>
-		<td><textarea rows="5" cols="50"  name="description">$!description</textarea></td>
-		<td></td>
-	</tr>
-	<tr>
-		<td>#text("label.trigger.startTime")</td>
-		<td><input type="text" name="startTime" value="$!startTime"/></td>
-		<td><i>#text("hint.trigger.startTime")</i></td>
-	</tr>
-	<tr>
-		<td>#text("label.trigger.stopTime")</td>
-		<td><input type="text" name="stopTime" value="$!stopTime"/></td>
-		<td><i>#text("hint.trigger.stopTime")</i></td>
-	</tr>
-	<tr>
-		<td>#text("label.trigger.repeatCount")</td>
-		<td><input type="text" name="repeatCount" value="$!repeatCount"/></td>
-		<td><i>#text("hint.trigger.repeatCount")</i></td>
-	</tr>
-	<tr>
-		<td>#text("label.trigger.repeatInterval")</td>
-		<td><input type="text" name="repeatInterval" value="$!repeatInterval"/></td>
-		<td><i>#text("hint.trigger.repeatInterval")</i></td>
-	</tr>
-</table>
-
-<input type="submit" value="#text("label.global.schedule")" />
-
-</form>
-
-

webapp/webroot/WEB-INF/vm/chooseScheduler.vm

-<html>
-	<head>
-		<script language="JavaScript">
-			function submitForm(cmd) {
-				//alert(cmd);
-				document.getElementById("command").value=cmd;
-				document.getElementById("frmChooseScheduler").submit();
-			}
-		</script>
-	</head>
-#set ($scheduler = ${scheduleInfo.scheduler})
-<form id="frmChooseScheduler" name="chooseSchedulerForm" method="post" action="${base}/schedule/scheduleControl.action">
-<input type="hidden" id="command" name="command" value=""/>
-<table>
-	<tr>
-		<td width="200">#text("label.scheduler")</td>
-		<td>
-		<select id="schedulerName" name="schedulerName" onchange="submit()">
-			#foreach($schedule in $scheduleInfo.schedulers)
-				<option id="$schedule.schedulerName" value="$schedule.schedulerName">$schedule.schedulerName</option>
-			#end
-		</select>
-		</td>
-	</tr>
-	<tr/>
-	<tr>
-		<td>#text("label.scheduler.schedulerName")</td><td>$!{scheduler.schedulerName}</td>
-	</tr>
-	<tr>
-		<td>#text("label.scheduler.state")</td><td>$!{scheduler.state}</td>
-	</tr>
-	<tr>
-		<td>#text("label.scheduler.runningSince")</td><td>$!{scheduler.runningSince}</td>
-	</tr>
-	<tr>
-		<td>#text("label.scheduler.numJobsExecuted")</td><td>$!{scheduler.numJobsExecuted}</td>
-	</tr>
-	<tr>
-		<td>#text("label.scheduler.persistenceType")</td><td>$!{scheduler.persistenceType}</td>
-	</tr>
-	<tr>
-		<td>#text("label.scheduler.threadPoolSize")</td><td>$!{scheduler.threadPoolSize}</td>
-	</tr>
-	<tr>
-		<td>#text("label.scheduler.version")</td><td>$!{scheduler.version}</td>
-	</tr>
-	<tr/>
-<table>	
-<table>
-	<tr>
-		<td width="30">
-		 <input type="image"  value="start" src="${base}/icons/Play24.gif" alt="Start Scheduler" onclick="submitForm(this.value)" border="0"/> 
-		</td>
-		<td width="30">
-		 <input type="image" value="pause" src="${base}/icons/Pause24.gif"  alt="Pause Scheduler" onclick="submitForm(this.value)" border="0"/> 
-		<td width="30">
-		 <input type="image" value="stop" src="${base}/icons/Stop24.gif"  alt="Stop Scheduler" onclick="submitForm(this.value)" border="0"/> 
-		</td>
-		<td width="30">
-		 <input type="image" value="waitAndStopScheduler" src="${base}/icons/Stop24.gif"   alt="Stop scheduler (wait for jobs to complete)" onclick="submitForm(this.value)" border="0"/> 
-		</td>
-	</tr>
-</table>
-#text("title.chooseScheduler.setCurrentScheduler"): <input type="submit" class="submit" value="set" property="btnSetSchedulerAsCurrent"/>
-</form>
-
-<hr/>
-#text("title.chooseScheduler.executingJobs")
-<table><tr>
-<td>#text("label.job.group")</td>
-<td>#text("label.job.name")</td>
-<td>#text("label.job.description")</td>
-<td>#text("label.job.jobClass")</td>
-</tr>
-#foreach($job in $scheduleInfo.executingJobs)
-	<tr>
-		<td>${job.groupName}</td>
-		<td>${job.name}</td>
-		<td>${job.description}</td>
-		<td>${job.jobClass}</td>
-	</tr>
-#end
-</table>
-<table>
-	<tr>
-		<td width="30">
-			<img src="$base/icons/Pause24.gif" value="btnPauseAllJobs" alt="Pause all jobs"/>
-		</td>
-		<td width="30">
-			<img src="$base/icons/Play24.gif" value="btnResumeAllJobs" alt="Resume all jobs"/>
-		</td>
-	</tr>
-</table>
-<hr/>
-<p>#text("label.scheduler.summary"): <i><pre>$!{scheduler.summary}</pre></i></p>
-</html>

webapp/webroot/WEB-INF/vm/createCronTrigger.vm

-<form action="${req.contextPath}/schedule/cronSchedule.action">
-<h1>#text("title.schedule.cron")</h1>
-<input type="hidden" name="jobName" value="$!{jobName}" />
-<input type="hidden" name="jobGroup" value="$!jobGroup"/>
-<table>
-	<tr>
-		<td>#text("label.trigger.group")</td>
-		<td><input type="text" name="triggerGroup" value="$triggerGroup"/></td>
-		<td><i>#text("hint.trigger.group")</i></td>
-	</tr>
-	<tr>
-		<td>#text("label.trigger.name")</td>
-		<td><input type="text" name="triggerName" value="$triggerName"/></td>
-		<td><i>#text("hint.trigger.name")</i></td>
-	</tr>
-	<tr>
-		<td>#text("label.trigger.description")</td>
-		<td><textarea rows="5" cols="50" name="description">$description</textarea></td>
-		<td></td>
-	</tr>
-	<tr>
-		<td>#text("label.trigger.startTime")</td>
-		<td><input type="text" name="startTime" value="$startTime"/></td>
-		<td><i>#text("hint.trigger.startTime")</i></td>
-	</tr>
-	<tr>
-		<td>#text("label.trigger.stopTime")</td>
-		<td><input type="text" name="stopTime" value="$stopTime"/></td>
-		<td><i>#text("hint.trigger.stopTime")</i></td>
-	</tr>
-	<tr>
-		<td>#text("label.trigger.cronExpression")</td>
-		<td><input type="text" name="cronExpression" value="$cronExpression"/></td>
-		<td><i>#text("hint.trigger.cronExpression")</i></td>
-	</tr>
-	<!--<tr>
-		<td>#text("label.trigger.timeZone")</td>
-		<td><input type="text" name="timeZone" value="$timeZone"/></td>
-		<td><i>#text("hint.trigger.timeZone")</i></td>
-	</tr>-->
-<!--
-    <tr>
-        <td>volatility</td><td><input type="checkbox" name="volatility"/></td><td><i></i></td>
-    </tr>
--->
-</table>
-<input type="submit" value="#text("label.global.schedule")"/>
-<form>
-#include("/WEB-INF/jsp/cronExpressionHelp.htm")
-

webapp/webroot/WEB-INF/vm/createDefinedJob.vm

-#set ($def = $jobDefinition)
-<h1>#text("title.createDefinitionJob")</h1>
-<form name="jobDetailForm" method="post" action="${req.contextPath}/jobs/saveDefinedJob.action">
-
-<table>
-	<tr>
-		<td>#text("label.job.group")</td>
-		<td><input type="text" name="jobDetail.group" value="$!jobDetail.group"/></td>
-	</tr>
-	<tr>
-		<td>#text("label.job.name")</td>
-		<td><input type="text" name="jobDetail.name" value="$!jobDetail.name"/> </td>
-	</tr>
-	<tr>
-		<td>#text("label.job.jobClass")</td>
-		<td><input type="text" name="className" size="27" value="$!{jobDefinition.className}" /></td>
-	</tr> 																			##  put one or the other
-	<tr>
-		<td>#text("label.job.description")</td>
-		<td><textarea name="jobDetail.description">#text("jobDefintions.description")</textarea></td>
-	</tr>
-	<tr>
-		<td>#text("label.job.recover")</td>
-		<td><input type="checkbox" name="jobDetail.requestsRecovery" value="true" checked="true" /></td>
-	</tr>
-	<tr>
-		<td>#text("label.job.durable")</td>
-		<td><input type="checkbox" name="jobDetail.durability" value="true" checked="true" /></td>
-	</tr>
-</table>
-
-<h3>#text("title.createJob.listeners")</h3>
-<table>
-</table>
-
-<h3>#text("title.createDefinitionJob.params")</h3>
-<table>
-	<tr>
-		<td>#text("label.job.parameter.name")</td>
-		<td>#text("label.job.parameter.value")</td>
-		<td>#text("label.job.parameter.required")</td>
-	</tr>
-#set ($params = $def.parameters)
-#foreach ($p in $params)
-    <tr>
-    	<td>$p.name: <input type="hidden" name="parameterNames" value="$p.name"/>  </td>
-    	<td><input type="text" name="parameterValues"/></td>
-    	<td>$p.required</td>
-    </tr>
-#end
-    #foreach($key in $jobDetail.jobDataMap.keys)
-	<tr>
-		<td><input type="text" name="parameterNames" value="$key"/></td>
-		<td><input type="text" name="parameterValues" value="${jobDetail.jobDataMap.getString($key)}"/></td>
-	</tr>
-     #end
-</table>
-<input type="hidden" name="definitionName" value="$def.name" />
-<input type="submit"  class="submit" name="saveAction" value="#text("label.global.save")"/>
-<form>
-
-

webapp/webroot/WEB-INF/vm/createJob.vm

-#set ($def = $jobDefinition)
-<h1>#text("title.createJob")</h1>
-<form name="jobDetailForm" method="post" action="${req.contextPath}/jobs/saveJob.action">
-<table>
-	<tr>
-		<td>#text("label.job.group")</td>
-		<td><input type="text" id="q" name="jobDetail.group" value="$!jobDetail.group"/></td>
-	</tr>
-	<tr>
-		<td>#text("label.job.name")</td>
-		<td><input type="text" name="jobDetail.name" value="$!jobDetail.name"/> </td>
-	</tr>
-	<tr>
-		<td>#text("label.job.jobClass")</td>
-		
-		<td><input type="text" name="className" value="$!{className}$!{jobDetail.jobClass.name}" /></td>
-	</tr> 																			##  put one or the other
-	<tr>
-		<td>#text("label.job.description")</td>
-		<td><textarea name="jobDetail.description">$!jobDetail.description</textarea></td>
-	</tr>
-	<tr>
-		<td>#text("label.job.recover")</td>
-		<td><input type="checkbox" name="jobDetail.requestsRecovery" value="true" #if($jobDetail.requestsRecovery()) checked="true" #end /></td>
-	</tr>
-	<tr>
-		<td>#text("label.job.durable")</td>
-		<td><input type="checkbox" name="jobDetail.durability" value="true"  #if($jobDetail.durable) checked="true" #end /></td>
-	</tr>
-</table>
-
-<h3>#text("title.createJob.listeners")</h3>
-<!-- todo add job listener functionality -->
-<table>
-</table>
-
-<h3>#text("title.createDefinitionJob.params")</h3>
-<table>
-	<tr>
-		<td>#text("label.job.parameter.name")</td>
-		<td>#text("label.job.parameter.value")</td>
-		<td>#text("label.job.parameter.required")</td>
-	</tr>
-#set ($params = $def.parameters)
-#foreach ($p in $params)
-    <tr>
-    	<td>$p.name:  </td>
-    	<td><input type="text" name="param.$p.name"/></td>
-    	<td>$p.required</td>
-    </tr>
-#end
-    #foreach($key in $jobDetail.jobDataMap.keys)
-	<tr>
-		<td><input type="text" name="parameterNames" value="$key"/></td>
-		<td><input type="text" name="parameterValues" value="${jobDetail.jobDataMap.getString($key)}"/></td>
-	</tr>
-	#end
-    <tr>
-    	<td><input type="text" name="parameterNames"/></td>
-    	<td><input type="text" name="parameterValues"/></td>
-    </tr>
-    <tr>
-    	<td><input type="text" name="parameterNames"/></td>
-    	<td><input type="text" name="parameterValues"/></td>
-    </tr>
-</table>
-
-<input type="hidden" name="definitionName" value="$def.name" />
-<input type="submit"  class="submit" name="saveAction" value="#text("label.global.save")"/>
-</form>

webapp/webroot/WEB-INF/vm/createUICronTrigger.vm

-#set ($trig = $trigger)
-#set ($daysOfWeekVals = $trigger.daysOfWeekValues)
-#set ($dayLabels = $trigger.daysOfWeekLabels)
-
-<form name="UICronTriggerForm" method="post" action="${base}/schedule/uiCronSchedule.action")>
-<h1>#text("title.schedule.cron")</h1>
-<input type="hidden" name="jobName" value="$jobName"/>
-<input type="hidden" name="jobGroup" value="$jobGroup"/>
-<table>
-      <tr class="listHeading"><td colspan="2">&nbsp;</td></tr>
-    	<tr>
-		<td>#text("label.trigger.group")</td>
-		<td><input type="text" name="trigger.group" value="$!trigger.group"/></td>
-		<td><i>#text("hint.trigger.group")</i></td>
-	</tr>
-	<tr>
-		<td>#text("label.trigger.name")</td>
-		<td><input type="text" name="trigger.name" value="$!trigger.name"/></td>
-		<td><i>#text("hint.trigger.name")</i></td>
-	</tr>
-    <tr class="listHeading"><td colspan="2">&nbsp;</td></tr>
-    <tr class="listRowUnshaded">
-      <td width="80">#text("label.date")</td>
-      <td align="center">
-	#select("trigger.daysOfWeek" 2  $daysOfWeekVals $dayLabels)
-	#select("trigger.daysOfMonth" 2  $trig.daysOfMonthValues $trig.daysOfMonthLabels)
-	#select("trigger.months" 2  $trig.monthsValues $trig.monthsLabels)
-      <select name="trigger.years" size="5" multiple="true" >
-        #foreach ($year in $trig.yearsLabels)
-            <option value="$year" #if("$v"=="$s") selected="selected"#end>$year</option>
-        #end
-    </select>                                                                                  
-    </td>
-    <td valign="top">
-            #text("label.dayorweek")
-    </td>
-    </tr>
-    <tr class="listRowShaded">
-      <td width="80">#text("label.time")</td>
-      <td colspan="2" align="left">
-  ##select( "trigger.hours"   $trig.hours $trig.hoursValues $trig.hoursLabels   )
-	  <select name="trigger.hours" size="5" multiple="true"> 
-		#foreach($label in $trig.hoursLabels)
-			#set($index = $velocityCount - 1)
-			<option value="$stack.findValue("trigger.hoursValues[${index}]")">$label </option>
-		#end
-	  </select>
-	  <select name="trigger.minutes" size="5" multiple="true"> 
-		#foreach($label in $trig.minutesLabels)
-			#set($index = $velocityCount - 1)
-			<option value="$stack.findValue("trigger.minutesValues[${index}]")">$label </option>
-		#end
-	   </select>	
-	##select( "trigger.minutes"   $trig.minutes $trig.minutesLabels $trig.minutesValues   )
-      </td>
-    </tr>
-    </tr>
-</table>
-<input type="submit" value="#text("label.global.schedule")" name="scheduleAction"/>

webapp/webroot/WEB-INF/vm/definitions.vm

-<h2>#text("title.definitions.heading")</h2>
-<i>#text("title.definitions.hint")</i><br/>
-<a href="${req.contextPath}/definition/view.action">#text("label.create.definition")</a>
-<a href="${req.contextPath}/definition/raw.action">#text("label.dump")</a>
-<table cellspacing="0" cellpadding="5" width="100%">
-    <tr>
-	<td bgcolor="#eeeeee"><em>#text("label.definitions.actions")</em></td>
-        <td bgcolor="#eeeeee">#text("label.definitions.name")</td>
-        <td bgcolor="#eeeeee">#text("label.definitions.description")</td>
-        <td bgcolor="#eeeeee">#text("label.definitions.class")</td>
-        <td bgcolor="#eeeeee">#text("label.definitions.params")</td>      
-   </tr>
-    #set( $definitions = $definitionManager.definitions )
-    #foreach ($def in $definitions)
-    <tr>
-        <td bgcolor="#eeeeee" nowrap="true"><a href="${req.contextPath}/jobs/createDefinedJob.action?method=start&definitionName=${def.name}">#text("label.global.createJob")</a>
-        <a href="${req.contextPath}/definition/view.action?definitionName=${def.name}">#text("label.global.edit")</a>
-        <a onclick="javascript:return confirm('#text("label.confirm.deleteDefinition")');" href="${req.contextPath}/definition/delete.action?definitionName=${def.name}">#text("label.global.delete")</a>
-        </td>
-        <td bgcolor="#eeeeee">$def.name</td>
-        <td bgcolor="#eeeeee">$def.description</td>
-        <td bgcolor="#eeeeee">$def.className</td>
-        <td bgcolor="#eeeeee">
-        #set( $params = $def.getParameters() )
-        #foreach ($p in $params)
-            <li>$p.name: #text("label.global.required")=$p.required </li>
-        #end
-        </td>
-    </tr>
-    #end
-</table>
-</center>

webapp/webroot/WEB-INF/vm/editDefinition.vm

-#set ($def = $definition)
-#if($def.name.length() > 0)
-<h1>#text("title.createDefinition")"</h1>
-	#set($edit="true")
-#else
-<h1>#text("title.createDefinition")</h1>
-#end
-<form name="definitionForm" method="post" action="${req.contextPath}/definition/add.action">
-<table>
-	<tr>
-		<td>#text("label.job.name")</td>
-		<td><input type="text" name="definition.name" value="$!def.name"/> </td>
-	</tr>
-	<tr>
-		<td>#text("label.job.jobClass")</td>
-		<td><input type="text"   name="definition.className" value="$!def.className" /></td>
-	</tr>
-	<tr>
-		<td>#text("label.job.description")</td>
-		<td><textarea name="definition.description">$!def.description</textarea></td>
-	</tr>
-</table>
-<input type="hidden" name="definitionName" value="$def.name" />
-<input type="submit" class="submit" name="saveAction" value="#text("label.global.save")"/>
-</form>
-
-#if($edit=="true")
-<h3>#text("label.definitions.params")</h3>
-<h3>#text("title.createDefinitionJob.params")  
-</h3>
-<form name="parameterForm" method="post" action="${req.contextPath}/definition/addParameter.action">
-<table>
-	<tr>
-		<td>#text("label.job.parameter.name")</td>
-		<td>#text("label.job.parameter.description")</td>
-
-		<td>#text("label.job.parameter.required")</td>
-	</tr>
-<tr>
-	<td><input type="hidden" name="definitionName" value="${def.name}"/><input type="text" name="parameter.name"/></td>
-	<td><input type="text" name="parameter.description"/></td>
-	<td><input type="checkbox" value="true" name="parameter.required"/><input type="submit" class="submit" name="cmdAddParameter" value="#text("label.add.parameter")"/></td>
-</tr>
-#set ($params = $def.parameters)
-#foreach ($p in $params)
-    <tr>
-    	<td>$p.name:  </td>
-    	<td>$p.description</td>
-    	<td>$p.required  <a href="${req.contextPath}/definition/removeParameter.action?definitionName=${def.name}&parameter.name=${p.name}">#text("label.global.remove")</a></td>
-    </tr>
-#end
-</table>
-</form>
-#end
-
-

webapp/webroot/WEB-INF/vm/layout/msg.vm

-#fieldErrors()
-
-   #if( $fieldErrors.size() > 0 )
-	<p>
-	<font color="red">
-	<b>ERRORS:</b><br>
-	<ul>
-	#foreach( $error in $fieldErrors )
-		<li>$error</li>
-	#end
-	</ul>
-	</font>
-	</p>
-   #end
-#set($msg = "you suck")
-
-message=$msg
-${req.contextPath}

webapp/webroot/WEB-INF/vm/layout/nav.vm

-
-<table width="145" height="100%" class="nav" border="0" cellspacing="0" cellpadding="0">
-	<tr>
-		<td width="142" valign="top">
-		<a href="#urlroot()/schedule/scheduleControl.action">Schedule Control</a>
-		<td width="3" >&nbsp;</td>
-	</tr>
-	<tr>
-		<td width="142" valign="top">
-		<a href="#urlroot()/definition/list.action">Job Definitions</a>
-		<td width="3" >&nbsp;</td>
-	</tr>
-	<tr>
-		<td width="142" valign="top" ><a href="#urlroot()/jobs/createJob.action">Create Job</a></td>
-		<td width="3" >&nbsp;</td>
-	</tr>
-	<tr>
-		<td width="142" valign="top" ><a href="#urlroot()/schedule/listJobs.action">List Jobs</a></td>
-		<td width="3" >&nbsp;</td>
-	</tr>
-	<tr>
-		<td width="142" valign="top" ><a href="#urlroot()/schedule/listTriggers.action">List all Triggers</a></td>
-		<td width="3" >&nbsp;</td>
-	</tr>
-	<tr height="100%">
-		<td width="142" valign="top" >&nbsp;</td>
-		<td width="3" >&nbsp;</td>
-	</tr>
-</table>

webapp/webroot/WEB-INF/vm/msg.vm

-#fieldErrors()

webapp/webroot/WEB-INF/vm/raw.vm

-<xml>
-<html>
-<body>
-<h2>#text("title.raw.heading")</h2>
-<i>#text("title.definitions.hint")</i>
-<a href="${req.contextPath}/definition/view.action">#text("title.createDefinition")</a><br/>
-<textarea cols="60" rows="30" name="content">${xmlResult}</textarea>
-</body>
-</html>
-	

webapp/webroot/WEB-INF/vm/viewJob.vm

-<h1>#text("title.viewJob")</h1>
-<form name="jobDetailForm" method="post" action="viewJobDetail.do">
-<table>
-	<tr>
-		<td>#text("label.job.group")</td>
-		<td><input type="hidden" name="groupName" value="${jobDetail.group}"/>$jobDetail.group</td>
-	</tr>
-	<tr>
-		<td>#text("label.job.name")</td>
-		<td><input type="hidden" name="name" value="${jobDetail.name}">${jobDetail.name}</td>
-	</tr>
-	<tr>
-		<td>#text("label.job.jobClass")</td>
-		<td>${jobDetail.jobClass.name}</td>
-	</tr>
-	<tr>
-		<td>#text("label.job.description")</td>
-		<td>$!{jobDetail.description}</td>
-	</tr>
-	<tr>
-		<td>#text("label.job.recover")</td>
-		<td><input type="checkbox" name="jobDetail.requestsRecovery" value="true" #if($jobDetail.requestsRecovery()) checked="true" #end></td>
-	</tr>
-	<tr>
-		<td>#text("label.job.durable")</td>
-		<td><input type="checkbox" name="jobDetail.durability" value="true"  #if($jobDetail.durable) checked="true" #end></td>
-	</tr>
-</table>
-
-<h3>#text("title.viewJob.listeners")</h3>
-<table>
-</table>
-
-<h3>#text("title.viewJob.variables")</h3>
-<table>
-	<table>
-
-	<tr>
-		<td>#text("label.job.variable.key")</td>
-		<td>#text("label.job.variable.value")</td>
-	</tr>
-	#foreach($key in $jobDetail.jobDataMap.keys)
-	<tr>
-		<td>$key</td>
-		<td>${jobDetail.jobDataMap.getString($key)}</td>
-	</tr>
-	#end
-</table>
-<h3>#text("title.viewJob.triggers")</h3>
-<table>
-	<tr>
-		<td><em>#text("label.global.actions")</em></td>
-		<td>#text("label.trigger.group")</td>
-		<td>#text("label.trigger.name")</td>
-		<td>#text("label.trigger.type")</td>
-		<td>#text("label.trigger.nextFireTime")</td>
-	</tr>
-	#foreach($trigger in $jobTriggers)
-	<tr>
-		<td><a href="${req.contextPath}/schedule/unschedule.action?jobName=$jobDetail.name&jobGroup=$jobDetail.groupName&triggerGroup=$!trigger.triggerGroup&triggerName=$!trigger.triggerName">#text("label.global.unschedule")</a></td>	
-		<td>$trigger.triggerGroup</td>	
-		<td>$trigger.triggerName</td>	
-		<td>$trigger.type</td>	
-		<td>$trigger.nextFireTime</td>	
-		</tr>
-	#end
-</table>
-<h3>#text("label.global.actions")</h3>
- &nbsp;<a href="${req.contextPath}/jobs/editJob.action?jobName=$jobDetail.name&jobGroup=$jobDetail.group">#text("label.global.edit")</a>
- &nbsp;<a href="${req.contextPath}/jobs/deleteJob.action?jobName=$jobDetail.name&jobGroup=$jobDetail.group">#text("label.global.delete")</a>
- &nbsp;<a href="${req.contextPath}/jobs/executeJob.action?jobName=$jobDetail.name&jobGroup=$jobDetail.group">#text("label.global.executenow")</a>
- &nbsp;<a href="${req.contextPath}/schedule/startSchedule.action?jobName=$jobDetail.name&jobGroup=$jobDetail.group">#text("label.global.schedule")</a>
- &nbsp;<a href="${req.contextPath}/schedule/startCronSchedule.action?jobName=$jobDetail.name&jobGroup=$jobDetail.group">#text("label.global.schedule") cron</a>
- &nbsp;<a href="${req.contextPath}/schedule/startUICronSchedule.action?jobName=$jobDetail.name&jobGroup=$jobDetail.group">#text("label.global.schedule") UI</a>
-</form>

webapp/webroot/WEB-INF/vm/welcome.vm

-<div class="heading primary">Welcome to the Quartz web application. </div>
-<p>This application provides a
-sample implement ion of quartz within a servlet environment. For
-additional documentation regarding quartz, refer to
-<a href="http://www.quartzscheduler.com/">http://www.quartzscheduler.com/</a>
-</p>
-<div class="heading primary expanded"><b>Menu Overview</b></div>
-<div class="source" bgcolor="#eeeeee">
-<div class="secondary subheading">Chooser Scheduler</div>
-
-<p>
-Provides a way to choose scheduler provide in quartz.properties and
-start/stop/pause operations.
-</p>
-
-<div class="secondary subheading">Job Definitions</div>
-
-<p>
-Job Definitions provide a way to templating job setup characteristics.
-For instance, by supplying a definition for quartz's NativeJob, a user
-does not have to remember the class for running native executables is
-actually org.quartz.jobs.NativeJob. In addition, a definition provides a
-way of specifying the required/optional parameters for a job. 
-
-e.g. (command, and parameters string for NativeJob).
-</p>
-
-<div class="secondary subheading">Create Job</div>
-<p>
-Create "raw job". Used to create a job with the aid of a job definition.
-After a job is created it may be schedule to run.
-</p>
-
-<div class="secondary subheading">List all jobs</div>
-<p>
-Lists all jobs currently defined in the system. Jobs may be selected and
-schedule from this view. 
-</p>
-
-<div class="secondary subheading">Lists all Triggers</div>
-<p>Lists all triggers for jobs that have been scheduled to execute. </p>
-</div>
-

webapp/webroot/jobs/createDefinedJob.vm

+#set ($def = $jobDefinition)
+<h1>#text("title.createDefinitionJob")</h1>
+<form name="jobDetailForm" method="post" action="${req.contextPath}/jobs/saveDefinedJob.action">
+
+<table>
+	<tr>
+		<td>#text("label.job.group")</td>
+		<td><input type="text" name="jobDetail.group" value="$!jobDetail.group"/></td>
+	</tr>
+	<tr>
+		<td>#text("label.job.name")</td>
+		<td><input type="text" name="jobDetail.name" value="$!jobDetail.name"/> </td>
+	</tr>
+	<tr>
+		<td>#text("label.job.jobClass")</td>
+		<td><input type="text" name="className" size="27" value="$!{jobDefinition.className}" /></td>
+	</tr> 																			##  put one or the other
+	<tr>
+		<td>#text("label.job.description")</td>
+		<td><textarea name="jobDetail.description">#text("jobDefintions.description")</textarea></td>
+	</tr>
+	<tr>
+		<td>#text("label.job.recover")</td>
+		<td><input type="checkbox" name="jobDetail.requestsRecovery" value="true" checked="true" /></td>
+	</tr>
+	<tr>
+		<td>#text("label.job.durable")</td>
+		<td><input type="checkbox" name="jobDetail.durability" value="true" checked="true" /></td>
+	</tr>
+</table>
+
+<h3>#text("title.createJob.listeners")</h3>
+<table>
+</table>
+
+<h3>#text("title.createDefinitionJob.params")</h3>
+<table>
+	<tr>
+		<td>#text("label.job.parameter.name")</td>
+		<td>#text("label.job.parameter.value")</td>
+		<td>#text("label.job.parameter.required")</td>
+	</tr>
+#set ($params = $def.parameters)
+#foreach ($p in $params)
+    <tr>
+    	<td>$p.name: <input type="hidden" name="parameterNames" value="$p.name"/>  </td>
+    	<td><input type="text" name="parameterValues"/></td>
+    	<td>$p.required</td>
+    </tr>
+#end
+    #foreach($key in $jobDetail.jobDataMap.keys)
+	<tr>
+		<td><input type="text" name="parameterNames" value="$key"/></td>
+		<td><input type="text" name="parameterValues" value="${jobDetail.jobDataMap.getString($key)}"/></td>
+	</tr>
+     #end
+</table>
+<input type="hidden" name="definitionName" value="$def.name" />
+<input type="submit"  class="submit" name="saveAction" value="#text("label.global.save")"/>
+<form>
+
+

webapp/webroot/jobs/createJob.vm

+#set ($def = $jobDefinition)
+<h1>#text("title.createJob")</h1>
+<form name="jobDetailForm" method="post" action="${req.contextPath}/jobs/saveJob.action">
+<table>
+	<tr>
+		<td>#text("label.job.group")</td>
+		<td><input type="text" id="q" name="jobDetail.group" value="$!jobDetail.group"/></td>
+	</tr>
+	<tr>
+		<td>#text("label.job.name")</td>
+		<td><input type="text" name="jobDetail.name" value="$!jobDetail.name"/> </td>
+	</tr>
+	<tr>
+		<td>#text("label.job.jobClass")</td>
+		
+		<td><input type="text" name="className" value="$!{className}$!{jobDetail.jobClass.name}" /></td>
+	</tr> 																			##  put one or the other
+	<tr>
+		<td>#text("label.job.description")</td>
+		<td><textarea name="jobDetail.description">$!jobDetail.description</textarea></td>
+	</tr>
+	<tr>
+		<td>#text("label.job.recover")</td>
+		<td><input type="checkbox" name="jobDetail.requestsRecovery" value="true" #if($jobDetail.requestsRecovery()) checked="true" #end /></td>
+	</tr>
+	<tr>
+		<td>#text("label.job.durable")</td>
+		<td><input type="checkbox" name="jobDetail.durability" value="true"  #if($jobDetail.durable) checked="true" #end /></td>
+	</tr>
+</table>
+
+<h3>#text("title.createJob.listeners")</h3>
+<!-- todo add job listener functionality -->
+<table>
+</table>
+
+<h3>#text("title.createDefinitionJob.params")</h3>
+<table>
+	<tr>
+		<td>#text("label.job.parameter.name")</td>
+		<td>#text("label.job.parameter.value")</td>
+		<td>#text("label.job.parameter.required")</td>
+	</tr>
+#set ($params = $def.parameters)
+#foreach ($p in $params)
+    <tr>
+    	<td>$p.name:  </td>
+    	<td><input type="text" name="param.$p.name"/></td>
+    	<td>$p.required</td>
+    </tr>
+#end
+    #foreach($key in $jobDetail.jobDataMap.keys)
+	<tr>
+		<td><input type="text" name="parameterNames" value="$key"/></td>
+		<td><input type="text" name="parameterValues" value="${jobDetail.jobDataMap.getString($key)}"/></td>
+	</tr>
+	#end
+    <tr>
+    	<td><input type="text" name="parameterNames"/></td>
+    	<td><input type="text" name="parameterValues"/></td>
+    </tr>
+    <tr>
+    	<td><input type="text" name="parameterNames"/></td>
+    	<td><input type="text" name="parameterValues"/></td>
+    </tr>
+</table>
+
+<input type="hidden" name="definitionName" value="$def.name" />
+<input type="submit"  class="submit" name="saveAction" value="#text("label.global.save")"/>
+</form>

webapp/webroot/jobs/definition/createDefinedJob.vm

+#set ($def = $jobDefinition)
+<h1>#text("title.createDefinitionJob")</h1>
+<form name="jobDetailForm" method="post" action="${req.contextPath}/jobs/saveDefinedJob.action">
+
+<table>
+	<tr>
+		<td>#text("label.job.group")</td>
+		<td><input type="text" name="jobDetail.group" value="$!jobDetail.group"/></td>
+	</tr>
+	<tr>
+		<td>#text("label.job.name")</td>
+		<td><input type="text" name="jobDetail.name" value="$!jobDetail.name"/> </td>
+	</tr>
+	<tr>
+		<td>#text("label.job.jobClass")</td>
+		<td><input type="text" name="className" size="27" value="$!{jobDefinition.className}" /></td>
+	</tr> 																			##  put one or the other
+	<tr>
+		<td>#text("label.job.description")</td>
+		<td><textarea name="jobDetail.description">#text("jobDefintions.description")</textarea></td>
+	</tr>
+	<tr>
+		<td>#text("label.job.recover")</td>
+		<td><input type="checkbox" name="jobDetail.requestsRecovery" value="true" checked="true" /></td>
+	</tr>
+	<tr>
+		<td>#text("label.job.durable")</td>
+		<td><input type="checkbox" name="jobDetail.durability" value="true" checked="true" /></td>
+	</tr>
+</table>
+
+<h3>#text("title.createJob.listeners")</h3>
+<table>
+</table>
+
+<h3>#text("title.createDefinitionJob.params")</h3>
+<table>
+	<tr>
+		<td>#text("label.job.parameter.name")</td>
+		<td>#text("label.job.parameter.value")</td>
+		<td>#text("label.job.parameter.required")</td>
+	</tr>
+#set ($params = $def.parameters)
+#foreach ($p in $params)
+    <tr>
+    	<td>$p.name: <input type="hidden" name="parameterNames" value="$p.name"/>  </td>
+    	<td><input type="text" name="parameterValues"/></td>
+    	<td>$p.required</td>
+    </tr>
+#end
+    #foreach($key in $jobDetail.jobDataMap.keys)
+	<tr>
+		<td><input type="text" name="parameterNames" value="$key"/></td>
+		<td><input type="text" name="parameterValues" value="${jobDetail.jobDataMap.getString($key)}"/></td>
+	</tr>
+     #end
+</table>
+<input type="hidden" name="definitionName" value="$def.name" />
+<input type="submit"  class="submit" name="saveAction" value="#text("label.global.save")"/>
+<form>
+
+

webapp/webroot/jobs/definition/definitions.vm

+<h2>#text("title.definitions.heading")</h2>
+<i>#text("title.definitions.hint")</i><br/>
+<a href="${req.contextPath}/definition/view.action">#text("label.create.definition")</a>
+<a href="${req.contextPath}/definition/raw.action">#text("label.dump")</a>
+<table cellspacing="0" cellpadding="5" width="100%">
+    <tr>
+	<td bgcolor="#eeeeee"><em>#text("label.definitions.actions")</em></td>
+        <td bgcolor="#eeeeee">#text("label.definitions.name")</td>
+        <td bgcolor="#eeeeee">#text("label.definitions.description")</td>
+        <td bgcolor="#eeeeee">#text("label.definitions.class")</td>
+        <td bgcolor="#eeeeee">#text("label.definitions.params")</td>      
+   </tr>
+    #set( $definitions = $definitionManager.definitions )
+    #foreach ($def in $definitions)
+    <tr>
+        <td bgcolor="#eeeeee" nowrap="true"><a href="${req.contextPath}/jobs/createDefinedJob.action?method=start&definitionName=${def.name}">#text("label.global.createJob")</a>
+        <a href="${req.contextPath}/definition/view.action?definitionName=${def.name}">#text("label.global.edit")</a>
+        <a onclick="javascript:return confirm('#text("label.confirm.deleteDefinition")');" href="${req.contextPath}/definition/delete.action?definitionName=${def.name}">#text("label.global.delete")</a>
+        </td>
+        <td bgcolor="#eeeeee">$def.name</td>
+        <td bgcolor="#eeeeee">$def.description</td>
+        <td bgcolor="#eeeeee">$def.className</td>
+        <td bgcolor="#eeeeee">
+        #set( $params = $def.getParameters() )
+        #foreach ($p in $params)
+            <li>$p.name: #text("label.global.required")=$p.required </li>
+        #end
+        </td>
+    </tr>
+    #end
+</table>
+</center>

webapp/webroot/jobs/definition/edit.vm

+#set ($def = $definition)
+#if($def.name.length() > 0)
+<h1>#text("title.createDefinition")"</h1>
+	#set($edit="true")
+#else
+<h1>#text("title.createDefinition")</h1>
+#end
+<form name="definitionForm" method="post" action="${req.contextPath}/definition/add.action">
+<table>
+	<tr>
+		<td>#text("label.job.name")</td>
+		<td><input type="text" name="definition.name" value="$!def.name"/> </td>
+	</tr>
+	<tr>
+		<td>#text("label.job.jobClass")</td>
+		<td><input type="text"   name="definition.className" value="$!def.className" /></td>
+	</tr>
+	<tr>
+		<td>#text("label.job.description")</td>
+		<td><textarea name="definition.description">$!def.description</textarea></td>
+	</tr>
+</table>
+<input type="hidden" name="definitionName" value="$def.name" />
+<input type="submit" class="submit" name="saveAction" value="#text("label.global.save")"/>
+</form>
+
+#if($edit=="true")
+<h3>#text("label.definitions.params")</h3>
+<h3>#text("title.createDefinitionJob.params")  
+</h3>
+<form name="parameterForm" method="post" action="${req.contextPath}/definition/addParameter.action">
+<table>
+	<tr>
+		<td>#text("label.job.parameter.name")</td>
+		<td>#text("label.job.parameter.description")</td>
+
+		<td>#text("label.job.parameter.required")</td>
+	</tr>
+<tr>
+	<td><input type="hidden" name="definitionName" value="${def.name}"/><input type="text" name="parameter.name"/></td>
+	<td><input type="text" name="parameter.description"/></td>
+	<td><input type="checkbox" value="true" name="parameter.required"/><input type="submit" class="submit" name="cmdAddParameter" value="#text("label.add.parameter")"/></td>
+</tr>
+#set ($params = $def.parameters)
+#foreach ($p in $params)
+    <tr>
+    	<td>$p.name:  </td>
+    	<td>$p.description</td>
+    	<td>$p.required  <a href="${req.contextPath}/definition/removeParameter.action?definitionName=${def.name}&parameter.name=${p.name}">#text("label.global.remove")</a></td>
+    </tr>
+#end
+</table>
+</form>
+#end
+
+

webapp/webroot/jobs/definition/raw.vm

+<xml>
+<html>
+<body>
+<h2>#text("title.raw.heading")</h2>
+<i>#text("title.definitions.hint")</i>
+<a href="${req.contextPath}/definition/view.action">#text("title.createDefinition")</a><br/>
+<textarea cols="60" rows="30" name="content">${xmlResult}</textarea>
+</body>
+</html>
+	

webapp/webroot/jobs/listAllJobs.jsp

+<%@ taglib uri="/WEB-INF/tlds/c.tld" prefix="c" %>
+<%@ taglib uri="/WEB-INF/tlds/fmt.tld" prefix="fmt" %>
+<%@ taglib uri="/WEB-INF/tlds/displaytag-el-12.tld" prefix="display" %>
+<%@ taglib uri="/WEB-INF/tlds/webwork.tld" prefix="ww" %>
+
+<ww:set name="jobz" value="jobs" scope="request" />
+
+<h1><fmt:message key="title.listAllJobs"/></h1>
+<!--decorator="org.quartz.ui.Decorator"  -->
+<display:table name="jobz" class="simple" id="row" >
+  <display:column  titleKey="label.global.actions" > 
+  		<c:url var="viewurl" value="/jobs/viewJob.action">
+			<c:param name="jobName" value="${row.name}"/>
+  			<c:param name="jobGroup" value="${row.group}"/>
+		</c:url>   
+		<c:url var="editurl" value="/jobs/editJob.action">
+			<c:param name="jobName" value="${row.name}"/>
+  			<c:param name="jobGroup" value="${row.group}"/>
+		</c:url>   
+  		<c:url var="exeurl" value="/jobs/executeJob.action">
+			<c:param name="jobName" value="${row.name}"/>
+  			<c:param name="jobGroup" value="${row.group}"/>
+  			<c:param name="executeJobAction" value="execute"/>
+		</c:url>   
+	<a href='<c:out value="${viewurl}"/>'><fmt:message key="label.global.view"/></a> |
+	<a href='<c:out value="${editurl}"/>'><fmt:message key="label.global.edit"/></a> |
+	<a href='<c:out value="${exeurl}"/>'><fmt:message key="label.global.execute"/></a> &nbsp;  
+  </display:column> 
+
+  <display:column property="group" titleKey="label.job.group" sortable="true"   />
+  <display:column property="name" titleKey="label.job.name" sortable="true"  />
+  <display:column property="description" titleKey="label.job.description" />
+  <display:column property="jobClass" titleKey="label.job.jobClass" sortable="true"  />
+
+</display:table>

webapp/webroot/jobs/viewJob.vm

+<h1>#text("title.viewJob")</h1>
+<form name="jobDetailForm" method="post" action="viewJobDetail.do">
+<table>
+	<tr>
+		<td>#text("label.job.group")</td>
+		<td><input type="hidden" name="groupName" value="${jobDetail.group}"/>$jobDetail.group</td>
+	</tr>
+	<tr>
+		<td>#text("label.job.name")</td>
+		<td><input type="hidden" name="name" value="${jobDetail.name}">${jobDetail.name}</td>
+	</tr>
+	<tr>
+		<td>#text("label.job.jobClass")</td>
+		<td>${jobDetail.jobClass.name}</td>
+	</tr>
+	<tr>
+		<td>#text("label.job.description")</td>
+		<td>$!{jobDetail.description}</td>
+	</tr>
+	<tr>
+		<td>#text("label.job.recover")</td>
+		<td><input type="checkbox" name="jobDetail.requestsRecovery" value="true" #if($jobDetail.requestsRecovery()) checked="true" #end></td>
+	</tr>
+	<tr>
+		<td>#text("label.job.durable")</td>
+		<td><input type="checkbox" name="jobDetail.durability" value="true"  #if($jobDetail.durable) checked="true" #end></td>
+	</tr>
+</table>
+
+<h3>#text("title.viewJob.listeners")</h3>
+<table>
+</table>
+
+<h3>#text("title.viewJob.variables")</h3>
+<table>
+	<table>
+
+	<tr>
+		<td>#text("label.job.variable.key")</td>
+		<td>#text("label.job.variable.value")</td>
+	</tr>
+	#foreach($key in $jobDetail.jobDataMap.keys)
+	<tr>
+		<td>$key</td>
+		<td>${jobDetail.jobDataMap.getString($key)}</td>
+	</tr>
+	#end
+</table>
+<h3>#text("title.viewJob.triggers")</h3>
+<table>
+	<tr>
+		<td><em>#text("label.global.actions")</em></td>
+		<td>#text("label.trigger.group")</td>
+		<td>#text("label.trigger.name")</td>
+		<td>#text("label.trigger.type")</td>
+		<td>#text("label.trigger.nextFireTime")</td>
+	</tr>
+	#foreach($trigger in $jobTriggers)
+	<tr>
+		<td><a href="${req.contextPath}/schedule/unschedule.action?jobName=$jobDetail.name&jobGroup=$jobDetail.groupName&triggerGroup=$!trigger.triggerGroup&triggerName=$!trigger.triggerName">#text("label.global.unschedule")</a></td>	
+		<td>$trigger.triggerGroup</td>	
+		<td>$trigger.triggerName</td>	
+		<td>$trigger.type</td>	
+		<td>$trigger.nextFireTime</td>	
+		</tr>
+	#end
+</table>
+<h3>#text("label.global.actions")</h3>
+ &nbsp;<a href="${req.contextPath}/jobs/editJob.action?jobName=$jobDetail.name&jobGroup=$jobDetail.group">#text("label.global.edit")</a>
+ &nbsp;<a href="${req.contextPath}/jobs/deleteJob.action?jobName=$jobDetail.name&jobGroup=$jobDetail.group">#text("label.global.delete")</a>
+ &nbsp;<a href="${req.contextPath}/jobs/executeJob.action?jobName=$jobDetail.name&jobGroup=$jobDetail.group">#text("label.global.executenow")</a>
+ &nbsp;<a href="${req.contextPath}/schedule/startSchedule.action?jobName=$jobDetail.name&jobGroup=$jobDetail.group">#text("label.global.schedule")</a>
+ &nbsp;<a href="${req.contextPath}/schedule/startCronSchedule.action?jobName=$jobDetail.name&jobGroup=$jobDetail.group">#text("label.global.schedule") cron</a>
+ &nbsp;<a href="${req.contextPath}/schedule/startUICronSchedule.action?jobName=$jobDetail.name&jobGroup=$jobDetail.group">#text("label.global.schedule") UI</a>
+</form>

webapp/webroot/logon.vm

 <table cellspacing="0" cellpadding="5" >
     <tr>
 	<td bgcolor="#eeeeee"><em>#text("label.username")</em></td>
-        <td bgcolor="#eeeeee"><input type="text" name="j_username" /></td>
+        <td bgcolor="#eeeeee"><input type="text" name="j_username" value="$!j_username" /></td>
    </tr>
    <tr>
 		<td bgcolor="#eeeeee"><em>#text("label.password")</em></td>
 		<td bgcolor="#eeeeee"><input type="submit" value="#text("label.signin")"> </em></td>
         <td bgcolor="#eeeeee"></td>
    </tr>
-
 </table>
 </form>
 </center>
 	try {
 		document.loginForm.j_username.focus()
 	} catch (e) {
+		alert('could set focus');
 	}
 </script>

webapp/webroot/schedule/chooseScheduler.vm

+<html>
+	<head>
+		<script language="JavaScript">
+			function submitForm(cmd) {
+				//alert(cmd);
+				document.getElementById("command").value=cmd;
+				document.getElementById("frmChooseScheduler").submit();
+			}
+		</script>
+	</head>
+#set ($scheduler = ${scheduleInfo.scheduler})
+<form id="frmChooseScheduler" name="chooseSchedulerForm" method="post" action="${base}/schedule/scheduleControl.action">
+<input type="hidden" id="command" name="command" value=""/>
+<table>
+	<tr>
+		<td width="200">#text("label.scheduler")</td>
+		<td>
+		<select id="schedulerName" name="schedulerName" onchange="submit()">
+			#foreach($schedule in $scheduleInfo.schedulers)
+				<option id="$schedule.schedulerName" value="$schedule.schedulerName">$schedule.schedulerName</option>
+			#end
+		</select>
+		</td>
+	</tr>
+	<tr/>
+	<tr>
+		<td>#text("label.scheduler.schedulerName")</td><td>$!{scheduler.schedulerName}</td>
+	</tr>
+	<tr>
+		<td>#text("label.scheduler.state")</td><td>$!{scheduler.state}</td>
+	</tr>
+	<tr>
+		<td>#text("label.scheduler.runningSince")</td><td>$!{scheduler.runningSince}</td>
+	</tr>
+	<tr>
+		<td>#text("label.scheduler.numJobsExecuted")</td><td>$!{scheduler.numJobsExecuted}</td>
+	</tr>
+	<tr>
+		<td>#text("label.scheduler.persistenceType")</td><td>$!{scheduler.persistenceType}</td>
+	</tr>
+	<tr>
+		<td>#text("label.scheduler.threadPoolSize")</td><td>$!{scheduler.threadPoolSize}</td>
+	</tr>
+	<tr>
+		<td>#text("label.scheduler.version")</td><td>$!{scheduler.version}</td>
+	</tr>
+	<tr/>
+<table>	
+<table>
+	<tr>
+		<td width="30">
+		 <input type="image"  value="start" src="${base}/icons/Play24.gif" alt="Start Scheduler" onclick="submitForm(this.value)" border="0"/> 
+		</td>
+		<td width="30">
+		 <input type="image" value="pause" src="${base}/icons/Pause24.gif"  alt="Pause Scheduler" onclick="submitForm(this.value)" border="0"/> 
+		<td width="30">
+		 <input type="image" value="stop" src="${base}/icons/Stop24.gif"  alt="Stop Scheduler" onclick="submitForm(this.value)" border="0"/> 
+		</td>
+		<td width="30">
+		 <input type="image" value="waitAndStopScheduler" src="${base}/icons/Stop24.gif"   alt="Stop scheduler (wait for jobs to complete)" onclick="submitForm(this.value)" border="0"/> 
+		</td>
+	</tr>
+</table>
+#text("title.chooseScheduler.setCurrentScheduler"): <input type="submit" class="submit" value="set" property="btnSetSchedulerAsCurrent"/>
+</form>
+
+<hr/>
+#text("title.chooseScheduler.executingJobs")
+<table><tr>
+<td>#text("label.job.group")</td>
+<td>#text("label.job.name")</td>
+<td>#text("label.job.description")</td>
+<td>#text("label.job.jobClass")</td>
+</tr>
+#foreach($job in $scheduleInfo.executingJobs)
+	<tr>
+		<td>${job.groupName}</td>
+		<td>${job.name}</td>
+		<td>${job.description}</td>
+		<td>${job.jobClass}</td>
+	</tr>
+#end
+</table>
+<table>
+	<tr>
+		<td width="30">
+			<img src="$base/icons/Pause24.gif" value="btnPauseAllJobs" alt="Pause all jobs"/>
+		</td>
+		<td width="30">
+			<img src="$base/icons/Play24.gif" value="btnResumeAllJobs" alt="Resume all jobs"/>
+		</td>
+	</tr>
+</table>
+<hr/>
+<p>#text("label.scheduler.summary"): <i><pre>$!{scheduler.summary}</pre></i></p>
+</html>

webapp/webroot/schedule/createCronTrigger.vm

+<form action="${req.contextPath}/schedule/cronSchedule.action">
+<h1>#text("title.schedule.cron")</h1>
+<input type="hidden" name="jobName" value="$!{jobName}" />
+<input type="hidden" name="jobGroup" value="$!jobGroup"/>
+<table>
+	<tr>
+		<td>#text("label.trigger.group")</td>
+		<td><input type="text" name="triggerGroup" value="$triggerGroup"/></td>
+		<td><i>#text("hint.trigger.group")</i></td>
+	</tr>
+	<tr>
+		<td>#text("label.trigger.name")</td>
+		<td><input type="text" name="triggerName" value="$triggerName"/></td>
+		<td><i>#text("hint.trigger.name")</i></td>
+	</tr>
+	<tr>
+		<td>#text("label.trigger.description")</td>
+		<td><textarea rows="5" cols="50" name="description">$description</textarea></td>
+		<td></td>
+	</tr>
+	<tr>
+		<td>#text("label.trigger.startTime")</td>
+		<td><input type="text" name="startTime" value="$startTime"/></td>
+		<td><i>#text("hint.trigger.startTime")</i></td>
+	</tr>
+	<tr>
+		<td>#text("label.trigger.stopTime")</td>
+		<td><input type="text" name="stopTime" value="$stopTime"/></td>
+		<td><i>#text("hint.trigger.stopTime")</i></td>
+	</tr>
+	<tr>
+		<td>#text("label.trigger.cronExpression")</td>
+		<td><input type="text" name="cronExpression" value="$cronExpression"/></td>
+		<td><i>#text("hint.trigger.cronExpression")</i></td>
+	</tr>
+	<!--<tr>
+		<td>#text("label.trigger.timeZone")</td>
+		<td><input type="text" name="timeZone" value="$timeZone"/></td>
+		<td><i>#text("hint.trigger.timeZone")</i></td>
+	</tr>-->
+<!--
+    <tr>
+        <td>volatility</td><td><input type="checkbox" name="volatility"/></td><td><i></i></td>
+    </tr>
+-->
+</table>
+<input type="submit" value="#text("label.global.schedule")"/>
+<form>
+#include("/WEB-INF/jsp/cronExpressionHelp.htm")
+

webapp/webroot/schedule/createSimpleTrigger.vm

+<form name="jobDetailForm" method="post" action="${req.contextPath}/schedule/simpleSchedule.action">
+<h1>#text("title.desc")</em> </h1>
+	<input type="hidden" name="jobName" value="$jobName">
+	<input type="hidden" name="jobGroup" value="$jobGroup">
+<table>
+	<tr>
+		<td>#text("label.trigger.group")</td>
+		<td><input type="text" name="triggerGroup" value="$!triggerGroup"/></td>
+		<td><i>#text("hint.trigger.group")</i></td>
+	</tr>
+	<tr>
+		<td>#text("label.trigger.name")</td>
+		<td><input type="text" name="triggerName" value="$!{triggerName}"/></td>
+		<td><i>#text("hint.trigger.name")</i></td>
+	</tr>
+	<tr>
+		<td>#text("label.trigger.description")</td>
+		<td><textarea rows="5" cols="50"  name="description">$!description</textarea></td>
+		<td></td>
+	</tr>
+	<tr>
+		<td>#text("label.trigger.startTime")</td>
+		<td><input type="text" name="startTime" value="$!startTime"/></td>
+		<td><i>#text("hint.trigger.startTime")</i></td>
+	</tr>
+	<tr>
+		<td>#text("label.trigger.stopTime")</td>
+		<td><input type="text" name="stopTime" value="$!stopTime"/></td>
+		<td><i>#text("hint.trigger.stopTime")</i></td>
+	</tr>
+	<tr>
+		<td>#text("label.trigger.repeatCount")</td>
+		<td><input type="text" name="repeatCount" value="$!repeatCount"/></td>
+		<td><i>#text("hint.trigger.repeatCount")</i></td>
+	</tr>
+	<tr>
+		<td>#text("label.trigger.repeatInterval")</td>
+		<td><input type="text" name="repeatInterval" value="$!repeatInterval"/></td>
+		<td><i>#text("hint.trigger.repeatInterval")</i></td>
+	</tr>
+</table>
+
+<input type="submit" value="#text("label.global.schedule")" />
+
+</form>
+
+

webapp/webroot/schedule/createUICronTrigger.vm

+#set ($trig = $trigger)
+#set ($daysOfWeekVals = $trigger.daysOfWeekValues)
+#set ($dayLabels = $trigger.daysOfWeekLabels)
+
+<form name="UICronTriggerForm" method="post" action="${base}/schedule/uiCronSchedule.action")>
+<h1>#text("title.schedule.cron")</h1>
+<input type="hidden" name="jobName" value="$jobName"/>
+<input type="hidden" name="jobGroup" value="$jobGroup"/>
+<table>
+      <tr class="listHeading"><td colspan="2">&nbsp;</td></tr>
+    	<tr>
+		<td>#text("label.trigger.group")</td>
+		<td><input type="text" name="trigger.group" value="$!trigger.group"/></td>
+		<td><i>#text("hint.trigger.group")</i></td>
+	</tr>
+	<tr>
+		<td>#text("label.trigger.name")</td>
+		<td><input type="text" name="trigger.name" value="$!trigger.name"/></td>
+		<td><i>#text("hint.trigger.name")</i></td>
+	</tr>
+    <tr class="listHeading"><td colspan="2">&nbsp;</td></tr>
+    <tr class="listRowUnshaded">
+      <td width="80">#text("label.date")</td>
+      <td align="center">
+	#select("trigger.daysOfWeek" 2  $daysOfWeekVals $dayLabels)
+	#select("trigger.daysOfMonth" 2  $trig.daysOfMonthValues $trig.daysOfMonthLabels)
+	#select("trigger.months" 2  $trig.monthsValues $trig.monthsLabels)
+      <select name="trigger.years" size="5" multiple="true" >
+        #foreach ($year in $trig.yearsLabels)
+            <option value="$year" #if("$v"=="$s") selected="selected"#end>$year</option>
+        #end
+    </select>                                                                                  
+    </td>
+    <td valign="top">
+            #text("label.dayorweek")
+    </td>
+    </tr>
+    <tr class="listRowShaded">
+      <td width="80">#text("label.time")</td>
+      <td colspan="2" align="left">
+  ##select( "trigger.hours"   $trig.hours $trig.hoursValues $trig.hoursLabels   )
+	  <select name="trigger.hours" size="5" multiple="true"> 
+		#foreach($label in $trig.hoursLabels)
+			#set($index = $velocityCount - 1)
+			<option value="$stack.findValue("trigger.hoursValues[${index}]")">$label </option>
+		#end
+	  </select>
+	  <select name="trigger.minutes" size="5" multiple="true"> 
+		#foreach($label in $trig.minutesLabels)
+			#set($index = $velocityCount - 1)
+			<option value="$stack.findValue("trigger.minutesValues[${index}]")">$label </option>
+		#end
+	   </select>	
+	##select( "trigger.minutes"   $trig.minutes $trig.minutesLabels $trig.minutesValues   )
+      </td>
+    </tr>
+    </tr>
+</table>
+<input type="submit" value="#text("label.global.schedule")" name="scheduleAction"/>

webapp/webroot/schedule/cronExpressionHelp.htm

+<p>For those unfamiliar with "cron", this means being able to create a
+ firing schedule such as:  "At 8:00am every Monday through Friday" or
+ "At 1:30am every last Friday of the month".</p>
+
+<p>A "Cron-Expression" is a string comprised of 6 or 7 fields separated by
+ white space. The 6 mandatory and 1 optional fields are as follows:<br>
+
+ <table cellspacing="8">
+   <tr>
+     <th align="left">Field Name</th>
+     <th align="left">&nbsp;</th>
+     <th align="left">Allowed Values</th>
+     <th align="left">&nbsp;</th>
+     <th align="left">Allowed Special Characters</th>
+   </tr>
+   <tr>
+     <td align="left"><code>Seconds</code></td>
+     <td align="left">&nbsp;</th>
+     <td align="left"><code>0-59</code></td>
+     <td align="left">&nbsp;</th>
+     <td align="left"><code>, - * /</code></td>
+   </tr>
+   <tr>
+     <td align="left"><code>Minutes</code></td>
+     <td align="left">&nbsp;</th>
+     <td align="left"><code>0-59</code></td>
+     <td align="left">&nbsp;</th>
+     <td align="left"><code>, - * /</code></td>
+   </tr>
+   <tr>
+     <td align="left"><code>Hours</code></td>
+     <td align="left">&nbsp;</th>
+     <td align="left"><code>0-23</code></td>
+     <td align="left">&nbsp;</th>
+     <td align="left"><code>, - * /</code></td>
+   </tr>