Files @ 97ec8cf362c3
Branch filter:

Location: kallithea/kallithea/templates/changeset/changeset.html - annotation

mads
style: introduce Bootstrap input-group - especially for repo summary pages

Based on work by Dominik Ruf.
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
0ee5a36aaa99
0ee5a36aaa99
37354e1ab283
d1addaf7a91e
37354e1ab283
d1addaf7a91e
d1addaf7a91e
1a659a59be4a
d1addaf7a91e
d1addaf7a91e
ec39e73be935
d1addaf7a91e
ec39e73be935
d1addaf7a91e
d1addaf7a91e
432e86d1e555
80a15e10857a
d99afb88579e
d99afb88579e
d99afb88579e
d99afb88579e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d99afb88579e
d99afb88579e
1f02a239c23c
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
5c6cc20d224b
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
e34cf36e024a
d1addaf7a91e
5c6cc20d224b
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
e34cf36e024a
d1addaf7a91e
293066605a43
293066605a43
d1addaf7a91e
d1addaf7a91e
e34cf36e024a
c40e567e4b82
63186854dcd1
d1addaf7a91e
c40e567e4b82
79ead88e8acf
d1addaf7a91e
c40e567e4b82
bf8cd958efa8
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
0ee5a36aaa99
0ee5a36aaa99
0ee5a36aaa99
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
482b6ac31603
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
482b6ac31603
d1addaf7a91e
d1addaf7a91e
06e49be38d78
d1addaf7a91e
d1addaf7a91e
ce7c4addc2ae
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
f8f180cbe68d
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
edc266f04d5f
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
482b6ac31603
482b6ac31603
482b6ac31603
482b6ac31603
482b6ac31603
482b6ac31603
482b6ac31603
482b6ac31603
482b6ac31603
482b6ac31603
482b6ac31603
482b6ac31603
d1addaf7a91e
e34cf36e024a
d1addaf7a91e
f287754980cc
18fc1888455f
d1addaf7a91e
d1addaf7a91e
04717653fe48
04717653fe48
04717653fe48
12919ffab34c
04717653fe48
04717653fe48
04717653fe48
04717653fe48
04717653fe48
12919ffab34c
04717653fe48
04717653fe48
8737030a9550
8737030a9550
8737030a9550
8737030a9550
8737030a9550
8737030a9550
8737030a9550
8737030a9550
8737030a9550
8737030a9550
8737030a9550
8737030a9550
8737030a9550
8737030a9550
8737030a9550
1cdfd54a9c8f
1cdfd54a9c8f
1cdfd54a9c8f
1cdfd54a9c8f
1cdfd54a9c8f
1cdfd54a9c8f
1cdfd54a9c8f
1cdfd54a9c8f
1cdfd54a9c8f
1cdfd54a9c8f
1cdfd54a9c8f
1cdfd54a9c8f
1cdfd54a9c8f
d1addaf7a91e
d1addaf7a91e
482b6ac31603
d1addaf7a91e
dc4cb1d4e084
d1addaf7a91e
dc4cb1d4e084
72acb38da217
dc4cb1d4e084
72acb38da217
72acb38da217
72acb38da217
1cf51cd05e36
e34cf36e024a
e34cf36e024a
72acb38da217
dc4cb1d4e084
72acb38da217
e34cf36e024a
72acb38da217
72acb38da217
72acb38da217
72acb38da217
72acb38da217
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
1f02a239c23c
d1addaf7a91e
1f02a239c23c
1f02a239c23c
1f02a239c23c
d1addaf7a91e
e457b951aabe
dc4cb1d4e084
dc4cb1d4e084
dc4cb1d4e084
d1addaf7a91e
e46de90d5554
d1addaf7a91e
329c0584cba8
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
7834f845505a
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
e271a8766951
99d29f43bdd1
e87baa8f1c5b
d1addaf7a91e
d1addaf7a91e
e87baa8f1c5b
348ecbd25577
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
5c6cc20d224b
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
29325637d1d2
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
29325637d1d2
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
b3f12c354e87
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
df5b6fc6c518
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
5c6cc20d224b
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
997737f7c989
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
997737f7c989
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
b3f12c354e87
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
496bd1bc9a69
496bd1bc9a69
496bd1bc9a69
496bd1bc9a69
496bd1bc9a69
496bd1bc9a69
df5b6fc6c518
d1addaf7a91e
d1addaf7a91e
d1addaf7a91e
d99afb88579e
1f02a239c23c
d1addaf7a91e
## -*- 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='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>
    var _USERS_AC_DATA = ${c.users_array|n};
    var _GROUPS_AC_DATA = ${c.user_groups_array|n};
    AJAX_COMMENT_URL = "${url('changeset_comment',repo_name=c.repo_name,revision=c.changeset.raw_id)}";
    AJAX_COMMENT_DELETE_URL = "${url('changeset_comment_delete',repo_name=c.repo_name,comment_id='__COMMENT_ID__')}";
  </script>
  <div class="panel-body">
    <div>
        <div class="diffblock">
            <div class="parents">
                <div id="parent_link" class="changeset_hash">
                    <i style="color:#036185" class="icon-left-open"></i> <a href="#">${_('Parent rev.')}</a>
                </div>
            </div>

            <div class="pull-right children">
                <div id="child_link" class="changeset_hash">
                    <a href="#">${_('Child rev.')}</a> <i style="color:#036185" class="icon-right-open"></i>
                </div>
            </div>

            <div class="code-header banner">
                <div class="pull-left changeset-status-container">
                    %if c.statuses:
                        <span class="changeset-status-ico"><i class="icon-circle changeset-status-${c.statuses[0]}"></i></span>
                        <span title="${_('Changeset status')}" class="changeset-status-lbl">[${h.changeset_status_lbl(c.statuses[0])}]</span>
                    %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>
                  ${c.ignorews_url(request.GET)}
                  ${c.context_url(request.GET)}
                </div>
                <div class="comments-number" style="float:right;padding-right:5px">
                    ${comment.comment_count(c.inline_cnt, len(c.comments))}
                </div>
            </div>
        </div>
        <div id="changeset_content">
            <div class="form-group container">

                <div class="right">
                    <span class="logtags">
                        %if len(c.changeset.parents)>1:
                        <span class="mergetag">${_('Merge')}</span>
                        %endif

                        %if h.is_hg(c.db_repo_scm_instance):
                          %for book in c.changeset.bookmarks:
                          <span class="booktag" title="${_('Bookmark %s') % book}">
                             ${h.link_to(book,h.url('changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}
                          </span>
                          %endfor
                        %endif

                        %for tag in c.changeset.tags:
                         <span class="tagtag"  title="${_('Tag %s') % tag}">
                         ${h.link_to(tag,h.url('changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}</span>
                        %endfor

                        %if c.changeset.branch:
                         <span class="branchtag" title="${_('Branch %s') % c.changeset.branch}">
                         ${h.link_to(c.changeset.branch,h.url('changelog_home',repo_name=c.repo_name,branch=c.changeset.branch))}
                         </span>
                        %endif
                    </span>

                    <div class="changes">
                        % if (len(c.changeset.affected_files) <= c.affected_files_cut_off) or c.fulldiff:
                         <span class="removed" title="${_('Removed')}">${len(c.changeset.removed)}</span>
                         <span class="changed" title="${_('Changed')}">${len(c.changeset.changed)}</span>
                         <span class="added" title="${_('Added')}">${len(c.changeset.added)}</span>
                        % else:
                         <span class="removed" title="${_('Affected %s files') % len(c.changeset.affected_files)}">!</span>
                         <span class="changed" title="${_('Affected %s files') % len(c.changeset.affected_files)}">!</span>
                         <span class="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>
                     <% rev = c.changeset.extra.get('source') %>
                     %if rev:
                     <div>
                       ${_('Grafted from:')} ${h.link_to(h.short_id(rev),h.url('changeset_home',repo_name=c.repo_name,revision=rev), class_="changeset_hash")}
                     </div>
                     %endif
                     <% rev = c.changeset.extra.get('transplant_source', '').encode('hex') %>
                     %if rev:
                     <div>
                       ${_('Transplanted from:')} ${h.link_to(h.short_id(rev),h.url('changeset_home',repo_name=c.repo_name,revision=rev), 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, 'precursors') and c.changeset.precursors:
                     <div class='precursors'>
                       <span class='precursors_header'>${_('Preceded by:')} </span>
                       % for i, s in enumerate(c.changeset.precursors):
                           <%
                           comma = ""
                           if i != len(c.changeset.precursors)-1:
                             comma = ", "
                           %>
                           <a class="precursors_hash" href="${h.url('changeset_home',repo_name=c.repo_name, revision=s)}">${s}</a>${comma}
                       % endfor
                     </div>
                     % endif
                </div>
            </div>
            <div class="message form-group">${h.urlify_text(c.changeset.message, c.repo_name)}</div>
            <div class="changes_txt">
              <% 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">
                      <div class="node pull-left">
                          <i class="icon-diff-${op}"></i>
                          ${h.link_to(h.safe_unicode(path), '#%s' % fid)}
                      </div>
                      <div class="changes pull-right">${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>

    </div>
  </div>

  ## diff block
  <div class="panel-body">
  <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()}

    ## FORM FOR MAKING JS ACTION AS CHANGESET COMMENTS
    <script type="text/javascript">
      $(document).ready(function(){
          $('.code-difftable').on('click', '.add-bubble', function(e){
              show_comment_form($(this));
          });

          move_comments($(".comments .comments-list-chunk"));

          pyroutes.register('changeset_home',
                            "${h.url('changeset_home', repo_name='%(repo_name)s', revision='%(revision)s')}",
                            ['repo_name', 'revision']);

          //next links
          $('#child_link').on('click', function(e){
              //fetch via ajax what is going to be the next link, if we have
              //>1 links show them to user to choose
              if(!$('#child_link').hasClass('disabled')){
                  $.ajax({
                    url: '${h.url('changeset_children',repo_name=c.repo_name, revision=c.changeset.raw_id)}',
                    success: function(data) {
                      if(data.results.length === 0){
                          $('#child_link').addClass('disabled');
                          $('#child_link').html('${_('No revisions')}');
                      }
                      if(data.results.length === 1){
                          var commit = data.results[0];
                          window.location = pyroutes.url('changeset_home', {'repo_name': '${c.repo_name}','revision': commit.raw_id});
                      }
                      else if(data.results.length === 2){
                          $('#child_link').addClass('disabled');
                          $('#child_link').addClass('double');
                          var _html = '';
                          _html +='<a title="__title__" href="__url__">__rev__</a> <i style="color:#036185" class="icon-right-open"></i>'
                                  .replace('__rev__','r{0}:{1}'.format(data.results[0].revision, data.results[0].raw_id.substr(0,6)))
                                  .replace('__title__', data.results[0].message)
                                  .replace('__url__', pyroutes.url('changeset_home', {'repo_name': '${c.repo_name}','revision': data.results[0].raw_id}));
                          _html +='<br/>'
                          _html +='<a title="__title__" href="__url__">__rev__</a> <i style="color:#036185" class="icon-right-open"></i>'
                                  .replace('__rev__','r{0}:{1}'.format(data.results[1].revision, data.results[1].raw_id.substr(0,6)))
                                  .replace('__title__', data.results[1].message)
                                  .replace('__url__', pyroutes.url('changeset_home', {'repo_name': '${c.repo_name}','revision': data.results[1].raw_id}));
                          $('#child_link').html(_html);
                      }
                    }
                  });
              e.preventDefault();
              }
          });

          //prev links
          $('#parent_link').on('click', function(e){
              //fetch via ajax what is going to be the next link, if we have
              //>1 links show them to user to choose
              if(!$('#parent_link').hasClass('disabled')){
                  $.ajax({
                    url: '${h.url('changeset_parents',repo_name=c.repo_name, revision=c.changeset.raw_id)}',
                    success: function(data) {
                      if(data.results.length === 0){
                          $('#parent_link').addClass('disabled');
                          $('#parent_link').html('${_('No revisions')}');
                      }
                      if(data.results.length === 1){
                          var commit = data.results[0];
                          window.location = pyroutes.url('changeset_home', {'repo_name': '${c.repo_name}','revision': commit.raw_id});
                      }
                      else if(data.results.length === 2){
                          $('#parent_link').addClass('disabled');
                          $('#parent_link').addClass('double');
                          var _html = '';
                          _html +='<i style="color:#036185" class="icon-left-open"></i> <a title="__title__" href="__url__">__rev__</a>'
                                  .replace('__rev__','r{0}:{1}'.format(data.results[0].revision, data.results[0].raw_id.substr(0,6)))
                                  .replace('__title__', data.results[0].message)
                                  .replace('__url__', pyroutes.url('changeset_home', {'repo_name': '${c.repo_name}','revision': data.results[0].raw_id}));
                          _html +='<br/>'
                          _html +='<i style="color:#036185" class="icon-left-open"></i> <a title="__title__" href="__url__">__rev__</a>'
                                  .replace('__rev__','r{0}:{1}'.format(data.results[1].revision, data.results[1].raw_id.substr(0,6)))
                                  .replace('__title__', data.results[1].message)
                                  .replace('__url__', pyroutes.url('changeset_home', {'repo_name': '${c.repo_name}','revision': data.results[1].raw_id}));
                          $('#parent_link').html(_html);
                      }
                    }
                  });
              e.preventDefault();
              }
          });

          // 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>
  </div>
</%def>