aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'template/en/custom/bug/comments.html.tmpl')
-rw-r--r--template/en/custom/bug/comments.html.tmpl262
1 files changed, 262 insertions, 0 deletions
diff --git a/template/en/custom/bug/comments.html.tmpl b/template/en/custom/bug/comments.html.tmpl
new file mode 100644
index 000000000..ede273a51
--- /dev/null
+++ b/template/en/custom/bug/comments.html.tmpl
@@ -0,0 +1,262 @@
+[%# This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ #
+ # This Source Code Form is "Incompatible With Secondary Licenses", as
+ # defined by the Mozilla Public License, v. 2.0.
+ #%]
+
+[% 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');
+ if (textarea.value != replytext) {
+ textarea.value += replytext;
+ }
+
+ textarea.focus();
+ }
+//-->
+</script>
+
+[% DEFAULT mode = "show" %]
+[% user_cache = template_cache.users %]
+[% can_edit_comments = bug.check_can_change_field('longdesc', 0, 1) %]
+[% can_tag_comments = feature_enabled('jsonrpc') AND user.can_tag_comments %]
+
+<!-- This auto-sizes the comments and positions the collapse/expand links
+ to the right. -->
+<!--<table class="bz_comment_table">-->
+<!--<tr>-->
+<!--<td>-->
+
+<div class="row">
+
+[% PROCESS display_comments %]
+
+[% IF mode == "edit" && user.id
+ && user.settings.comment_box_position.value == "before_comments" %]
+ <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") %]
+
+</div>
+
+<!--</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 Param('comment_taggers_group') %]-->
+ <!--<li><div id="comment_tags_collapse_expand_container"></div></li>-->
+ <!--[% END %]-->
+ <!--[% 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 display_comments %]
+ [% FOREACH comment = comments %]
+ [% NEXT IF comment.is_private AND NOT (user.is_insider || user.id == comment.author.id) %]
+ [% comment_text = comment.body_full %]
+ [% NEXT IF comment_text == '' AND (comment.work_time - 0) != 0 AND !user.is_timetracker %]
+
+ <div id="c[% comment.count %]" class="panel panel-default bz_comment[% " bz_private" IF comment.is_private %]
+ [% " bz_default_collapsed" IF comment.collapsed %]
+ [% " bz_comment_hilite" IF marks.${comment.count} %]
+ [% " bz_first_comment" IF comment.count == 0 %]" style="padding:0px;">
+ [% IF comment.count == 0 %]
+ [% class_name = "bz_first_comment_head" %]
+ [% comment_label = "Description" %]
+ [% ELSE %]
+ [% class_name = "bz_comment_head" %]
+ [% comment_label = "Comment " _ comment.count %]
+ [% END %]
+
+ <div class="panel-heading [% class_name FILTER html %]">
+
+ <div class="row">
+ <div class="col-sm-8">
+
+
+ <div class="row">
+ <div class="col-sm-12">
+ <span class="bz_comment_user" style="color:#000!important;">
+ [%# No need to recreate the exact same template if we already have it. %]
+ [% commenter_id = comment.author.id %]
+ [% UNLESS user_cache.$commenter_id %]
+ [% user_cache.$commenter_id = BLOCK %]
+ [% INCLUDE global/user.html.tmpl who = comment.author %]
+ [% END %]
+ [% END %]
+ [% user_cache.$commenter_id FILTER none %]
+ </span>
+ <span class="bz_comment_user_images">
+ [% FOREACH group = comment.author.groups_with_icon %]
+ <img src="[% group.icon_url FILTER html %]"
+ alt="[% group.name FILTER html %]"
+ title="[% group.name FILTER html %] - [% group.description FILTER html %]">
+ [% END %]
+ </span>
+ </div>
+ <div class="col-sm-12">
+ <span style="margin-right:2px;">
+ <a style="color:#505050; font-weight: normal;" href="#c[% comment.count %]">
+ [%- comment_label FILTER html %]</a>
+ </span>
+ <span style="color:#505050;">•</span>
+ <span class="bz_comment_time" style="color:#505050; font-weight: normal;margin-left:2px;">
+ [%+ comment.creation_ts FILTER time %]
+ </span>
+
+ </div>
+ </div>
+
+ </div>
+
+ <div class="col-sm-4">
+
+ [% IF mode == "edit" %]
+ <span class="bz_comment_actions">
+ [% IF comment.collapsed %]
+ <span class="bz_collapsed_actions">
+ [% END %]
+ [% IF can_edit_comments %]
+ [% IF can_tag_comments %]
+ <a href="#" class="btn btn-default btn-xs" style="background:transparent;color:#505050;border:none;"
+ onclick="YAHOO.bugzilla.commentTagging.toggle([% comment.id %], [% comment.count %]);return false"><i class="fa fa-tag" aria-hidden="true"></i></a>
+ [% END %]
+ <a class="bz_reply_link btn btn-default btn-xs" href="#add_comment" style="background:transparent;color:#505050;border:none;"
+ [% IF user.settings.quote_replies.value != 'off' %]
+ onclick="replyToComment('[% comment.count %]', '[% comment.id %]', '[% comment.author.name || comment.author.nick FILTER html FILTER js %]'); return false;"
+ [% END %]
+ ><i class="fa fa-reply" aria-hidden="true"></i></a>
+ [% END %]
+ [% IF comment.collapsed %]
+ </span>
+ [% END %]
+ <script type="text/javascript">
+ addCollapseLink([% comment.count %], [% comment.collapsed FILTER js %], 'Toggle comment display');
+ </script>
+ </span>
+ [% ELSIF comment.collapsed %]
+ <span class="bz_comment_actions">
+ <script type="text/javascript">
+ addCollapseLink([% comment.count %], [% comment.collapsed FILTER js %], 'Toggle comment display');
+ </script>
+ </span>
+ [% END %]
+
+
+ </div>
+ </div>
+
+
+
+ [% IF mode == "edit" && can_edit_comments && 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, [% comment.count %])"
+ [% " checked=\"checked\"" IF comment.is_private %]>
+ <label for="isprivate_[% comment.id %]">Private</label>
+ </div>
+ [% END %]
+
+
+ [% IF comment.collapsed %]
+ <span id="cr[% comment.count %]" class="bz_comment_collapse_reason"
+ title="[% comment.author.name || comment.author.login FILTER html %]
+ [%~ %] [[% comment.creation_ts FILTER time %]]">
+ Comment hidden ([% comment.tags.join(', ') FILTER html %])
+ </span>
+ [% END %]
+ </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 %]
+
+ [% IF user.id && Param('comment_taggers_group') %]
+ <div id="comment_tag_[% comment.count FILTER html %]"
+ class="bz_comment_tags">
+ <span id="ct_[% comment.count %]"
+ class="[% 'bz_default_hidden' UNLESS comment.tags.size %]">
+ [% IF comment.tags.size %]
+ <script>
+ YAHOO.bugzilla.commentTagging.showTags([% comment.id FILTER none %],
+ [% comment.count FILTER none %], [
+ [% FOREACH tag = comment.tags %]
+ [%~%]'[% tag FILTER js %]'[% "," UNLESS loop.last %]
+ [% END %]
+ [%~%]]);
+ </script>
+ [% END %]
+ </span>
+ </div>
+ [% END %]
+
+[%# Don't indent the <pre> block, since then the spaces are displayed in the
+ # generated HTML
+ #%]
+<div class="panel-body bz_comment_text[% " collapsed" IF comment.collapsed %]"
+ [% IF mode == "edit" || comment.collapsed %]
+ id="comment_text_[% comment.count FILTER none %]"
+ [% END %]>
+ [%- comment_text FILTER quoteUrls(bug, comment) -%]
+</div>
+ [% Hook.process('a_comment-end', 'bug/comments.html.tmpl') %]
+ </div>
+ [% END %]
+[% END %]