Dotclear

source: admin/users.php @ 3397:7ce03cdf599c

Revision 3397:7ce03cdf599c, 5.0 KB checked in by Jean-Christian Denis <contact@…>, 9 years ago (diff)

Group js filter control into dcPage. (lazy coder inside)

Line 
1<?php
2# -- BEGIN LICENSE BLOCK ---------------------------------------
3#
4# This file is part of Dotclear 2.
5#
6# Copyright (c) 2003-2013 Olivier Meunier & Association Dotclear
7# Licensed under the GPL version 2.0 license.
8# See LICENSE file or
9# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
10#
11# -- END LICENSE BLOCK -----------------------------------------
12
13require dirname(__FILE__).'/../inc/admin/prepend.php';
14
15dcPage::checkSuper();
16
17# Creating filter combo boxes
18$sortby_combo = array(
19__('Username') => 'user_id',
20__('Last Name') => 'user_name',
21__('First Name') => 'user_firstname',
22__('Display name') => 'user_displayname',
23__('Number of entries') => 'nb_post'
24);
25
26$sortby_lex = array(
27     // key in sorty_combo (see above) => field in SQL request
28     'user_id' => 'U.user_id',
29     'user_name' => 'user_name',
30     'user_firstname' => 'user_firstname',
31     'user_displayname' => 'user_displayname');
32
33$order_combo = array(
34__('Descending') => 'desc',
35__('Ascending') => 'asc'
36);
37
38# Actions combo box
39$combo_action = array(
40     __('Set permissions') => 'blogs',
41     __('Delete') => 'deleteuser'
42);
43
44# --BEHAVIOR-- adminUsersActionsCombo
45$core->callBehavior('adminUsersActionsCombo',array(&$combo_action));
46
47$show_filters = false;
48
49#?Get users
50$page = !empty($_GET['page']) ? max(1,(integer) $_GET['page']) : 1;
51$nb_per_page =  30;
52
53if (!empty($_GET['nb']) && (integer) $_GET['nb'] > 0) {
54     if ($nb_per_page != $_GET['nb']) {
55          $show_filters = true;
56     }
57     $nb_per_page = $_GET['nb'];
58}
59
60$q = !empty($_GET['q']) ? $_GET['q'] : '';
61$sortby = !empty($_GET['sortby']) ?     $_GET['sortby'] : 'user_id';
62$order = !empty($_GET['order']) ?       $_GET['order'] : 'asc';
63
64$params['limit'] = array((($page-1)*$nb_per_page),$nb_per_page);
65
66
67# - Search filter
68if ($q) {
69     $params['q'] = $q;
70     $show_filters = true;
71}
72
73# - Sortby and order filter
74if ($sortby !== '' && in_array($sortby,$sortby_combo)) {
75     if (array_key_exists($sortby,$sortby_lex)) {
76          $params['order'] = $core->con->lexFields($sortby_lex[$sortby]);
77     } else {
78          $params['order'] = $sortby;
79     }
80     if ($order !== '' && in_array($order,$order_combo)) {
81          $params['order'] .= ' '.$order;
82     } else {
83          $order='asc';
84     }
85
86     if ($sortby != 'user_id' || $order != 'asc') {
87          $show_filters = true;
88     }
89} else {
90     $sortby = 'user_id';
91     $order = 'asc';
92}
93
94# Get users
95try {
96     $rs = $core->getUsers($params);
97     $counter = $core->getUsers($params,1);
98     $rsStatic = $rs->toStatic();
99     if ($sortby != 'nb_post') {
100          // Sort user list using lexical order if necessary
101          $rsStatic->extend('rsExtUser');
102          $rsStatic = $rsStatic->toExtStatic();
103          $rsStatic->lexicalSort($sortby,$order);
104     }
105     $user_list = new adminUserList($core,$rsStatic,$counter->f(0));
106} catch (Exception $e) {
107     $core->error->add($e->getMessage());
108}
109
110
111/* DISPLAY
112-------------------------------------------------------- */
113
114dcPage::open(__('Users'),
115     dcPage::jsLoad('js/_users.js').dcPage::jsFilterControl($show_filters),
116     dcPage::breadcrumb(
117          array(
118               __('System') => '',
119               __('Users') => ''
120          ))
121);
122
123if (!$core->error->flag())
124{
125     if (!empty($_GET['del'])) {
126          dcPage::message(__('User has been successfully removed.'));
127     }
128     if (!empty($_GET['upd'])) {
129          dcPage::message(__('The permissions have been successfully updated.'));
130     }
131
132     echo
133     '<p class="top-add"><strong><a class="button add" href="'.$core->adminurl->get("admin.user").'">'.__('New user').'</a></strong></p>'.
134     '<form action="'.$core->adminurl->get("admin.users").'" method="get" id="filters-form">'.
135     '<h3 class="out-of-screen-if-js">'.__('Show filters and display options').'</h3>'.
136
137     '<div class="table">'.
138     '<div class="cell">'.
139     '<h4>'.__('Filters').'</h4>'.
140     '<p><label for="q" class="ib">'.__('Search:').'</label> '.
141     form::field('q',20,255,html::escapeHTML($q)).'</p>'.
142     '</div>'.
143
144     '<div class="cell filters-options">'.
145     '<h4>'.__('Display options').'</h4>'.
146     '<p><label for="sortby" class="ib">'.__('Order by:').'</label> '.
147     form::combo('sortby',$sortby_combo,$sortby).'</p> '.
148     '<p><label for="order" class="ib">'.__('Sort:').'</label> '.
149     form::combo('order',$order_combo,$order).'</p>'.
150     '<p><span class="label ib">'.__('Show').'</span> <label for="nb" class="classic">'.
151     form::field('nb',3,3,$nb_per_page).' '.__('users per page').'</label></p> '.
152     '</div>'.
153     '</div>'.
154
155     '<p><input type="submit" value="'.__('Apply filters and display options').'" />'.
156     '<br class="clear" /></p>'. //Opera sucks
157     '</form>';
158
159     # Show users
160     $user_list->display($page,$nb_per_page,
161     '<form action="'.$core->adminurl->get("admin.user.actions").'" method="post" id="form-users">'.
162
163     '%s'.
164
165     '<div class="two-cols">'.
166     '<p class="col checkboxes-helpers"></p>'.
167
168     '<p class="col right"><label for="action" class="classic">'.
169     __('Selected users action:').' '.
170     form::combo('action',$combo_action).
171     '</label> '.
172     '<input id="do-action" type="submit" value="'.__('ok').'" />'.
173     form::hidden(array('q'),html::escapeHTML($q)).
174     form::hidden(array('sortby'),$sortby).
175     form::hidden(array('order'),$order).
176     form::hidden(array('page'),$page).
177     form::hidden(array('nb'),$nb_per_page).
178     $core->formNonce().
179     '</p>'.
180     '</div>'.
181     '</form>',
182     $show_filters
183     );
184}
185dcPage::helpBlock('core_users');
186dcPage::close();
Note: See TracBrowser for help on using the repository browser.

Sites map