diff options
Diffstat (limited to 'template/en/custom/bug/comments.html.tmpl')
-rw-r--r-- | template/en/custom/bug/comments.html.tmpl | 262 |
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 %] |