feat: more fixes

v1.18.x
Barış Soner Uşaklı 4 years ago
parent 40a05b70ef
commit 700e1e4340

@ -347,7 +347,7 @@ define('admin/manage/users', [
});
function handleUserCreate() {
$('#createUser').on('click', function () {
$('[data-action="create"]').on('click', function () {
Benchpress.parse('admin/partials/create_user_modal', {}, function (html) {
var modal = bootbox.dialog({
message: html,

@ -22,11 +22,11 @@ usersController.index = async function (req, res) {
if (req.query.query) {
await usersController.search(req, res);
} else {
await newGet(req, res);
await getUsers(req, res);
}
};
async function newGet(req, res) {
async function getUsers(req, res) {
const sortDirection = req.query.sortDirection || 'desc';
const reverse = sortDirection === 'desc';
@ -35,7 +35,7 @@ async function newGet(req, res) {
if (![50, 100, 250, 500].includes(resultsPerPage)) {
resultsPerPage = 50;
}
const sortBy = validator.escape(req.query.sortBy || 'joindate');
let sortBy = validator.escape(req.query.sortBy || '');
const filterBy = Array.isArray(req.query.filter) ? req.query.filter : [req.query.filter];
const start = Math.max(0, page - 1) * resultsPerPage;
const stop = start + resultsPerPage - 1;
@ -49,13 +49,20 @@ async function newGet(req, res) {
flags: 'users:flags',
};
const set = [sortToSet[sortBy] || 'users:joindate'];
const set = [];
if (sortBy) {
set.push(sortToSet[sortBy]);
}
if (filterBy.includes('notvalidated')) {
set.push('users:notvalidated');
}
if (filterBy.includes('banned')) {
set.push('users:banned');
}
if (!set.length) {
set.push('users:online');
sortBy = 'online';
}
return set.length > 1 ? set : set[0];
}

@ -2,7 +2,33 @@
<div class="col-lg-12">
<div class="clearfix">
<form class="form-inline pull-right">
<button id="createUser" class="btn btn-primary">[[admin/manage/users:new]]</button>
<div class="input-group">
<input type="text" class="form-control" placeholder="[[global:search]]" id="user-search" value="{query}">
<span class="input-group-addon search-button"><i class="fa fa-search"></i></span>
</div>
<select id="user-search-by" class="form-control">
<option value="username" {{{if searchBy_username}}}selected{{{end}}}>[[admin/manage/users:search.username]]</option>
<option value="email" {{{if searchBy_email}}}selected{{{end}}}>[[admin/manage/users:search.email]]</option>
<option value="uid" {{{if searchBy_uid}}}selected{{{end}}}>[[admin/manage/users:search.uid]]</option>
<option value="ip" {{{if searchBy_ip}}}selected{{{end}}}>[[admin/manage/users:search.ip]]</option>
</select>
<select id="results-per-page" class="form-control">
<option value="50">[[admin/manage/users:50-per-page]]</option>
<option value="100">[[admin/manage/users:100-per-page]]</option>
<option value="250">[[admin/manage/users:250-per-page]]</option>
<option value="500">[[admin/manage/users:500-per-page]]</option>
</select>
</form>
</div>
<hr/>
<ul class="nav nav-pills">
<li><a href='{config.relative_path}/admin/manage/users/?filter=notvalidated&resultsPerPage={resultsPerPage}'>[[admin/manage/users:pills.unvalidated]]</a></li>
<li><a href='{config.relative_path}/admin/manage/users?filter=banned&resultsPerPage={resultsPerPage}'>[[admin/manage/users:pills.banned]]</a></li>
<li class="pull-right">
<form class="form-inline">
<!-- IF inviteOnly -->
<button component="user/invite" class="btn btn-success"><i class="fa fa-users"></i> [[admin/manage/users:invite]]</button>
<!-- ENDIF inviteOnly -->
@ -27,32 +53,6 @@
</ul>
</div>
</form>
</div>
<hr/>
<ul class="nav nav-pills">
<li><a href='{config.relative_path}/admin/manage/users/?filter=notvalidated&resultsPerPage={resultsPerPage}'>[[admin/manage/users:pills.unvalidated]]</a></li>
<li><a href='{config.relative_path}/admin/manage/users?filter=banned&resultsPerPage={resultsPerPage}'>[[admin/manage/users:pills.banned]]</a></li>
<li class="pull-right">
<form class="form-inline">
<div class="input-group">
<input type="text" class="form-control" placeholder="[[global:search]]" id="user-search" value="{query}">
<span class="input-group-addon search-button"><i class="fa fa-search"></i></span>
</div>
<select id="user-search-by" class="form-control">
<option value="username" {{{if searchBy_username}}}selected{{{end}}}>[[admin/manage/users:search.username]]</option>
<option value="email" {{{if searchBy_email}}}selected{{{end}}}>[[admin/manage/users:search.email]]</option>
<option value="uid" {{{if searchBy_uid}}}selected{{{end}}}>[[admin/manage/users:search.uid]]</option>
<option value="ip" {{{if searchBy_ip}}}selected{{{end}}}>[[admin/manage/users:search.ip]]</option>
</select>
<select id="results-per-page" class="form-control">
<option value="50">[[admin/manage/users:50-per-page]]</option>
<option value="100">[[admin/manage/users:100-per-page]]</option>
<option value="250">[[admin/manage/users:250-per-page]]</option>
<option value="500">[[admin/manage/users:500-per-page]]</option>
</select>
</form>
</li>
</ul>
@ -95,10 +95,9 @@
<td><i title="[[admin/manage/users:users.banned]]" class="ban fa fa-gavel text-danger<!-- IF !users.banned --> hidden<!-- ENDIF !users.banned -->"></i><i class="administrator fa fa-shield text-success<!-- IF !users.administrator --> hidden<!-- ENDIF !users.administrator -->"></i><a href="{config.relative_path}/user/{users.userslug}"> {users.username}</a></td>
<td>
<!-- IF config.requireEmailConfirmation -->
<i class="validated fa fa-check text-success<!-- IF !users.email:confirmed --> hidden<!-- ENDIF !users.email:confirmed -->" title="validated"></i>
<i class="notvalidated fa fa-times text-danger<!-- IF users.email:confirmed --> hidden<!-- ENDIF users.email:confirmed -->" title="not validated"></i>
<!-- ENDIF config.requireEmailConfirmation --> {users.email}</td>
<i class="notvalidated fa fa-check text-muted<!-- IF users.email:confirmed --> hidden<!-- ENDIF users.email:confirmed -->" title="not validated"></i>
{users.email}</td>
<td class="text-right">{users.postcount}</td>
<td class="text-right">{users.reputation}</td>
<td class="text-right"><!-- IF users.flags -->{users.flags}<!-- ELSE -->0<!-- ENDIF users.flags --></td>
@ -114,3 +113,7 @@
</div>
</div>
<button data-action="create" class="floating-button mdl-button mdl-js-button mdl-button--fab mdl-js-ripple-effect mdl-button--colored">
<i class="material-icons">add</i>
</button>

@ -1,4 +1,4 @@
<div class="alert alert-danger d-none" id="create-modal-error"></div>
<div class="alert alert-danger hidden" id="create-modal-error"></div>
<form>
<div class="form-group">
<label for="group-name">[[admin/manage/users:create.username]]</label>

Loading…
Cancel
Save