Files @ af96fb19b53a
Branch filter:

Location: kallithea/rhodecode/templates/files/files.html - annotation

Marcin Kuzminski
Pass in old groups data to CanWriteToGroup validator for later skipping group checks.
This will be a part of refactoring done to do user permissions changes without messing with main
repo form data
1e757ac98988
1e757ac98988
1e757ac98988
269c6e0b54cc
1e757ac98988
1e757ac98988
1e757ac98988
79818f546538
1e757ac98988
f74be3359044
1e757ac98988
1e757ac98988
61eda8bf70d0
c8bd0e6cc3da
f91d3f9b7230
1e757ac98988
1e757ac98988
1e757ac98988
f91d3f9b7230
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
c8bd0e6cc3da
b4f401524060
b4f401524060
b4f401524060
b4f401524060
b4f401524060
1e757ac98988
1e757ac98988
b4f401524060
b4f401524060
b4f401524060
1e757ac98988
f91d3f9b7230
269c6e0b54cc
623b228cf325
269c6e0b54cc
37c7abd34d44
4d7dfda32d10
9812e617c564
4d7dfda32d10
9812e617c564
37c7abd34d44
37c7abd34d44
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
acc05c33cc0c
b4f401524060
b4f401524060
b4f401524060
b4f401524060
acc05c33cc0c
269c6e0b54cc
269c6e0b54cc
e70be4cf96e8
269c6e0b54cc
269c6e0b54cc
acc05c33cc0c
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
b4f401524060
269c6e0b54cc
acc05c33cc0c
269c6e0b54cc
b4f401524060
b4f401524060
acc05c33cc0c
269c6e0b54cc
acc05c33cc0c
9812e617c564
9812e617c564
e70be4cf96e8
269c6e0b54cc
4d7dfda32d10
37c7abd34d44
acc05c33cc0c
acc05c33cc0c
269c6e0b54cc
cff9d4e1d821
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
685ebc84c2e9
37c7abd34d44
b4f401524060
37c7abd34d44
37c7abd34d44
37c7abd34d44
37c7abd34d44
37c7abd34d44
37c7abd34d44
37c7abd34d44
adf8ee7b8f2a
b4f401524060
adf8ee7b8f2a
37c7abd34d44
37c7abd34d44
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
acc05c33cc0c
269c6e0b54cc
269c6e0b54cc
acc05c33cc0c
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
b4f401524060
b4f401524060
b4f401524060
b4f401524060
b4f401524060
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
acc05c33cc0c
acc05c33cc0c
4d7dfda32d10
4d7dfda32d10
4d7dfda32d10
4d7dfda32d10
9812e617c564
37c7abd34d44
37c7abd34d44
37c7abd34d44
4d7dfda32d10
4d7dfda32d10
4d7dfda32d10
269c6e0b54cc
269c6e0b54cc
623b228cf325
269c6e0b54cc
f91d3f9b7230
<%inherit file="/base/base.html"/>

<%def name="title()">
    ${_('%s files') % c.repo_name} - ${c.rhodecode_name}
</%def>

<%def name="breadcrumbs_links()">
    ${h.link_to(_(u'Home'),h.url('/'))}
    &raquo;
    ${h.repo_link(c.rhodecode_db_repo.groups_and_repo)}
    &raquo;
    ${_('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()">
<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>