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>