## 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" class="table"> %for section in sorted(permissions.keys()): <div class="perms_section_head"> ${section.replace("_"," ").capitalize()} %if section != 'global': <div style="float: right"> ${_('show')}: ${h.checkbox('perms_filter_none_%s' % section, 'none', 'checked', class_='perm_filter filter_%s' % section, section=section, perm_type='none')} <label for="${'perms_filter_none_%s' % section}"><span class="perm_tag none">${_('none')}</span></label> ${h.checkbox('perms_filter_read_%s' % section, 'read', 'checked', class_='perm_filter filter_%s' % section, section=section, perm_type='read')} <label for="${'perms_filter_read_%s' % section}"><span class="perm_tag read">${_('read')}</span></label> ${h.checkbox('perms_filter_write_%s' % section, 'write', 'checked', class_='perm_filter filter_%s' % section, section=section, perm_type='write')} <label for="${'perms_filter_write_%s' % section}"> <span class="perm_tag write">${_('write')}</span></label> ${h.checkbox('perms_filter_admin_%s' % section, 'admin', 'checked', class_='perm_filter filter_%s' % section, section=section, perm_type='admin')} <label for="${'perms_filter_admin_%s' % section}"><span class="perm_tag admin">${_('admin')}</span></label> </div> %endif </div> %if not permissions[section]: <span class="empty_data">${_('No permissions defined yet')}</span> %else: <div id='tbl_list_wrap_${section}' class="yui-skin-sam"> <table id="tbl_list_${section}"> ## global permission box %if section == 'global': <thead> <tr> <th colspan="2" class="left">${_('Permission')}</th> %if actions: <th class="left">${_('Edit Permission')}</th> %endif </thead> <tbody> %for k in permissions[section]: <tr> <td colspan="2"> ${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 </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="6">${_('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; console.log(visible) console.log($('.section_{0} tr.perm_row:visible'.format(section))) if(visible == 0){ $('#empty_{0}'.format(section)).show(); } else{ $('#empty_{0}'.format(section)).hide(); } } $('.perm_filter').on('change', function(e){ var self = this; var section = $(this).attr('section'); var opts = {} var elems = $('.filter_' + section).each(function(el){ var perm_type = $(this).attr('perm_type'); var checked = this.checked; opts[perm_type] = checked; if(checked){ $('.'+section+'_'+perm_type).show(); } else{ $('.'+section+'_'+perm_type).hide(); } }); show_empty(section); }) }) </script> </%def>