From 52c317ea5c818b813c5e9c43b5c26f8ee1178372 Mon Sep 17 00:00:00 2001 From: markusfluer Date: Fri, 12 Aug 2016 13:15:52 +0200 Subject: [PATCH] Dev: User administration Pagination based on select --- application/controllers/admin/useraction.php | 35 +++++--------------- application/models/User.php | 4 +-- application/views/admin/user/editusers.php | 25 +++++++++++--- 3 files changed, 31 insertions(+), 33 deletions(-) diff --git a/application/controllers/admin/useraction.php b/application/controllers/admin/useraction.php index 736cfb409b1..dcc07f49e27 100644 --- a/application/controllers/admin/useraction.php +++ b/application/controllers/admin/useraction.php @@ -56,42 +56,23 @@ public function index() App()->getClientScript()->registerPackage('jquery-tablesorter'); $this->registerScriptFile( 'ADMIN_SCRIPT_PATH', 'users.js'); - - $userlist = getUserList(); - $usrhimself = $userlist[0]; - unset($userlist[0]); - $aData = array(); - - if (Permission::model()->hasGlobalPermission('superadmin','read')) { - $noofsurveys = Survey::model()->countByAttributes(array("owner_id" => $usrhimself['uid'])); - $aData['noofsurveys'] = $noofsurveys; - } - $aData['row'] = 0; - if (isset($usrhimself['parent_id']) && $usrhimself['parent_id'] != 0) + // Page size + if (!empty(Yii::app()->request->getParam('pageSize'))) { - $aData['row'] = User::model()->findByAttributes(array('uid' => $usrhimself['parent_id']))->users_name; + Yii::app()->user->setState('pageSize',(int)Yii::app()->request->getParam('pageSize')); } - - - $aData['usrhimself'] = $usrhimself; - // other users - $aData['usr_arr'] = $userlist; - $noofsurveyslist = array(); - - //This loops through for each user and checks the amount of surveys against them. - $limit = count($userlist); - for ($i = 1; $i <= $limit; $i++) + else { - $noofsurveyslist[$i] = $this->_getSurveyCountForUser($userlist[$i]); + Yii::app()->user->setState('pageSize',(int)Yii::app()->params['defaultPageSize']); } - - $aData['noofsurveyslist'] = $noofsurveyslist; + $aData['pageSize']= Yii::app()->user->getState('pageSize'); $aData['title_bar']['title'] = gT('User administration'); $aData['fullpagebar']['closebutton']['url'] = true; $model = new User(); - $this->_renderWrappedTemplate('user', 'editusers',array('model'=>$model)); + $aData['model']=$model; + $this->_renderWrappedTemplate('user', 'editusers', $aData); } private function _getSurveyCountForUser(array $user) diff --git a/application/models/User.php b/application/models/User.php index e762792c92f..04e5f5e3db3 100644 --- a/application/models/User.php +++ b/application/models/User.php @@ -472,7 +472,7 @@ public function getColums(){ public function search() { // @todo Please modify the following code to remove attributes that should not be searched. - + $pageSize = Yii::app()->user->getState('pageSize',Yii::app()->params['defaultPageSize']); $criteria=new CDbCriteria; // $criteria->compare('uid',$this->uid); @@ -492,7 +492,7 @@ public function search() return new CActiveDataProvider($this, array( 'criteria'=>$criteria, 'pagination' => array( - 'pageSize' => 20 + 'pageSize' => $pageSize ) )); } diff --git a/application/views/admin/user/editusers.php b/application/views/admin/user/editusers.php index d7ed4494e29..1c50dbce045 100644 --- a/application/views/admin/user/editusers.php +++ b/application/views/admin/user/editusers.php @@ -14,10 +14,27 @@ 'itemsCssClass' => 'table table-striped items', 'dataProvider' => $model->search(), 'columns' => $model->colums, - 'afterAjaxUpdate' => 'bindButtons' - )); - ?> - + 'afterAjaxUpdate' => 'bindButtons', + 'summaryText' => gT('Displaying {start}-{end} of {count} result(s).').' '. sprintf(gT('%s rows per page'), + CHtml::dropDownList( + 'pageSize', + $pageSize, + Yii::app()->params['pageSizeOptions'], + array('class'=>'changePageSize form-control', 'style'=>'display: inline; width: auto')) + ), + )); + + ?> + + + +