changeset 1158:f63cc1cbce27 beta

implemented repo switcher list as dynamically loaded by xhr requestt. fixed sorting bug and missing groups on them
author Marcin Kuzminski <marcin@python-works.com>
date Sat, 19 Mar 2011 01:07:53 +0100
parents 41241617a7a3
children 187a924ed653
files rhodecode/config/routing.py rhodecode/controllers/home.py rhodecode/templates/base/base.html rhodecode/templates/repo_switcher_list.html
diffstat 4 files changed, 48 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/config/routing.py	Fri Mar 18 23:44:27 2011 +0100
+++ b/rhodecode/config/routing.py	Sat Mar 19 01:07:53 2011 +0100
@@ -37,6 +37,7 @@
 
     #MAIN PAGE
     routes_map.connect('home', '/', controller='home', action='index')
+    routes_map.connect('repo_switcher', '/repos', controller='home', action='repo_switcher')
     routes_map.connect('bugtracker', "http://bitbucket.org/marcinkuzminski/rhodecode/issues", _static=True)
     routes_map.connect('gpl_license', "http://www.gnu.org/licenses/gpl.html", _static=True)
     routes_map.connect('rhodecode_official', "http://rhodecode.org", _static=True)
--- a/rhodecode/controllers/home.py	Fri Mar 18 23:44:27 2011 +0100
+++ b/rhodecode/controllers/home.py	Sat Mar 19 01:07:53 2011 +0100
@@ -29,10 +29,12 @@
 from operator import itemgetter
 
 from pylons import tmpl_context as c, request
+from paste.httpexceptions import HTTPBadRequest
 
 from rhodecode.lib.auth import LoginRequired
 from rhodecode.lib.base import BaseController, render
 
+
 log = logging.getLogger(__name__)
 
 class HomeController(BaseController):
@@ -63,3 +65,11 @@
                                   reverse=False)
 
         return render('/index.html')
+
+    def repo_switcher(self):
+        if request.is_xhr:
+            c.repos_list = sorted(c.cached_repo_list,
+                                  key=itemgetter('name_sort'), reverse=False)
+            return render('/repo_switcher_list.html')
+        else:
+            return HTTPBadRequest()
--- a/rhodecode/templates/base/base.html	Fri Mar 18 23:44:27 2011 +0100
+++ b/rhodecode/templates/base/base.html	Sat Mar 19 01:07:53 2011 +0100
@@ -117,16 +117,28 @@
                     </span>
                     <span>&darr;</span>					
 					</a>
-					<ul class="repo_switcher">
-                        %for repo in c.cached_repo_list:
-                        
-                          %if repo['dbrepo']['private']:
-                             <li><img src="${h.url("/images/icons/lock.png")}" alt="${_('Private repository')}" class="repo_switcher_type"/>${h.link_to(repo['repo'].name,h.url('summary_home',repo_name=repo['repo'].name),class_="%s" % repo['dbrepo']['repo_type'])}</li>
-                          %else:
-                             <li><img src="${h.url("/images/icons/lock_open.png")}" alt="${_('Public repository')}" class="repo_switcher_type" />${h.link_to(repo['repo'].name,h.url('summary_home',repo_name=repo['repo'].name),class_="%s" % repo['dbrepo']['repo_type'])}</li>
-                          %endif  
-                        %endfor					
-					</ul>			
+					<ul id="repo_switcher_list" class="repo_switcher">
+                        <li>
+                            <a href="#">${_('loading...')}</a>
+                        </li>
+					</ul>
+					<script type="text/javascript">
+					   YUE.on('repo_switcher','mouseover',function(){
+						   var loaded = YUD.hasClass('repo_switcher','loaded');
+						   if(!loaded){
+							   YUD.addClass('repo_switcher','loaded');
+							   YAHOO.util.Connect.asyncRequest('GET',"${h.url('repo_switcher')}",{
+								   success:function(o){
+								      YUD.get('repo_switcher_list').innerHTML = o.responseText;
+								   },
+								   failure:function(o){
+									   YUD.removeClass('repo_switcher','loaded');   
+								   }
+							   },null);
+						   }
+						   return false;
+					   });
+					</script>	
 				</li>
 				
 	            <li ${is_current('summary')}>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rhodecode/templates/repo_switcher_list.html	Sat Mar 19 01:07:53 2011 +0100
@@ -0,0 +1,15 @@
+## -*- coding: utf-8 -*-    
+%for repo in c.repos_list:
+     
+      %if repo['dbrepo']['private']:
+         <li>
+             <img src="${h.url("/images/icons/lock.png")}" alt="${_('Private repository')}" class="repo_switcher_type"/>
+             ${h.link_to(repo['name'].name,h.url('summary_home',repo_name=repo['name']),class_="%s" % repo['dbrepo']['repo_type'])}
+          </li>
+      %else:
+         <li>
+             <img src="${h.url("/images/icons/lock_open.png")}" alt="${_('Public repository')}" class="repo_switcher_type" />
+             ${h.link_to(repo['name'],h.url('summary_home',repo_name=repo['name']),class_="%s" % repo['dbrepo']['repo_type'])}
+         </li>
+      %endif  
+%endfor
\ No newline at end of file