|
|
<dl>
|
|
|
<dt>${_('Revision')}</dt>
|
|
|
<dd>
|
|
|
${h.link_to("r%s:%s" % (c.files_list.last_changeset.revision,h.short_id(c.files_list.last_changeset.raw_id)),
|
|
|
h.url('changeset_home',repo_name=c.repo_name,revision=c.files_list.last_changeset.raw_id))}
|
|
|
</dd>
|
|
|
<dt>${_('Size')}</dt>
|
|
|
<dd>${h.format_byte_size(c.files_list.size,binary=True)}</dd>
|
|
|
<dt>${_('Mimetype')}</dt>
|
|
|
<dd>${c.files_list.mimetype}</dd>
|
|
|
<dt>${_('Options')}</dt>
|
|
|
<dd>${h.link_to(_('show annotation'),
|
|
|
h.url('files_annotate_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.f_path))}
|
|
|
/ ${h.link_to(_('show as raw'),
|
|
|
h.url('files_raw_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.f_path))}
|
|
|
/ ${h.link_to(_('download as raw'),
|
|
|
h.url('files_rawfile_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.f_path))}
|
|
|
% if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name):
|
|
|
% if not c.files_list.is_binary:
|
|
|
/ ${h.link_to(_('edit'),
|
|
|
h.url('files_edit_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.f_path))}
|
|
|
% endif
|
|
|
% endif
|
|
|
</dd>
|
|
|
<dt>${_('History')}</dt>
|
|
|
<dd>
|
|
|
<div>
|
|
|
${h.form(h.url('files_diff_home',repo_name=c.repo_name,f_path=c.f_path),method='get')}
|
|
|
${h.hidden('diff2',c.files_list.last_changeset.raw_id)}
|
|
|
${h.select('diff1',c.files_list.last_changeset.raw_id,c.file_history)}
|
|
|
${h.submit('diff','diff to revision',class_="ui-button-small")}
|
|
|
${h.submit('show_rev','show at revision',class_="ui-button-small")}
|
|
|
${h.end_form()}
|
|
|
</div>
|
|
|
</dd>
|
|
|
</dl>
|
|
|
|
|
|
|
|
|
<div id="body" class="codeblock">
|
|
|
<div class="code-header">
|
|
|
<div class="revision">${c.files_list.name}@r${c.files_list.last_changeset.revision}:${h.short_id(c.files_list.last_changeset.raw_id)}</div>
|
|
|
<div class="commit">"${c.files_list.last_changeset.message}"</div>
|
|
|
</div>
|
|
|
<div class="code-body">
|
|
|
%if c.files_list.is_binary:
|
|
|
${_('Binary file (%s)') % c.files_list.mimetype}
|
|
|
%else:
|
|
|
% if c.files_list.size < c.cut_off_limit:
|
|
|
${h.pygmentize(c.files_list,linenos=True,anchorlinenos=True,lineanchors='L',cssclass="code-highlight")}
|
|
|
%else:
|
|
|
${_('File is too big to display')} ${h.link_to(_('show as raw'),
|
|
|
h.url('files_raw_home',repo_name=c.repo_name,revision=c.changeset.raw_id,f_path=c.f_path))}
|
|
|
%endif
|
|
|
<script type="text/javascript">
|
|
|
function highlight_lines(lines){
|
|
|
for(pos in lines){
|
|
|
YUD.setStyle('L'+lines[pos],'background-color','#FFFFBE');
|
|
|
}
|
|
|
}
|
|
|
page_highlights = location.href.substring(location.href.indexOf('#')+1).split('L');
|
|
|
if (page_highlights.length == 2){
|
|
|
highlight_ranges = page_highlights[1].split(",");
|
|
|
|
|
|
var h_lines = [];
|
|
|
for (pos in highlight_ranges){
|
|
|
var _range = highlight_ranges[pos].split('-');
|
|
|
if(_range.length == 2){
|
|
|
var start = parseInt(_range[0]);
|
|
|
var end = parseInt(_range[1]);
|
|
|
if (start < end){
|
|
|
for(var i=start;i<=end;i++){
|
|
|
h_lines.push(i);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
else{
|
|
|
h_lines.push(parseInt(highlight_ranges[pos]));
|
|
|
}
|
|
|
}
|
|
|
highlight_lines(h_lines);
|
|
|
|
|
|
//remember original location
|
|
|
var old_hash = location.href.substring(location.href.indexOf('#'));
|
|
|
|
|
|
// this makes a jump to anchor moved by 3 posstions for padding
|
|
|
window.location.hash = '#L'+Math.max(parseInt(h_lines[0])-3,1);
|
|
|
|
|
|
//sets old anchor
|
|
|
window.location.hash = old_hash;
|
|
|
|
|
|
}
|
|
|
</script>
|
|
|
%endif
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<script type="text/javascript">
|
|
|
YUE.onDOMReady(function(){
|
|
|
YUE.on('show_rev','click',function(e){
|
|
|
YUE.preventDefault(e);
|
|
|
var cs = YAHOO.util.Dom.get('diff1').value;
|
|
|
var url = "${h.url('files_home',repo_name=c.repo_name,revision='__CS__',f_path=c.f_path)}".replace('__CS__',cs);
|
|
|
window.location = url;
|
|
|
});
|
|
|
|
|
|
function getIdentNode(n){
|
|
|
//iterate thru nodes untill matched interesting node !
|
|
|
|
|
|
if (typeof n == 'undefined'){
|
|
|
return -1
|
|
|
}
|
|
|
|
|
|
if(typeof n.id != "undefined" && n.id.match('L[0-9]+')){
|
|
|
return n
|
|
|
}
|
|
|
else{
|
|
|
return getIdentNode(n.parentNode);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
function getSelectionLink() {
|
|
|
//get selection from start/to nodes
|
|
|
if (typeof window.getSelection != "undefined") {
|
|
|
s = window.getSelection();
|
|
|
|
|
|
from = getIdentNode(s.anchorNode);
|
|
|
till = getIdentNode(s.focusNode);
|
|
|
|
|
|
f_int = parseInt(from.id.replace('L',''));
|
|
|
t_int = parseInt(till.id.replace('L',''));
|
|
|
|
|
|
if (f_int > t_int){
|
|
|
//highlight from bottom
|
|
|
offset = -35;
|
|
|
ranges = [t_int,f_int];
|
|
|
|
|
|
}
|
|
|
else{
|
|
|
//highligth from top
|
|
|
offset = 35;
|
|
|
ranges = [f_int,t_int];
|
|
|
}
|
|
|
|
|
|
if (ranges[0] != ranges[1]){
|
|
|
if(YUD.get('linktt') == null){
|
|
|
hl_div = document.createElement('div');
|
|
|
hl_div.id = 'linktt';
|
|
|
}
|
|
|
anchor = '#L'+ranges[0]+'-'+ranges[1];
|
|
|
hl_div.innerHTML = '';
|
|
|
l = document.createElement('a');
|
|
|
l.href = location.href.substring(0,location.href.indexOf('#'))+anchor;
|
|
|
l.innerHTML = "${_('Selection link')}"
|
|
|
hl_div.appendChild(l);
|
|
|
|
|
|
YUD.get('body').appendChild(hl_div);
|
|
|
|
|
|
xy = YUD.getXY(till.id);
|
|
|
|
|
|
YUD.addClass('linktt','yui-tt');
|
|
|
YUD.setStyle('linktt','top',xy[1]+offset+'px');
|
|
|
YUD.setStyle('linktt','left',xy[0]+'px');
|
|
|
YUD.setStyle('linktt','visibility','visible');
|
|
|
}
|
|
|
else{
|
|
|
YUD.setStyle('linktt','visibility','hidden');
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
YUE.on('hlcode','mouseup',getSelectionLink)
|
|
|
|
|
|
});
|
|
|
</script>
|
|
|
|