forked from extern/django-helpdesk
a162d77d70
( see /help/context/; also linked from comment form) * Refactor API help page to share template with context help * Allow a limited number of Ticket & Queue model fields to be accessible in comments, as per 'Help' page. * New function in lib.py to build a dict of 'safe' fields from ticket & queue, to prevent the power of the Django model API from exposing things like passwords (imagine if a user typed a comment containing {{ ticket.queue.email_box_password }} !!!! * When accessing the ticket list with no filter params (eg by clicking on the "Tickets" button in the menu), the default search is for tickets that aren't closed, rather than showing all tickets. * Updated English locale with changed message strings.
186 lines
9.6 KiB
HTML
186 lines
9.6 KiB
HTML
{% extends "helpdesk/base.html" %}{% load i18n %}
|
|
{% block helpdesk_title %}{% trans "View Ticket Details" %}{% endblock %}
|
|
{% block helpdesk_head %}
|
|
<script src="{{ MEDIA_URL }}/helpdesk/nicEdit.js" type="text/javascript"></script>
|
|
<script type="text/javascript">
|
|
$(document).ready(function() {
|
|
nic = new nicEditor({buttonList: ['bold','italic','underline','strikeThrough','undo','redo','subscript','superscript','html']}).panelInstance('commentBox');
|
|
$("#ShowFurtherEditOptions").click(function() {
|
|
$("#FurtherEditOptions").fadeIn();
|
|
$("#ShowFurtherOptPara").hide();
|
|
return false;
|
|
});
|
|
|
|
processAddFileClick();
|
|
$("#ShowFileUpload").click(function() {
|
|
$("#FileUpload").fadeIn();
|
|
$("#ShowFileUploadPara").hide();
|
|
return false;
|
|
});
|
|
|
|
$('#id_preset').change(function() {
|
|
preset = $('#id_preset').val();
|
|
if (preset != '') {
|
|
$.get("{% url helpdesk_raw "preset" %}?id=" + preset, function(data) {
|
|
nic.nicInstances[0].setContent(data);
|
|
});
|
|
}
|
|
});
|
|
});
|
|
|
|
function processAddFileClick() {
|
|
/* Until jQuery includes some 'livequery' functionality in the core
|
|
distribution, this will have to do. */
|
|
$(".AddAnotherFile>a").click(function() {
|
|
$(this).parent().hide();
|
|
$("#FileUpload>dl").append("<dt><label>{% trans "Attach another File" %}</label></dt><dd><input type='file' name='attachment' id='file' /> <span class='AddAnotherFile'>(<a href='#'>{% trans "Add Another File" %}</a>)</span></dd>");
|
|
processAddFileClick();
|
|
return false;
|
|
});
|
|
|
|
}
|
|
</script>
|
|
{% endblock %}
|
|
|
|
{% block helpdesk_body %}
|
|
|
|
<table width='100%'>
|
|
<tr class='row_tablehead'><td>{{ ticket.id }}. {{ ticket.title }} [{{ ticket.get_status }}]</td><td align='right'><a href='#edit'><img src='{{ MEDIA_URL }}/helpdesk/buttons/edit.png' alt='Edit' title='Edit' width='60' height='15' /></a><a href='{% url helpdesk_delete ticket.id %}'><img src='{{ MEDIA_URL }}/helpdesk/buttons/delete.png' alt='Delete' title='Delete' width='60' height='15' /></a>{% if ticket.on_hold %}<a href='unhold/'>{% trans "Unhold" %}</a>{% else %}<a href='hold/'>{% trans "Hold" %}</a>{% endif %}</td></tr>
|
|
<tr class='row_columnheads'><th colspan='2'>{% blocktrans with ticket.queue as queue %}Queue: {{ queue }}{% endblocktrans %}</th></tr>
|
|
|
|
<tr class='row_odd'>
|
|
<th>{% trans "Submitted On" %}</th>
|
|
<td>{{ ticket.created|date:"r" }} ({{ ticket.created|timesince }} ago)</td>
|
|
</tr>
|
|
|
|
<tr class='row_even'>
|
|
<th>{% trans "Assigned To" %}</th>
|
|
<td>{{ ticket.get_assigned_to }}{% ifequal ticket.get_assigned_to _('Unassigned') %} <strong><a href='?take'><span class='button button_take'>{% trans "Take" %}</span></a></strong>{% endifequal %}</td>
|
|
</tr>
|
|
|
|
<tr class='row_odd'>
|
|
<th>{% trans "Submitter E-Mail" %}</th>
|
|
<td>{{ ticket.submitter_email }}</td>
|
|
</tr>
|
|
|
|
<tr class='row_even'>
|
|
<th>{% trans "Priority" %}</th>
|
|
<td>{{ ticket.get_priority_display }}</td>
|
|
</tr>
|
|
|
|
<tr class='row_odd'>
|
|
<th colspan='2'>{% trans "Description" %}</th>
|
|
</tr>
|
|
<tr class='row_even'>
|
|
<td colspan='2'>{{ ticket.description|safe }}</td>
|
|
</tr>
|
|
|
|
{% if ticket.resolution %}<tr class='row_odd'>
|
|
<th colspan='2'>{% trans "Resolution" %}{% ifequal ticket.get_status_display "Resolved" %} <a href='?close'><img src='{{ MEDIA_URL }}/helpdesk/buttons/accept.png' alt='{% trans "Accept" %}' title='{% trans "Accept and Close" %}' width='60' height='15' /></a>{% endifequal %}</th>
|
|
</tr>
|
|
<tr class='row_even'>
|
|
<td colspan='2'>{{ ticket.resolution|safe }}</td>
|
|
</tr>{% endif %}
|
|
|
|
</table>
|
|
|
|
{% if ticket.followup_set.all %}
|
|
<h3>{% trans "Follow-Ups" %}</h3>
|
|
{% load ticket_to_link %}
|
|
{% for followup in ticket.followup_set.all %}
|
|
<div class='followup'>
|
|
<div class='title'>{{ followup.title }} <span class='byline'>{% if followup.user %}by {{ followup.user }}{% endif %} <span title='{{ followup.date|date:"r" }}'>{{ followup.date|timesince }} ago</span>{% if not followup.public %} <span class='private'>({% trans "Private" %})</span>{% endif %}</span></div>
|
|
{% if followup.comment %}{{ followup.comment|num_to_link|safe }}{% endif %}
|
|
{% for change in followup.ticketchange_set.all %}
|
|
{% if forloop.first %}<div class='changes'><ul>{% endif %}
|
|
<li>{% blocktrans with change.field as field and change.old_value as old_value and change.new_value as new_value %}Changed {{ field }} from {{ old_value }} to {{ new_value }}.{% endblocktrans %}</li>
|
|
{% if forloop.last %}</div></ul>{% endif %}
|
|
{% endfor %}
|
|
{% for attachment in followup.attachment_set.all %}{% if forloop.first %}<div class='attachments'><ul>{% endif %}
|
|
<li><a href='{{ attachment.get_file_url }}'>{{ attachment.filename }}</a> ({{ attachment.mime_type }}, {{ attachment.size|filesizeformat }})</li>
|
|
{% if forloop.last %}</ul></div>{% endif %}
|
|
{% endfor %}
|
|
</div>
|
|
{% endfor %}
|
|
{% endif %}
|
|
|
|
<h3>{% trans "Respond to this ticket" %}</h3>
|
|
|
|
<form method='post' action='update/' enctype='multipart/form-data'>
|
|
|
|
<fieldset>
|
|
<dl>
|
|
<dt><label for='id_preset'>{% trans "Use a Pre-set Reply" %}</label> <span class='form_optional'>(Optional)</span></dt>
|
|
<dd><select name='preset' id='id_preset'><option value=''>------</option>{% for preset in preset_replies %}<option value='{{ preset.id }}'>{{ preset.name }}</option>{% endfor %}</select></dd>
|
|
<dd class='form_help_text'>{% trans "Selecting a pre-set reply will over-write your comment below. You can then modify the pre-set reply to your liking before saving this update." %}</dd>
|
|
|
|
<dt><label for='commentBox'>{% trans "Comment / Resolution" %}</label></dt>
|
|
<dd><textarea rows='8' cols='70' name='comment' id='commentBox'></textarea></dd>
|
|
<dd class='form_help_text'>{% trans "You can insert ticket and queue details in your message. For more information, see the <a href='../../help/context/'>context help page</a>." %}</dd>
|
|
|
|
<dt><label>{% trans "New Status" %}</label></dt>
|
|
{% ifequal ticket.status 1 %}
|
|
<dd><input type='radio' name='new_status' value='1' id='st_open' checked='checked'><label for='st_open' class='active'>{% trans "Open" %}</label> »
|
|
<input type='radio' name='new_status' value='3' id='st_resolved'><label for='st_resolved'>{% trans "Resolved" %}</label> »
|
|
<input type='radio' name='new_status' value='4' id='st_closed'><label for='st_closed'>{% trans "Closed" %}</label></dd>
|
|
{% endifequal %}
|
|
{% ifequal ticket.status 2 %}
|
|
<dd><input type='radio' name='new_status' value='2' id='st_reopened' checked='checked'><label for='st_reopened' class='active'>{% trans "Reopened" %}</label> »
|
|
<input type='radio' name='new_status' value='3' id='st_resolved'><label for='st_resolved'>{% trans "Resolved" %}</label> »
|
|
<input type='radio' name='new_status' value='4' id='st_closed'><label for='st_closed'>{% trans "Closed" %}</label> </dd>
|
|
{% endifequal %}
|
|
{% ifequal ticket.status 3 %}
|
|
<dd><input type='radio' name='new_status' value='2' id='st_reopened'><label for='st_reopened'>{% trans "Reopened" %}</label> «
|
|
<input type='radio' name='new_status' value='3' id='st_resolved' checked='checked'><label for='st_resolved' class='active'>{% trans "Resolved" %}</label> »
|
|
<input type='radio' name='new_status' value='4' id='st_closed'><label for='st_closed'>{% trans "Closed" %}</label></dd>
|
|
{% endifequal %}
|
|
{% ifequal ticket.status 4 %}
|
|
<dd><input type='radio' name='new_status' value='2' id='st_reopened'><label for='st_reopened'>{% trans "Reopened" %}</label> «
|
|
<input type='radio' name='new_status' value='4' id='st_closed' checked='checked'><label for='st_closed'>{% trans "Closed" %}</label></dd>
|
|
{% endifequal %}
|
|
|
|
<dt><label for='id_public'>{% trans "Is this update public?" %}</label> <span class='form_optional'>(Optional)</span></dt>
|
|
<dd><input type='checkbox' name='public' value='1' checked='checked' /></dD>
|
|
<dd class='form_help_text'>{% trans "If this is public, the submitter will be e-mailed your comment or resolution." %}</dd>
|
|
</dl>
|
|
|
|
<p id='ShowFurtherOptPara'><a href='#' id='ShowFurtherEditOptions'>{% trans "Change Further Details »" %}</a></p>
|
|
|
|
<div id='FurtherEditOptions' style='display: none;'>
|
|
|
|
<dl>
|
|
|
|
<dt><label for='id_title'>{% trans "Title" %}</label></dt>
|
|
<dd><input type='text' name='title' value='{{ ticket.title|escape }}' /></dd>
|
|
|
|
<dt><label for='id_owner'>{% trans "Owner" %}</label></dt>
|
|
<dd><select id='id_owner' name='owner'><option value='0'>{% trans "Unassign" %}</option>{% for u in active_users %}<option value='{{ u.id }}' {% ifequal u.id ticket.assigned_to.id %}selected{% endifequal %}>{{ u }}</option>{% endfor %}</select></dd>
|
|
|
|
<dt><label for='id_priority'>{% trans "Priority" %}</label></dt>
|
|
<dd><select id='id_priority' name='priority'>{% for p in priorities %}<option value='{{ p.0 }}'{% ifequal p.0 ticket.priority %} selected='selected'{% endifequal %}>{{ p.1 }}</option>{% endfor %}</select></dd>
|
|
|
|
</dl>
|
|
|
|
</div>
|
|
|
|
<p id='ShowFileUploadPara'><a href='#' id='ShowFileUpload'>{% trans "Attach File(s) »" %}</a></p>
|
|
|
|
<div id='FileUpload' style='display: none;'>
|
|
|
|
<dl>
|
|
|
|
<dt><label for='id_file'>{% trans "Attach a File" %}</label></dt>
|
|
<dd><input type='file' name='attachment' id='file' /> <span class='AddAnotherFile'>(<a href='#'>{% trans "Add Another File" %}</a>)</span></dd>
|
|
</dl>
|
|
|
|
</div>
|
|
|
|
</fieldset>
|
|
|
|
<input type='submit' value='{% trans "Update This Ticket" %}' />
|
|
|
|
</form>
|
|
|
|
|
|
{% endblock %}
|