Mercurial > kallithea
changeset 1741:fcbc35ecb024 beta
personal Journal UI
- added my repos and watched repos with filtering
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Tue, 29 Nov 2011 09:55:30 +0200 |
parents | c12ba6573192 |
children | 40c4f7351574 |
files | rhodecode/controllers/journal.py rhodecode/public/css/style.css rhodecode/templates/journal/journal.html |
diffstat | 3 files changed, 153 insertions(+), 36 deletions(-) [+] |
line wrap: on
line diff
--- a/rhodecode/controllers/journal.py Mon Nov 28 19:55:36 2011 +0200 +++ b/rhodecode/controllers/journal.py Tue Nov 29 09:55:30 2011 +0200 @@ -37,8 +37,10 @@ import rhodecode.lib.helpers as h from rhodecode.lib.auth import LoginRequired, NotAnonymous from rhodecode.lib.base import BaseController, render -from rhodecode.model.db import UserLog, UserFollowing +from rhodecode.model.db import UserLog, UserFollowing, Repository, User from rhodecode.model.meta import Session +from sqlalchemy.sql.expression import func +from rhodecode.model.scm import ScmModel log = logging.getLogger(__name__) @@ -59,6 +61,13 @@ # Return a rendered template p = int(request.params.get('page', 1)) + c.user = User.get(self.rhodecode_user.user_id) + all_repos = self.sa.query(Repository)\ + .filter(Repository.user_id == c.user.user_id)\ + .order_by(func.lower(Repository.repo_name)).all() + + c.user_repos = ScmModel().get_repos(all_repos) + c.following = self.sa.query(UserFollowing)\ .filter(UserFollowing.user_id == self.rhodecode_user.user_id)\ .options(joinedload(UserFollowing.follows_repository))\
--- a/rhodecode/public/css/style.css Mon Nov 28 19:55:36 2011 +0200 +++ b/rhodecode/public/css/style.css Tue Nov 29 09:55:30 2011 +0200 @@ -758,6 +758,10 @@ padding: 11px 0 11px 10px; } +#content div.box div.title .link-white{ + color: #FFFFFF; +} + #content div.box div.title ul.links li { list-style: none; float: left;
--- a/rhodecode/templates/journal/journal.html Mon Nov 28 19:55:36 2011 +0200 +++ b/rhodecode/templates/journal/journal.html Tue Nov 29 09:55:30 2011 +0200 @@ -27,43 +27,147 @@ </script> <div id="journal">${c.journal_data}</div> </div> - <div class="box box-right"> <!-- box / title --> <div class="title"> - <h5>${_('Following')}</h5> + <h5> + <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" value="${_('quick filter...')}"/> + <a id="show_my" class="link-white" href="#my">${_('My repositories')}</a> / <a id="show_watched" class="link-white" href="#watched">${_('Watched')}</a> + </h5> + %if h.HasPermissionAny('hg.admin','hg.create.repository')(): + <ul class="links"> + <li> + <span>${h.link_to(_('ADD REPOSITORY'),h.url('admin_settings_create_repository'))}</span> + </li> + </ul> + %endif + </div> + <!-- end box / title --> + <div id="my" class="table"> + <table> + <thead> + <tr> + <th class="left">${_('Name')}</th> + <th class="left">${_('revision')}</th> + <th colspan="2" class="left">${_('action')}</th> + </thead> + <tbody> + %if c.user_repos: + %for repo in c.user_repos: + <tr> + <td> + %if repo['dbrepo']['repo_type'] =='hg': + <img class="icon" title="${_('Mercurial repository')}" alt="${_('Mercurial repository')}" src="${h.url('/images/icons/hgicon.png')}"/> + %elif repo['dbrepo']['repo_type'] =='git': + <img class="icon" title="${_('Git repository')}" alt="${_('Git repository')}" src="${h.url('/images/icons/giticon.png')}"/> + %else: + + %endif + %if repo['dbrepo']['private']: + <img class="icon" alt="${_('private')}" src="${h.url('/images/icons/lock.png')}"/> + %else: + <img class="icon" alt="${_('public')}" src="${h.url('/images/icons/lock_open.png')}"/> + %endif + + ${h.link_to(repo['name'], h.url('summary_home',repo_name=repo['name']),class_="repo_name")} + %if repo['dbrepo_fork']: + <a href="${h.url('summary_home',repo_name=repo['dbrepo_fork']['repo_name'])}"> + <img class="icon" alt="${_('public')}" + title="${_('Fork of')} ${repo['dbrepo_fork']['repo_name']}" + src="${h.url('/images/icons/arrow_divide.png')}"/></a> + %endif + </td> + <td><span class="tooltip" title="${repo['last_change']}">${("r%s:%s") % (repo['rev'],h.short_id(repo['tip']))}</span></td> + <td><a href="${h.url('repo_settings_home',repo_name=repo['name'])}" title="${_('edit')}"><img class="icon" alt="${_('private')}" src="${h.url('/images/icons/application_form_edit.png')}"/></a></td> + <td> + ${h.form(url('repo_settings_delete', repo_name=repo['name']),method='delete')} + ${h.submit('remove_%s' % repo['name'],'',class_="delete_icon action_button",onclick="return confirm('Confirm to delete this repository');")} + ${h.end_form()} + </td> + </tr> + %endfor + %else: + <div style="padding:5px 0px 10px 0px;"> + ${_('No repositories yet')} + %if h.HasPermissionAny('hg.admin','hg.create.repository')(): + ${h.link_to(_('create one now'),h.url('admin_settings_create_repository'),class_="ui-button-small")} + %endif + </div> + %endif + </tbody> + </table> </div> - <div> - %if c.following: - %for entry in c.following: - <div class="currently_following"> - %if entry.follows_user_id: - <img title="${_('following user')}" alt="${_('user')}" src="${h.url('/images/icons/user.png')}"/> - ${entry.follows_user.full_contact} - %endif - - %if entry.follows_repo_id: - - <div style="float:left;padding-right:5px"> - <span id="follow_toggle_${entry.follows_repository.repo_id}" class="following" title="${_('Stop following this repository')}" - onclick="javascript:toggleFollowingRepo(this,${entry.follows_repository.repo_id},'${str(h.get_token())}')"> - </span> - </div> - %if entry.follows_repository.private: - <img class="icon" title="${_('private repository')}" alt="${_('private repository')}" src="${h.url('/images/icons/lock.png')}"/> - %else: - <img class="icon" title="${_('public repository')}" alt="${_('public repository')}" src="${h.url('/images/icons/lock_open.png')}"/> - %endif - - ${h.link_to(entry.follows_repository.repo_name,h.url('summary_home', - repo_name=entry.follows_repository.repo_name))} - - %endif - </div> - %endfor - %else: - ${_('You are not following any users or repositories')} - %endif - </div> - </div> + + <div id="watched" class="table" style="display:none"> + <table> + <thead> + <tr> + <th class="left">${_('Name')}</th> + </thead> + <tbody> + %if c.following: + %for entry in c.following: + <tr> + <td> + %if entry.follows_user_id: + <img title="${_('following user')}" alt="${_('user')}" src="${h.url('/images/icons/user.png')}"/> + ${entry.follows_user.full_contact} + %endif + + %if entry.follows_repo_id: + + <div style="float:right;padding-right:5px"> + <span id="follow_toggle_${entry.follows_repository.repo_id}" class="following" title="${_('Stop following this repository')}" + onclick="javascript:toggleFollowingRepo(this,${entry.follows_repository.repo_id},'${str(h.get_token())}')"> + </span> + </div> + + %if entry.follows_repository.repo_type == 'hg': + <img class="icon" title="${_('Mercurial repository')}" alt="${_('Mercurial repository')}" src="${h.url('/images/icons/hgicon.png')}"/> + %elif entry.follows_repository.repo_type == 'git': + <img class="icon" title="${_('Git repository')}" alt="${_('Git repository')}" src="${h.url('/images/icons/giticon.png')}"/> + %endif + + %if entry.follows_repository.private: + <img class="icon" title="${_('private repository')}" alt="${_('private repository')}" src="${h.url('/images/icons/lock.png')}"/> + %else: + <img class="icon" title="${_('public repository')}" alt="${_('public repository')}" src="${h.url('/images/icons/lock_open.png')}"/> + %endif + <span class="watched_repo"> + ${h.link_to(entry.follows_repository.repo_name,h.url('summary_home',repo_name=entry.follows_repository.repo_name))} + </span> + %endif + </td> + </tr> + %endfor + %else: + </tbody> + ${_('You are not following any users or repositories')} + %endif + </table> + </div> + <script type="text/javascript"> + YUE.on('show_my','click',function(e){ + YUD.setStyle('watched','display','none'); + YUD.setStyle('my','display',''); + var nodes = YUQ('#my tr td a.repo_name'); + var target = 'q_filter'; + var func = function(node){ + return node.parentNode.parentNode; + } + q_filter(target,nodes,func); + YUE.preventDefault(e); + }) + YUE.on('show_watched','click',function(e){ + YUD.setStyle('my','display','none'); + YUD.setStyle('watched','display',''); + var nodes = YUQ('#watched .watched_repo a'); + var target = 'q_filter'; + var func = function(node){ + return node.parentNode.parentNode; + } + q_filter(target,nodes,func); + YUE.preventDefault(e); + }) + </script> </%def>