##// END OF EJS Templates
authentication: introduce a group sync flag for plugins....
authentication: introduce a group sync flag for plugins. - we'll skip any syncing on plugins which simply don't get any group information - we let plugins define if they wish to sync groups - prevent from odd cases in which someone sets user groups as syncing, and using regular plugin. In this case memebership of that group would be wiped, and it's generaly bad behaviour.

File last commit:

r2114:6e357177 default
r2495:4f076134 default
Show More
user_edit_groups.mako
147 lines | 4.9 KiB | application/x-mako | MakoHtmlLexer
## -*- coding: utf-8 -*-
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">${_('User groups administration')}</h3>
</div>
<div class="panel-body">
<div class="fields">
<div class="field">
<div class="label label-checkbox">
<label for="users_group_active">${_('Add `%s` to user group') % c.user.username}:</label>
</div>
<div class="input">
${h.text('add_user_to_group', placeholder="user group name", class_="medium")}
</div>
</div>
</div>
<div class="groups_management">
${h.secure_form(h.route_path('edit_user_groups_management_updates', user_id=c.user.user_id), request=request)}
<div id="repos_list_wrap">
<table id="user_group_list_table" class="display"></table>
</div>
<div class="buttons">
${h.submit('save',_('Save'),class_="btn")}
</div>
${h.end_form()}
</div>
</div>
</div>
<script>
var api;
$(document).ready(function() {
var get_datatable_count = function(){
$('#user_group_count').text(api.page.info().recordsDisplay);
};
$('#user_group_list_table').on('click', 'a.editor_remove', function (e) {
e.preventDefault();
var row = api.row($(this).closest('tr'));
row.remove().draw();
} );
$('#user_group_list_table').DataTable({
data: ${c.groups|n},
dom: 'rtp',
pageLength: ${c.visual.admin_grid_items},
order: [[ 0, "asc" ]],
columns: [
{ data: {"_": "group_name",
"sort": "group_name"}, title: "${_('Name')}", className: "td-componentname," ,
render: function (data,type,full,meta)
{return '<div><i class="icon-group" title="User group">'+data+'</i></div>'}},
{ data: {"_": "group_description",
"sort": "group_description"}, title: "${_('Description')}", className: "td-description" },
{ data: {"_": "users_group_id"}, className: "td-user",
render: function (data,type,full,meta)
{return '<input type="hidden" name="users_group_id" value="'+data+'">'}},
{ data: {"_": "active",
"sort": "active"}, title: "${_('Active')}", className: "td-active"},
{ data: {"_": "owner_data"}, title: "${_('Owner')}", className: "td-user",
render: function (data,type,full,meta)
{return '<div class="rc-user tooltip">'+
'<img class="gravatar" src="'+ data.owner_icon +'" height="16" width="16">'+
data.owner +'</div>'
}
},
{ data: null,
title: "${_('Action')}",
className: "td-action",
defaultContent: '-'
}
],
language: {
paginate: DEFAULT_GRID_PAGINATION,
emptyTable: _gettext("No user groups available yet.")
},
"initComplete": function( settings, json ) {
var data_grid = $('#user_group_list_table').dataTable();
api = data_grid.api();
get_datatable_count();
}
});
// update the counter when doing search
$('#user_group_list_table').on( 'search.dt', function (e,settings) {
get_datatable_count();
});
// filter, filter both grids
$('#q_filter').on( 'keyup', function () {
var user_api = $('#user_group_list_table').dataTable().api();
user_api
.columns(0)
.search(this.value)
.draw();
});
// refilter table if page load via back button
$("#q_filter").trigger('keyup');
});
$('#language').select2({
'containerCssClass': "drop-menu",
'dropdownCssClass': "drop-menu-dropdown",
'dropdownAutoWidth': true
});
$(document).ready(function(){
$("#group_parent_id").select2({
'containerCssClass': "drop-menu",
'dropdownCssClass': "drop-menu-dropdown",
'dropdownAutoWidth': true
});
$('#add_user_to_group').autocomplete({
serviceUrl: pyroutes.url('user_group_autocomplete_data'),
minChars:2,
maxHeight:400,
width:300,
deferRequestBy: 300, //miliseconds
showNoSuggestionNotice: true,
params: { user_groups:true },
formatResult: autocompleteFormatResult,
lookupFilter: autocompleteFilterResult,
onSelect: function(element, suggestion){
var owner = {owner_icon: suggestion.owner_icon, owner:suggestion.owner};
api.row.add(
{"active": suggestion.active,
"owner_data": owner,
"users_group_id": suggestion.id,
"group_description": suggestion.description,
"group_name": suggestion.value}).draw();
}
});
})
</script>