view kallithea/templates/base/perms_summary.html @ 6996:647e7e0ce812

less: use bootstrap class .text-muted instead of custom one
author domruf <dominikruf@gmail.com>
date Fri, 27 Oct 2017 20:05:18 +0200
parents 84b339875fbf
children 97ea346aa4bd
line wrap: on
line source

## snippet for displaying permissions overview for users
## usage:
##    <%namespace name="p" file="/base/perms_summary.html"/>
##    ${p.perms_summary(c.perm_user.permissions)}

<%def name="perms_summary(permissions, show_all=False, actions=True)">
<div id="perms">
     %for section in sorted(permissions.keys()):
        <div class="perms_section_head">
            <h4>${section.replace("_"," ").capitalize()}</h4>
            %if section != 'global':
              <div class="pull-right">
                ${_('Show')}:
                <label>${h.checkbox('perms_filter_none_%s' % section, 'none', 'checked', class_='perm_filter filter_%s' % section, **{'data-section':section, 'data-perm_type':'none'})}<span class="perm_tag none">${_('None')}</span></label>
                <label>${h.checkbox('perms_filter_read_%s' % section, 'read', 'checked', class_='perm_filter filter_%s' % section, **{'data-section':section, 'data-perm_type':'read'})}<span class="perm_tag read">${_('Read')}</span></label>
                <label>${h.checkbox('perms_filter_write_%s' % section, 'write', 'checked', class_='perm_filter filter_%s' % section, **{'data-section':section, 'data-perm_type':'write'})}<span class="perm_tag write">${_('Write')}</span></label>
                <label>${h.checkbox('perms_filter_admin_%s' % section, 'admin', 'checked', class_='perm_filter filter_%s' % section, **{'data-section':section, 'data-perm_type':'admin'})}<span class="perm_tag admin">${_('Admin')}</span></label>
              </div>
            %endif
        </div>
        %if not permissions[section]:
            <span class="text-muted">${_('No permissions defined yet')}</span>
        %else:
        <div id='tbl_list_wrap_${section}'>
         <table id="tbl_list_${section}" class="table">
          ## global permission box
          %if section == 'global':
              <thead>
                <tr>
                  <th class="left">${_('Permission')}</th>
                  %if actions:
                  <th class="left">${_('Edit Permission')}</th>
                  %endif
                </tr>
              </thead>
              <tbody>
              %for k in permissions[section]:
                  <tr>
                      <td>
                          ${h.get_permission_name(k)}
                      </td>
                      %if actions:
                      <td>
                           <a href="${h.url('admin_permissions')}">${_('Edit')}</a>
                      </td>
                      %endif
                  </tr>
              %endfor
              </tbody>
          %else:
             ## none/read/write/admin permissions on groups/repos etc
              <thead>
                <tr>
                  <th class="left">${_('Name')}</th>
                  <th class="left">${_('Permission')}</th>
                  %if actions:
                  <th class="left">${_('Edit Permission')}</th>
                  %endif
                </tr>
              </thead>
              <tbody class="section_${section}">
              %for k, section_perm in sorted(permissions[section].items(), key=lambda s: {'none':0, 'read':1,'write':2,'admin':3}.get(s[1].split('.')[-1])):
                  %if section_perm.split('.')[-1] != 'none' or show_all:
                  <tr class="perm_row ${'%s_%s' % (section, section_perm.split('.')[-1])}">
                      <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>
                          %elif section == 'user_groups':
                              ##<a href="${h.url('edit_users_group',id=k)}">${k}</a>
                              ${k}
                          %endif
                      </td>
                      <td>
                           <span class="perm_tag ${section_perm.split('.')[-1]}">${section_perm}</span>
                      </td>
                      %if actions:
                      <td>
                          %if section == 'repositories':
                              <a href="${h.url('edit_repo_perms',repo_name=k,anchor='permissions_manage')}">${_('Edit')}</a>
                          %elif section == 'repositories_groups':
                              <a href="${h.url('edit_repo_group_perms',group_name=k,anchor='permissions_manage')}">${_('Edit')}</a>
                          %elif section == 'user_groups':
                              ##<a href="${h.url('edit_users_group',id=k)}">${_('Edit')}</a>
                          %endif
                      </td>
                      %endif
                  </tr>
                  %endif
              %endfor
              <tr id="empty_${section}" style="display: none"><td colspan="${3 if actions else 2}">${_('No permission defined')}</td></tr>
              </tbody>
          %endif
         </table>
        </div>
        %endif
     %endfor
</div>
<script>
    $(document).ready(function(){
        var show_empty = function(section){
            var visible = $('.section_{0} tr.perm_row:visible'.format(section)).length;
            if(visible == 0){
                $('#empty_{0}'.format(section)).show();
            }
            else{
                $('#empty_{0}'.format(section)).hide();
            }
        }
        var update_show = function($checkbox){
            var section = $checkbox.data('section');

            var elems = $('.filter_' + section).each(function(el){
                var perm_type = $checkbox.data('perm_type');
                var checked = $checkbox.prop('checked');
                if(checked){
                    $('.'+section+'_'+perm_type).show();
                }
                else{
                    $('.'+section+'_'+perm_type).hide();
                }
            });
            show_empty(section);
        }
        $('.perm_filter').on('change', function(){update_show($(this));});
        $('.perm_filter[value=none]').each(function(){this.checked = false; update_show($(this));});
    });
</script>
</%def>