Files @ 809fe2d392f8
Branch filter:

Location: kallithea/rhodecode/templates/admin/users/user_edit_my_account.html - annotation

Mads Kiilerich
my_account: change markup so permission list get perms.table style
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
a1ec653f5f95
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
f91d3f9b7230
1e757ac98988
1e757ac98988
ef71d7e63806
f91d3f9b7230
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
f91d3f9b7230
19daa8d761dc
03c242fbca9c
19daa8d761dc
19daa8d761dc
19daa8d761dc
19daa8d761dc
19daa8d761dc
19daa8d761dc
19daa8d761dc
03c242fbca9c
1f2c4bf348ad
f91d3f9b7230
19daa8d761dc
19daa8d761dc
19daa8d761dc
19daa8d761dc
19daa8d761dc
f91d3f9b7230
1e757ac98988
1e757ac98988
809fe2d392f8
809fe2d392f8
b745d5d2563c
b745d5d2563c
43481c3d70ca
b745d5d2563c
b745d5d2563c
b745d5d2563c
b745d5d2563c
b745d5d2563c
b745d5d2563c
b745d5d2563c
b745d5d2563c
b745d5d2563c
d683d8bc4be3
d683d8bc4be3
d683d8bc4be3
d683d8bc4be3
d683d8bc4be3
d683d8bc4be3
d683d8bc4be3
d683d8bc4be3
b745d5d2563c
e29c688e6885
e29c688e6885
e29c688e6885
e29c688e6885
e29c688e6885
e29c688e6885
e29c688e6885
e29c688e6885
e29c688e6885
b745d5d2563c
b745d5d2563c
e29c688e6885
b745d5d2563c
d683d8bc4be3
b745d5d2563c
b745d5d2563c
b745d5d2563c
d683d8bc4be3
b745d5d2563c
b745d5d2563c
b745d5d2563c
b745d5d2563c
b745d5d2563c
809fe2d392f8
1e757ac98988
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
d5e42c00f3c1
0226b6d6b2b5
0226b6d6b2b5
2fb94c52e20e
0226b6d6b2b5
1e757ac98988
ef7520340c44
b1e1dffd595c
1f2c4bf348ad
1f2c4bf348ad
1f2c4bf348ad
1f2c4bf348ad
1f2c4bf348ad
d5e42c00f3c1
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0b86972de820
1f2c4bf348ad
1f2c4bf348ad
1f2c4bf348ad
b745d5d2563c
1f2c4bf348ad
1f2c4bf348ad
19daa8d761dc
19daa8d761dc
19daa8d761dc
d5e42c00f3c1
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
19daa8d761dc
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
1f2c4bf348ad
1f2c4bf348ad
1f2c4bf348ad
19daa8d761dc
1f2c4bf348ad
1f2c4bf348ad
19daa8d761dc
19daa8d761dc
19daa8d761dc
19daa8d761dc
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
19daa8d761dc
0b86972de820
19daa8d761dc
0226b6d6b2b5
1f2c4bf348ad
1f2c4bf348ad
1f2c4bf348ad
b745d5d2563c
b745d5d2563c
1f2c4bf348ad
1f2c4bf348ad
1f2c4bf348ad
1f2c4bf348ad
1f2c4bf348ad
0b86972de820
0b86972de820
0b86972de820
1f2c4bf348ad
c69006a70e6b
c69006a70e6b
c69006a70e6b
c69006a70e6b
1f2c4bf348ad
1f2c4bf348ad
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
2fb94c52e20e
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
2fb94c52e20e
0226b6d6b2b5
0226b6d6b2b5
b745d5d2563c
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
b745d5d2563c
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
b745d5d2563c
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
b745d5d2563c
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
b745d5d2563c
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
b745d5d2563c
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
0226b6d6b2b5
b1e1dffd595c
f91d3f9b7230
## -*- coding: utf-8 -*-
<%inherit file="/base/base.html"/>

<%def name="title()">
    ${_('My account')} ${c.rhodecode_user.username} - ${c.rhodecode_name}
</%def>

