Blob Blame History Raw
<?cs include:"header.cs"?>
<?cs include:"macros.cs"?>
<div id="ctxtnav" class="nav"></div>
<div id="content" class="milestone">
<?cs if:milestone.mode == "new" ?>
<h1>New Milestone</h1>
<?cs elif:milestone.mode == "edit" ?>
<h1>Edit Milestone <?cs var:milestone.name ?></h1>
<?cs elif:milestone.mode == "delete" ?>
<h1>Delete Milestone <?cs var:milestone.name ?></h1>
<?cs else ?>
<h1>Milestone <?cs var:milestone.name ?></h1>
<?cs /if ?>
<?cs if:milestone.mode == "edit" || milestone.mode == "new" ?>
<script type="text/javascript">
addEvent(window, 'load', function() {
document.getElementById('name').focus();
});
</script>
<form id="edit" action="<?cs var:milestone.href ?>" method="post">
<input type="hidden" name="id" value="<?cs var:milestone.name ?>" />
<input type="hidden" name="action" value="edit" />
<div class="field">
<label>Name of the milestone:<br />
<input type="text" id="name" name="name" size="32" value="<?cs
var:milestone.name ?>" /></label>
</div>
<fieldset>
<legend>Schedule</legend>
<label>Due:<br />
<input type="text" id="duedate" name="duedate" size="<?cs
var:len(milestone.date_hint) ?>" value="<?cs
var:milestone.due_date ?>" title="Format: <?cs var:milestone.date_hint ?>" />
<em>Format: <?cs var:milestone.date_hint ?></em>
</label>
<div class="field">
<label>
<input type="checkbox" id="completed" name="completed"<?cs
if:milestone.completed ?> checked="checked"<?cs /if ?> />
Completed:<br />
</label>
<label>
<input type="text" id="completeddate" name="completeddate" size="<?cs
var:len(milestone.date_hint) ?>" value="<?cs
alt:milestone.completed_date ?><?cs
var:milestone.datetime_now ?><?cs
/alt ?>" title="Format: <?cs
var:milestone.datetime_hint ?>" />
<em>Format: <?cs var:milestone.datetime_hint ?></em>
</label><?cs
if:len(milestones) ?>
<br/>
<input type="checkbox" id="retarget" name="retarget" checked="checked"
onclick="enableControl('target', this.checked)"/>
<label>
Retarget associated open tickets to milestone
<select id="target" name="target">
<option value="">None</option><?cs
each:name = milestones ?>
<option><?cs var:name ?></option><?cs
/each ?>
</select>
</label><?cs
/if ?>
<script type="text/javascript">
var completed = document.getElementById("completed");
var retarget = document.getElementById("retarget");
var enableCompletedDate = function() {
enableControl("completeddate", completed.checked);
enableControl("retarget", completed.checked);
enableControl("target", completed.checked && retarget.checked);
};
addEvent(window, "load", enableCompletedDate);
addEvent(completed, "click", enableCompletedDate);
</script>
</div>
</fieldset>
<div class="field">
<fieldset class="iefix">
<label for="description">Description (you may use <a tabindex="42" href="<?cs
var:trac.href.wiki ?>/WikiFormatting">WikiFormatting</a> here):</label>
<p><textarea id="description" name="description" class="wikitext" rows="10" cols="78">
<?cs var:milestone.description_source ?></textarea></p>
</fieldset>
</div>
<div class="buttons">
<?cs if:milestone.mode == "new"
?><input type="submit" value="Add milestone" /><?cs
else
?><input type="submit" value="Submit changes" /><?cs
/if ?>
<input type="submit" name="cancel" value="Cancel" />
</div>
<script type="text/javascript" src="<?cs
var:htdocs_location ?>js/wikitoolbar.js"></script>
</form>
<?cs elif:milestone.mode == "delete" ?>
<form action="<?cs var:milestone.href ?>" method="post">
<input type="hidden" name="id" value="<?cs var:milestone.name ?>" />
<input type="hidden" name="action" value="delete" />
<p><strong>Are you sure you want to delete this milestone?</strong></p>
<input type="checkbox" id="retarget" name="retarget" checked="checked"
onclick="enableControl('target', this.checked)"/>
<label for="target">Retarget associated tickets to milestone</label>
<select name="target" id="target">
<option value="">None</option><?cs
each:other = milestones ?><?cs if:other != milestone.name ?>
<option><?cs var:other ?></option><?cs
/if ?><?cs /each ?>
</select>
<div class="buttons">
<input type="submit" name="cancel" value="Cancel" />
<input type="submit" value="Delete milestone" />
</div>
</form>
<?cs else ?>
<?cs if:milestone.mode == "view" ?>
<div class="info">
<p class="date"><?cs
if:milestone.completed_date ?>
Completed <?cs var:milestone.completed_delta ?> ago (<?cs var:milestone.completed_date ?>)<?cs
elif:milestone.due_date ?><?cs
if:milestone.late ?>
<strong><?cs var:milestone.due_delta ?> late</strong><?cs
else ?>
Due in <?cs var:milestone.due_delta ?><?cs
/if ?> (<?cs var:milestone.due_date ?>)<?cs
else ?>
No date set<?cs
/if ?>
</p><?cs
with:stats = milestone.stats ?><?cs
if:#stats.total_tickets > #0 ?>
<table class="progress">
<tr>
<td class="closed" style="width: <?cs
var:#stats.percent_closed ?>%">
<a href="<?cs
var:milestone.queries.closed_tickets ?>" title="<?cs
var:#stats.closed_tickets ?> of <?cs
var:#stats.total_tickets ?> ticket<?cs
if:#stats.total_tickets != #1 ?>s<?cs /if ?> closed"></a></td>
<td class="open" style="width: <?cs
var:#stats.percent_active ?>%">
<a href="<?cs
var:milestone.queries.active_tickets ?>" title="<?cs
var:#stats.active_tickets ?> of <?cs
var:#stats.total_tickets ?> ticket<?cs
if:#stats.total_tickets != #1 ?>s<?cs /if ?> active"></a>
</tr>
</table>
<p class="percent"><?cs var:#stats.percent_closed ?>%</p>
<dl>
<dt>Closed tickets:</dt>
<dd><a href="<?cs var:milestone.queries.closed_tickets ?>"><?cs
var:stats.closed_tickets ?></a></dd>
<dt>Active tickets:</dt>
<dd><a href="<?cs var:milestone.queries.active_tickets ?>"><?cs
var:stats.active_tickets ?></a></dd>
</dl><?cs
/if ?><?cs
/with ?>
</div>
<form id="stats" action="" method="get">
<fieldset>
<legend>
<label for="by">Ticket status by</label>
<select id="by" name="by" onchange="this.form.submit()"><?cs
each:group = milestone.stats.available_groups ?>
<option value="<?cs var:group.name ?>" <?cs
if:milestone.stats.grouped_by == group.name ?> selected="selected"<?cs
/if ?>><?cs var:group.label ?></option><?cs
/each ?></select>
<noscript><input type="submit" value="Update" /></noscript>
</legend>
<table summary="Shows the milestone completion status grouped by <?cs
var:milestone.stats.grouped_by ?>"><?cs
each:group = milestone.stats.groups ?>
<tr>
<th scope="row"><a href="<?cs
var:group.queries.all_tickets ?>"><?cs var:group.name ?></a></th>
<td style="white-space: nowrap"><?cs if:#group.total_tickets ?>
<table class="progress" style="width: <?cs
var:#group.percent_total * #80 / #milestone.stats.max_percent_total ?>%">
<tr>
<td class="closed" style="width: <?cs
var:#group.percent_closed ?>%"><a href="<?cs
var:group.queries.closed_tickets ?>" title="<?cs
var:group.closed_tickets ?> of <?cs
var:group.total_tickets ?> ticket<?cs
if:group.total_tickets != #1 ?>s<?cs /if ?> closed"></a>
</td>
<td class="open" style="width: <?cs
var:#group.percent_active ?>%"><a href="<?cs
var:group.queries.active_tickets ?>" title="<?cs
var:group.active_tickets ?> of <?cs
var:group.total_tickets ?> ticket<?cs
if:group.total_tickets != 1 ?>s<?cs /if ?> active"></a>
</td>
</tr>
</table>
<p class="percent"><?cs var:group.closed_tickets ?>/<?cs
var:group.total_tickets ?></p>
<?cs /if ?></td>
</tr><?cs
/each ?>
</table><?cs /if ?>
</fieldset>
</form>
<div class="description"><?cs var:milestone.description ?></div><?cs
if:trac.acl.MILESTONE_MODIFY || trac.acl.MILESTONE_DELETE ?>
<div class="buttons"><?cs
if:trac.acl.MILESTONE_MODIFY ?>
<form method="get" action=""><div>
<input type="hidden" name="action" value="edit" /><?cs
if:milestone.id_param ?>
<input type="hidden" name="id" value="<?cs var:milestone.name ?>" /><?cs
/if ?>
<input type="submit" value="Edit milestone info" accesskey="e" />
</div></form><?cs
/if ?><?cs
if:trac.acl.MILESTONE_DELETE ?>
<form method="get" action=""><div>
<input type="hidden" name="action" value="delete" /><?cs
if:milestone.id_param ?>
<input type="hidden" name="id" value="<?cs var:milestone.name ?>" /><?cs
/if ?>
<input type="submit" value="Delete milestone" />
</div></form><?cs
/if ?>
</div><?cs
/if ?><?cs
/if ?>
<div id="help">
<strong>Note:</strong> See <a href="<?cs
var:trac.href.wiki ?>/TracRoadmap">TracRoadmap</a> for help on using the roadmap.
</div>
</div>
<?cs include:"footer.cs"?>