##// 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:

r5294:5bd3eb1a default
r5365:ae8a165b default
Show More
diffs.mako
1421 lines | 57.6 KiB | application/x-mako | MakoHtmlLexer
comments: multiple changes on comments navigation/display logic...
r4543 <%namespace name="base" file="/base/base.mako"/>
comments: allow submitting id of comment which submitted comment resolved....
r1325 <%namespace name="commentblock" file="/changeset/changeset_file_comment.mako"/>
diffs: make line anchors commit aware. This fixes duplicate anchor problem on range diffs.
r3131 <%def name="diff_line_anchor(commit, filename, line, type)"><%
return '%s_%s_%i' % (h.md5_safe(commit+filename), type, line)
templating: use .mako as extensions for template files.
r1282 %></%def>
html: fixed found syntax problems
r1283 <%def name="action_class(action)">
<%
templating: use .mako as extensions for template files.
r1282 return {
'-': 'cb-deletion',
'+': 'cb-addition',
' ': 'cb-context',
}.get(action, 'cb-empty')
html: fixed found syntax problems
r1283 %>
</%def>
templating: use .mako as extensions for template files.
r1282
html: fixed found syntax problems
r1283 <%def name="op_class(op_id)">
<%
templating: use .mako as extensions for template files.
r1282 return {
DEL_FILENODE: 'deletion', # file deleted
BIN_FILENODE: 'warning' # binary diff hidden
}.get(op_id, 'addition')
html: fixed found syntax problems
r1283 %>
</%def>
templating: use .mako as extensions for template files.
r1282
routing: remove usage of url.current from pylons.
r2104
templating: use .mako as extensions for template files.
r1282
<%def name="render_diffset(diffset, commit=None,
# collapse all file diff entries when there are more than this amount of files in the diff
collapse_when_files_over=20,
# collapse lines in the diff when more than this amount of lines changed in the file diff
lines_changed_limit=500,
# add a ruler at to the output
ruler_at_chars=0,
# show inline comments
use_comments=False,
# disable new comments
disable_new_comments=False,
# special file-comments that were deleted in previous versions
# it's used for showing outdated comments for deleted files in a PR
Bartłomiej Wołyńczyk
caching: add option to cache diffs for commits and pull requests....
r2685 deleted_files_comments=None,
# for cache purpose
pull-requests: allow to show range diff in pr view
r3124 inline_comments=None,
templating: use .mako as extensions for template files.
r1282
comments: re-implemented diff and comments/todos in pull-requests.
r3884 # additional menu for PRs
pull-requests: expose TODO box in dedicated panel...
r4140 pull_request_menu=None,
# show/hide todo next to comments
show_todos=True,
comments: re-implemented diff and comments/todos in pull-requests.
r3884
templating: use .mako as extensions for template files.
r1282 )">
ui: new commits page....
r3882
<%
templates: use safe md5 for str template rendering
r4981 diffset_container_id = h.md5_safe(diffset.target_ref)
ui: new commits page....
r3882 collapse_all = len(diffset.files) > collapse_when_files_over
issue-tracker: cache active patterns in the template so we can re-use them when rendering comments....
r4202 active_pattern_entries = h.get_active_pattern_entries(getattr(c, 'repo_name', None))
commits/pr pages various fixes....
r4485 from rhodecode.lib.diffs import NEW_FILENODE, DEL_FILENODE, \
MOD_FILENODE, RENAMED_FILENODE, CHMOD_FILENODE, BIN_FILENODE, COPIED_FILENODE
ui: new commits page....
r3882 %>
templating: use .mako as extensions for template files.
r1282 %if use_comments:
issue-tracker: cache active patterns in the template so we can re-use them when rendering comments....
r4202
## Template for injecting comments
templating: use .mako as extensions for template files.
r1282 <div id="cb-comments-inline-container-template" class="js-template">
issue-tracker: cache active patterns in the template so we can re-use them when rendering comments....
r4202 ${inline_comments_container([])}
templating: use .mako as extensions for template files.
r1282 </div>
issue-tracker: cache active patterns in the template so we can re-use them when rendering comments....
r4202
templating: use .mako as extensions for template files.
r1282 <div class="js-template" id="cb-comment-inline-form-template">
<div class="comment-inline-form ac">
comments: multiple changes on comments navigation/display logic...
r4543 %if not c.rhodecode_user.is_default:
comments: allow submitting id of comment which submitted comment resolved....
r1325 ## render template for inline comments
${commentblock.comment_form(form_type='inline')}
templating: use .mako as extensions for template files.
r1282 %endif
</div>
</div>
%endif
users: use new session store for temporary settings for users....
r3088 %if c.user_session_attrs["diffmode"] == 'sideside':
templating: use .mako as extensions for template files.
r1282 <style>
.wrapper {
max-width: 1600px !important;
}
</style>
%endif
%if ruler_at_chars:
<style>
.diff table.cb .cb-content:after {
content: "";
border-left: 1px solid blue;
position: absolute;
top: 0;
height: 18px;
opacity: .2;
z-index: 10;
//## +5 to account for diff action (+/-)
left: ${ruler_at_chars + 5}ch;
</style>
%endif
<div class="diffset ${disable_new_comments and 'diffset-comments-disabled'}">
ui: new commits page....
r3882
<div style="height: 20px; line-height: 20px">
## expand/collapse action
<div class="pull-left">
<a class="${'collapsed' if collapse_all else ''}" href="#expand-files" onclick="toggleExpand(this, '${diffset_container_id}'); return false">
% if collapse_all:
<i class="icon-plus-squared-alt icon-no-margin"></i>${_('Expand all files')}
% else:
<i class="icon-minus-squared-alt icon-no-margin"></i>${_('Collapse all files')}
% endif
</a>
</div>
## todos
pull-requests: expose TODO box in dedicated panel...
r4140 % if show_todos and getattr(c, 'at_version', None):
comments: re-implemented diff and comments/todos in pull-requests.
r3884 <div class="pull-right">
<i class="icon-flag-filled" style="color: #949494">TODOs:</i>
${_('not available in this view')}
</div>
pull-requests: expose TODO box in dedicated panel...
r4140 % elif show_todos:
ui: new commits page....
r3882 <div class="pull-right">
<div class="comments-number" style="padding-left: 10px">
% if hasattr(c, 'unresolved_comments') and hasattr(c, 'resolved_comments'):
<i class="icon-flag-filled" style="color: #949494">TODOs:</i>
% if c.unresolved_comments:
<a href="#show-todos" onclick="$('#todo-box').toggle(); return false">
${_('{} unresolved').format(len(c.unresolved_comments))}
</a>
% else:
${_('0 unresolved')}
% endif
comments: re-implemented diff and comments/todos in pull-requests.
r3884 ${_('{} Resolved').format(len(c.resolved_comments))}
ui: new commits page....
r3882 % endif
templating: use .mako as extensions for template files.
r1282 </div>
ui: new commits page....
r3882 </div>
diffs: added handy quick file selector in diffs views.
r3100 % endif
templating: use .mako as extensions for template files.
r1282
pull-requests: added observers, and fix few problems with versioned comments
r4481 ## ## comments
## <div class="pull-right">
## <div class="comments-number" style="padding-left: 10px">
## % if hasattr(c, 'comments') and hasattr(c, 'inline_cnt'):
## <i class="icon-comment" style="color: #949494">COMMENTS:</i>
## % if c.comments:
## <a href="#comments">${_ungettext("{} General", "{} General", len(c.comments)).format(len(c.comments))}</a>,
## % else:
## ${_('0 General')}
## % endif
##
## % if c.inline_cnt:
## <a href="#" onclick="return Rhodecode.comments.nextComment();"
## id="inline-comments-counter">${_ungettext("{} Inline", "{} Inline", c.inline_cnt).format(c.inline_cnt)}
## </a>
## % else:
## ${_('0 Inline')}
## % endif
## % endif
##
## % if pull_request_menu:
## <%
## outdated_comm_count_ver = pull_request_menu['outdated_comm_count_ver']
## %>
##
## % if outdated_comm_count_ver:
## <a href="#" onclick="showOutdated(); Rhodecode.comments.nextOutdatedComment(); return false;">
## (${_("{} Outdated").format(outdated_comm_count_ver)})
## </a>
## <a href="#" class="showOutdatedComments" onclick="showOutdated(this); return false;"> | ${_('show outdated')}</a>
## <a href="#" class="hideOutdatedComments" style="display: none" onclick="hideOutdated(this); return false;"> | ${_('hide outdated')}</a>
## % else:
## (${_("{} Outdated").format(outdated_comm_count_ver)})
## % endif
##
## % endif
##
## </div>
## </div>
ui: new commits page....
r3882
templating: use .mako as extensions for template files.
r1282 </div>
ui: new commits page....
r3882 % if diffset.limited_diff:
<div class="diffset-heading ${(diffset.limited_diff and 'diffset-heading-warning' or '')}">
<h2 class="clearinner">
${_('The requested changes are too big and content was truncated.')}
<a href="${h.current_route_path(request, fulldiff=1)}" onclick="return confirm('${_("Showing a big diff might take some time and resources, continue?")}')">${_('Show full diff')}</a>
</h2>
</div>
% endif
<div id="todo-box">
% if hasattr(c, 'unresolved_comments') and c.unresolved_comments:
% for co in c.unresolved_comments:
<a class="permalink" href="#comment-${co.comment_id}"
onclick="Rhodecode.comments.scrollToComment($('#comment-${co.comment_id}'))">
<i class="icon-flag-filled-red"></i>
${co.comment_id}</a>${('' if loop.last else ',')}
% endfor
% endif
</div>
path-permissions: Initial support for path-based permissions
r2618 %if diffset.has_hidden_changes:
<p class="empty_data">${_('Some changes may be hidden')}</p>
%elif not diffset.files:
templating: use .mako as extensions for template files.
r1282 <p class="empty_data">${_('No files')}</p>
%endif
<div class="filediffs">
diffs: sticky top-file bar + context aware file labels....
r3126
pr-diffs: fixed a case when there are outdated comments and we're doing a rebase compare.
r1374 ## initial value could be marked as False later on
<% over_lines_changed_limit = False %>
templating: use .mako as extensions for template files.
r1282 %for i, filediff in enumerate(diffset.files):
commits/pr pages various fixes....
r4485 %if filediff.source_file_path and filediff.target_file_path:
%if filediff.source_file_path != filediff.target_file_path:
## file was renamed, or copied
%if RENAMED_FILENODE in filediff.patch['stats']['ops']:
<%
fix(pull-requests): fixes for rendering comments
r5211 final_file_name = h.literal('{} <i class="icon-angle-left"></i> <del>{}</del>'.format(filediff.target_file_path, filediff.source_file_path))
commits/pr pages various fixes....
r4485 final_path = filediff.target_file_path
%>
%elif COPIED_FILENODE in filediff.patch['stats']['ops']:
<%
fix(pull-requests): fixes for rendering comments
r5211 final_file_name = h.literal('{} <i class="icon-angle-left"></i> {}'.format(filediff.target_file_path, filediff.source_file_path))
commits/pr pages various fixes....
r4485 final_path = filediff.target_file_path
%>
%endif
%else:
## file was modified
<%
final_file_name = filediff.source_file_path
final_path = final_file_name
%>
%endif
%else:
%if filediff.source_file_path:
## file was deleted
<%
final_file_name = filediff.source_file_path
final_path = final_file_name
%>
%else:
## file was added
<%
final_file_name = filediff.target_file_path
final_path = final_file_name
%>
%endif
%endif
templating: use .mako as extensions for template files.
r1282 <%
diffs: simplified the datastructure of fillediff. Hopefully this...
r1844 lines_changed = filediff.patch['stats']['added'] + filediff.patch['stats']['deleted']
templating: use .mako as extensions for template files.
r1282 over_lines_changed_limit = lines_changed > lines_changed_limit
%>
diffs: sticky top-file bar + context aware file labels....
r3126 ## anchor with support of sticky header
<div class="anchor" id="a_${h.FID(filediff.raw_id, filediff.patch['filename'])}"></div>
comments: allow commenting on empty files without content.
r3081
ui: new commits page....
r3882 <input ${(collapse_all and 'checked' or '')} class="filediff-collapse-state collapse-${diffset_container_id}" id="filediff-collapse-${id(filediff)}" type="checkbox" onchange="updateSticky();">
templating: use .mako as extensions for template files.
r1282 <div
class="filediff"
diffs: simplified the datastructure of fillediff. Hopefully this...
r1844 data-f-path="${filediff.patch['filename']}"
diffs: sticky top-file bar + context aware file labels....
r3126 data-anchor-id="${h.FID(filediff.raw_id, filediff.patch['filename'])}"
comments: allow commenting on empty files without content.
r3081 >
<label for="filediff-collapse-${id(filediff)}" class="filediff-heading">
diffs: expose per-file comment counts.
r4380 <%
fix(pull-requests): fixes for rendering comments
r5211 file_comments = list((get_inline_comments(inline_comments, filediff.patch['filename']) or {}).values())
comments: counts exclude now draft comments, they shouldn't be visible.
r4553 total_file_comments = [_c for _c in h.itertools.chain.from_iterable(file_comments) if not (_c.outdated or _c.draft)]
diffs: expose per-file comment counts.
r4380 %>
ui: new commits page....
r3882 <div class="filediff-collapse-indicator icon-"></div>
commits/pr pages various fixes....
r4485
fix(ui): fixed issues with hover menus and diff download items....
r5294 <%
from rhodecode.lib.diffs import NEW_FILENODE, DEL_FILENODE, MOD_FILENODE, RENAMED_FILENODE, CHMOD_FILENODE, BIN_FILENODE, COPIED_FILENODE
%>
<span class="pill">
<i class="icon-file-text"></i>
${final_file_name}
</span>
## Options PILL
commits/pr pages various fixes....
r4485 <span class="pill-group pull-right">
<details class="details-reset details-inline-block">
<summary class="noselect">
<i class="pill icon-options cursor-pointer" op="options"></i>
</summary>
<details-menu class="details-dropdown">
<div class="dropdown-item">
fix(ui): fixed issues with hover menus and diff download items....
r5294 <ul class="inline-menu">
<li class="inline-menu-item"><span class="inline-menu-item-ellipsis">${final_path}</span></li>
<li class="inline-menu-item"><span class="pull-right icon-clipboard clipboard-action" data-clipboard-text="${final_path}" title="Copy file path"></span></li>
</ul>
commits/pr pages various fixes....
r4485 </div>
<div class="dropdown-divider"></div>
<div class="dropdown-item">
fix(ui): fixed issues with hover menus and diff download items....
r5294 <% permalink = request.current_route_url(_anchor='a_{}'.format(h.FID(filediff.raw_id, filediff.patch['filename']))) %>
<ul class="inline-menu">
<li class="inline-menu-item"><a href="${permalink}">¶ permalink</a></li>
<li class="inline-menu-item"><span class="pull-right icon-clipboard clipboard-action" data-clipboard-text="${permalink}" title="Copy permalink"></span></li>
</ul>
commits/pr pages various fixes....
r4485 </div>
</details-menu>
</details>
fix(ui): fixed issues with hover menus and diff download items....
r5294 </span>
commits/pr pages various fixes....
r4485
fix(ui): fixed issues with hover menus and diff download items....
r5294 ## Comments PILL
<span class="pill-group pull-right">
<span class="pill" op="comments">
<i class="icon-comment"></i> ${len(total_file_comments)}
</span>
diffs: expose per-file comment counts.
r4380 </span>
commits/pr pages various fixes....
r4485
fix(ui): fixed issues with hover menus and diff download items....
r5294 ## DIFF STATS PILL
<span class="pill-group pull-right">
## ops pills
%if filediff.limited_diff:
<span class="pill tooltip" op="limited"
title="The stats for this diff are not complete">limited diff</span>
%endif
%if NEW_FILENODE in filediff.patch['stats']['ops']:
<span class="pill" op="created">created</span>
%if filediff['target_mode'].startswith('120'):
<span class="pill" op="symlink">symlink</span>
%else:
<span class="pill" op="mode">${nice_mode(filediff['target_mode'])}</span>
%endif
%endif
%if RENAMED_FILENODE in filediff.patch['stats']['ops']:
<span class="pill" op="renamed">renamed</span>
%endif
%if COPIED_FILENODE in filediff.patch['stats']['ops']:
<span class="pill" op="copied">copied</span>
%endif
%if DEL_FILENODE in filediff.patch['stats']['ops']:
<span class="pill" op="removed">removed</span>
%endif
%if CHMOD_FILENODE in filediff.patch['stats']['ops']:
<span class="pill" op="mode"> ${nice_mode(filediff['source_mode'])} âž¡ ${nice_mode(filediff['target_mode'])}</span>
%endif
%if BIN_FILENODE in filediff.patch['stats']['ops']:
<span class="pill" op="binary">binary</span>
%if MOD_FILENODE in filediff.patch['stats']['ops']:
<span class="pill" op="modified">modified</span>
%endif
%endif
<span class="pill" op="added">${('+' if filediff.patch['stats']['added'] else '')}${filediff.patch['stats']['added']}</span>
<span class="pill" op="deleted">${((h.safe_int(filediff.patch['stats']['deleted']) or 0) * -1)}</span>
</span>
diffs: expose per-file comment counts.
r4380
comments: allow commenting on empty files without content.
r3081 </label>
diffs: sticky top-file bar + context aware file labels....
r3126
comments: allow commenting on empty files without content.
r3081 ${diff_menu(filediff, use_comments=use_comments)}
templates: few small UI fixes
r5046 <table id="file-${h.safeid(h.safe_str(filediff.patch['filename']))}" data-f-path="${filediff.patch['filename']}" data-anchor-id="${h.FID(filediff.raw_id, filediff.patch['filename'])}" class="code-visible-block cb cb-diff-${c.user_session_attrs["diffmode"]} code-highlight ${(over_lines_changed_limit and 'cb-collapsed' or '')}">
comments: allow commenting on empty files without content.
r3081
## new/deleted/empty content case
% if not filediff.hunks:
## Comment container, on "fakes" hunk that contains all data to render comments
issue-tracker: cache active patterns in the template so we can re-use them when rendering comments....
r4202 ${render_hunk_lines(filediff, c.user_session_attrs["diffmode"], filediff.hunk_ops, use_comments=use_comments, inline_comments=inline_comments, active_pattern_entries=active_pattern_entries)}
comments: allow commenting on empty files without content.
r3081 % endif
diffs: simplified the datastructure of fillediff. Hopefully this...
r1844 %if filediff.limited_diff:
templating: use .mako as extensions for template files.
r1282 <tr class="cb-warning cb-collapser">
users: use new session store for temporary settings for users....
r3088 <td class="cb-text" ${(c.user_session_attrs["diffmode"] == 'unified' and 'colspan=4' or 'colspan=6')}>
dan
Diffs: fixed missing limited diff container display on large diffs
r3370 ${_('The requested commit or file is too big and content was truncated.')} <a href="${h.current_route_path(request, fulldiff=1)}" onclick="return confirm('${_("Showing a big diff might take some time and resources, continue?")}')">${_('Show full diff')}</a>
templating: use .mako as extensions for template files.
r1282 </td>
</tr>
%else:
%if over_lines_changed_limit:
dan
Diffs: fixed missing limited diff container display on large diffs
r3370 <tr class="cb-warning cb-collapser">
<td class="cb-text" ${(c.user_session_attrs["diffmode"] == 'unified' and 'colspan=4' or 'colspan=6')}>
${_('This diff has been collapsed as it changes many lines, (%i lines changed)' % lines_changed)}
<a href="#" class="cb-expand"
onclick="$(this).closest('table').removeClass('cb-collapsed'); updateSticky(); return false;">${_('Show them')}
</a>
<a href="#" class="cb-collapse"
onclick="$(this).closest('table').addClass('cb-collapsed'); updateSticky(); return false;">${_('Hide them')}
</a>
</td>
</tr>
templating: use .mako as extensions for template files.
r1282 %endif
%endif
comments: allow commenting on empty files without content.
r3081 % for hunk in filediff.hunks:
<tr class="cb-hunk">
users: use new session store for temporary settings for users....
r3088 <td ${(c.user_session_attrs["diffmode"] == 'unified' and 'colspan=3' or '')}>
comments: allow commenting on empty files without content.
r3081 ## TODO: dan: add ajax loading of more context here
## <a href="#">
<i class="icon-more"></i>
## </a>
</td>
users: use new session store for temporary settings for users....
r3088 <td ${(c.user_session_attrs["diffmode"] == 'sideside' and 'colspan=5' or '')}>
comments: allow commenting on empty files without content.
r3081 @@
-${hunk.source_start},${hunk.source_length}
+${hunk.target_start},${hunk.target_length}
${hunk.section_header}
</td>
</tr>
diffs: added diff navigation to improve UX when browisng the full context diffs.
r4441
issue-tracker: cache active patterns in the template so we can re-use them when rendering comments....
r4202 ${render_hunk_lines(filediff, c.user_session_attrs["diffmode"], hunk, use_comments=use_comments, inline_comments=inline_comments, active_pattern_entries=active_pattern_entries)}
comments: allow commenting on empty files without content.
r3081 % endfor
templating: use .mako as extensions for template files.
r1282
comments: ensure we ALWAYS display unmatched comments.
r3080 <% unmatched_comments = (inline_comments or {}).get(filediff.patch['filename'], {}) %>
templating: use .mako as extensions for template files.
r1282 ## outdated comments that do not fit into currently displayed lines
comments: ensure we ALWAYS display unmatched comments.
r3080 % for lineno, comments in unmatched_comments.items():
templating: use .mako as extensions for template files.
r1282
users: use new session store for temporary settings for users....
r3088 %if c.user_session_attrs["diffmode"] == 'unified':
comments: ensure we ALWAYS display unmatched comments.
r3080 % if loop.index == 0:
<tr class="cb-hunk">
<td colspan="3"></td>
<td>
<div>
pull-requests: expose TODO box in dedicated panel...
r4140 ${_('Unmatched/outdated inline comments below')}
comments: ensure we ALWAYS display unmatched comments.
r3080 </div>
</td>
</tr>
% endif
<tr class="cb-line">
<td class="cb-data cb-context"></td>
<td class="cb-lineno cb-context"></td>
<td class="cb-lineno cb-context"></td>
<td class="cb-content cb-context">
issue-tracker: cache active patterns in the template so we can re-use them when rendering comments....
r4202 ${inline_comments_container(comments, active_pattern_entries=active_pattern_entries)}
comments: ensure we ALWAYS display unmatched comments.
r3080 </td>
</tr>
users: use new session store for temporary settings for users....
r3088 %elif c.user_session_attrs["diffmode"] == 'sideside':
comments: ensure we ALWAYS display unmatched comments.
r3080 % if loop.index == 0:
diffs: small UI fixes
r3083 <tr class="cb-comment-info">
comments: ensure we ALWAYS display unmatched comments.
r3080 <td colspan="2"></td>
diffs: small UI fixes
r3083 <td class="cb-line">
<div>
pull-requests: expose TODO box in dedicated panel...
r4140 ${_('Unmatched/outdated inline comments below')}
diffs: small UI fixes
r3083 </div>
</td>
<td colspan="2"></td>
<td class="cb-line">
comments: ensure we ALWAYS display unmatched comments.
r3080 <div>
pull-requests: expose TODO box in dedicated panel...
r4140 ${_('Unmatched/outdated comments below')}
comments: ensure we ALWAYS display unmatched comments.
r3080 </div>
</td>
</tr>
% endif
<tr class="cb-line">
<td class="cb-data cb-context"></td>
<td class="cb-lineno cb-context"></td>
<td class="cb-content cb-context">
% if lineno.startswith('o'):
issue-tracker: cache active patterns in the template so we can re-use them when rendering comments....
r4202 ${inline_comments_container(comments, active_pattern_entries=active_pattern_entries)}
comments: ensure we ALWAYS display unmatched comments.
r3080 % endif
</td>
templating: use .mako as extensions for template files.
r1282
comments: ensure we ALWAYS display unmatched comments.
r3080 <td class="cb-data cb-context"></td>
<td class="cb-lineno cb-context"></td>
<td class="cb-content cb-context">
% if lineno.startswith('n'):
issue-tracker: cache active patterns in the template so we can re-use them when rendering comments....
r4202 ${inline_comments_container(comments, active_pattern_entries=active_pattern_entries)}
comments: ensure we ALWAYS display unmatched comments.
r3080 % endif
</td>
</tr>
%endif
templating: use .mako as extensions for template files.
r1282
% endfor
</table>
</div>
%endfor
## outdated comments that are made for a file that has been deleted
% for filename, comments_dict in (deleted_files_comments or {}).items():
diffs: fixed outdated files in pull-requests re-using the filediff raw_id for anchor generation....
r3937
pull-requests: fixed case of unresolved comments attached to removed file in pr....
r2808 <%
display_state = 'display: none'
open_comments_in_file = [x for x in comments_dict['comments'] if x.outdated is False]
if open_comments_in_file:
display_state = ''
diffs: fixed outdated files in pull-requests re-using the filediff raw_id for anchor generation....
r3830 fid = str(id(filename))
pull-requests: fixed case of unresolved comments attached to removed file in pr....
r2808 %>
<div class="filediffs filediff-outdated" style="${display_state}">
ui: new commits page....
r3882 <input ${(collapse_all and 'checked' or '')} class="filediff-collapse-state collapse-${diffset_container_id}" id="filediff-collapse-${id(filename)}" type="checkbox" onchange="updateSticky();">
diffs: fixed outdated files in pull-requests re-using the filediff raw_id for anchor generation....
r3830 <div class="filediff" data-f-path="${filename}" id="a_${h.FID(fid, filename)}">
templating: use .mako as extensions for template files.
r1282 <label for="filediff-collapse-${id(filename)}" class="filediff-heading">
comments: re-implemented diff and comments/todos in pull-requests.
r3884 <div class="filediff-collapse-indicator icon-"></div>
diffs: fixed outdated files in pull-requests re-using the filediff raw_id for anchor generation....
r3830
templating: use .mako as extensions for template files.
r1282 <span class="pill">
## file was deleted
ui: new commits page....
r3882 ${filename}
templating: use .mako as extensions for template files.
r1282 </span>
ui: new commits page....
r3882 <span class="pill-group pull-left" >
templating: use .mako as extensions for template files.
r1282 ## file op, doesn't need translation
dan
diffs: improve text on unresolved comments attached to files that no longer exist in the review....
r4319 <span class="pill" op="removed">unresolved comments</span>
templating: use .mako as extensions for template files.
r1282 </span>
diffs: fixed outdated files in pull-requests re-using the filediff raw_id for anchor generation....
r3830 <a class="pill filediff-anchor" href="#a_${h.FID(fid, filename)}">¶</a>
ui: new commits page....
r3882 <span class="pill-group pull-right">
dan
diffs: improve text on unresolved comments attached to files that no longer exist in the review....
r4319 <span class="pill" op="deleted">
% if comments_dict['stats'] >0:
-${comments_dict['stats']}
% else:
${comments_dict['stats']}
% endif
</span>
templating: use .mako as extensions for template files.
r1282 </span>
</label>
ui: new commits page....
r3882 <table class="cb cb-diff-${c.user_session_attrs["diffmode"]} code-highlight ${(over_lines_changed_limit and 'cb-collapsed' or '')}">
templating: use .mako as extensions for template files.
r1282 <tr>
users: use new session store for temporary settings for users....
r3088 % if c.user_session_attrs["diffmode"] == 'unified':
templating: use .mako as extensions for template files.
r1282 <td></td>
%endif
<td></td>
users: use new session store for temporary settings for users....
r3088 <td class="cb-text cb-${op_class(BIN_FILENODE)}" ${(c.user_session_attrs["diffmode"] == 'unified' and 'colspan=4' or 'colspan=5')}>
dan
diffs: improve text on unresolved comments attached to files that no longer exist in the review....
r4319 <strong>${_('This file was removed from diff during updates to this pull-request.')}</strong><br/>
${_('There are still outdated/unresolved comments attached to it.')}
templating: use .mako as extensions for template files.
r1282 </td>
</tr>
users: use new session store for temporary settings for users....
r3088 %if c.user_session_attrs["diffmode"] == 'unified':
templating: use .mako as extensions for template files.
r1282 <tr class="cb-line">
<td class="cb-data cb-context"></td>
<td class="cb-lineno cb-context"></td>
<td class="cb-lineno cb-context"></td>
<td class="cb-content cb-context">
issue-tracker: cache active patterns in the template so we can re-use them when rendering comments....
r4202 ${inline_comments_container(comments_dict['comments'], active_pattern_entries=active_pattern_entries)}
templating: use .mako as extensions for template files.
r1282 </td>
</tr>
users: use new session store for temporary settings for users....
r3088 %elif c.user_session_attrs["diffmode"] == 'sideside':
templating: use .mako as extensions for template files.
r1282 <tr class="cb-line">
<td class="cb-data cb-context"></td>
<td class="cb-lineno cb-context"></td>
<td class="cb-content cb-context"></td>
<td class="cb-data cb-context"></td>
<td class="cb-lineno cb-context"></td>
<td class="cb-content cb-context">
issue-tracker: cache active patterns in the template so we can re-use them when rendering comments....
r4202 ${inline_comments_container(comments_dict['comments'], active_pattern_entries=active_pattern_entries)}
templating: use .mako as extensions for template files.
r1282 </td>
</tr>
%endif
</table>
</div>
</div>
% endfor
</div>
</div>
</%def>
<%def name="nice_mode(filemode)">
diffs: added handy quick file selector in diffs views.
r3100 ${(filemode.startswith('100') and filemode[3:] or filemode)}
templating: use .mako as extensions for template files.
r1282 </%def>
<%def name="diff_menu(filediff, use_comments=False)">
<div class="filediff-menu">
compare: fixed case of cross repo compare before links not working.
r3146
%if filediff.diffset.source_ref:
## FILE BEFORE CHANGES
diffs: simplified the datastructure of fillediff. Hopefully this...
r1844 %if filediff.operation in ['D', 'M']:
templating: use .mako as extensions for template files.
r1282 <a
class="tooltip"
compare: fixed case of cross repo compare before links not working.
r3146 href="${h.route_path('repo_files',repo_name=filediff.diffset.target_repo_name,commit_id=filediff.diffset.source_ref,f_path=filediff.source_file_path)}"
templating: use .mako as extensions for template files.
r1282 title="${h.tooltip(_('Show file at commit: %(commit_id)s') % {'commit_id': filediff.diffset.source_ref[:12]})}"
>
${_('Show file before')}
</a> |
%else:
<span
class="tooltip"
compare: fixed case of cross repo compare before links not working.
r3146 title="${h.tooltip(_('File not present at commit: %(commit_id)s') % {'commit_id': filediff.diffset.source_ref[:12]})}"
templating: use .mako as extensions for template files.
r1282 >
${_('Show file before')}
</span> |
%endif
compare: fixed case of cross repo compare before links not working.
r3146
## FILE AFTER CHANGES
diffs: simplified the datastructure of fillediff. Hopefully this...
r1844 %if filediff.operation in ['A', 'M']:
templating: use .mako as extensions for template files.
r1282 <a
class="tooltip"
files: ported repository files controllers to pyramid views.
r1927 href="${h.route_path('repo_files',repo_name=filediff.diffset.source_repo_name,commit_id=filediff.diffset.target_ref,f_path=filediff.target_file_path)}"
templating: use .mako as extensions for template files.
r1282 title="${h.tooltip(_('Show file at commit: %(commit_id)s') % {'commit_id': filediff.diffset.target_ref[:12]})}"
>
${_('Show file after')}
dan
diffs: introducing diff menu for whitespace toggle and context changes
r3134 </a>
templating: use .mako as extensions for template files.
r1282 %else:
<span
class="tooltip"
compare: fixed case of cross repo compare before links not working.
r3146 title="${h.tooltip(_('File not present at commit: %(commit_id)s') % {'commit_id': filediff.diffset.target_ref[:12]})}"
templating: use .mako as extensions for template files.
r1282 >
dan
diffs: introducing diff menu for whitespace toggle and context changes
r3134 ${_('Show file after')}
</span>
templating: use .mako as extensions for template files.
r1282 %endif
dan
diffs: introducing diff menu for whitespace toggle and context changes
r3134
compare: fixed case of cross repo compare before links not working.
r3146 % if use_comments:
|
comments: multiple changes on comments navigation/display logic...
r4543 <a href="#" onclick="Rhodecode.comments.toggleDiffComments(this);return toggleElement(this)"
data-toggle-on="${_('Hide comments')}"
data-toggle-off="${_('Show comments')}">
<span class="hide-comment-button">${_('Hide comments')}</span>
compare: fixed case of cross repo compare before links not working.
r3146 </a>
% endif
dan
diffs: introducing diff menu for whitespace toggle and context changes
r3134
compare: fixed case of cross repo compare before links not working.
r3146 %endif
templating: use .mako as extensions for template files.
r1282 </div>
</%def>
comments: multiple changes on comments navigation/display logic...
r4543 <%def name="inline_comments_container(comments, active_pattern_entries=None, line_no='', f_path='')">
issue-tracker: cache active patterns in the template so we can re-use them when rendering comments....
r4202
templating: use .mako as extensions for template files.
r1282 <div class="inline-comments">
%for comment in comments:
issue-tracker: cache active patterns in the template so we can re-use them when rendering comments....
r4202 ${commentblock.comment_block(comment, inline=True, active_pattern_entries=active_pattern_entries)}
templating: use .mako as extensions for template files.
r1282 %endfor
comments: multiple changes on comments navigation/display logic...
r4543
<%
extra_class = ''
extra_style = ''
comments: fixed display of outdated comments at version
r4554 if comments and comments[-1].outdated_at_version(c.at_version_num):
comments: multiple changes on comments navigation/display logic...
r4543 extra_class = ' comment-outdated'
extra_style = 'display: none;'
templating: use .mako as extensions for template files.
r1282
comments: multiple changes on comments navigation/display logic...
r4543 %>
comments: fixed display of outdated comments at version
r4554
comments: multiple changes on comments navigation/display logic...
r4543 <div class="reply-thread-container-wrapper${extra_class}" style="${extra_style}">
<div class="reply-thread-container${extra_class}">
<div class="reply-thread-gravatar">
comments: fix UX for not logged users when they try to comment.
r4572 % if c.rhodecode_user.username != h.DEFAULT_USER:
comments: multiple changes on comments navigation/display logic...
r4543 ${base.gravatar(c.rhodecode_user.email, 20, tooltip=True, user=c.rhodecode_user)}
comments: fix UX for not logged users when they try to comment.
r4572 % endif
comments: multiple changes on comments navigation/display logic...
r4543 </div>
comments: fix UX for not logged users when they try to comment.
r4572
comments: multiple changes on comments navigation/display logic...
r4543 <div class="reply-thread-reply-button">
comments: fix UX for not logged users when they try to comment.
r4572 % if c.rhodecode_user.username != h.DEFAULT_USER:
comments: multiple changes on comments navigation/display logic...
r4543 ## initial reply button, some JS logic can append here a FORM to leave a first comment.
<button class="cb-comment-add-button" onclick="return Rhodecode.comments.createComment(this, '${f_path}', '${line_no}', null)">Reply...</button>
comments: fix UX for not logged users when they try to comment.
r4572 % endif
comments: multiple changes on comments navigation/display logic...
r4543 </div>
comments: fix UX for not logged users when they try to comment.
r4572 ##% endif
comments: multiple changes on comments navigation/display logic...
r4543 <div class="reply-thread-last"></div>
</div>
</div>
templating: use .mako as extensions for template files.
r1282 </div>
comments: multiple changes on comments navigation/display logic...
r4543
templating: use .mako as extensions for template files.
r1282 </%def>
Bartłomiej Wołyńczyk
caching: add option to cache diffs for commits and pull requests....
r2685 <%!
diffs: expose per-file comment counts.
r4380
def get_inline_comments(comments, filename):
fix(pull-requests): fixes for rendering comments
r5211 if hasattr(filename, 'str_path'):
filename = filename.str_path
diffs: expose per-file comment counts.
r4380
python3: fixed various code issues...
r4973 if not isinstance(filename, str):
diffs: expose per-file comment counts.
r4380 return None
if comments and filename in comments:
return comments[filename]
return None
comments: ensure we ALWAYS display unmatched comments.
r3080 def get_comments_for(diff_type, comments, filename, line_version, line_number):
fix(pull-requests): fixes for rendering comments
r5211 if hasattr(filename, 'str_path'):
filename = filename.str_path
templating: use .mako as extensions for template files.
r1282
python3: fixed various code issues...
r4973 if not isinstance(filename, str):
Bartłomiej Wołyńczyk
caching: add option to cache diffs for commits and pull requests....
r2685 return None
diffs: expose per-file comment counts.
r4380 file_comments = get_inline_comments(comments, filename)
if file_comments is None:
return None
comments: ensure we ALWAYS display unmatched comments.
r3080
fix(pull-requests): fixes for rendering comments
r5211 line_key = f'{line_version}{line_number}' ## e.g o37, n12
diffs: expose per-file comment counts.
r4380 if line_key in file_comments:
data = file_comments.pop(line_key)
return data
Bartłomiej Wołyńczyk
caching: add option to cache diffs for commits and pull requests....
r2685 %>
issue-tracker: cache active patterns in the template so we can re-use them when rendering comments....
r4202 <%def name="render_hunk_lines_sideside(filediff, hunk, use_comments=False, inline_comments=None, active_pattern_entries=None)">
diffs: added diff navigation to improve UX when browisng the full context diffs.
r4441
<% chunk_count = 1 %>
%for loop_obj, item in h.looper(hunk.sideside):
templating: use .mako as extensions for template files.
r1282 <%
diffs: added diff navigation to improve UX when browisng the full context diffs.
r4441 line = item
i = loop_obj.index
prev_line = loop_obj.previous
templating: use .mako as extensions for template files.
r1282 old_line_anchor, new_line_anchor = None, None
diffs: make line anchors commit aware. This fixes duplicate anchor problem on range diffs.
r3131
templating: use .mako as extensions for template files.
r1282 if line.original.lineno:
diffs: make line anchors commit aware. This fixes duplicate anchor problem on range diffs.
r3131 old_line_anchor = diff_line_anchor(filediff.raw_id, hunk.source_file_path, line.original.lineno, 'o')
templating: use .mako as extensions for template files.
r1282 if line.modified.lineno:
diffs: make line anchors commit aware. This fixes duplicate anchor problem on range diffs.
r3131 new_line_anchor = diff_line_anchor(filediff.raw_id, hunk.target_file_path, line.modified.lineno, 'n')
diffs: added diff navigation to improve UX when browisng the full context diffs.
r4441
line_action = line.modified.action or line.original.action
prev_line_action = prev_line and (prev_line.modified.action or prev_line.original.action)
templating: use .mako as extensions for template files.
r1282 %>
<tr class="cb-line">
<td class="cb-data ${action_class(line.original.action)}"
diffs/files: fix and improve line selections and anchor links.
r2642 data-line-no="${line.original.lineno}"
templating: use .mako as extensions for template files.
r1282 >
comments: ensure we ALWAYS display unmatched comments.
r3080
comments: introduce new draft comments....
r4540 <% line_old_comments, line_old_comments_no_drafts = None, None %>
Bartłomiej Wołyńczyk
caching: add option to cache diffs for commits and pull requests....
r2685 %if line.original.get_comment_args:
comments: introduce new draft comments....
r4540 <%
line_old_comments = get_comments_for('side-by-side', inline_comments, *line.original.get_comment_args)
line_old_comments_no_drafts = [c for c in line_old_comments if not c.draft] if line_old_comments else []
has_outdated = any([x.outdated for x in line_old_comments_no_drafts])
%>
Bartłomiej Wołyńczyk
caching: add option to cache diffs for commits and pull requests....
r2685 %endif
comments: introduce new draft comments....
r4540 %if line_old_comments_no_drafts:
diffs: inidicate visually outdated comments in the icon.
r2611 % if has_outdated:
comments: multiple changes on comments navigation/display logic...
r4543 <i class="tooltip toggle-comment-action icon-comment-toggle" title="${_('Comments including outdated: {}. Click here to toggle them.').format(len(line_old_comments_no_drafts))}" onclick="return Rhodecode.comments.toggleLineComments(this)"></i>
diffs: inidicate visually outdated comments in the icon.
r2611 % else:
comments: multiple changes on comments navigation/display logic...
r4543 <i class="tooltip toggle-comment-action icon-comment" title="${_('Comments: {}. Click to toggle them.').format(len(line_old_comments_no_drafts))}" onclick="return Rhodecode.comments.toggleLineComments(this)"></i>
diffs: inidicate visually outdated comments in the icon.
r2611 % endif
templating: use .mako as extensions for template files.
r1282 %endif
</td>
<td class="cb-lineno ${action_class(line.original.action)}"
diffs/files: fix and improve line selections and anchor links.
r2642 data-line-no="${line.original.lineno}"
templating: use .mako as extensions for template files.
r1282 %if old_line_anchor:
id="${old_line_anchor}"
%endif
>
%if line.original.lineno:
<a name="${old_line_anchor}" href="#${old_line_anchor}">${line.original.lineno}</a>
%endif
</td>
comments: multiple changes on comments navigation/display logic...
r4543
<% line_no = 'o{}'.format(line.original.lineno) %>
templating: use .mako as extensions for template files.
r1282 <td class="cb-content ${action_class(line.original.action)}"
comments: multiple changes on comments navigation/display logic...
r4543 data-line-no="${line_no}"
templating: use .mako as extensions for template files.
r1282 >
%if use_comments and line.original.lineno:
comments: multiple changes on comments navigation/display logic...
r4543 ${render_add_comment_button(line_no=line_no, f_path=filediff.patch['filename'])}
templating: use .mako as extensions for template files.
r1282 %endif
dan
diffs: exclude +/- from diffs generation and make then a non-selectable markers visible only via CSS.
r3135 <span class="cb-code"><span class="cb-action ${action_class(line.original.action)}"></span>${line.original.content or '' | n}</span>
Bartłomiej Wołyńczyk
caching: add option to cache diffs for commits and pull requests....
r2685
comments: ensure we ALWAYS display unmatched comments.
r3080 %if use_comments and line.original.lineno and line_old_comments:
comments: multiple changes on comments navigation/display logic...
r4543 ${inline_comments_container(line_old_comments, active_pattern_entries=active_pattern_entries, line_no=line_no, f_path=filediff.patch['filename'])}
templating: use .mako as extensions for template files.
r1282 %endif
Bartłomiej Wołyńczyk
caching: add option to cache diffs for commits and pull requests....
r2685
templating: use .mako as extensions for template files.
r1282 </td>
<td class="cb-data ${action_class(line.modified.action)}"
diffs/files: fix and improve line selections and anchor links.
r2642 data-line-no="${line.modified.lineno}"
templating: use .mako as extensions for template files.
r1282 >
<div>
Bartłomiej Wołyńczyk
caching: add option to cache diffs for commits and pull requests....
r2685
comments: introduce new draft comments....
r4540 <% line_new_comments, line_new_comments_no_drafts = None, None %>
Bartłomiej Wołyńczyk
caching: add option to cache diffs for commits and pull requests....
r2685 %if line.modified.get_comment_args:
comments: introduce new draft comments....
r4540 <%
line_new_comments = get_comments_for('side-by-side', inline_comments, *line.modified.get_comment_args)
line_new_comments_no_drafts = [c for c in line_new_comments if not c.draft] if line_new_comments else []
has_outdated = any([x.outdated for x in line_new_comments_no_drafts])
%>
Bartłomiej Wołyńczyk
caching: add option to cache diffs for commits and pull requests....
r2685 %endif
dan
comments: fixed line display icons.
r4419
comments: introduce new draft comments....
r4540 %if line_new_comments_no_drafts:
diffs: inidicate visually outdated comments in the icon.
r2611 % if has_outdated:
comments: multiple changes on comments navigation/display logic...
r4543 <i class="tooltip toggle-comment-action icon-comment-toggle" title="${_('Comments including outdated: {}. Click here to toggle them.').format(len(line_new_comments_no_drafts))}" onclick="return Rhodecode.comments.toggleLineComments(this)"></i>
diffs: inidicate visually outdated comments in the icon.
r2611 % else:
comments: multiple changes on comments navigation/display logic...
r4543 <i class="tooltip toggle-comment-action icon-comment" title="${_('Comments: {}. Click to toggle them.').format(len(line_new_comments_no_drafts))}" onclick="return Rhodecode.comments.toggleLineComments(this)"></i>
diffs: inidicate visually outdated comments in the icon.
r2611 % endif
templating: use .mako as extensions for template files.
r1282 %endif
</div>
</td>
<td class="cb-lineno ${action_class(line.modified.action)}"
diffs/files: fix and improve line selections and anchor links.
r2642 data-line-no="${line.modified.lineno}"
templating: use .mako as extensions for template files.
r1282 %if new_line_anchor:
id="${new_line_anchor}"
%endif
>
%if line.modified.lineno:
<a name="${new_line_anchor}" href="#${new_line_anchor}">${line.modified.lineno}</a>
%endif
</td>
comments: multiple changes on comments navigation/display logic...
r4543
<% line_no = 'n{}'.format(line.modified.lineno) %>
templating: use .mako as extensions for template files.
r1282 <td class="cb-content ${action_class(line.modified.action)}"
comments: multiple changes on comments navigation/display logic...
r4543 data-line-no="${line_no}"
templating: use .mako as extensions for template files.
r1282 >
%if use_comments and line.modified.lineno:
comments: multiple changes on comments navigation/display logic...
r4543 ${render_add_comment_button(line_no=line_no, f_path=filediff.patch['filename'])}
templating: use .mako as extensions for template files.
r1282 %endif
dan
diffs: exclude +/- from diffs generation and make then a non-selectable markers visible only via CSS.
r3135 <span class="cb-code"><span class="cb-action ${action_class(line.modified.action)}"></span>${line.modified.content or '' | n}</span>
diffs: added diff navigation to improve UX when browisng the full context diffs.
r4441 % if line_action in ['+', '-'] and prev_line_action not in ['+', '-']:
<div class="nav-chunk" style="visibility: hidden">
<i class="icon-eye" title="viewing diff hunk-${hunk.index}-${chunk_count}"></i>
</div>
<% chunk_count +=1 %>
% endif
comments: multiple changes on comments navigation/display logic...
r4543 %if use_comments and line.modified.lineno and line_new_comments:
${inline_comments_container(line_new_comments, active_pattern_entries=active_pattern_entries, line_no=line_no, f_path=filediff.patch['filename'])}
%endif
templating: use .mako as extensions for template files.
r1282 </td>
</tr>
%endfor
</%def>
issue-tracker: cache active patterns in the template so we can re-use them when rendering comments....
r4202 <%def name="render_hunk_lines_unified(filediff, hunk, use_comments=False, inline_comments=None, active_pattern_entries=None)">
Bartłomiej Wołyńczyk
caching: add option to cache diffs for commits and pull requests....
r2685 %for old_line_no, new_line_no, action, content, comments_args in hunk.unified:
diffs: make line anchors commit aware. This fixes duplicate anchor problem on range diffs.
r3131
templating: use .mako as extensions for template files.
r1282 <%
old_line_anchor, new_line_anchor = None, None
if old_line_no:
diffs: make line anchors commit aware. This fixes duplicate anchor problem on range diffs.
r3131 old_line_anchor = diff_line_anchor(filediff.raw_id, hunk.source_file_path, old_line_no, 'o')
templating: use .mako as extensions for template files.
r1282 if new_line_no:
diffs: make line anchors commit aware. This fixes duplicate anchor problem on range diffs.
r3131 new_line_anchor = diff_line_anchor(filediff.raw_id, hunk.target_file_path, new_line_no, 'n')
templating: use .mako as extensions for template files.
r1282 %>
<tr class="cb-line">
<td class="cb-data ${action_class(action)}">
<div>
Bartłomiej Wołyńczyk
caching: add option to cache diffs for commits and pull requests....
r2685
comments: introduce new draft comments....
r4540 <% comments, comments_no_drafts = None, None %>
%if comments_args:
<%
comments = get_comments_for('unified', inline_comments, *comments_args)
comments_no_drafts = [c for c in line_new_comments if not c.draft] if line_new_comments else []
has_outdated = any([x.outdated for x in comments_no_drafts])
%>
%endif
Bartłomiej Wołyńczyk
caching: add option to cache diffs for commits and pull requests....
r2685
comments: introduce new draft comments....
r4540 % if comments_no_drafts:
% if has_outdated:
comments: multiple changes on comments navigation/display logic...
r4543 <i class="tooltip toggle-comment-action icon-comment-toggle" title="${_('Comments including outdated: {}. Click here to toggle them.').format(len(comments_no_drafts))}" onclick="return Rhodecode.comments.toggleLineComments(this)"></i>
comments: introduce new draft comments....
r4540 % else:
comments: multiple changes on comments navigation/display logic...
r4543 <i class="tooltip toggle-comment-action icon-comment" title="${_('Comments: {}. Click to toggle them.').format(len(comments_no_drafts))}" onclick="return Rhodecode.comments.toggleLineComments(this)"></i>
comments: introduce new draft comments....
r4540 % endif
diffs: inidicate visually outdated comments in the icon.
r2611 % endif
templating: use .mako as extensions for template files.
r1282 </div>
</td>
<td class="cb-lineno ${action_class(action)}"
diffs/files: fix and improve line selections and anchor links.
r2642 data-line-no="${old_line_no}"
templating: use .mako as extensions for template files.
r1282 %if old_line_anchor:
id="${old_line_anchor}"
%endif
>
%if old_line_anchor:
<a name="${old_line_anchor}" href="#${old_line_anchor}">${old_line_no}</a>
%endif
</td>
<td class="cb-lineno ${action_class(action)}"
diffs/files: fix and improve line selections and anchor links.
r2642 data-line-no="${new_line_no}"
templating: use .mako as extensions for template files.
r1282 %if new_line_anchor:
id="${new_line_anchor}"
%endif
>
%if new_line_anchor:
<a name="${new_line_anchor}" href="#${new_line_anchor}">${new_line_no}</a>
%endif
</td>
comments: multiple changes on comments navigation/display logic...
r4543 <% line_no = '{}{}'.format(new_line_no and 'n' or 'o', new_line_no or old_line_no) %>
templating: use .mako as extensions for template files.
r1282 <td class="cb-content ${action_class(action)}"
comments: multiple changes on comments navigation/display logic...
r4543 data-line-no="${line_no}"
templating: use .mako as extensions for template files.
r1282 >
%if use_comments:
comments: multiple changes on comments navigation/display logic...
r4543 ${render_add_comment_button(line_no=line_no, f_path=filediff.patch['filename'])}
templating: use .mako as extensions for template files.
r1282 %endif
dan
diffs: exclude +/- from diffs generation and make then a non-selectable markers visible only via CSS.
r3135 <span class="cb-code"><span class="cb-action ${action_class(action)}"></span> ${content or '' | n}</span>
templating: use .mako as extensions for template files.
r1282 %if use_comments and comments:
comments: multiple changes on comments navigation/display logic...
r4543 ${inline_comments_container(comments, active_pattern_entries=active_pattern_entries, line_no=line_no, f_path=filediff.patch['filename'])}
templating: use .mako as extensions for template files.
r1282 %endif
</td>
</tr>
%endfor
</%def>
comments: allow commenting on empty files without content.
r3081
issue-tracker: cache active patterns in the template so we can re-use them when rendering comments....
r4202 <%def name="render_hunk_lines(filediff, diff_mode, hunk, use_comments, inline_comments, active_pattern_entries)">
comments: allow commenting on empty files without content.
r3081 % if diff_mode == 'unified':
issue-tracker: cache active patterns in the template so we can re-use them when rendering comments....
r4202 ${render_hunk_lines_unified(filediff, hunk, use_comments=use_comments, inline_comments=inline_comments, active_pattern_entries=active_pattern_entries)}
comments: allow commenting on empty files without content.
r3081 % elif diff_mode == 'sideside':
issue-tracker: cache active patterns in the template so we can re-use them when rendering comments....
r4202 ${render_hunk_lines_sideside(filediff, hunk, use_comments=use_comments, inline_comments=inline_comments, active_pattern_entries=active_pattern_entries)}
comments: allow commenting on empty files without content.
r3081 % else:
<tr class="cb-line">
<td>unknown diff mode</td>
</tr>
% endif
pull-requests: allow to show range diff in pr view
r3124 </%def>file changes
comments: allow commenting on empty files without content.
r3081
comments: multiple changes on comments navigation/display logic...
r4543 <%def name="render_add_comment_button(line_no='', f_path='')">
% if not c.rhodecode_user.is_default:
<button class="btn btn-small btn-primary cb-comment-box-opener" onclick="return Rhodecode.comments.createComment(this, '${f_path}', '${line_no}', null)">
templating: use .mako as extensions for template files.
r1282 <span><i class="icon-comment"></i></span>
</button>
comments: multiple changes on comments navigation/display logic...
r4543 % endif
templating: use .mako as extensions for template files.
r1282 </%def>
diff-navigation: small improvements on text and display of navigation menu.
r4446 <%def name="render_diffset_menu(diffset, range_diff_on=None, commit=None, pull_request_menu=None)">
templates: use safe md5 for str template rendering
r4981 <% diffset_container_id = h.md5_safe(diffset.target_ref) %>
templating: use .mako as extensions for template files.
r1282
diffs: sticky top-file bar + context aware file labels....
r3126 <div id="diff-file-sticky" class="diffset-menu clearinner">
## auto adjustable
dan
diffs: ui improvements over the sticky header.
r3128 <div class="sidebar__inner">
<div class="sidebar__bar">
diffs: sticky top-file bar + context aware file labels....
r3126 <div class="pull-right">
diffs: added scroll down/scroll up helper. Fixes #5643
r4595
<div class="btn-group" style="margin-right: 5px;">
<a class="tooltip btn" onclick="scrollDown();return false" title="${_('Scroll to page bottom')}">
<i class="icon-arrow_down"></i>
</a>
<a class="tooltip btn" onclick="scrollUp();return false" title="${_('Scroll to page top')}">
<i class="icon-arrow_up"></i>
</a>
</div>
ui: new commits page....
r3882 <div class="btn-group">
<a class="btn tooltip toggle-wide-diff" href="#toggle-wide-diff" onclick="toggleWideDiff(this); return false" title="${h.tooltip(_('Toggle wide diff'))}">
<i class="icon-wide-mode"></i>
</a>
dan
diffs: introducing diff menu for whitespace toggle and context changes
r3134 </div>
ui: new commits page....
r3882 <div class="btn-group">
dan
diffs: introducing diff menu for whitespace toggle and context changes
r3134
templating: use .mako as extensions for template files.
r1282 <a
ui: new commits page....
r3882 class="btn ${(c.user_session_attrs["diffmode"] == 'sideside' and 'btn-active')} tooltip"
title="${h.tooltip(_('View diff as side by side'))}"
routing: deprecate url_replace function in exchange of current_route_path which we now use in pyramid
r2307 href="${h.current_route_path(request, diffmode='sideside')}">
templating: use .mako as extensions for template files.
r1282 <span>${_('Side by Side')}</span>
</a>
dan
diffs: introducing diff menu for whitespace toggle and context changes
r3134
templating: use .mako as extensions for template files.
r1282 <a
ui: new commits page....
r3882 class="btn ${(c.user_session_attrs["diffmode"] == 'unified' and 'btn-active')} tooltip"
title="${h.tooltip(_('View diff as unified'))}" href="${h.current_route_path(request, diffmode='unified')}">
templating: use .mako as extensions for template files.
r1282 <span>${_('Unified')}</span>
</a>
dan
diffs: introducing diff menu for whitespace toggle and context changes
r3134
pull-requests: allow to show range diff in pr view
r3124 % if range_diff_on is True:
<a
title="${_('Turn off: Show the diff as commit range')}"
class="btn btn-primary"
href="${h.current_route_path(request, **{"range-diff":"0"})}">
<span>${_('Range Diff')}</span>
</a>
% elif range_diff_on is False:
<a
title="${_('Show the diff as commit range')}"
class="btn"
href="${h.current_route_path(request, **{"range-diff":"1"})}">
<span>${_('Range Diff')}</span>
</a>
% endif
templating: use .mako as extensions for template files.
r1282 </div>
ui: new commits page....
r3882 <div class="btn-group">
diffs: small ui fixes
r4590 <details class="details-reset details-inline-block">
<summary class="noselect btn">
<i class="icon-options cursor-pointer" op="options"></i>
</summary>
<details-menu class="details-dropdown" style="top: 35px;">
fix(ui): fixed issues with hover menus and diff download items....
r5294 <div class="dropdown-item">
diffs: small ui fixes
r4590 <div style="padding: 2px 0px">
% if request.GET.get('ignorews', '') == '1':
<a href="${h.current_route_path(request, ignorews=0)}">${_('Show whitespace changes')}</a>
% else:
<a href="${h.current_route_path(request, ignorews=1)}">${_('Hide whitespace changes')}</a>
% endif
</div>
</div>
<div class="dropdown-item">
<div style="padding: 2px 0px">
% if request.GET.get('fullcontext', '') == '1':
<a href="${h.current_route_path(request, fullcontext=0)}">${_('Hide full context diff')}</a>
% else:
<a href="${h.current_route_path(request, fullcontext=1)}">${_('Show full context diff')}</a>
% endif
</div>
</div>
fix(ui): fixed issues with hover menus and diff download items....
r5294 % if commit:
<div class="dropdown-item">
<a href="${h.route_path('repo_commit_raw',repo_name=c.repo_name,commit_id=c.commit.raw_id)}">
${_('Raw Diff')}
</a>
</div>
<div class="dropdown-item">
<a href="${h.route_path('repo_commit_patch',repo_name=c.repo_name,commit_id=c.commit.raw_id)}">
${_('Patch Diff')}
</a>
</div>
<div class="dropdown-item">
<a href="${h.route_path('repo_commit_download',repo_name=c.repo_name,commit_id=c.commit.raw_id,_query=dict(diff='download'))}">
${_('Download Diff')}
</a>
</div>
% endif
diffs: small ui fixes
r4590 </details-menu>
fix(ui): fixed issues with hover menus and diff download items....
r5294
diffs: small ui fixes
r4590 </details>
ui: new commits page....
r3882
</div>
templating: use .mako as extensions for template files.
r1282 </div>
diffs: sticky top-file bar + context aware file labels....
r3126 <div class="pull-left">
<div class="btn-group">
diffs: added handy quick file selector in diffs views.
r3100 <div class="pull-left">
ui: new commits page....
r3882 ${h.hidden('file_filter_{}'.format(diffset_container_id))}
diffs: added handy quick file selector in diffs views.
r3100 </div>
ui: new commits page....
r3882
dan
diffs: introducing diff menu for whitespace toggle and context changes
r3134 </div>
dan
diffs: ui improvements over the sticky header.
r3128 </div>
templating: use .mako as extensions for template files.
r1282 </div>
diffs: added diff navigation to improve UX when browisng the full context diffs.
r4441 <div class="fpath-placeholder pull-left">
diffs: sticky top-file bar + context aware file labels....
r3126 <i class="icon-file-text"></i>
<strong class="fpath-placeholder-text">
dan
diffs: ui improvements over the sticky header.
r3128 Context file:
diffs: sticky top-file bar + context aware file labels....
r3126 </strong>
</div>
diffs: added diff navigation to improve UX when browisng the full context diffs.
r4441 <div class="pull-right noselect">
diff-navigation: small improvements on text and display of navigation menu.
r4446 %if commit:
<span>
<code>${h.show_id(commit)}</code>
</span>
%elif pull_request_menu and pull_request_menu.get('pull_request'):
<span>
<code>!${pull_request_menu['pull_request'].pull_request_id}</code>
</span>
%endif
% if commit or pull_request_menu:
pull-requests: added observers, and fix few problems with versioned comments
r4481 <span class="tooltip" title="Navigate to previous or next change inside files." id="diff_nav">Loading diff...:</span>
diff-navigation: small improvements on text and display of navigation menu.
r4446 <span class="cursor-pointer" onclick="scrollToPrevChunk(); return false">
<i class="icon-angle-up"></i>
</span>
<span class="cursor-pointer" onclick="scrollToNextChunk(); return false">
<i class="icon-angle-down"></i>
</span>
% endif
diffs: added diff navigation to improve UX when browisng the full context diffs.
r4441 </div>
diffs: sticky top-file bar + context aware file labels....
r3126 <div class="sidebar_inner_shadow"></div>
</div>
templating: use .mako as extensions for template files.
r1282 </div>
diffs: added handy quick file selector in diffs views.
r3100
% if diffset:
%if diffset.limited_diff:
diffs: sticky top-file bar + context aware file labels....
r3126 <% file_placeholder = _ungettext('%(num)s file changed', '%(num)s files changed', diffset.changed_files) % {'num': diffset.changed_files} %>
diffs: added handy quick file selector in diffs views.
r3100 %else:
ui: new commits page....
r3882 <% file_placeholder = h.literal(_ungettext('%(num)s file changed: <span class="op-added">%(linesadd)s inserted</span>, <span class="op-deleted">%(linesdel)s deleted</span>', '%(num)s files changed: <span class="op-added">%(linesadd)s inserted</span>, <span class="op-deleted">%(linesdel)s deleted</span>',
diffset.changed_files) % {'num': diffset.changed_files, 'linesadd': diffset.lines_added, 'linesdel': diffset.lines_deleted}) %>
diffs: added handy quick file selector in diffs views.
r3100 %endif
diffs: sticky top-file bar + context aware file labels....
r3126 ## case on range-diff placeholder needs to be updated
% if range_diff_on is True:
<% file_placeholder = _('Disabled on range diff') %>
% endif
diffs: added handy quick file selector in diffs views.
r3100
ui: new commits page....
r3882 <script type="text/javascript">
diffs: added handy quick file selector in diffs views.
r3100 var feedFilesOptions = function (query, initialData) {
var data = {results: []};
var isQuery = typeof query.term !== 'undefined';
var section = _gettext('Changed files');
var filteredData = [];
//filter results
$.each(initialData.results, function (idx, value) {
if (!isQuery || query.term.length === 0 || value.text.toUpperCase().indexOf(query.term.toUpperCase()) >= 0) {
filteredData.push({
'id': this.id,
'text': this.text,
"ops": this.ops,
})
}
});
data.results = filteredData;
query.callback(data);
};
ui: new commits page....
r3882 var selectionFormatter = function(data, escapeMarkup) {
var container = '<div class="filelist" style="padding-right:100px">{0}</div>';
var tmpl = '<div><strong>{0}</strong></div>'.format(escapeMarkup(data['text']));
var pill = '<div class="pill-group" style="position: absolute; top:7px; right: 0">' +
'<span class="pill" op="added">{0}</span>' +
'<span class="pill" op="deleted">{1}</span>' +
'</div>'
;
var added = data['ops']['added'];
if (added === 0) {
// don't show +0
added = 0;
} else {
added = '+' + added;
}
var deleted = -1*data['ops']['deleted'];
tmpl += pill.format(added, deleted);
return container.format(tmpl);
};
diffs: added handy quick file selector in diffs views.
r3100 var formatFileResult = function(result, container, query, escapeMarkup) {
ui: new commits page....
r3882 return selectionFormatter(result, escapeMarkup);
diffs: added handy quick file selector in diffs views.
r3100 };
diffs: fixed scope mismatch for diff navigation
r3163
ui: new commits page....
r3882 var formatSelection = function (data, container) {
return '${file_placeholder}'
};
if (window.preloadFileFilterData === undefined) {
window.preloadFileFilterData = {}
}
preloadFileFilterData["${diffset_container_id}"] = {
diffs: added handy quick file selector in diffs views.
r3100 results: [
% for filediff in diffset.files:
pull-requests: allow to show range diff in pr view
r3124 {id:"a_${h.FID(filediff.raw_id, filediff.patch['filename'])}",
diffs: added handy quick file selector in diffs views.
r3100 text:"${filediff.patch['filename']}",
json: fixed calls to json after orjson implementation
r4974 ops:${h.str_json(filediff.patch['stats'])|n}}${('' if loop.last else ',')}
diffs: added handy quick file selector in diffs views.
r3100 % endfor
]
};
ui: new commits page....
r3882 var diffFileFilterId = "#file_filter_" + "${diffset_container_id}";
var diffFileFilter = $(diffFileFilterId).select2({
'dropdownAutoWidth': true,
'width': 'auto',
containerCssClass: "drop-menu",
dropdownCssClass: "drop-menu-dropdown",
data: preloadFileFilterData["${diffset_container_id}"],
query: function(query) {
feedFilesOptions(query, preloadFileFilterData["${diffset_container_id}"]);
},
initSelection: function(element, callback) {
callback({'init': true});
},
formatResult: formatFileResult,
formatSelection: formatSelection
});
diffs: sticky top-file bar + context aware file labels....
r3126
ui: new commits page....
r3882 % if range_diff_on is True:
diffFileFilter.select2("enable", false);
% endif
$(diffFileFilterId).on('select2-selecting', function (e) {
var idSelector = e.choice.id;
// expand the container if we quick-select the field
$('#'+idSelector).next().prop('checked', false);
// hide the mast as we later do preventDefault()
$("#select2-drop-mask").click();
diffs: fixed scope mismatch for diff navigation
r3163
ui: new commits page....
r3882 window.location.hash = '#'+idSelector;
updateSticky();
e.preventDefault();
});
diffs: sticky top-file bar + context aware file labels....
r3126
diff-navigation: small improvements on text and display of navigation menu.
r4446 diffNavText = 'diff navigation:'
diffs: added diff navigation to improve UX when browisng the full context diffs.
r4441 getCurrentChunk = function () {
var chunksAll = $('.nav-chunk').filter(function () {
return $(this).parents('.filediff').prev().get(0).checked !== true
})
var chunkSelected = $('.nav-chunk.selected');
var initial = false;
if (chunkSelected.length === 0) {
// no initial chunk selected, we pick first
chunkSelected = $(chunksAll.get(0));
var initial = true;
}
return {
'all': chunksAll,
'selected': chunkSelected,
'initial': initial,
}
}
animateDiffNavText = function () {
var $diffNav = $('#diff_nav')
var callback = function () {
$diffNav.animate({'opacity': 1.00}, 200)
};
$diffNav.animate({'opacity': 0.15}, 200, callback);
}
scrollToChunk = function (moveBy) {
var chunk = getCurrentChunk();
var all = chunk.all
var selected = chunk.selected
var curPos = all.index(selected);
var newPos = curPos;
if (!chunk.initial) {
var newPos = curPos + moveBy;
}
var curElem = all.get(newPos);
if (curElem === undefined) {
// end or back
diff-navigation: small improvements on text and display of navigation menu.
r4446 $('#diff_nav').html('no next diff element:')
diffs: added diff navigation to improve UX when browisng the full context diffs.
r4441 animateDiffNavText()
return
} else if (newPos < 0) {
diff-navigation: small improvements on text and display of navigation menu.
r4446 $('#diff_nav').html('no previous diff element:')
diffs: added diff navigation to improve UX when browisng the full context diffs.
r4441 animateDiffNavText()
return
} else {
diff-navigation: small improvements on text and display of navigation menu.
r4446 $('#diff_nav').html(diffNavText)
diffs: added diff navigation to improve UX when browisng the full context diffs.
r4441 }
curElem = $(curElem)
var offset = 100;
$(window).scrollTop(curElem.position().top - offset);
//clear selection
all.removeClass('selected')
curElem.addClass('selected')
}
scrollToPrevChunk = function () {
scrollToChunk(-1)
}
scrollToNextChunk = function () {
scrollToChunk(1)
}
ui: new commits page....
r3882 </script>
% endif
<script type="text/javascript">
diffs: added diff navigation to improve UX when browisng the full context diffs.
r4441 $('#diff_nav').html('loading diff...') // wait until whole page is loaded
ui: new commits page....
r3882 $(document).ready(function () {
diffs: sticky top-file bar + context aware file labels....
r3126
var contextPrefix = _gettext('Context file: ');
## sticky sidebar
var sidebarElement = document.getElementById('diff-file-sticky');
sidebar = new StickySidebar(sidebarElement, {
topSpacing: 0,
bottomSpacing: 0,
innerWrapperSelector: '.sidebar__inner'
});
sidebarElement.addEventListener('affixed.static.stickySidebar', function () {
// reset our file so it's not holding new value
ui: new commits page....
r3882 $('.fpath-placeholder-text').html(contextPrefix + ' - ')
diffs: sticky top-file bar + context aware file labels....
r3126 });
updateSticky = function () {
dan
diffs: update all sticky elements on dom changes to handle cases like:...
r3129 sidebar.updateSticky();
Waypoint.refreshAll();
diffs: sticky top-file bar + context aware file labels....
r3126 };
ui: new commits page....
r3882 var animateText = function (fPath, anchorId) {
security: fixed xss in context diff menu.
r3333 fPath = Select2.util.escapeMarkup(fPath);
ui: new commits page....
r3882 $('.fpath-placeholder-text').html(contextPrefix + '<a href="#a_' + anchorId + '">' + fPath + '</a>')
};
diffs: sticky top-file bar + context aware file labels....
r3126
## dynamic file waypoints
var setFPathInfo = function(fPath, anchorId){
animateText(fPath, anchorId)
};
var codeBlock = $('.filediff');
ui: new commits page....
r3882
diffs: sticky top-file bar + context aware file labels....
r3126 // forward waypoint
codeBlock.waypoint(
function(direction) {
if (direction === "down"){
setFPathInfo($(this.element).data('fPath'), $(this.element).data('anchorId'))
}
}, {
ui: new commits page....
r3882 offset: function () {
return 70;
},
diffs: sticky top-file bar + context aware file labels....
r3126 context: '.fpath-placeholder'
}
);
// backward waypoint
codeBlock.waypoint(
function(direction) {
if (direction === "up"){
setFPathInfo($(this.element).data('fPath'), $(this.element).data('anchorId'))
}
}, {
offset: function () {
ui: new commits page....
r3882 return -this.element.clientHeight + 90;
diffs: sticky top-file bar + context aware file labels....
r3126 },
context: '.fpath-placeholder'
}
);
ui: new commits page....
r3882 toggleWideDiff = function (el) {
updateSticky();
var wide = Rhodecode.comments.toggleWideMode(this);
storeUserSessionAttr('rc_user_session_attr.wide_diff_mode', wide);
if (wide === true) {
$(el).addClass('btn-active');
} else {
$(el).removeClass('btn-active');
}
return null;
};
toggleExpand = function (el, diffsetEl) {
var el = $(el);
if (el.hasClass('collapsed')) {
$('.filediff-collapse-state.collapse-{0}'.format(diffsetEl)).prop('checked', false);
el.removeClass('collapsed');
el.html(
'<i class="icon-minus-squared-alt icon-no-margin"></i>' +
_gettext('Collapse all files'));
}
else {
$('.filediff-collapse-state.collapse-{0}'.format(diffsetEl)).prop('checked', true);
el.addClass('collapsed');
el.html(
'<i class="icon-plus-squared-alt icon-no-margin"></i>' +
_gettext('Expand all files'));
}
updateSticky()
diffs: toggle race condition on sticky vs wide-diff-mode that caused some display artifacts
r4037 };
commits/ux: use similar as in files expand/collapse toggle.
r4126 toggleCommitExpand = function (el) {
var $el = $(el);
var commits = $el.data('toggleCommitsCnt');
var collapseMsg = _ngettext('Collapse {0} commit', 'Collapse {0} commits', commits).format(commits);
var expandMsg = _ngettext('Expand {0} commit', 'Expand {0} commits', commits).format(commits);
if ($el.hasClass('collapsed')) {
$('.compare_select').show();
$('.compare_select_hidden').hide();
$el.removeClass('collapsed');
$el.html(
'<i class="icon-minus-squared-alt icon-no-margin"></i>' +
collapseMsg);
}
else {
$('.compare_select').hide();
$('.compare_select_hidden').show();
$el.addClass('collapsed');
$el.html(
'<i class="icon-plus-squared-alt icon-no-margin"></i>' +
expandMsg);
}
updateSticky();
};
diffs: toggle race condition on sticky vs wide-diff-mode that caused some display artifacts
r4037 // get stored diff mode and pre-enable it
if (templateContext.session_attrs.wide_diff_mode === "true") {
Rhodecode.comments.toggleWideMode(null);
$('.toggle-wide-diff').addClass('btn-active');
updateSticky();
ui: new commits page....
r3882 }
diffs: added diff navigation to improve UX when browisng the full context diffs.
r4441
// DIFF NAV //
// element to detect scroll direction of
var $window = $(window);
// initialize last scroll position
var lastScrollY = $window.scrollTop();
$window.on('resize scrollstop', {latency: 350}, function () {
var visibleChunks = $('.nav-chunk').withinviewport({top: 75});
// get current scroll position
var currentScrollY = $window.scrollTop();
// determine current scroll direction
if (currentScrollY > lastScrollY) {
var y = 'down'
} else if (currentScrollY !== lastScrollY) {
var y = 'up';
}
var pos = -1; // by default we use last element in viewport
if (y === 'down') {
pos = -1;
} else if (y === 'up') {
pos = 0;
}
if (visibleChunks.length > 0) {
$('.nav-chunk').removeClass('selected');
$(visibleChunks.get(pos)).addClass('selected');
}
// update last scroll position to current position
lastScrollY = currentScrollY;
});
diff-navigation: small improvements on text and display of navigation menu.
r4446 $('#diff_nav').html(diffNavText);
diffs: added diff navigation to improve UX when browisng the full context diffs.
r4441
diffs: added handy quick file selector in diffs views.
r3100 });
</script>
dan
diffs: exclude +/- from diffs generation and make then a non-selectable markers visible only via CSS.
r3135 </%def>