Mercurial > kallithea
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>↓</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