Mercurial > kallithea
view kallithea/templates/changeset/changeset.html @ 8582:35af0bd45bf3
diff: drop per file ignore-whitespace and context - it didn't work and had conceptual issue (Issue #344)
Diffs are currently generated at the low level as one big diff between two vcs
resisions, provided global values for diff context size and flag for ignoring
whitespace. All files use the same flags. There is no way to actually compute
the full diff using these use per file flags, and no simple and efficient way
to add it.
The best option is thus to drop the failed attempt at making it per file, and
just rely on the simple global flags in the URL.
The links for changing whitespace and context is sometimes shown for the whole
"page", and sometimes next to the diff for one file. For now, keep showing the
link in these places, but make sure it navigates back to the FID of the section
where the link was clicked.
The implementation is completely rewritten and moved to a more appropriate
location in helpers.
With a more clean implementation, we also consistently use the simple getters
to extract values from the URL.
author | Mads Kiilerich <mads@kiilerich.com> |
---|---|
date | Sun, 21 Jun 2020 23:20:12 +0200 |
parents | 169539b32b90 |
children | 19d93bd709bf |
line wrap: on
line source
## -*- coding: utf-8 -*- <%inherit file="/base/base.html"/> <%namespace name="comment" file="/changeset/changeset_file_comment.html"/> <%block name="title"> ${_('%s Changeset') % c.repo_name} - ${h.show_id(c.changeset)} </%block> <%def name="breadcrumbs_links()"> ${_('Changeset')} - <span class='changeset_hash'>${h.show_id(c.changeset)}</span> </%def> <%block name="header_menu"> ${self.menu('repositories')} </%block> <%def name="main()"> ${self.repo_context_bar('changelog', c.changeset.raw_id)} <div class="panel panel-primary"> <div class="panel-heading clearfix"> ${self.breadcrumbs()} </div> <script>'use strict'; var AJAX_COMMENT_URL = ${h.js(url('changeset_comment',repo_name=c.repo_name,revision=c.changeset.raw_id))}; var AJAX_COMMENT_DELETE_URL = ${h.js(url('changeset_comment_delete',repo_name=c.repo_name,comment_id='__COMMENT_ID__'))}; </script> <div class="panel-body"> <div class="panel panel-default"> <div class="panel-heading clearfix"> ${self.parent_child_navigation()} <div class="pull-left" title="${_('Changeset status')}"> %if c.statuses: <i class="icon-circle changeset-status-${c.statuses[0]}"></i> [${h.changeset_status_lbl(c.statuses[0])}] %endif </div> <div class="diff-actions pull-left"> <a href="${h.url('changeset_raw_home',repo_name=c.repo_name,revision=c.changeset.raw_id)}" data-toggle="tooltip" title="${_('Raw diff')}"><i class="icon-diff"></i></a> <a href="${h.url('changeset_patch_home',repo_name=c.repo_name,revision=c.changeset.raw_id)}" data-toggle="tooltip" title="${_('Patch diff')}"><i class="icon-file-powerpoint"></i></a> <a href="${h.url('changeset_download_home',repo_name=c.repo_name,revision=c.changeset.raw_id,diff='download')}" data-toggle="tooltip" title="${_('Download diff')}"><i class="icon-floppy"></i></a> ${h.ignore_whitespace_link(request.GET)} ${h.increase_context_link(request.GET)} </div> </div> <div class="panel-body"> <div class="form-group changeset_content_header clearfix"> <div class="pull-right"> <span> %if len(c.changeset.parents)>1: <span class="label label-merge">${_('Merge')}</span> %endif %for book in c.changeset.bookmarks: <span class="label label-bookmark" title="${_('Bookmark %s') % book}">${h.link_to(book,h.url('changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}</span> %endfor %for tag in c.changeset.tags: <span class="label label-tag" title="${_('Tag %s') % tag}">${h.link_to(tag,h.url('changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}</span> %endfor %for branch in c.changeset.branches: <span class="label label-branch" title="${_('Branch %s') % branch}">${h.link_to(branch,h.url('changelog_home',repo_name=c.repo_name,branch=branch))}</span> %endfor </span> <div class="changes"> % if (len(c.changeset.affected_files) <= c.affected_files_cut_off) or c.fulldiff: <span class="label deleted" title="${_('Removed')}">${len(c.changeset.removed)}</span> <span class="label changed" title="${_('Changed')}">${len(c.changeset.changed)}</span> <span class="label added" title="${_('Added')}">${len(c.changeset.added)}</span> % else: <span class="label deleted" title="${_('Affected %s files') % len(c.changeset.affected_files)}">!</span> <span class="label changed" title="${_('Affected %s files') % len(c.changeset.affected_files)}">!</span> <span class="label added" title="${_('Affected %s files') % len(c.changeset.affected_files)}">!</span> % endif </div> </div> <div class="pull-left"> <div class="author"> ${h.gravatar_div(h.email_or_none(c.changeset.author), size=20)} <span><b>${h.person(c.changeset.author,'full_name_and_username')}</b> - ${h.age(c.changeset.date,True)} ${h.fmt_date(c.changeset.date)}</span><br/> <span>${h.email_or_none(c.changeset.author)}</span><br/> </div> %if c.changeset_graft_source_hash: <div> ${_('Grafted from:')} ${h.link_to(h.short_id(c.changeset_graft_source_hash),h.url('changeset_home',repo_name=c.repo_name,revision=c.changeset_graft_source_hash), class_="changeset_hash")} </div> %endif %if c.changeset_transplant_source_hash: <div> ${_('Transplanted from:')} ${h.link_to(h.short_id(c.changeset_transplant_source_hash),h.url('changeset_home',repo_name=c.repo_name,revision=c.changeset_transplant_source_hash), class_="changeset_hash")} </div> %endif % if hasattr(c.changeset, 'successors') and c.changeset.successors: <div class='successors'> <span class='successors_header'>${_('Replaced by:')} </span> % for i, s in enumerate(c.changeset.successors): <% comma = "" if i != len(c.changeset.successors)-1: comma = ", " %> <a class='successors_hash' href="${h.url('changeset_home',repo_name=c.repo_name, revision=s)}">${s}</a>${comma} % endfor </div> % endif % if hasattr(c.changeset, 'predecessors') and c.changeset.predecessors: <div class='predecessors'> <span class='predecessors_header'>${_('Preceded by:')} </span> % for i, s in enumerate(c.changeset.predecessors): <% comma = "" if i != len(c.changeset.predecessors)-1: comma = ", " %> <a class="predecessors_hash" href="${h.url('changeset_home',repo_name=c.repo_name, revision=s)}">${s}</a>${comma} % endfor </div> % endif </div> </div> <div class="form-group formatted-fixed">${h.urlify_text(c.changeset.message, c.repo_name)}</div> <div> <% a_rev, cs_rev, file_diff_data = c.changes[c.changeset.raw_id] %> % if c.limited_diff: ${ungettext('%s file changed', '%s files changed', len(file_diff_data)) % len(file_diff_data)}: % else: ${ungettext('%s file changed with %s insertions and %s deletions', '%s files changed with %s insertions and %s deletions', len(file_diff_data)) % (len(file_diff_data), c.lines_added, c.lines_deleted)}: %endif </div> <div class="cs_files"> %for fid, url_fid, op, a_path, path, diff, stats in file_diff_data: <div class="cs_${op} clearfix"> <span class="node"> <i class="icon-diff-${op}"></i>${h.link_to(path, '#%s' % fid)} </span> <div class="changes">${h.fancy_file_stats(stats)}</div> </div> %endfor %if c.limited_diff: <h5>${_('Changeset was too big and was cut off...')} <a href="${h.url.current(fulldiff=1, **request.GET.mixed())}">${_('Show full diff anyway')}</a></h5> %endif </div> <div class="comments-number"> ${comment.comment_count(c.inline_cnt, len(c.comments))} </div> </div> </div> ## diff block <div class="commentable-diff"> <%namespace name="diff_block" file="/changeset/diff_block.html"/> ${diff_block.diff_block_js()} <% a_rev, cs_rev, file_diff_data = c.changes[c.changeset.raw_id] %> ${diff_block.diff_block(c.repo_name, 'rev', a_rev, a_rev, c.repo_name, 'rev', cs_rev, cs_rev, file_diff_data)} % if c.limited_diff: <h4>${_('Changeset was too big and was cut off...')} <a href="${h.url.current(fulldiff=1, **request.GET.mixed())}">${_('Show full diff anyway')}</a></h4> % endif </div> ## template for inline comment form ${comment.comment_inline_form()} ## render comments and inlines ${comment.generate_comments()} ## main comment form and it status ${comment.comments()} </div> ## FORM FOR MAKING JS ACTION AS CHANGESET COMMENTS <script>'use strict'; $(document).ready(function(){ $('.code-difftable').on('click', '.add-bubble', function(){ show_comment_form($(this)); }); move_comments($(".comments .comments-list-chunk")); // hack: re-navigate to target after JS is done ... if a target is set and setting href thus won't reload if (window.location.hash != "") { window.location.href = window.location.href; } }); </script> </div> </%def>