## -*- coding: utf-8 -*- <%inherit file="/base/base.mako"/> <%def name="title()"> ${_('Users administration')} %if c.rhodecode_name: · ${h.branding(c.rhodecode_name)} %endif </%def> <%def name="breadcrumbs_links()"></%def> <%def name="menu_bar_nav()"> ${self.menu_items(active='admin')} </%def> <%def name="menu_bar_subnav()"> ${self.admin_menu(active='users')} </%def> <%def name="main()"> <div class="box"> <div class="title"> <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" placeholder="${_('quick filter...')}" value=""/> <span id="user_count">0</span> <ul class="links"> <li> <a href="${h.route_path('users_new')}" class="btn btn-small btn-success">${_(u'Add User')}</a> </li> </ul> </div> <div id="repos_list_wrap"> <table id="user_list_table" class="display"></table> </div> </div> <script type="text/javascript"> $(document).ready(function() { var $userListTable = $('#user_list_table'); // user list $userListTable.DataTable({ processing: true, serverSide: true, ajax: { "url": "${h.route_path('users_data')}", "dataSrc": function ( json ) { var filteredCount = json.recordsFiltered; var filteredInactiveCount = json.recordsFilteredInactive; var totalInactive = json.recordsTotalInactive; var total = json.recordsTotal; var _text = _gettext( "{0} ({1} inactive) of {2} users ({3} inactive)").format( filteredCount, filteredInactiveCount, total, totalInactive); if(total === filteredCount){ _text = _gettext( "{0} users ({1} inactive)").format(total, totalInactive); } $('#user_count').text(_text); return json.data; } }, dom: 'rtp', pageLength: ${c.visual.admin_grid_items}, order: [[ 0, "asc" ]], columns: [ { data: {"_": "username", "sort": "username"}, title: "${_('Username')}", className: "td-user" }, { data: {"_": "email", "sort": "email"}, title: "${_('Email')}", className: "td-email" }, { data: {"_": "first_name", "sort": "first_name"}, title: "${_('First Name')}", className: "td-user" }, { data: {"_": "last_name", "sort": "last_name"}, title: "${_('Last Name')}", className: "td-user" }, { data: {"_": "last_activity", "sort": "last_activity", "type": Number}, title: "${_('Last activity')}", className: "td-time" }, { data: {"_": "active", "sort": "active"}, title: "${_('Active')}", className: "td-active" }, { data: {"_": "admin", "sort": "admin"}, title: "${_('Super-admin')}", className: "td-admin" }, { data: {"_": "extern_type", "sort": "extern_type"}, title: "${_('Auth type')}", className: "td-type" }, { data: {"_": "action", "sort": "action"}, title: "${_('Action')}", className: "td-action", orderable: false } ], language: { paginate: DEFAULT_GRID_PAGINATION, sProcessing: _gettext('loading...'), emptyTable: _gettext("No users available yet.") }, "createdRow": function ( row, data, index ) { if (!data['active_raw']){ $(row).addClass('closed') } } }); $userListTable.on('xhr.dt', function(e, settings, json, xhr){ $userListTable.css('opacity', 1); }); $userListTable.on('preXhr.dt', function(e, settings, data){ $userListTable.css('opacity', 0.3); }); // filter $('#q_filter').on('keyup', $.debounce(250, function() { $userListTable.DataTable().search( $('#q_filter').val() ).draw(); }) ); }); </script> </%def>