files.html
158 lines
| 5.1 KiB
| text/html
|
HtmlLexer
r547 | <%inherit file="/base/base.html"/> | |||
<%def name="title()"> | ||||
r2686 | ${_('%s files') % c.repo_name} - ${c.rhodecode_name} | |||
r547 | </%def> | |||
<%def name="breadcrumbs_links()"> | ||||
Leonardo
|
r3532 | ${_('Files')} | ||
r1737 | %if c.file: | |||
r644 | @ r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)} | |||
r1888 | %endif | |||
r547 | </%def> | |||
<%def name="page_nav()"> | ||||
r1888 | ${self.menu('files')} | |||
r547 | </%def> | |||
<%def name="main()"> | ||||
Leonardo
|
r3527 | ${self.context_bar('files')} | ||
r547 | <div class="box"> | |||
<!-- box / title --> | ||||
<div class="title"> | ||||
r644 | ${self.breadcrumbs()} | |||
Mads Kiilerich
|
r3197 | <ul class="links"> | ||
<li> | ||||
<span style="text-transform: uppercase;"><a href="#">${_('branch')}: ${c.changeset.branch}</a></span> | ||||
</li> | ||||
</ul> | ||||
r547 | </div> | |||
<div class="table"> | ||||
Mads Kiilerich
|
r3197 | <div id="files_data"> | ||
<%include file='files_ypjax.html'/> | ||||
</div> | ||||
r547 | </div> | |||
r1888 | </div> | |||
r2686 | ||||
r1699 | <script type="text/javascript"> | |||
r2686 | var CACHE = {}; | |||
r3001 | var CACHE_EXPIRE = 5*60*1000; //cache for 5*60s | |||
r2687 | //used to construct links from the search list | |||
r2891 | var url_base = '${h.url("files_home",repo_name=c.repo_name,revision='__REV__',f_path='__FPATH__')}'; | |||
r2687 | //send the nodelist request to this url | |||
r2891 | var node_list_url = '${h.url("files_nodelist_home",repo_name=c.repo_name,revision='__REV__',f_path='__FPATH__')}'; | |||
r3001 | // 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__')}'; | ||||
r2686 | ||||
var ypjax_links = function(){ | ||||
YUE.on(YUQ('.ypjax-link'), 'click',function(e){ | ||||
r2815 | ||||
Mads Kiilerich
|
r3197 | //don't do ypjax on middle click | ||
if(e.which == 2 || !History.enabled){ | ||||
return true; | ||||
} | ||||
r2815 | ||||
r2686 | var el = e.currentTarget; | |||
var url = el.href; | ||||
r2691 | ||||
r2686 | var _base_url = '${h.url("files_home",repo_name=c.repo_name,revision='',f_path='')}'; | |||
_base_url = _base_url.replace('//','/') | ||||
r2815 | ||||
r2686 | //extract rev and the f_path from url. | |||
parts = url.split(_base_url) | ||||
if(parts.length != 2){ | ||||
Mads Kiilerich
|
r3197 | return false; | ||
r2686 | } | |||
r2815 | ||||
r2686 | var parts2 = parts[1].split('/'); | |||
Mads Kiilerich
|
r3197 | var rev = parts2.shift(); // pop the first element which is the revision | ||
var f_path = parts2.join('/'); | ||||
r2815 | ||||
r2686 | var title = "${_('%s files') % c.repo_name}" + " - " + f_path; | |||
r2815 | ||||
r2891 | var _node_list_url = node_list_url.replace('__REV__',rev).replace('__FPATH__', f_path); | |||
var _url_base = url_base.replace('__REV__',rev); | ||||
r2691 | ||||
r2686 | // Change our States and save some data for handling events | |||
r2687 | var data = {url:url,title:title, url_base:_url_base, | |||
r3001 | node_list_url:_node_list_url, rev:rev, f_path:f_path}; | |||
r2815 | History.pushState(data, title, url); | |||
r2686 | //now we're sure that we can do ypjax things | |||
r2977 | YUE.preventDefault(e); | |||
r2686 | return false; | |||
}); | ||||
} | ||||
var callbacks = function(State){ | ||||
ypjax_links(); | ||||
tooltip_activate(); | ||||
fileBrowserListeners(State.url, State.data.node_list_url, State.data.url_base); | ||||
r3029 | ||||
r3001 | if(YUD.get('hlcode')){ | |||
Mads Kiilerich
|
r3197 | YUE.on('hlcode', 'mouseup', getSelectionLink); | ||
r3001 | } | |||
//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); | ||||
r3003 | ypjax(_url, 'node_history', function(o){ | |||
Mads Kiilerich
|
r3197 | tooltip_activate(); | ||
r3003 | }) | |||
r3001 | }); | |||
} | ||||
r2686 | // Inform Google Analytics of the change | |||
if ( typeof window.pageTracker !== 'undefined' ) { | ||||
window.pageTracker._trackPageview(State.url); | ||||
r2815 | } | |||
r2686 | } | |||
r2815 | YUE.onDOMReady(function(){ | |||
r2686 | 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){ | ||||
Mads Kiilerich
|
r3197 | //callbacks after ypjax call | ||
callbacks(State); | ||||
if (o !== undefined){ | ||||
//store our request in cache | ||||
var _expire_on = new Date().getTime()+CACHE_EXPIRE; | ||||
r2686 | CACHE[cache_key] = [_expire_on, o.responseText]; | |||
} | ||||
}); | ||||
} | ||||
r2815 | }); | |||
r2687 | // init the search filter | |||
var _State = { | ||||
url: "${h.url.current()}", | ||||
data: { | ||||
r2891 | node_list_url: node_list_url.replace('__REV__',"${c.changeset.raw_id}").replace('__FPATH__', "${h.safe_unicode(c.file.path)}"), | |||
r3001 | url_base: url_base.replace('__REV__',"${c.changeset.raw_id}"), | |||
rev:"${c.changeset.raw_id}", | ||||
f_path: "${h.safe_unicode(c.file.path)}" | ||||
r2687 | } | |||
} | ||||
fileBrowserListeners(_State.url, _State.data.node_list_url, _State.data.url_base); | ||||
r2686 | }); | |||
r1699 | </script> | |||
r2686 | ||||
r1888 | </%def> | |||