Mercurial > kallithea
changeset 6940:7a31cb862a58
changeset: make parent/child navigation activation and javascript reusable
The javascript code is moved from changeset.html to base.js with minimal
changes. The markup code is moved to base.html.
The parameters ajax url and repo_name are stored as data properties on the link
element.
Use _TM['No revisions'] for translation of text.
author | domruf <dominikruf@gmail.com> |
---|---|
date | Wed, 16 Aug 2017 17:34:44 +0200 |
parents | 07f026cdf7ac |
children | d39fcf27fa44 |
files | kallithea/public/js/base.js kallithea/templates/base/base.html kallithea/templates/base/root.html kallithea/templates/changeset/changeset.html |
diffstat | 4 files changed, 109 insertions(+), 89 deletions(-) [+] |
line wrap: on
line diff
--- a/kallithea/public/js/base.js Thu May 04 20:51:26 2017 +0200 +++ b/kallithea/public/js/base.js Wed Aug 16 17:34:44 2017 +0200 @@ -1504,3 +1504,85 @@ $elem.html(count); } }; + + +/** + * activate changeset parent/child navigation links + */ +var activate_parent_child_links = function(){ + //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: $('#child_link').data('ajax-url'), + success: function(data) { + var repo_name = $('#child_link').data('reponame'); + if(data.results.length === 0){ + $('#child_link').addClass('disabled'); + $('#child_link').text(_TM['No revisions']); + } + if(data.results.length === 1){ + var commit = data.results[0]; + window.location = pyroutes.url('changeset_home', {'repo_name': 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 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': repo_name, 'revision': data.results[0].raw_id})); + _html +='<br/>' + _html +='<a title="__title__" href="__url__">__rev__</a> <i 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': 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: $('#parent_link').data('ajax-url'), + success: function(data) { + var repo_name = $('#parent_link').data('reponame'); + if(data.results.length === 0){ + $('#parent_link').addClass('disabled'); + $('#parent_link').text(_TM['No revisions']); + } + if(data.results.length === 1){ + var commit = data.results[0]; + window.location = pyroutes.url('changeset_home', {'repo_name': repo_name, 'revision': commit.raw_id}); + } + else if(data.results.length === 2){ + $('#parent_link').addClass('disabled'); + $('#parent_link').addClass('double'); + var _html = ''; + _html +='<i 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': repo_name, 'revision': data.results[0].raw_id})); + _html +='<br/>' + _html +='<i 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': repo_name, 'revision': data.results[1].raw_id})); + $('#parent_link').html(_html); + } + } + }); + e.preventDefault(); + } + }); +}
--- a/kallithea/templates/base/base.html Thu May 04 20:51:26 2017 +0200 +++ b/kallithea/templates/base/base.html Wed Aug 16 17:34:44 2017 +0200 @@ -528,3 +528,27 @@ }); </script> </%def> + +<%def name="parent_child_navigation()"> + <div class="parents pull-left"> + <div class="parent_link" + data-ajax-url="${h.url('changeset_parents',repo_name=c.repo_name, revision=c.changeset.raw_id)}" + data-reponame="${c.repo_name}"> + <i class="icon-left-open"></i> <a href="#">${_('Parent rev.')}</a> + </div> + </div> + + <div class="children pull-right"> + <div class="child_link" + data-ajax-url="${h.url('changeset_children',repo_name=c.repo_name, revision=c.changeset.raw_id)}" + data-reponame="${c.repo_name}"> + <a href="#">${_('Child rev.')}</a> <i class="icon-right-open"></i> + </div> + </div> + + <script type="text/javascript"> + $(document).ready(function(){ + activate_parent_child_links(); + }); + </script> +</%def>
--- a/kallithea/templates/base/root.html Thu May 04 20:51:26 2017 +0200 +++ b/kallithea/templates/base/root.html Wed Aug 16 17:34:44 2017 +0200 @@ -41,6 +41,7 @@ 'Selection Link': ${h.jshtml(_('Selection Link'))}, 'Collapse Diff': ${h.jshtml(_('Collapse Diff'))}, 'Expand Diff': ${h.jshtml(_('Expand Diff'))}, + 'No revisions': ${h.jshtml(_('No revisions'))}, 'Type name of user or member to grant permission': ${h.jshtml(_('Type name of user or member to grant permission'))}, 'Failed to revoke permission': ${h.jshtml(_('Failed to revoke permission'))}, 'Confirm to revoke permission for {0}: {1} ?': ${h.jshtml(_('Confirm to revoke permission for {0}: {1} ?'))}, @@ -102,6 +103,7 @@ pyroutes.register('toggle_following', ${h.js(h.url('toggle_following'))}); pyroutes.register('changeset_info', ${h.js(h.url('changeset_info', repo_name='%(repo_name)s', revision='%(revision)s'))}, ['repo_name', 'revision']); + pyroutes.register('changeset_home', ${h.js(h.url('changeset_home', repo_name='%(repo_name)s', revision='%(revision)s'))}, ['repo_name', 'revision']); pyroutes.register('repo_size', ${h.js(h.url('repo_size', repo_name='%(repo_name)s'))}, ['repo_name']); pyroutes.register('repo_refs_data', ${h.js(h.url('repo_refs_data', repo_name='%(repo_name)s'))}, ['repo_name']); });
--- a/kallithea/templates/changeset/changeset.html Thu May 04 20:51:26 2017 +0200 +++ b/kallithea/templates/changeset/changeset.html Wed Aug 16 17:34:44 2017 +0200 @@ -31,17 +31,7 @@ <div class="panel-body"> <div class="panel panel-default"> <div class="panel-heading clearfix"> - <div class="parents pull-left"> - <div id="parent_link"> - <i class="icon-left-open"></i> <a href="#">${_('Parent rev.')}</a> - </div> - </div> - - <div class="pull-right children"> - <div id="child_link"> - <a href="#">${_('Child rev.')}</a> <i class="icon-right-open"></i> - </div> - </div> + ${self.parent_child_navigation()} <div class="pull-left"> <div class="pull-left" title="${_('Changeset status')}"> @@ -214,84 +204,6 @@ move_comments($(".comments .comments-list-chunk")); - pyroutes.register('changeset_home', - ${h.js(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.js(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(${h.jshtml(_('No revisions'))}); - } - if(data.results.length === 1){ - var commit = data.results[0]; - window.location = pyroutes.url('changeset_home', {'repo_name': ${h.js(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 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': ${h.js(c.repo_name)},'revision': data.results[0].raw_id})); - _html +='<br/>' - _html +='<a title="__title__" href="__url__">__rev__</a> <i 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': ${h.js(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.js(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(${h.jshtml(_('No revisions'))}); - } - if(data.results.length === 1){ - var commit = data.results[0]; - window.location = pyroutes.url('changeset_home', {'repo_name': ${h.js(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 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': ${h.js(c.repo_name)},'revision': data.results[0].raw_id})); - _html +='<br/>' - _html +='<i 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': ${h.js(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;