|
|
<%inherit file="/base/base.html"/>
|
|
|
|
|
|
<%def name="title()">
|
|
|
${_('%s files') % c.repo_name} - ${c.rhodecode_name}
|
|
|
</%def>
|
|
|
|
|
|
<%def name="breadcrumbs_links()">
|
|
|
${_('Files')}
|
|
|
%if c.file:
|
|
|
@ r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)}
|
|
|
%endif
|
|
|
</%def>
|
|
|
|
|
|
<%def name="page_nav()">
|
|
|
${self.menu('files')}
|
|
|
</%def>
|
|
|
|
|
|
<%def name="main()">
|
|
|
${self.context_bar('files')}
|
|
|
<div class="box">
|
|
|
<!-- box / title -->
|
|
|
<div class="title">
|
|
|
${self.breadcrumbs()}
|
|
|
<ul class="links">
|
|
|
<li>
|
|
|
<span style="text-transform: uppercase;"><a href="#">${_('branch')}: ${c.changeset.branch}</a></span>
|
|
|
</li>
|
|
|
</ul>
|
|
|
</div>
|
|
|
<div class="table">
|
|
|
<div id="files_data">
|
|
|
<%include file='files_ypjax.html'/>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<script type="text/javascript">
|
|
|
var CACHE = {};
|
|
|
var CACHE_EXPIRE = 5*60*1000; //cache for 5*60s
|
|
|
//used to construct links from the search list
|
|
|
var url_base = '${h.url("files_home",repo_name=c.repo_name,revision='__REV__',f_path='__FPATH__')}';
|
|
|
//send the nodelist request to this url
|
|
|
var node_list_url = '${h.url("files_nodelist_home",repo_name=c.repo_name,revision='__REV__',f_path='__FPATH__')}';
|
|
|
// send the node history requst to this url
|
|
|
var node_history_url = '${h.url("files_history_home",repo_name=c.repo_name,revision='__REV__',f_path='__FPATH__')}';
|
|
|
|
|
|
var ypjax_links = function(){
|
|
|
YUE.on(YUQ('.ypjax-link'), 'click',function(e){
|
|
|
|
|
|
//don't do ypjax on middle click
|
|
|
if(e.which == 2 || !History.enabled){
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
var el = e.currentTarget;
|
|
|
var url = el.href;
|
|
|
|
|
|
var _base_url = '${h.url("files_home",repo_name=c.repo_name,revision='',f_path='')}';
|
|
|
_base_url = _base_url.replace('//','/')
|
|
|
|
|
|
//extract rev and the f_path from url.
|
|
|
parts = url.split(_base_url)
|
|
|
if(parts.length != 2){
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
var parts2 = parts[1].split('/');
|
|
|
var rev = parts2.shift(); // pop the first element which is the revision
|
|
|
var f_path = parts2.join('/');
|
|
|
|
|
|
var title = "${_('%s files') % c.repo_name}" + " - " + f_path;
|
|
|
|
|
|
var _node_list_url = node_list_url.replace('__REV__',rev).replace('__FPATH__', f_path);
|
|
|
var _url_base = url_base.replace('__REV__',rev);
|
|
|
|
|
|
// Change our States and save some data for handling events
|
|
|
var data = {url:url,title:title, url_base:_url_base,
|
|
|
node_list_url:_node_list_url, rev:rev, f_path:f_path};
|
|
|
History.pushState(data, title, url);
|
|
|
|
|
|
//now we're sure that we can do ypjax things
|
|
|
YUE.preventDefault(e);
|
|
|
return false;
|
|
|
});
|
|
|
}
|
|
|
|
|
|
var callbacks = function(State){
|
|
|
ypjax_links();
|
|
|
tooltip_activate();
|
|
|
fileBrowserListeners(State.url, State.data.node_list_url, State.data.url_base);
|
|
|
|
|
|
if(YUD.get('hlcode')){
|
|
|
YUE.on('hlcode', 'mouseup', getSelectionLink);
|
|
|
}
|
|
|
//console.log(State);
|
|
|
if(YUD.get('load_node_history')){
|
|
|
//remove all listeners due to problems of history state
|
|
|
YUE.removeListener('load_node_history', 'click');
|
|
|
YUE.on('load_node_history', 'click', function(e){
|
|
|
var _url = node_history_url.replace('__REV__',State.data.rev).replace('__FPATH__', State.data.f_path);
|
|
|
ypjax(_url, 'node_history', function(o){
|
|
|
tooltip_activate();
|
|
|
})
|
|
|
});
|
|
|
}
|
|
|
// Inform Google Analytics of the change
|
|
|
if ( typeof window.pageTracker !== 'undefined' ) {
|
|
|
window.pageTracker._trackPageview(State.url);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
YUE.onDOMReady(function(){
|
|
|
ypjax_links();
|
|
|
var container = 'files_data';
|
|
|
//Bind to StateChange Event
|
|
|
History.Adapter.bind(window,'statechange',function(){
|
|
|
var State = History.getState();
|
|
|
cache_key = State.url;
|
|
|
//check if we have this request in cache maybe ?
|
|
|
var _cache_obj = CACHE[cache_key];
|
|
|
var _cur_time = new Date().getTime();
|
|
|
// get from cache if it's there and not yet expired !
|
|
|
if(_cache_obj !== undefined && _cache_obj[0] > _cur_time){
|
|
|
YUD.get(container).innerHTML=_cache_obj[1];
|
|
|
YUD.setStyle(container,'opacity','1.0');
|
|
|
|
|
|
//callbacks after ypjax call
|
|
|
callbacks(State);
|
|
|
}
|
|
|
else{
|
|
|
ypjax(State.url,container,function(o){
|
|
|
//callbacks after ypjax call
|
|
|
callbacks(State);
|
|
|
if (o !== undefined){
|
|
|
//store our request in cache
|
|
|
var _expire_on = new Date().getTime()+CACHE_EXPIRE;
|
|
|
CACHE[cache_key] = [_expire_on, o.responseText];
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
|
|
|
// init the search filter
|
|
|
var _State = {
|
|
|
url: "${h.url.current()}",
|
|
|
data: {
|
|
|
node_list_url: node_list_url.replace('__REV__',"${c.changeset.raw_id}").replace('__FPATH__', "${h.safe_unicode(c.file.path)}"),
|
|
|
url_base: url_base.replace('__REV__',"${c.changeset.raw_id}"),
|
|
|
rev:"${c.changeset.raw_id}",
|
|
|
f_path: "${h.safe_unicode(c.file.path)}"
|
|
|
}
|
|
|
}
|
|
|
fileBrowserListeners(_State.url, _State.data.node_list_url, _State.data.url_base);
|
|
|
});
|
|
|
|
|
|
</script>
|
|
|
|
|
|
</%def>
|
|
|
|