|
|
<%text>
|
|
|
<div style="display: none">
|
|
|
|
|
|
<script>
|
|
|
var CG = new ColorGenerator();
|
|
|
</script>
|
|
|
|
|
|
<script id="ejs_gravatarWithUser" type="text/template" class="ejsTemplate">
|
|
|
|
|
|
<%
|
|
|
if (size > 16) {
|
|
|
var gravatar_class = 'gravatar gravatar-large';
|
|
|
} else {
|
|
|
var gravatar_class = 'gravatar';
|
|
|
}
|
|
|
|
|
|
if (tooltip) {
|
|
|
var gravatar_class = gravatar_class + ' tooltip-hovercard';
|
|
|
}
|
|
|
|
|
|
var data_hovercard_alt = username;
|
|
|
|
|
|
%>
|
|
|
|
|
|
<%
|
|
|
if (show_disabled) {
|
|
|
var user_cls = 'user user-disabled';
|
|
|
} else {
|
|
|
var user_cls = 'user';
|
|
|
}
|
|
|
var data_hovercard_url = pyroutes.url('hovercard_user', {"user_id": user_id})
|
|
|
%>
|
|
|
|
|
|
<div class="rc-user">
|
|
|
<img class="<%= gravatar_class %>" height="<%= size %>" width="<%= size %>" data-hovercard-url="<%= data_hovercard_url %>" data-hovercard-alt="<%= data_hovercard_alt %>" src="<%- gravatar_url -%>">
|
|
|
<span class="<%= user_cls %>"> <%- user_link -%> </span>
|
|
|
</div>
|
|
|
|
|
|
</script>
|
|
|
|
|
|
<script id="ejs_reviewMemberEntry" type="text/template" class="ejsTemplate">
|
|
|
<%
|
|
|
if (create) {
|
|
|
var edit_visibility = 'visible';
|
|
|
} else {
|
|
|
var edit_visibility = 'hidden';
|
|
|
}
|
|
|
|
|
|
if (member.user_group && member.user_group.vote_rule) {
|
|
|
var reviewGroup = '<i class="icon-user-group"></i>';
|
|
|
var reviewGroupColor = CG.asRGB(CG.getColor(member.user_group.vote_rule));
|
|
|
} else {
|
|
|
var reviewGroup = null;
|
|
|
var reviewGroupColor = 'transparent';
|
|
|
}
|
|
|
var rule_show = rule_show || false;
|
|
|
|
|
|
if (rule_show) {
|
|
|
var rule_visibility = 'table-cell';
|
|
|
} else {
|
|
|
var rule_visibility = 'none';
|
|
|
}
|
|
|
|
|
|
%>
|
|
|
|
|
|
<tr id="reviewer_<%= member.user_id %>" class="reviewer_entry" tooltip="Review Group" data-reviewer-user-id="<%= member.user_id %>">
|
|
|
|
|
|
<td style="width: 20px">
|
|
|
<div class="tooltip presence-state" style="display: none; position: absolute; left: 2px" title="This users is currently at this page">
|
|
|
<i class="icon-eye" style="color: #0ac878"></i>
|
|
|
</div>
|
|
|
<% if (role === 'reviewer') { %>
|
|
|
<div class="reviewer_status tooltip" title="<%= review_status_label %>">
|
|
|
<i class="icon-circle review-status-<%= review_status %>"></i>
|
|
|
</div>
|
|
|
<% } else if (role === 'observer') { %>
|
|
|
<div class="tooltip" title="Observer without voting right.">
|
|
|
<i class="icon-circle-thin"></i>
|
|
|
</div>
|
|
|
<% } %>
|
|
|
</td>
|
|
|
|
|
|
<td>
|
|
|
<div id="reviewer_<%= member.user_id %>_name" class="reviewer_name">
|
|
|
<%-
|
|
|
renderTemplate('gravatarWithUser', {
|
|
|
'size': 16,
|
|
|
'show_disabled': false,
|
|
|
'tooltip': true,
|
|
|
'username': member.username,
|
|
|
'user_id': member.user_id,
|
|
|
'user_link': member.user_link,
|
|
|
'gravatar_url': member.gravatar_link
|
|
|
})
|
|
|
%>
|
|
|
</div>
|
|
|
</td>
|
|
|
|
|
|
<td style="width: 10px">
|
|
|
<% if (reviewGroup !== null) { %>
|
|
|
<span class="tooltip" title="Member of review group from rule: `<%= member.user_group.name %>`" style="color: <%= reviewGroupColor %>">
|
|
|
<%- reviewGroup %>
|
|
|
</span>
|
|
|
<% } %>
|
|
|
</td>
|
|
|
|
|
|
<% if (mandatory) { %>
|
|
|
<td style="text-align: right;width: 10px;">
|
|
|
<div class="reviewer_member_mandatory tooltip" title="Mandatory reviewer">
|
|
|
<i class="icon-lock"></i>
|
|
|
</div>
|
|
|
</td>
|
|
|
|
|
|
<% } else { %>
|
|
|
<td style="text-align: right;width: 10px;">
|
|
|
<% if (allowed_to_update) { %>
|
|
|
<div class="<%=role %>_member_remove" onclick="reviewersController.removeMember(<%= member.user_id %>, true)" style="visibility: <%= edit_visibility %>;">
|
|
|
<i class="icon-remove"></i>
|
|
|
</div>
|
|
|
<% } %>
|
|
|
</td>
|
|
|
<% } %>
|
|
|
|
|
|
</tr>
|
|
|
|
|
|
<tr id="reviewer_<%= member.user_id %>_rules">
|
|
|
<td colspan="4" style="display: <%= rule_visibility %>" class="pr-user-rule-container">
|
|
|
<input type="hidden" name="__start__" value="reviewer:mapping">
|
|
|
|
|
|
<%if (member.user_group && member.user_group.vote_rule) { %>
|
|
|
<div class="reviewer_reason">
|
|
|
|
|
|
<%if (member.user_group.vote_rule == -1) {%>
|
|
|
- group votes required: ALL
|
|
|
<%} else {%>
|
|
|
- group votes required: <%= member.user_group.vote_rule %>
|
|
|
<%}%>
|
|
|
</div>
|
|
|
<%} %>
|
|
|
|
|
|
<input type="hidden" name="__start__" value="reasons:sequence">
|
|
|
<% for (var i = 0; i < reasons.length; i++) { %>
|
|
|
<% var reason = reasons[i] %>
|
|
|
<div class="reviewer_reason">- <%= reason %></div>
|
|
|
<input type="hidden" name="reason" value="<%= reason %>">
|
|
|
<% } %>
|
|
|
<input type="hidden" name="__end__" value="reasons:sequence">
|
|
|
|
|
|
<input type="hidden" name="__start__" value="rules:sequence">
|
|
|
<% for (var i = 0; i < member.rules.length; i++) { %>
|
|
|
<% var rule = member.rules[i] %>
|
|
|
<input type="hidden" name="rule_id" value="<%= rule %>">
|
|
|
<% } %>
|
|
|
<input type="hidden" name="__end__" value="rules:sequence">
|
|
|
|
|
|
<input id="reviewer_<%= member.user_id %>_input" type="hidden" value="<%= member.user_id %>" name="user_id" />
|
|
|
<input type="hidden" name="mandatory" value="<%= mandatory %>"/>
|
|
|
<input type="hidden" name="role" value="<%= role %>"/>
|
|
|
|
|
|
<input type="hidden" name="__end__" value="reviewer:mapping">
|
|
|
</td>
|
|
|
</tr>
|
|
|
|
|
|
</script>
|
|
|
|
|
|
<script id="ejs_commentVersion" type="text/template" class="ejsTemplate">
|
|
|
|
|
|
<%
|
|
|
if (size > 16) {
|
|
|
var gravatar_class = 'gravatar gravatar-large';
|
|
|
} else {
|
|
|
var gravatar_class = 'gravatar';
|
|
|
}
|
|
|
|
|
|
%>
|
|
|
|
|
|
<%
|
|
|
if (show_disabled) {
|
|
|
var user_cls = 'user user-disabled';
|
|
|
} else {
|
|
|
var user_cls = 'user';
|
|
|
}
|
|
|
|
|
|
%>
|
|
|
|
|
|
<div style='line-height: 20px'>
|
|
|
<img style="margin: -3px 0" class="<%= gravatar_class %>" height="<%= size %>" width="<%= size %>" src="<%- gravatar_url -%>">
|
|
|
<strong><%- user_name -%></strong>, <code>v<%- version -%></code> edited <%- timeago_component -%>
|
|
|
</div>
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
<script id="ejs_sideBarCommentHovercard" type="text/template" class="ejsTemplate">
|
|
|
|
|
|
<div>
|
|
|
<% if (is_todo) { %>
|
|
|
<% if (inline) { %>
|
|
|
<strong>Inline</strong> TODO on line: <%= line_no %>
|
|
|
<% if (version_info) { %>
|
|
|
<%= version_info %>
|
|
|
<% } %>
|
|
|
<br/>
|
|
|
File: <code><%- file_name -%></code>
|
|
|
<% } else { %>
|
|
|
<% if (review_status) { %>
|
|
|
<i class="icon-circle review-status-<%= review_status %>"></i>
|
|
|
<% } %>
|
|
|
<strong>General</strong> TODO
|
|
|
<% if (version_info) { %>
|
|
|
<%= version_info %>
|
|
|
<% } %>
|
|
|
<% } %>
|
|
|
<% } else { %>
|
|
|
<% if (inline) { %>
|
|
|
<strong>Inline</strong> comment on line: <%= line_no %>
|
|
|
<% if (version_info) { %>
|
|
|
<%= version_info %>
|
|
|
<% } %>
|
|
|
<br/>
|
|
|
File: <code><%- file_name -%></code>
|
|
|
<% } else { %>
|
|
|
<% if (review_status) { %>
|
|
|
<i class="icon-circle review-status-<%= review_status %>"></i>
|
|
|
<% } %>
|
|
|
<strong>General</strong> comment
|
|
|
<% if (version_info) { %>
|
|
|
<%= version_info %>
|
|
|
<% } %>
|
|
|
<% } %>
|
|
|
<% } %>
|
|
|
<br/>
|
|
|
Created:
|
|
|
<time class="timeago" title="<%= created_on %>" datetime="<%= datetime %>"><%= $.timeago(datetime) %></time>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</script>
|
|
|
|
|
|
<script id="ejs_commentHelpHovercard" type="text/template" class="ejsTemplate">
|
|
|
|
|
|
<div>
|
|
|
Use <strong>@username</strong> mention syntax to send direct notification to this RhodeCode user.<br/>
|
|
|
Typing / starts autocomplete for certain action, e.g set review status, or comment type. <br/>
|
|
|
<br/>
|
|
|
Use <strong>Cmd/ctrl+enter</strong> to submit comment, or <strong>Shift+Cmd/ctrl+enter</strong> to submit a draft.<br/>
|
|
|
<br/>
|
|
|
<strong>Draft comments</strong> are private to the author, and trigger no notification to others.<br/>
|
|
|
They are permanent until deleted, or converted to regular comments.<br/>
|
|
|
<br/>
|
|
|
<br/>
|
|
|
</div>
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
##// END OF EJS Templates
|
|
|
</div>
|
|
|
|
|
|
|
|
|
<script>
|
|
|
// registers the templates into global cache
|
|
|
registerTemplates();
|
|
|
</script>
|
|
|
|
|
|
</%text>
|
|
|
|