view rhodecode/templates/admin/repos/repo_edit_perms.html @ 3628:c734686b3cf2 beta

moved permission management into separate entity. - this solves issues when whole form submision could influence permission management particular case is that when repo group permission is revoked and user is no longer able to update repository settings
author Marcin Kuzminski <marcin@python-works.com>
date Thu, 28 Mar 2013 02:11:26 +0100
parents fa6ba6727475
children 7e3d89d9d3a2
line wrap: on
line source

<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="ajaxActionUser(${r2p.user.user_id},'${'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="ajaxActionUserGroup(${g2p.users_group.users_group_id},'${'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 ajaxActionUser(user_id, field_id) {
    var sUrl = "${h.url('delete_repo_user',repo_name=c.repo_name)}";
    var callback = {
        success: function (o) {
            var tr = YUD.get(String(field_id));
            tr.parentNode.removeChild(tr);
        },
        failure: function (o) {
            alert("${_('Failed to remove user')}");
        },
    };
    var postData = '_method=delete&user_id=' + user_id;
    var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);
};

function ajaxActionUserGroup(users_group_id,field_id){
    var sUrl = "${h.url('delete_repo_users_group',repo_name=c.repo_name)}";
    var callback = {
        success:function(o){
            var tr = YUD.get(String(field_id));
            tr.parentNode.removeChild(tr);
        },
        failure:function(o){
            alert("${_('Failed to remove user group')}");
        },
    };
    var postData = '_method=delete&users_group_id='+users_group_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>