##// END OF EJS Templates
fix(caching): fixed problems with Cache query for users....
fix(caching): fixed problems with Cache query for users. The old way of querying caused the user get query to be always cached, and returning old results even in 2fa forms. The new limited query doesn't cache the user object resolving issues

File last commit:

r5362:f6cf8552 default
r5365:ae8a165b default
Show More
templates.html
293 lines | 9.1 KiB | text/html | HtmlLexer
<%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 %>">
<% if (create) { %>
<td style="width: 1px"></td>
<% } else { %>
<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>
<% } %>
<% 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" style="color: #e85e4d;"></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>
<% if (reviewGroup !== null) { %>
<span class="tooltip" title="Member of review group from rule: `<%= member.user_group.name %>`" style="color: <%= reviewGroupColor %>">
<%- reviewGroup %>
</span>
<% } %>
</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 (<code>#<%- comment_id -%></code>) 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 (<code>#<%- comment_id -%></code>)
<% if (version_info) { %>
<%= version_info %>
<% } %>
<% } %>
<% } else { %>
<% if (inline) { %>
<strong>Inline</strong> comment (<code>#<%- comment_id -%></code>) 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 (<code>#<%- comment_id -%></code>)
<% if (version_info) { %>
<%= version_info %>
<% } %>
<% } %>
<% } %>
<br/>
Created:
<time class="timeago" title="<%= created_on %>" datetime="<%= datetime %>"><%= $.timeago(datetime) %></time>
<% if (is_todo) { %>
<div style="text-align: left; padding-top: 5px">
<a class="btn btn-sm" href="#resolveTodo<%- comment_id -%>" onclick="Rhodecode.comments.resolveTodo(this, '<%- comment_id -%>'); return false">
<strong>Resolve TODO</strong>
</a>
</div>
<% } %>
</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>
<script id="ejs_submoduleHovercard" type="text/template" class="ejsTemplate">
<strong>Submodule Node</strong><br/>
<pre><%= submodule_url %></pre>
</script>
<script id="ejs_recoveryCodes" type="text/template" class="ejsTemplate">
<code>
<ol>
<% for (var i = 0; i < recoveryCodes.length; i++) { %>
<% var code = recoveryCodes[i] %>
<li><%= code %></li>
<% } %>
</ol>
</code>
<i class="icon-clipboard clipboard-action" data-clipboard-text="<%= recoveryCodes %>" >Copy All</i>
</script>
##// END OF EJS Templates
</div>
<script>
// registers the templates into global cache
registerTemplates();
</script>
</%text>