r/a=LpSolit git-svn-id: svn://10.0.0.236/trunk@263107 18797224-902f-48f8-a5cc-f745e15eee43
218 lines
7.7 KiB
Cheetah
218 lines
7.7 KiB
Cheetah
[%# The contents of this file are subject to the Mozilla Public
|
|
# License Version 1.1 (the "License"); you may not use this file
|
|
# except in compliance with the License. You may obtain a copy of
|
|
# the License at http://www.mozilla.org/MPL/
|
|
#
|
|
# Software distributed under the License is distributed on an "AS
|
|
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
|
# implied. See the License for the specific language governing
|
|
# rights and limitations under the License.
|
|
#
|
|
# The Original Code is the Bugzilla Bug Tracking System.
|
|
#
|
|
# The Initial Developer of the Original Code is Netscape Communications
|
|
# Corporation. Portions created by Netscape are
|
|
# Copyright (C) 1998 Netscape Communications Corporation. All
|
|
# Rights Reserved.
|
|
#
|
|
# Contributor(s): Gervase Markham <gerv@gerv.net>
|
|
# Max Kanat-Alexander <mkanat@bugzilla.org>
|
|
# Shane H. W. Travis <travis@sedsystems.ca>
|
|
#%]
|
|
|
|
[% PROCESS bug/time.html.tmpl %]
|
|
|
|
<script src="[% 'js/comments.js' FILTER mtime %]" type="text/javascript">
|
|
</script>
|
|
|
|
<script type="text/javascript">
|
|
<!--
|
|
/* Adds the reply text to the `comment' textarea */
|
|
function replyToComment(id, real_id, name) {
|
|
var prefix = "(In reply to " + name + " from comment #" + id + ")\n";
|
|
var replytext = "";
|
|
[% IF user.settings.quote_replies.value == 'quoted_reply' %]
|
|
/* pre id="comment_name_N" */
|
|
var text_elem = document.getElementById('comment_text_'+id);
|
|
var text = getText(text_elem);
|
|
replytext = prefix + wrapReplyText(text);
|
|
[% ELSIF user.settings.quote_replies.value == 'simple_reply' %]
|
|
replytext = prefix;
|
|
[% END %]
|
|
|
|
[% IF user.is_insider %]
|
|
if (document.getElementById('isprivate_' + real_id).checked) {
|
|
document.getElementById('newcommentprivacy').checked = 'checked';
|
|
updateCommentTagControl(document.getElementById('newcommentprivacy'), 'comment');
|
|
}
|
|
[% END %]
|
|
|
|
/* <textarea id="comment"> */
|
|
var textarea = document.getElementById('comment');
|
|
textarea.value += replytext;
|
|
|
|
textarea.focus();
|
|
}
|
|
//-->
|
|
</script>
|
|
|
|
[% DEFAULT start_at = 0 mode = "show" %]
|
|
[% sort_order = user.settings.comment_sort_order.value %]
|
|
|
|
[%# NOTE: (start_at > 0) means we came here from a midair collision,
|
|
# in which case we don't care what the user's preference is.
|
|
%]
|
|
[% IF (start_at > 0) %]
|
|
[% sort_order = "oldest_to_newest" %]
|
|
[% END %]
|
|
|
|
|
|
[%# Set up the variables as needed, depending on the sort order %]
|
|
[% IF sort_order == "oldest_to_newest" %]
|
|
[% count = 0 %]
|
|
[% description = 0 %]
|
|
[% increment = 1 %]
|
|
[% ELSE %]
|
|
[% increment = -1 %]
|
|
[% IF sort_order == "newest_to_oldest" %]
|
|
[% count = comments.size - 1 %]
|
|
[% description = 0 %]
|
|
[% ELSIF sort_order == "newest_to_oldest_desc_first" %]
|
|
[% count = comments.size %]
|
|
[% description = comments.size %]
|
|
[% END %]
|
|
[% END %]
|
|
|
|
<!-- This auto-sizes the comments and positions the collapse/expand links
|
|
to the right. -->
|
|
<table class="bz_comment_table" cellpadding="0" cellspacing="0"><tr>
|
|
<td>
|
|
|
|
[% FOREACH comment = comments %]
|
|
[% IF count >= start_at %]
|
|
[% PROCESS a_comment %]
|
|
[% END %]
|
|
|
|
[% count = count + increment %]
|
|
[% END %]
|
|
|
|
[% IF user.settings.comment_box_position.value == "before_comments" && user.id %]
|
|
<div class="bz_add_comment">
|
|
<a href="#"
|
|
onclick="return goto_add_comments();">
|
|
Add Comment</a>
|
|
</div>
|
|
[% END %]
|
|
|
|
[%# Note: this template is used in multiple places; if you use this hook,
|
|
# make sure you are aware of this fact.
|
|
#%]
|
|
[% Hook.process("aftercomments") %]
|
|
|
|
</td>
|
|
<td>
|
|
[% IF mode == "edit" %]
|
|
<ul class="bz_collapse_expand_comments">
|
|
<li><a href="#" onclick="toggle_all_comments('collapse');
|
|
return false;">Collapse All Comments</a></li>
|
|
<li><a href="#" onclick="toggle_all_comments('expand');
|
|
return false;">Expand All Comments</a></li>
|
|
[% IF user.settings.comment_box_position.value == "after_comments" && user.id %]
|
|
<li class="bz_add_comment"><a href="#"
|
|
onclick="return goto_add_comments('bug_status_bottom');">
|
|
Add Comment</a></li>
|
|
[% END %]
|
|
</ul>
|
|
[% END %]
|
|
</td>
|
|
</tr></table>
|
|
|
|
[%############################################################################%]
|
|
[%# Block for individual comments #%]
|
|
[%############################################################################%]
|
|
|
|
[% BLOCK a_comment %]
|
|
[% RETURN IF comment.is_private AND NOT (user.is_insider || user.id == comment.author.id) %]
|
|
[% comment_text = comment.body_full %]
|
|
[% RETURN IF comment_text == '' AND (comment.work_time - 0) != 0 AND !user.is_timetracker %]
|
|
|
|
<div id="c[% count %]" class="bz_comment[% " bz_private" IF comment.is_private %]
|
|
[% " bz_comment_hilite" IF marks.$count %]
|
|
[% " bz_first_comment" IF count == description %]">
|
|
[% IF count == description %]
|
|
[% class_name = "bz_first_comment_head" %]
|
|
[% comment_label = "Description" %]
|
|
[% ELSE %]
|
|
[% class_name = "bz_comment_head" %]
|
|
[% comment_label = "Comment " _ count %]
|
|
[% END %]
|
|
|
|
<div class="[% class_name FILTER html %]">
|
|
|
|
[% IF mode == "edit" %]
|
|
<span class="bz_comment_actions">
|
|
[<a class="bz_reply_link" href="#add_comment"
|
|
[% IF user.settings.quote_replies.value != 'off' %]
|
|
onclick="replyToComment('[% count %]', '[% comment.id %]', '[% comment.author.name || comment.author.nick FILTER html FILTER js %]'); return false;"
|
|
[% END %]
|
|
>reply</a>]
|
|
<script type="text/javascript"><!--
|
|
addCollapseLink([% count %]); // -->
|
|
</script>
|
|
</span>
|
|
[% END %]
|
|
|
|
[% IF mode == "edit" && user.is_insider %]
|
|
<div class="bz_private_checkbox">
|
|
<input type="hidden" value="1"
|
|
name="defined_isprivate_[% comment.id %]">
|
|
<input type="checkbox"
|
|
name="isprivate_[% comment.id %]" value="1"
|
|
id="isprivate_[% comment.id %]"
|
|
onClick="updateCommentPrivacy(this, [% count %])"
|
|
[% " checked=\"checked\"" IF comment.is_private %]>
|
|
<label for="isprivate_[% comment.id %]">Private</label>
|
|
</div>
|
|
[% END %]
|
|
|
|
<span class="bz_comment_number">
|
|
<a
|
|
href="show_bug.cgi?id=[% bug.bug_id %]#c[% count %]">
|
|
[%- comment_label FILTER html %]</a>
|
|
</span>
|
|
|
|
<span class="bz_comment_user">
|
|
[% INCLUDE global/user.html.tmpl who = comment.author %]
|
|
</span>
|
|
|
|
<span class="bz_comment_user_images">
|
|
[% FOREACH group = comment.author.groups %]
|
|
[% NEXT UNLESS group.icon_url %]
|
|
<img src="[% group.icon_url FILTER html %]"
|
|
alt="[% group.name FILTER html %]"
|
|
title="[% group.name FILTER html %] - [% group.description FILTER html %]">
|
|
[% END %]
|
|
</span>
|
|
|
|
<span class="bz_comment_time">
|
|
[%+ comment.creation_ts FILTER time %]
|
|
</span>
|
|
</div>
|
|
|
|
[% IF user.is_timetracker &&
|
|
(comment.work_time > 0 || comment.work_time < 0) %]
|
|
<br>
|
|
Additional hours worked:
|
|
[% PROCESS formattimeunit time_unit=comment.work_time %]
|
|
[% END %]
|
|
|
|
[%# Don't indent the <pre> block, since then the spaces are displayed in the
|
|
# generated HTML
|
|
#%]
|
|
<pre class="bz_comment_text"
|
|
[% ' id="comment_text_' _ count _ '"' IF mode == "edit" %]>
|
|
[%- comment_text FILTER quoteUrls(bug, comment) -%]
|
|
</pre>
|
|
</div>
|
|
[% END %]
|