Files @ 7e3d89d9d3a2
Branch filter:

Location: kallithea/rhodecode/templates/admin/repos/repo_edit_perms.html - annotation

Marcin Kuzminski
- Manage User’s Groups: create, delete, rename, add/remove users inside.
by user group admin.
In this case, a user's group can be owned by several people thru an owner user's group.

Some refactoring of naming, permission handling logic.
- remove some code duplicity as well as inconsistent naming
1915f02f6d62
65129c332d37
65129c332d37
65129c332d37
65129c332d37
65129c332d37
65129c332d37
65129c332d37
65129c332d37
f91d3f9b7230
65129c332d37
65129c332d37
65129c332d37
65129c332d37
65129c332d37
65129c332d37
65129c332d37
65129c332d37
e5c8472ac0ac
65129c332d37
65129c332d37
65129c332d37
65129c332d37
65129c332d37
65129c332d37
65129c332d37
9a7d0fbc4a80
e5c8472ac0ac
9a7d0fbc4a80
65129c332d37
65129c332d37
7e3d89d9d3a2
832399a4a45c
65129c332d37
f91d3f9b7230
65129c332d37
65129c332d37
65129c332d37
65129c332d37
f91d3f9b7230
5f1850e4712a
65129c332d37
65129c332d37
65129c332d37
65129c332d37
65129c332d37
65129c332d37
9a7d0fbc4a80
889cda9c2d14
889cda9c2d14
889cda9c2d14
889cda9c2d14
889cda9c2d14
889cda9c2d14
9a7d0fbc4a80
65129c332d37
7e3d89d9d3a2
832399a4a45c
65129c332d37
65129c332d37
65129c332d37
65129c332d37
c61c2ccea2b4
c61c2ccea2b4
c61c2ccea2b4
c61c2ccea2b4
c61c2ccea2b4
c61c2ccea2b4
c61c2ccea2b4
c61c2ccea2b4
c61c2ccea2b4
c61c2ccea2b4
c61c2ccea2b4
c61c2ccea2b4
c61c2ccea2b4
c61c2ccea2b4
acc05c33cc0c
acc05c33cc0c
c61c2ccea2b4
65129c332d37
65129c332d37
65129c332d37
65129c332d37
65129c332d37
65129c332d37
65129c332d37
9a7d0fbc4a80
9a7d0fbc4a80
7e3d89d9d3a2
9a7d0fbc4a80
9a7d0fbc4a80
9a7d0fbc4a80
9a7d0fbc4a80
9a7d0fbc4a80
9a7d0fbc4a80
7e3d89d9d3a2
9a7d0fbc4a80
9a7d0fbc4a80
7e3d89d9d3a2
7e3d89d9d3a2
7e3d89d9d3a2
7e3d89d9d3a2
7e3d89d9d3a2
7e3d89d9d3a2
7e3d89d9d3a2
7e3d89d9d3a2
7e3d89d9d3a2
7e3d89d9d3a2
9a7d0fbc4a80
9a7d0fbc4a80
f91d3f9b7230
9a7d0fbc4a80
9a7d0fbc4a80
9a7d0fbc4a80
9a7d0fbc4a80
9a7d0fbc4a80
9a7d0fbc4a80
c61c2ccea2b4
9a7d0fbc4a80
9a7d0fbc4a80
9a7d0fbc4a80
f91d3f9b7230
<table id="permissions_manage" class="noborder">
    <tr>
        <td>${_('none')}</td>
        <td>${_('read')}</td>
        <td>${_('write')}</td>
        <td>${_('admin')}</td>
        <td>${_('member')}</td>
        <td></td>
    </tr>
    ## USERS
    %for r2p in c.repo_info.repo_to_perm:
        %if r2p.user.username =='default' and c.repo_info.private:
            <tr>
                <td colspan="4">
                    <span class="private_repo_msg">
                    ${_('private repository')}
                    </span>
                </td>
                <td class="private_repo_msg"><img style="vertical-align:bottom" src="${h.url('/images/icons/user.png')}"/>${_('default')}</td>
            </tr>
        %else:
        <tr id="id${id(r2p.user.username)}">
            <td>${h.radio('u_perm_%s' % r2p.user.username,'repository.none')}</td>
            <td>${h.radio('u_perm_%s' % r2p.user.username,'repository.read')}</td>
            <td>${h.radio('u_perm_%s' % r2p.user.username,'repository.write')}</td>
            <td>${h.radio('u_perm_%s' % r2p.user.username,'repository.admin')}</td>
            <td style="white-space: nowrap;">
                <img class="perm-gravatar" src="${h.gravatar_url(r2p.user.email,14)}"/>${r2p.user.username if r2p.user.username != 'default' else _('default')}
            </td>
            <td>
              %if r2p.user.username !='default':
                <span class="delete_icon action_button" onclick="ajaxActionRevoke(${r2p.user.user_id}, 'user', '${'id%s'%id(r2p.user.username)}')">
                ${_('revoke')}
                </span>
              %endif
            </td>
        </tr>
        %endif
    %endfor

    ## USER GROUPS
    %for g2p in c.repo_info.users_group_to_perm:
        <tr id="id${id(g2p.users_group.users_group_name)}">
            <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'repository.none')}</td>
            <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'repository.read')}</td>
            <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'repository.write')}</td>
            <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'repository.admin')}</td>
            <td style="white-space: nowrap;">
                <img class="perm-gravatar" src="${h.url('/images/icons/group.png')}"/>
                %if h.HasPermissionAny('hg.admin')():
                 <a href="${h.url('edit_users_group',id=g2p.users_group.users_group_id)}">${g2p.users_group.users_group_name}</a>
                %else:
                 ${g2p.users_group.users_group_name}
                %endif
            </td>
            <td>
                <span class="delete_icon action_button" onclick="ajaxActionRevoke(${g2p.users_group.users_group_id}, 'user_group', '${'id%s'%id(g2p.users_group.users_group_name)}')">
                ${_('revoke')}
                </span>
            </td>
        </tr>
    %endfor
    <%
    _tmpl = h.literal("""' \
        <td><input type="radio" value="repository.none" name="perm_new_member_{0}" id="perm_new_member_{0}"></td> \
        <td><input type="radio" value="repository.read" name="perm_new_member_{0}" id="perm_new_member_{0}"></td> \
        <td><input type="radio" value="repository.write" name="perm_new_member_{0}" id="perm_new_member_{0}"></td> \
        <td><input type="radio" value="repository.admin" name="perm_new_member_{0}" id="perm_new_member_{0}"></td> \
        <td class="ac"> \
            <div class="perm_ac" id="perm_ac_{0}"> \
                <input class="yui-ac-input" id="perm_new_member_name_{0}" name="perm_new_member_name_{0}" value="" type="text"> \
                <input id="perm_new_member_type_{0}" name="perm_new_member_type_{0}" value="" type="hidden">  \
                <div id="perm_container_{0}"></div> \
            </div> \
        </td> \
        <td></td>'""")
    %>
    ## ADD HERE DYNAMICALLY NEW INPUTS FROM THE '_tmpl'
    <tr class="new_members last_new_member" id="add_perm_input"></tr>
    <tr>
        <td colspan="6">
            <span id="add_perm" class="add_icon" style="cursor: pointer;">
            ${_('Add another member')}
            </span>
        </td>
    </tr>
</table>
<script type="text/javascript">
function ajaxActionRevoke(obj_id, obj_type, field_id) {
    var callback = {
        success: function (o) {
            var tr = YUD.get(String(field_id));
            tr.parentNode.removeChild(tr);
        },
        failure: function (o) {
            alert(_TM['Failed to remoke permission'] + ": " + o.status);
        },
    };
    if (obj_type=='user'){
        var sUrl = "${h.url('delete_repo_user',repo_name=c.repo_name)}";
        var postData = '_method=delete&user_id={0}&obj_type=user'.format(obj_id);
    }
    else if (obj_type=='user_group'){
        var sUrl = "${h.url('delete_repo_users_group',repo_name=c.repo_name)}";
        var postData = '_method=delete&users_group_id={0}&obj_type=user_group'.format(obj_id);

    }

    var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);
};


YUE.onDOMReady(function () {
    if (!YUD.hasClass('perm_new_member_name', 'error')) {
        YUD.setStyle('add_perm_input', 'display', 'none');
    }
    YAHOO.util.Event.addListener('add_perm', 'click', function () {
        addPermAction(${_tmpl}, ${c.users_array|n}, ${c.users_groups_array|n});
    });
});

</script>