From 6dfe5bd1ed446e86e894990d54bdaeb4f17f9c1f Mon Sep 17 00:00:00 2001 From: Olle Haerstedt Date: Mon, 5 Mar 2018 13:56:15 +0100 Subject: [PATCH] Fixed issue: Filter assessments --- application/controllers/admin/assessments.php | 53 +++++++++++++++++-- application/models/Assessment.php | 15 ++++-- .../admin/assessments/assessments_view.php | 2 +- assets/scripts/admin/assessments.js | 1 + 4 files changed, 62 insertions(+), 9 deletions(-) diff --git a/application/controllers/admin/assessments.php b/application/controllers/admin/assessments.php index 601eb2f169c..676251e91d3 100644 --- a/application/controllers/admin/assessments.php +++ b/application/controllers/admin/assessments.php @@ -46,7 +46,7 @@ public function index($iSurveyID) Yii::app()->setConfig("baselang", $surveyLanguage); Yii::app()->setConfig("assessmentlangs", $languages); - + if ($sAction == "assessmentadd") { $this->_add($iSurveyID); } @@ -101,7 +101,7 @@ protected function _renderWrappedTemplate($sAction = 'assessments', $aViewUrls = * @param boolean $collectEdit * @return array */ - private function _prepareDataArray(&$aData, $collectEdit = false) + private function prepareDataArray(&$aData, $collectEdit = false) { $iSurveyID = $aData['surveyid']; @@ -111,6 +111,8 @@ private function _prepareDataArray(&$aData, $collectEdit = false) $oAssessments = Assessment::model(); $oAssessments->sid = $iSurveyID; $this->_collectGroupData($iSurveyID, $aData); + + $this->setSearchParams($oAssessments); $aData['model'] = $oAssessments; $aData['pageSizeAsessements'] = Yii::app()->user->getState('pageSizeAsessements', Yii::app()->params['defaultPageSize']); @@ -131,6 +133,49 @@ private function _prepareDataArray(&$aData, $collectEdit = false) return $aData; } + /** + * Set search params from Yii grid view. + * @param Assessment $oAssessments + * @return void + */ + private function setSearchParams(Assessment $oAssessments) + { + /* + ["Assessment"]=> + array(5) { + ["scope"]=> + string(1) "T" + ["name"]=> + string(0) "" + ["minimum"]=> + string(0) "" + ["maximum"]=> + string(0) "" + ["message"]=> + string(0) "" + } + */ + if (isset($_POST['Assessment']['scope'])) { + $oAssessments->scope = $_POST['Assessment']['scope']; + } + + if (isset($_POST['Assessment']['name'])) { + $oAssessments->name = $_POST['Assessment']['name']; + } + + if (isset($_POST['Assessment']['minimum'])) { + $oAssessments->minimum = $_POST['Assessment']['minimum']; + } + + if (isset($_POST['Assessment']['maximum'])) { + $oAssessments->maximum = $_POST['Assessment']['maximum']; + } + + if (isset($_POST['Assessment']['message'])) { + $oAssessments->message = $_POST['Assessment']['message']; + } + } + /** * Feed JSON to modal. * @param int $surveyid @@ -170,7 +215,7 @@ private function _showAssessments($iSurveyID, $action) Yii::app()->loadHelper('admin/htmleditor'); - $this->_prepareDataArray($aData); + $this->prepareDataArray($aData); $aData['asessementNotActivated'] = false; if ($oSurvey->assessments != 'Y') { @@ -224,7 +269,7 @@ private function _collectEditData(array $aData) { $oAssessment = Assessment::model()->find("id=:id", array(':id' => App()->request->getParam('id'))); if (!$oAssessment) { - throw new CHttpException(500); + throw new CHttpException(500); } // 404 ? diff --git a/application/models/Assessment.php b/application/models/Assessment.php index 77d650e195e..7862b91f3c0 100644 --- a/application/models/Assessment.php +++ b/application/models/Assessment.php @@ -125,7 +125,7 @@ public function getColumns() 'name' => 'scope', 'value' => '$data->scope == "G" ? eT("Group") : eT("Total")', 'htmlOptions' => ['class' => 'col-sm-1'], - 'filter' => TbHtml::dropDownList('assessment["scope"]', 'scope', ['' => gT('All'), 'T' => gT('Total'), 'G' => gT("Group")]) + 'filter' => TbHtml::dropDownList('Assessment[scope]', 'scope', ['' => gT('All'), 'T' => gT('Total'), 'G' => gT("Group")]) ), array( 'name' => 'name', @@ -165,9 +165,16 @@ public function search() $criteria->compare('message', $this->message, true); $criteria->compare('language', $survey->language); - return new CActiveDataProvider($this, array( - 'criteria'=>$criteria, - )); + $pageSize = Yii::app()->user->getState('pageSizeParticipantView', Yii::app()->params['defaultPageSize']); + return new CActiveDataProvider( + $this, + array( + 'criteria'=>$criteria, + 'pagination' => array( + 'pageSize' => $pageSize + ) + ) + ); } /** diff --git a/application/views/admin/assessments/assessments_view.php b/application/views/admin/assessments/assessments_view.php index bdb79b0bcc7..aea5c17b039 100644 --- a/application/views/admin/assessments/assessments_view.php +++ b/application/views/admin/assessments/assessments_view.php @@ -56,7 +56,7 @@ 'ajaxType' => 'POST', 'ajaxUpdate' => 'assessments-grid', 'template' => "{items}\n
{pager}
{summary}
", - 'afterAjaxUpdate'=>'function(){ try{bindAction();} catch(e) {} }', + 'afterAjaxUpdate'=>'bindAction', )); ?> diff --git a/assets/scripts/admin/assessments.js b/assets/scripts/admin/assessments.js index d511da68bb3..018baf4d3d7 100644 --- a/assets/scripts/admin/assessments.js +++ b/assets/scripts/admin/assessments.js @@ -137,3 +137,4 @@ $(document).on('ready pjax:scriptcomplete', function(){ } ) }); +