Files @ 37c7abd34d44
Branch filter:

Location: kallithea/rhodecode/templates/base/root.html - annotation

Marcin Kuzminski
implements #636, lazy loading of history and authors to speed up page responsiveness.
- loading full history is not always needed, and it's very heavy operation. Now this is lazy loaded
when clicking on button
41241617a7a3
e77fbd3b069c
41241617a7a3
41241617a7a3
41241617a7a3
41241617a7a3
41241617a7a3
c6b811f11c94
c6b811f11c94
c6b811f11c94
c6b811f11c94
867820342329
867820342329
c6b811f11c94
c6b811f11c94
c6b811f11c94
c6b811f11c94
c6b811f11c94
f91d3f9b7230
41241617a7a3
f91d3f9b7230
41241617a7a3
41241617a7a3
41241617a7a3
41241617a7a3
41241617a7a3
41241617a7a3
f91d3f9b7230
41241617a7a3
41241617a7a3
41241617a7a3
41241617a7a3
41241617a7a3
41241617a7a3
41241617a7a3
f91d3f9b7230
c6b811f11c94
c6b811f11c94
c2f131502037
c2f131502037
c2f131502037
c2f131502037
c2f131502037
c2f131502037
c2f131502037
530bd12fc18a
95f03f8f5f9a
530bd12fc18a
58bb350bfef8
58bb350bfef8
58bb350bfef8
58bb350bfef8
37c7abd34d44
c2f131502037
c2f131502037
c2f131502037
867820342329
9d54d6516e2e
c6b811f11c94
c6b811f11c94
867820342329
867820342329
867820342329
c6b811f11c94
c6b811f11c94
f91d3f9b7230
c6b811f11c94
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
269c6e0b54cc
bc16d1d0869a
56e96d4e9f6e
bc16d1d0869a
c6b811f11c94
c6b811f11c94
f91d3f9b7230
c6b811f11c94
c6b811f11c94
c2f131502037
f91d3f9b7230
c6b811f11c94
c6b811f11c94
c6b811f11c94
c6b811f11c94
c6b811f11c94
c6b811f11c94
c6b811f11c94
c2f131502037
c6b811f11c94
ad4bc0f66d6a
c6b811f11c94
f91d3f9b7230
c6b811f11c94
c6b811f11c94
f91d3f9b7230
bc16d1d0869a
c6b811f11c94
c6b811f11c94
c6b811f11c94
c6b811f11c94
c6b811f11c94
bc16d1d0869a
c6b811f11c94
bc16d1d0869a
c6b811f11c94
c6b811f11c94
c6b811f11c94
c6b811f11c94
f91d3f9b7230
bc16d1d0869a
f91d3f9b7230
c6b811f11c94
c6b811f11c94
c6b811f11c94
c6b811f11c94
f91d3f9b7230
bc16d1d0869a
c6b811f11c94
bc16d1d0869a
c6b811f11c94
f91d3f9b7230
c6b811f11c94
c6b811f11c94
c6b811f11c94
bc16d1d0869a
f91d3f9b7230
2bfcec6a3985
f91d3f9b7230
c6b811f11c94
f91d3f9b7230
bc16d1d0869a
f91d3f9b7230
c6b811f11c94
c6b811f11c94
c6b811f11c94
c6b811f11c94
c6b811f11c94
c6b811f11c94
c6b811f11c94
049bc911b04f
049bc911b04f
049bc911b04f
049bc911b04f
c6b811f11c94
c6b811f11c94
f91d3f9b7230
c6b811f11c94
c6b811f11c94
bc16d1d0869a
41241617a7a3
6bef2a9f73e2
6bef2a9f73e2
41241617a7a3
41241617a7a3
e77fbd3b069c
e77fbd3b069c
e77fbd3b069c
85a64b981c07
e77fbd3b069c
e77fbd3b069c
e77fbd3b069c
e77fbd3b069c
e77fbd3b069c
85a64b981c07
e77fbd3b069c
e77fbd3b069c
41241617a7a3
f91d3f9b7230
## -*- coding: utf-8 -*-
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>${self.title()}</title>
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
        <meta name="robots" content="index, nofollow"/>
        <link rel="icon" href="${h.url('/images/icons/database_gear.png')}" type="image/png" />

        ## CSS ###
        <%def name="css()">
            <link rel="stylesheet" type="text/css" href="${h.url('/css/style.css', ver=c.rhodecode_version)}" media="screen"/>
            <link rel="stylesheet" type="text/css" href="${h.url('/css/pygments.css', ver=c.rhodecode_version)}"/>
            ## EXTRA FOR CSS
            ${self.css_extra()}
        </%def>
        <%def name="css_extra()">
        </%def>

        ${self.css()}

        %if c.ga_code:
        <!-- Analytics -->
	     <script type="text/javascript">
	      var _gaq = _gaq || [];
	      _gaq.push(['_setAccount', '${c.ga_code}']);
	      _gaq.push(['_trackPageview']);

	      (function() {
	        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
	        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
	        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
	      })();
	     </script>
	    %endif

        ## JAVASCRIPT ##
        <%def name="js()">
            <script type="text/javascript">
            //JS translations map
            var TRANSLATION_MAP = {
                'add another comment':'${_("add another comment")}',
                'Stop following this repository':"${_('Stop following this repository')}",
                'Start following this repository':"${_('Start following this repository')}",
                'Group':"${_('Group')}",
                'members':"${_('members')}",
                'loading...':"${_('loading...')}",
                'search truncated': "${_('search truncated')}",
                'no matching files': "${_('no matching files')}",
                'Open new pull request': "${_('Open new pull request')}",
                'Open new pull request for selected changesets':  "${_('Open new pull request for selected changesets')}",
                'Show selected changes __S -> __E': "${_('Show selected changes __S -> __E')}",
                'Selection link': "${_('Selection link')}",
            };
            var _TM = TRANSLATION_MAP;
            </script>
            <script type="text/javascript" src="${h.url('/js/yui.2.9.js', ver=c.rhodecode_version)}"></script>
            <!--[if lt IE 9]>
               <script language="javascript" type="text/javascript" src="${h.url('/js/excanvas.min.js')}"></script>
            <![endif]-->
            <script type="text/javascript" src="${h.url('/js/yui.flot.js', ver=c.rhodecode_version)}"></script>
            <script type="text/javascript" src="${h.url('/js/native.history.js', ver=c.rhodecode_version)}"></script>
            <script type="text/javascript" src="${h.url('/js/rhodecode.js', ver=c.rhodecode_version)}"></script>
           ## EXTRA FOR JS
           ${self.js_extra()}

            <script type="text/javascript">
            (function(window,undefined){

                // Prepare
                var History = window.History; // Note: We are using a capital H instead of a lower h
                if ( !History.enabled ) {
                     // History.js is disabled for this browser.
                     // This is because we can optionally choose to support HTML4 browsers or not.
                    return false;
                }
            })(window);
            var follow_base_url  = "${h.url('toggle_following')}";

            var onSuccessFollow = function(target){
                var f = YUD.get(target.id);
                var f_cnt = YUD.get('current_followers_count');

                if(f.getAttribute('class')=='follow'){
                    f.setAttribute('class','following');
                    f.setAttribute('title',_TM['Stop following this repository']);

                    if(f_cnt){
                        var cnt = Number(f_cnt.innerHTML)+1;
                        f_cnt.innerHTML = cnt;
                    }
                }
                else{
                    f.setAttribute('class','follow');
                    f.setAttribute('title',_TM['Start following this repository']);
                    if(f_cnt){
                        var cnt = Number(f_cnt.innerHTML)-1;
                        f_cnt.innerHTML = cnt;
                    }
                }
            }

            var toggleFollowingUser = function(target,fallows_user_id,token,user_id){
                args = 'follows_user_id='+fallows_user_id;
                args+= '&amp;auth_token='+token;
                if(user_id != undefined){
                    args+="&amp;user_id="+user_id;
                }
                YUC.asyncRequest('POST',follow_base_url,{
                    success:function(o){
                    	onSuccessFollow(target);
                    }
                },args);
                return false;
            }

            var toggleFollowingRepo = function(target,fallows_repo_id,token,user_id){

                args = 'follows_repo_id='+fallows_repo_id;
                args+= '&amp;auth_token='+token;
                if(user_id != undefined){
                    args+="&amp;user_id="+user_id;
                }
                YUC.asyncRequest('POST',follow_base_url,{
                    success:function(o){
                    	onSuccessFollow(target);
                    }
                },args);
                return false;
            }
           YUE.onDOMReady(function(){
             tooltip_activate();
             show_more_event();
             show_changeset_tooltip();

             YUE.on('quick_login_link','click',function(e){
                 // make sure we don't redirect
                 YUE.preventDefault(e);

                 if(YUD.hasClass('quick_login_link','enabled')){
                     YUD.setStyle('quick_login','display','none');
                     YUD.removeClass('quick_login_link','enabled');
                 }
                 else{
                     YUD.setStyle('quick_login','display','');
                     YUD.addClass('quick_login_link','enabled');
                     var usr = YUD.get('username');
                     if(usr){
                    	 usr.focus();
                     }
                 }
             });
           })
            </script>
        </%def>
        <%def name="js_extra()"></%def>
        ${self.js()}
        <%def name="head_extra()"></%def>
        ${self.head_extra()}
    </head>
    <body id="body">
     ## IE hacks
      <!--[if IE 7]>
      <script>YUD.addClass(document.body,'ie7')</script>
      <![endif]-->
      <!--[if IE 8]>
      <script>YUD.addClass(document.body,'ie8')</script>
      <![endif]-->
      <!--[if IE 9]>
      <script>YUD.addClass(document.body,'ie9')</script>
      <![endif]-->

      ${next.body()}
    </body>
</html>