changeset 2624:19daa8d761dc beta

Improvements to my account page - lazy load repositories via ajax results in much faster page load - added pull requests tab to see my pullrequests and the ones i participate in - new style tabs
author Marcin Kuzminski <marcin@python-works.com>
date Mon, 16 Jul 2012 23:19:34 +0200
parents 44678a64cfae
children fc19979a8421
files rhodecode/config/routing.py rhodecode/public/css/style.css rhodecode/templates/admin/users/user_edit_my_account.html rhodecode/templates/admin/users/user_edit_my_account_pullrequests.html rhodecode/templates/admin/users/user_edit_my_account_repos.html
diffstat 5 files changed, 142 insertions(+), 66 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/config/routing.py	Mon Jul 16 18:47:36 2012 +0200
+++ b/rhodecode/config/routing.py	Mon Jul 16 23:19:34 2012 +0200
@@ -296,6 +296,11 @@
                   action="my_account_update", conditions=dict(method=["PUT"]))
         m.connect("admin_settings_create_repository", "/create_repository",
                   action="create_repository", conditions=dict(method=["GET"]))
+        m.connect("admin_settings_my_repos", "/my_account/repos",
+                  action="my_account_my_repos", conditions=dict(method=["GET"]))
+        m.connect("admin_settings_my_pullrequests", "/my_account/pull_requests",
+                  action="my_account_my_pullrequests", conditions=dict(method=["GET"]))
+
 
     #NOTIFICATION REST ROUTES
     with rmap.submapper(path_prefix=ADMIN_PREFIX,
--- a/rhodecode/public/css/style.css	Mon Jul 16 18:47:36 2012 +0200
+++ b/rhodecode/public/css/style.css	Mon Jul 16 23:19:34 2012 +0200
@@ -1096,6 +1096,10 @@
 	color: #FFFFFF;
 }
 
+#content div.box div.title .link-white.current{
+    color: #BFE3FF;
+}
+
 #content div.box div.title ul.links li {
 	list-style: none;
 	float: left;
@@ -4336,6 +4340,15 @@
 }
 
 /****
+PULL REQUESTS
+*****/
+.pullrequests_section_head {
+   padding:10px 10px 10px 0px;
+   font-size:16px;
+   font-weight: bold;
+}
+
+/****
   PERMS
 *****/
 #perms .perms_section_head {
--- a/rhodecode/templates/admin/users/user_edit_my_account.html	Mon Jul 16 18:47:36 2012 +0200
+++ b/rhodecode/templates/admin/users/user_edit_my_account.html	Mon Jul 16 23:19:34 2012 +0200
@@ -28,67 +28,27 @@
     <!-- box / title -->
     <div class="title">
         <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 repos')}</a> / <a id="show_perms" class="link-white" href="#perms">${_('My permissions')}</a>
+        <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" value="${_('quick filter...')}" style="display: none"/>
         </h5>
-         %if h.HasPermissionAny('hg.admin','hg.create.repository')():
-         <ul class="links">
+         <ul class="links" style="color:#DADADA">
+           <li>
+             <span><a id="show_perms" class="link-white current" href="#perms">${_('My permissions')}</a> </span>
+           </li>
+           <li>
+             <span><a id="show_my" class="link-white" href="#my">${_('My repos')}</a> </span>
+           </li>
            <li>
-             <span>${h.link_to(_('ADD'),h.url('admin_settings_create_repository'))}</span>
+             <span><a id="show_pullrequests" class="link-white" href="#perms">${_('My pull requests')}</a> </span>
            </li>
+           %if h.HasPermissionAny('hg.admin','hg.create.repository')():
+             <li>
+               <span>${h.link_to(_('Add repo'),h.url('admin_settings_create_repository'))}</span>
+             </li>
+           %endif
          </ul>
-         %endif
     </div>
     <!-- end box / title -->
-    <div id="my" class="table">
-        <div id='repos_list_wrap' class="yui-skin-sam">
-        <table id="repos_list">
-	    <thead>
-            <tr>
-            <th></th>
-            <th class="left">${_('Name')}</th>
-            <th class="left">${_('Revision')}</th>
-            <th class="left">${_('Action')}</th>
-            <th class="left">${_('Action')}</th>
-	    </thead>
-	     <tbody>
-         <%namespace name="dt" file="/data_table/_dt_elements.html"/>
-	     %if c.user_repos:
-		     %for repo in c.user_repos:
-		        <tr>
-                    ##QUICK MENU
-                    <td class="quick_repo_menu">
-                      ${dt.quick_menu(repo['name'])}
-                    </td>
-                    ##REPO NAME AND ICONS
-                    <td class="reponame">
-                      ${dt.repo_name(repo['name'],repo['dbrepo']['repo_type'],repo['dbrepo']['private'],repo['dbrepo_fork'].get('repo_name'))}
-                    </td>
-                    ##LAST REVISION
-                    <td>
-                        ${dt.revision(repo['name'],repo['rev'],repo['tip'],repo['author'],repo['last_msg'])}
-                    </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: %s') % repo['name']+"');")}
-	                  ${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-btn")}
-	     	%endif
-            </div>
-	     %endif
-	     </tbody>
-	     </table>
-       </div>
-    </div>
-    <div id="perms" class="table" style="display:none">
+    <div id="perms" class="table">
            %for section in sorted(c.rhodecode_user.permissions.keys()):
             <div class="perms_section_head">${section.replace("_"," ").capitalize()}</div>
 
@@ -134,6 +94,9 @@
             </div>
            %endfor
     </div>
+    <div id="my" class="table" style="display:none">
+    </div>    
+    <div id="pullrequests" class="table" style="display:none">
 </div>
 <script type="text/javascript">
 var filter_activate = function(){
@@ -143,22 +106,48 @@
     }
     q_filter('q_filter',YUQ('#my tr td a.repo_name'),func);
 }
