| <?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: |
| <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: |
| <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: |
| <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"?> |