changelog.html
259 lines
| 12.3 KiB
| text/html
|
HtmlLexer
r547 | ## -*- coding: utf-8 -*- | |||
<%inherit file="/base/base.html"/> | ||||
<%def name="title()"> | ||||
|
r2417 | ${_('%s Changelog') % c.repo_name} - ${c.rhodecode_name} | ||
r547 | </%def> | |||
<%def name="breadcrumbs_links()"> | ||||
|
r2492 | ${h.link_to(_(u'Home'),h.url('/'))} | ||
r547 | » | |||
${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))} | ||||
» | ||||
|
r2312 | <% size = c.size if c.size <= c.total_cs else c.total_cs %> | ||
${_('Changelog')} - ${ungettext('showing %d out of %d revision', 'showing %d out of %d revisions', size) % (size, c.total_cs)} | ||||
r547 | </%def> | |||
<%def name="page_nav()"> | ||||
r1888 | ${self.menu('changelog')} | |||
r547 | </%def> | |||
<%def name="main()"> | ||||
<div class="box"> | ||||
<!-- box / title --> | ||||
<div class="title"> | ||||
${self.breadcrumbs()} | ||||
</div> | ||||
<div class="table"> | ||||
% if c.pagination: | ||||
<div id="graph"> | ||||
<div id="graph_nodes"> | ||||
<canvas id="graph_canvas"></canvas> | ||||
</div> | ||||
<div id="graph_content"> | ||||
r2363 | <div class="info_box" style="clear: both;padding: 10px 6px;vertical-align: right;text-align: right;"> | |||
r2885 | <a href="#" class="ui-btn small" id="rev_range_container" style="display:none"></a> | |||
r2363 | %if c.rhodecode_db_repo.fork: | |||
<a title="${_('compare fork with %s' % c.rhodecode_db_repo.fork.repo_name)}" href="${h.url('compare_url',repo_name=c.repo_name,org_ref_type='branch',org_ref='default',other_ref_type='branch',other_ref='default',repo=c.rhodecode_db_repo.fork.repo_name)}" class="ui-btn small">${_('Compare fork')}</a> | ||||
%endif | ||||
r2773 | %if h.is_hg(c.rhodecode_repo): | |||
r2363 | <a href="${h.url('pullrequest_home',repo_name=c.repo_name)}" class="ui-btn small">${_('Open new pull request')}</a> | |||
r2773 | %endif | |||
r2363 | </div> | |||
r547 | <div class="container_header"> | |||
r977 | ${h.form(h.url.current(),method='get')} | |||
r1656 | <div class="info_box" style="float:left"> | |||
r1756 | ${h.submit('set',_('Show'),class_="ui-btn")} | |||
r977 | ${h.text('size',size=1,value=c.size)} | |||
|
r1850 | ${_('revisions')} | ||
r977 | </div> | |||
${h.end_form()} | ||||
r1656 | <div style="float:right">${h.select('branch_filter',c.branch_name,c.branch_filters)}</div> | |||
r547 | </div> | |||
r1888 | ||||
r547 | %for cnt,cs in enumerate(c.pagination): | |||
r1865 | <div id="chg_${cnt+1}" class="container ${'tablerow%s' % (cnt%2)}"> | |||
r547 | <div class="left"> | |||
|
r1853 | <div> | ||
r2512 | ${h.checkbox(cs.raw_id,class_="changeset_range")} | |||
r2427 | <span class="tooltip" title="${h.tooltip(h.age(cs.date))}"><a href="${h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id)}"><span class="changeset_id">${cs.revision}:<span class="changeset_hash">${h.short_id(cs.raw_id)}</span></span></a></span> | |||
r977 | </div> | |||
r547 | <div class="author"> | |||
<div class="gravatar"> | ||||
r2732 | <img alt="gravatar" src="${h.gravatar_url(h.email_or_none(cs.author),16)}"/> | |||
r547 | </div> | |||
r2342 | <div title="${cs.author}" class="user">${h.shorter(h.person(cs.author),22)}</div> | |||
r547 | </div> | |||
|
r2416 | <div class="date">${h.fmt_date(cs.date)}</div> | ||
|
r1849 | </div> | ||
<div class="mid"> | ||||
r2426 | <div class="message">${h.urlify_commit(cs.message, c.repo_name,h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id))}</div> | |||
|
r1882 | <div class="expand"><span class="expandtext">↓ ${_('show more')} ↓</span></div> | ||
r1888 | </div> | |||
r547 | <div class="right"> | |||
r2219 | <div class="changes"> | |||
r2744 | <div id="changed_total_${cs.raw_id}" style="float:right;" class="changed_total tooltip" title="${h.tooltip(_('Affected number of files, click to show more details'))}">${len(cs.affected_files)}</div> | |||
r1884 | <div class="comments-container"> | |||
%if len(c.comments.get(cs.raw_id,[])) > 0: | ||||
r1885 | <div class="comments-cnt" title="${('comments')}"> | |||
<a href="${h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id,anchor='comment-%s' % c.comments[cs.raw_id][0].comment_id)}"> | ||||
<div class="comments-cnt">${len(c.comments[cs.raw_id])}</div> | ||||
<img src="${h.url('/images/icons/comments.png')}"> | ||||
</a> | ||||
</div> | ||||
r1888 | %endif | |||
r1884 | </div> | |||
r2217 | <div class="changeset-status-container"> | |||
%if c.statuses.get(cs.raw_id): | ||||
r2239 | <div title="${_('Changeset status')}" class="changeset-status-lbl">${c.statuses.get(cs.raw_id)[1]}</div> | |||
r2443 | <div class="changeset-status-ico"> | |||
%if c.statuses.get(cs.raw_id)[2]: | ||||
<a class="tooltip" title="${_('Click to open associated pull request')}" href="${h.url('pullrequest_show',repo_name=c.statuses.get(cs.raw_id)[3],pull_request_id=c.statuses.get(cs.raw_id)[2])}"><img src="${h.url('/images/icons/flag_status_%s.png' % c.statuses.get(cs.raw_id)[0])}" /></a> | ||||
%else: | ||||
<img src="${h.url('/images/icons/flag_status_%s.png' % c.statuses.get(cs.raw_id)[0])}" /> | ||||
%endif | ||||
</div> | ||||
r2217 | %endif | |||
</div> | ||||
r1884 | </div> | |||
|
r1856 | %if cs.parents: | ||
r547 | %for p_cs in reversed(cs.parents): | |||
|
r1853 | <div class="parent">${_('Parent')} | ||
<span class="changeset_id">${p_cs.revision}:<span class="changeset_hash">${h.link_to(h.short_id(p_cs.raw_id), | ||||
h.url('changeset_home',repo_name=c.repo_name,revision=p_cs.raw_id),title=p_cs.message)}</span></span> | ||||
r547 | </div> | |||
%endfor | ||||
r1888 | %else: | |||
<div class="parent">${_('No parents')}</div> | ||||
%endif | ||||
r547 | <span class="logtags"> | |||
|
r1856 | %if len(cs.parents)>1: | ||
<span class="merge">${_('merge')}</span> | ||||
%endif | ||||
r2198 | %if cs.branch: | |||
r547 | <span class="branchtag" title="${'%s %s' % (_('branch'),cs.branch)}"> | |||
r2247 | ${h.link_to(h.shorter(cs.branch),h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id))} | |||
</span> | ||||
r699 | %endif | |||
r2247 | %if h.is_hg(c.rhodecode_repo): | |||
%for book in cs.bookmarks: | ||||
<span class="bookbook" title="${'%s %s' % (_('bookmark'),book)}"> | ||||
${h.link_to(h.shorter(book),h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id))} | ||||
r2269 | </span> | |||
%endfor | ||||
r2247 | %endif | |||
r547 | %for tag in cs.tags: | |||
<span class="tagtag" title="${'%s %s' % (_('tag'),tag)}"> | ||||
r2162 | ${h.link_to(h.shorter(tag),h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id))}</span> | |||
r547 | %endfor | |||
r1888 | </span> | |||
</div> | ||||
r547 | </div> | |||
r1888 | ||||
r547 | %endfor | |||
<div class="pagination-wh pagination-left"> | ||||
${c.pagination.pager('$link_previous ~2~ $link_next')} | ||||
r1888 | </div> | |||
r547 | </div> | |||
</div> | ||||
r1888 | ||||
r1050 | <script type="text/javascript" src="${h.url('/js/graph.js')}"></script> | |||
r547 | <script type="text/javascript"> | |||
YAHOO.util.Event.onDOMReady(function(){ | ||||
r1888 | ||||
r977 | //Monitor range checkboxes and build a link to changesets | |||
r1888 | //ranges | |||
r977 | var checkboxes = YUD.getElementsByClassName('changeset_range'); | |||
var url_tmpl = "${h.url('changeset_home',repo_name=c.repo_name,revision='__REVRANGE__')}"; | ||||
r1888 | YUE.on(checkboxes,'click',function(e){ | |||
r977 | var checked_checkboxes = []; | |||
for (pos in checkboxes){ | ||||
if(checkboxes[pos].checked){ | ||||
checked_checkboxes.push(checkboxes[pos]); | ||||
} | ||||
} | ||||
if(checked_checkboxes.length>1){ | ||||
var rev_end = checked_checkboxes[0].name; | ||||
var rev_start = checked_checkboxes[checked_checkboxes.length-1].name; | ||||
r1888 | ||||
r977 | var url = url_tmpl.replace('__REVRANGE__', | |||
rev_start+'...'+rev_end); | ||||
r1888 | ||||
r2885 | var link = "${_('Show selected changes __S -> __E')}"; | |||
r2512 | link = link.replace('__S',rev_start.substr(0,6)); | |||
link = link.replace('__E',rev_end.substr(0,6)); | ||||
r2885 | YUD.get('rev_range_container').href = url; | |||
r977 | YUD.get('rev_range_container').innerHTML = link; | |||
YUD.setStyle('rev_range_container','display',''); | ||||
} | ||||
else{ | ||||
YUD.setStyle('rev_range_container','display','none'); | ||||
} | ||||
r1888 | }); | |||
r1865 | var msgs = YUQ('.message'); | |||
|
r1879 | // get first element height | ||
r1934 | var el = YUQ('#graph_content .container')[0]; | |||
r1865 | var row_h = el.clientHeight; | |||
for(var i=0;i<msgs.length;i++){ | ||||
var m = msgs[i]; | ||||
var h = m.clientHeight; | ||||
var pad = YUD.getStyle(m,'padding'); | ||||
if(h > row_h){ | ||||
r1934 | var offset = row_h - (h+12); | |||
r1865 | YUD.setStyle(m.nextElementSibling,'display','block'); | |||
r1934 | YUD.setStyle(m.nextElementSibling,'margin-top',offset+'px'); | |||
r1865 | }; | |||
} | ||||
YUE.on(YUQ('.expand'),'click',function(e){ | ||||
|
r1879 | var elem = e.currentTarget.parentNode.parentNode; | ||
r1865 | YUD.setStyle(e.currentTarget,'display','none'); | |||
|
r1879 | YUD.setStyle(elem,'height','auto'); | ||
r1888 | ||||
|
r1879 | //redraw the graph, max_w and jsdata are global vars | ||
r1865 | set_canvas(max_w); | |||
r1888 | ||||
r1865 | var r = new BranchRenderer(); | |||
r1888 | r.render(jsdata,max_w); | |||
r1865 | }) | |||
r1888 | ||||
// Fetch changeset details | ||||
r1431 | YUE.on(YUD.getElementsByClassName('changed_total'),'click',function(e){ | |||
r2744 | var id = e.currentTarget.id; | |||
var url = "${h.url('changelog_details',repo_name=c.repo_name,cs='__CS__')}"; | ||||
var url = url.replace('__CS__',id.replace('changed_total_','')); | ||||
r2219 | ypjax(url,id,function(){tooltip_activate()}); | |||
r1431 | }); | |||
r1888 | ||||
r1656 | // change branch filter | |||
YUE.on(YUD.get('branch_filter'),'change',function(e){ | ||||
var selected_branch = e.currentTarget.options[e.currentTarget.selectedIndex].value; | ||||
var url_main = "${h.url('changelog_home',repo_name=c.repo_name)}"; | ||||
var url = "${h.url('changelog_home',repo_name=c.repo_name,branch='__BRANCH__')}"; | ||||
var url = url.replace('__BRANCH__',selected_branch); | ||||
if(selected_branch != ''){ | ||||
window.location = url; | ||||
}else{ | ||||
window.location = url_main; | ||||
} | ||||
r1888 | ||||
r1656 | }); | |||
r1888 | ||||
r1429 | function set_canvas(heads) { | |||
r547 | var c = document.getElementById('graph_nodes'); | |||
var t = document.getElementById('graph_content'); | ||||
canvas = document.getElementById('graph_canvas'); | ||||
var div_h = t.clientHeight; | ||||
c.style.height=div_h+'px'; | ||||
canvas.setAttribute('height',div_h); | ||||
r1429 | c.style.height=max_w+'px'; | |||
canvas.setAttribute('width',max_w); | ||||
r547 | }; | |||
r1429 | var heads = 1; | |||
var max_heads = 0; | ||||
r547 | var jsdata = ${c.jsdata|n}; | |||
r1888 | ||||
r1429 | for( var i=0;i<jsdata.length;i++){ | |||
var m = Math.max.apply(Math, jsdata[i][1]); | ||||
if (m>max_heads){ | ||||
max_heads = m; | ||||
} | ||||
} | ||||
var max_w = Math.max(100,max_heads*25); | ||||
set_canvas(max_w); | ||||
r1888 | ||||
r547 | var r = new BranchRenderer(); | |||
r1429 | r.render(jsdata,max_w); | |||
r1888 | ||||
r547 | }); | |||
</script> | ||||
%else: | ||||
${_('There are no changes yet')} | ||||
r1888 | %endif | |||
r547 | </div> | |||
r1888 | </div> | |||
r1865 | </%def> | |||