-
-YUE.on('show_my','click',function(e){
-    YUD.setStyle('perms','display','none');
-    YUD.setStyle('my','display','');
-    YUD.get('q_filter').removeAttribute('disabled');
-    filter_activate();
+YUE.on('show_perms','click',function(e){
+	YUD.addClass('show_perms', 'current');
+	YUD.removeClass('show_my','current');
+	YUD.removeClass('show_pullrequests','current');
+	
+    YUD.setStyle('my','display','none');
+    YUD.setStyle('pullrequests','display','none');
+    YUD.setStyle('perms','display','');
+    YUD.setStyle('q_filter','display','none');
     YUE.preventDefault(e);
 })
-YUE.on('show_perms','click',function(e){
+YUE.on('show_my','click',function(e){
+    YUD.addClass('show_my', 'current');
+    YUD.removeClass('show_perms','current');
+    YUD.removeClass('show_pullrequests','current');
+    
+    YUD.setStyle('perms','display','none');
+    YUD.setStyle('pullrequests','display','none');
+    YUD.setStyle('my','display','');
+    YUD.setStyle('q_filter','display','');
+    
+    YUE.preventDefault(e);
+    var url = "${h.url('admin_settings_my_repos')}";
+    ypjax(url, 'my', function(){
+    	table_sort();
+    	filter_activate();
+    });
+})
+YUE.on('show_pullrequests','click',function(e){
+    YUD.addClass('show_pullrequests', 'current');
+    YUD.removeClass('show_my','current');
+    YUD.removeClass('show_perms','current');
+
     YUD.setStyle('my','display','none');
-    YUD.setStyle('perms','display','');
-    YUD.setAttribute('q_filter','disabled','disabled');
+    YUD.setStyle('perms','display','none');
+    YUD.setStyle('pullrequests','display','');
+    YUD.setStyle('q_filter','display','none');
     YUE.preventDefault(e);
+    var url = "${h.url('admin_settings_my_pullrequests')}";
+    ypjax(url, 'pullrequests');
 })
 
-
 // main table sorting
 var myColumnDefs = [
     {key:"menu",label:"",sortable:false,className:"quick_repo_menu hidden"},
@@ -170,6 +159,7 @@
     {key:"action2",label:"",sortable:false},
 ];
 
+function table_sort(){
 var myDataSource = new YAHOO.util.DataSource(YUD.get("repos_list"));
 myDataSource.responseType = YAHOO.util.DataSource.TYPE_HTMLTABLE;
 myDataSource.responseSchema = {
@@ -224,6 +214,6 @@
 };
 
 new YAHOO.widget.DataTable("tbl_list_wrap_repositories_groups", permsColumnDefs, myDataSource3, trans_defs);
-
+}
 </script>
 </%def>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rhodecode/templates/admin/users/user_edit_my_account_pullrequests.html	Mon Jul 16 23:19:34 2012 +0200
@@ -0,0 +1,22 @@
+
+<div class="pullrequests_section_head">${_('Opened by me')}</div>
+<ul>
+    %for pull_request in c.my_pull_requests:
+    <li>
+    <a href="${h.url('pullrequest_show',repo_name=pull_request.org_repo.repo_name,pull_request_id=pull_request.pull_request_id)}">
+    ${_('Pull request #%s opened on %s') % (pull_request.pull_request_id, h.fmt_date(pull_request.created_on))}
+    </a>
+    </li>
+    %endfor
+</ul>
+
+<div class="pullrequests_section_head">${_('I participate in')}</div>
+<ul>
+    %for pull_request in c.participate_in_pull_requests:
+    <li>
+    <a href="${h.url('pullrequest_show',repo_name=pull_request.org_repo.repo_name,pull_request_id=pull_request.pull_request_id)}">
+    ${_('Pull request #%s opened by %s on %s') % (pull_request.pull_request_id, pull_request.author.full_name, h.fmt_date(pull_request.created_on))}
+    </a>
+    </li>
+    %endfor
+</ul>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rhodecode/templates/admin/users/user_edit_my_account_repos.html	Mon Jul 16 23:19:34 2012 +0200
@@ -0,0 +1,46 @@
+<div id='repos_list_wrap' class="yui-skin-sam">
+  <table id="repos_list">
+  <thead>
+      <tr>
+      <th></th>
+      <th class="left">${_('Name')}</th>
+      <th class="left">${_('Revision')}</th>
+      <th class="left">${_('Action')}</th>
+      <th class="left">${_('Action')}</th>
+  </thead>
+   <tbody>
+   <%namespace name="dt" file="/data_table/_dt_elements.html"/>
+   %if c.user_repos:
+       %for repo in c.user_repos:
+          <tr>
+              ##QUICK MENU
+              <td class="quick_repo_menu">
+                ${dt.quick_menu(repo['name'])}
+              </td>
+              ##REPO NAME AND ICONS
+              <td class="reponame">
+                ${dt.repo_name(repo['name'],repo['dbrepo']['repo_type'],repo['dbrepo']['private'],repo['dbrepo_fork'].get('repo_name'))}
+              </td>
+              ##LAST REVISION
+              <td>
+                  ${dt.revision(repo['name'],repo['rev'],repo['tip'],repo['author'],repo['last_msg'])}
+              </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: %s') % repo['name']+"');")}
+                ${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-btn")}
+      %endif
+      </div>
+   %endif
+   </tbody>
+   </table>
+</div>
\ No newline at end of file