File: //usr/lib/python3/dist-packages/trac/ticket/templates/milestone_edit_form.html
{# Copyright (C) 2006-2021 Edgewall Software
This software is licensed as described in the file COPYING, which
you should have received as part of this distribution. The terms
are also available at https://trac.edgewall.org/wiki/TracLicense.
This software consists of voluntary contributions made by many
individuals. For the exact contribution history, see the revision
history and logs, available at https://trac.edgewall.org/.
#}
# import 'macros.html' as jmacros with context
<script>
jQuery(function($) {
function updateDueDate() {
$("#duedate").enable($("#due").checked());
}
$("#due").click(updateDueDate);
updateDueDate();
function updateCompletedDate() {
var checked = $("#completed").checked();
$("#completeddate").enable(checked);
var retarget = $("#retarget");
retarget.enable(checked);
$("#target").enable(checked && retarget.checked());
$("#retarget-comment").enable(checked && retarget.checked());
$("#retargeting").toggleClass("disabled", !checked);
}
$("#completed").click(updateCompletedDate);
updateCompletedDate();
$("#retarget").click(function() {
$("#target").enable(this.checked);
$("#retarget-comment").enable(this.checked);
});
$("#description").autoPreview("${href.wiki_render()}", {
realm: "${milestone.resource.realm}",
id: ${to_json(milestone.resource.id)|safe}
}, $("#preview").showOnPreview());
});
</script>
# with
<form id="edit" class="mod" method="post" action="#">
${jmacros.form_token_input()}
# set disabled = 'disabled' if can_modify is sameas false
# set readonly = 'readonly' if can_modify is sameas false
<fieldset>
<legend>
# if readonly:
${_("View Milestone:")}
# elif milestone.name:
${_("Modify Milestone:")}
# else:
${_("Create Milestone:")}
# endif
</legend>
<div class="field">
<input type="hidden" name="action" value="edit"/>
<label>${_("Name:")}<br />{# /!\ #}
## Twill trips up on a <br/> and wouldn't detect the "name" field...
<input type="text" id="name" name="name" class="trac-autofocus"{#
#} size="32"${
{'value': milestone.name or req.args.get('name'),
'readonly': readonly
}|htmlattr}/>
</label>
</div>
<div class="field">
<label>
<input type="checkbox" id="due" name="due"${
{'checked': milestone.due,
'disabled': disabled
}|htmlattr}/>
${_("Due:")}<br/>
</label>
<label${{'class': {'readonly': readonly}}|htmlattr}>
<input type="text" id="duedate" name="duedate"
class="trac-datetimepicker"${
{'size': len(datetime_hint) + 1,
'value': format_datetime(milestone.due or default_due),
'readonly': readonly,
'title': _('Format: %(datehint)s', datehint=datetime_hint)
}|htmlattr}/>
<span class="trac-datetimehint">${
_("Format: %(datehint)s", datehint=datetime_hint)}</span>
</label>
</div>
<div class="field">
<label>
<input type="checkbox" id="completed" name="completed"${
{'checked': milestone.completed,
'disabled': disabled
}|htmlattr}/>
${_("Completed:")}<br/>
</label>
<label${{'class': {'readonly': readonly}}|htmlattr}>
<input type="text" id="completeddate" name="completeddate"
class="trac-datetimepicker"${
{'size': len(datetime_hint) + 1,
'value': format_datetime(milestone.completed),
'readonly': readonly,
'title': _('Format: %(datehint)s', datehint=datetime_hint)
}|htmlattr}/>
<span class="trac-datetimehint">${
_("Format: %(datehint)s", datehint=datetime_hint)}</span>
</label>
</div>
# if num_open_tickets or num_open_tickets == 0:
<fieldset id="retargeting">
<legend>${_("Retargeting")}</legend>
# if num_open_tickets != 0:
<label>
<input type="checkbox" id="retarget" name="retarget"${
{'checked': not milestone.completed}|htmlattr}/>
${_("Retarget associated open tickets to milestone:")}
</label>
<select id="target" name="target">
<option value="">${_("None")}</option>
# for label, milestones in milestone_groups if milestones:
<optgroup label="${label}">
# for milestone in milestones:
<option${{'selected': retarget_to == milestone.name,
'value': milestone.name
}|htmlattr}>${milestone.name}</option>
# endfor
</optgroup>
# endfor
</select>
<br/>
<label for="retarget-comment">${_("Comment:")}</label>
## Don't translate ticket comment (comment:40:ticket:5658)
<input type="text" id="retarget-comment" class="wikitext"
name="comment" size="40"
value="Ticket retargeted after milestone closed"/>
# else:
<p class="help">
${_("There are no open tickets associated with this milestone.")}
</p>
# endif
</fieldset>
# endif
<div class="field description">
<label for="description">${_("Description:")}</label>
<textarea id="description" name="description" rows="8" cols="78"
class="wikitext trac-fullwidth trac-resizable"${
{'readonly': readonly}|htmlattr}>
${milestone.description}</textarea>
<label for="description" class="trac-textarea-hint">
# trans wikiformatting = jmacros.wikiformatting_link()
You may use ${wikiformatting} here.
# endtrans
</label>
</div>
<div id="preview" class="trac-content trac-draft" style="display:none">
</div>
</fieldset>
<div class="buttons">
# if milestone.exists:
<input type="submit" name="save" class="trac-disable-on-submit"${
{'disabled': disabled,
'value': _('Submit changes')
}|htmlattr}/>
# else:
<input type="submit" name="add" value="${_('Add milestone')}"/>
# endif
<input type="submit" name="cancel" value="${_('Cancel')}"/>
</div>
</form>
# endwith