<%def name="breadcrumbs_links()">
    ${_('My Account')}
</%def>

<%def name="page_nav()">
	${self.menu('admin')}
</%def>

<%def name="main()">

<div class="box box-left">
    <!-- box / title -->
    <div class="title">
        ${self.breadcrumbs()}
    </div>
    <!-- end box / title -->
    ${c.form|n}
</div>

<div class="box box-right">
    <!-- box / title -->
    <div class="title">
        <h5>
        <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" value="${_('quick filter...')}" style="display: none"/>
        </h5>
         <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><a id="show_pullrequests" class="link-white" href="#pullrequests">${_('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>
    </div>
    <!-- end box / title -->
    <div id="perms_container">
        <div id="perms" class="table">
           %for section in sorted(c.rhodecode_user.permissions.keys()):
            <div class="perms_section_head">${section.replace("_"," ").capitalize()}</div>

            <div id='tbl_list_wrap_${section}' class="yui-skin-sam">
            <table id="tbl_list_${section}">
              <thead>
                  <tr>
                  <th class="left">${_('Name')}</th>
                  <th class="left">${_('Permission')}</th>
              </thead>
              <tbody>
            %for k in c.rhodecode_user.permissions[section]:
           <%
           if section != 'global':
               section_perm = c.rhodecode_user.permissions[section].get(k)
               _perm = section_perm.split('.')[-1]
           else:
               _perm = section_perm = None
           %>
            %if _perm not in ['none']:
                <tr>
                    <td>
                        %if section == 'repositories':
                            <a href="${h.url('summary_home',repo_name=k)}">${k}</a>
                        %elif section == 'repositories_groups':
                            <a href="${h.url('repos_group_home',group_name=k)}">${k}</a>
                        %else:
                            ${k}
                        %endif
                    </td>
                    <td>
                        %if section == 'global':
                         ${h.bool2icon(True)}
                        %else:
                        <span class="perm_tag ${_perm}">${section_perm}</span>
                        %endif
                     </td>
                </tr>
             %endif
            %endfor
            </tbody>
            </table>
            </div>
           %endfor
        </div>
    </div>
    <div id="my_container" style="display:none">
        <div class="table yui-skin-sam" id="repos_list_wrap"></div>
        <div id="user-paginator" style="padding: 0px 0px 0px 20px"></div>
    </div>
    <div id="pullrequests_container" class="table" style="display:none">
        ## loaded via AJAX
        ${_('Loading...')}
    </div>
</div>

<script type="text/javascript">

var show_perms = function(e){
    YUD.addClass('show_perms', 'current');
    YUD.removeClass('show_my','current');
    YUD.removeClass('show_pullrequests','current');

    YUD.setStyle('my_container','display','none');
    YUD.setStyle('pullrequests_container','display','none');
    YUD.setStyle('perms_container','display','');
    YUD.setStyle('q_filter','display','none');
}
YUE.on('show_perms','click',function(e){
    show_perms();
})

var show_my = function(e){
    YUD.addClass('show_my', 'current');
    YUD.removeClass('show_perms','current');
    YUD.removeClass('show_pullrequests','current');

    YUD.setStyle('perms_container','display','none');
    YUD.setStyle('pullrequests_container','display','none');
    YUD.setStyle('my_container','display','');
    YUD.setStyle('q_filter','display','');
    if(!YUD.hasClass('show_my', 'loaded')){
    	table_renderer(${c.data |n});
        YUD.addClass('show_my', 'loaded');
    }
}
YUE.on('show_my','click',function(e){
	show_my(e);
})

var show_pullrequests = function(e){
    YUD.addClass('show_pullrequests', 'current');
    YUD.removeClass('show_my','current');
    YUD.removeClass('show_perms','current');

    YUD.setStyle('my_container','display','none');
    YUD.setStyle('perms_container','display','none');
    YUD.setStyle('pullrequests_container','display','');
    YUD.setStyle('q_filter','display','none');

    var url = "${h.url('admin_settings_my_pullrequests')}";
    ypjax(url, 'pullrequests_container');
}
YUE.on('show_pullrequests','click',function(e){
	show_pullrequests(e)
})

var tabs = {
    'perms': show_perms,
    'my': show_my,
    'pullrequests': show_pullrequests
}
var url = location.href.split('#');
if (url[1]) {
    //We have a hash
    var tabHash = url[1];
    var func = tabs[tabHash]
    if (func){
        func();
    }
}

function table_renderer(data){
	  var myDataSource = new YAHOO.util.DataSource(data);
	  myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;

	  myDataSource.responseSchema = {
	      resultsList: "records",
	      fields: [
	         {key:"menu"},
	         {key:"raw_name"},
	         {key:"name"},
	         {key:"last_changeset"},
	         {key:"action"},
	      ]
	   };
      myDataSource.doBeforeCallback = function(req,raw,res,cb) {
          // This is the filter function
          var data     = res.results || [],
              filtered = [],
              i,l;

          if (req) {
              req = req.toLowerCase();
              for (i = 0; i<data.length; i++) {
                  var pos = data[i].raw_name.toLowerCase().indexOf(req)
                  if (pos != -1) {
                      filtered.push(data[i]);
                  }
              }
              res.results = filtered;
          }
          return res;
      }

	  // main table sorting
	  var myColumnDefs = [
	      {key:"menu",label:"",sortable:false,className:"quick_repo_menu hidden"},
	      {key:"name",label:"${_('Name')}",sortable:true,
	          sortOptions: { sortFunction: nameSort }},
	      {key:"last_changeset",label:"${_('Tip')}",sortable:true,
	          sortOptions: { sortFunction: revisionSort }},
	      {key:"action",label:"${_('Action')}",sortable:false},
	  ];

	  var myDataTable = new YAHOO.widget.DataTable("repos_list_wrap", myColumnDefs, myDataSource,{
	    sortedBy:{key:"name",dir:"asc"},
	    paginator: new YAHOO.widget.Paginator({
	        rowsPerPage: 50,
	        alwaysVisible: false,
	        template : "{PreviousPageLink} {FirstPageLink} {PageLinks} {LastPageLink} {NextPageLink}",
	        pageLinks: 5,
	        containerClass: 'pagination-wh',
	        currentPageClass: 'pager_curpage',
	        pageLinkClass: 'pager_link',
	        nextPageLinkLabel: '&gt;',
	        previousPageLinkLabel: '&lt;',
	        firstPageLinkLabel: '&lt;&lt;',
	        lastPageLinkLabel: '&gt;&gt;',
	        containers:['user-paginator']
	    }),

	    MSG_SORTASC:"${_('Click to sort ascending')}",
	    MSG_SORTDESC:"${_('Click to sort descending')}",
	    MSG_EMPTY:"${_('No records found.')}",
	    MSG_ERROR:"${_('Data error.')}",
	    MSG_LOADING:"${_('Loading...')}",
	  }
	  );
	  myDataTable.subscribe('postRenderEvent',function(oArgs) {
	      tooltip_activate();
	      quick_repo_menu();
	  });

	  var filterTimeout = null;

	  updateFilter = function() {
	      // Reset timeout
	      filterTimeout = null;

	      // Reset sort
	      var state = myDataTable.getState();
	      state.sortedBy = {key:'name', dir:YAHOO.widget.DataTable.CLASS_ASC};

	      // Get filtered data
	      myDataSource.sendRequest(YUD.get('q_filter').value,{
	          success : myDataTable.onDataReturnInitializeTable,
	          failure : myDataTable.onDataReturnInitializeTable,
	          scope   : myDataTable,
	          argument: state
	      });

	  };
	  YUE.on('q_filter','click',function(){
	      if(!YUD.hasClass('q_filter', 'loaded')){
	          YUD.get('q_filter').value = '';
	          //TODO: load here full list later to do search within groups
	          YUD.addClass('q_filter', 'loaded');
	      }
	   });

	  YUE.on('q_filter','keyup',function (e) {
	      clearTimeout(filterTimeout);
	      filterTimeout = setTimeout(updateFilter,600);
	  });
	}
</script>
</%def>