Skip to content

Commit

Permalink
Dev: survey search and pagination
Browse files Browse the repository at this point in the history
  • Loading branch information
louis committed Sep 21, 2015
1 parent 8174c21 commit 76ec2a0
Show file tree
Hide file tree
Showing 7 changed files with 191 additions and 187 deletions.
39 changes: 20 additions & 19 deletions application/controllers/admin/expressions.php
Expand Up @@ -42,26 +42,27 @@ function index()
$this->_printOnLoad(Yii::app()->request->getQuery('sa', 'index'));
$aData['pagetitle']="ExpressionManager: {$aData['sa']}";

$aData['sidebar']['state'] = "close";
$surveyinfo = Survey::model()->findByPk($iSurveyID)->surveyinfo;
$aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyID.")";
if(Yii::app()->request->getQuery('gid')!='')
{
$aData['questiongroupbar']['closebutton']['url'] = 'admin/questiongroups/sa/view/surveyid/'.$aData['surveyid'].'/gid/'.sanitize_int(Yii::app()->request->getQuery('gid'));
}
else
{
$aData['surveybar']['closebutton']['url'] = 'admin/survey/sa/view/surveyid/'.$aData['surveyid'];
}

if(Yii::app()->request->getQuery('qid')!='')
{

$aData['questiongroupbar']['closebutton']['url'] = 'admin/questions/sa/view/surveyid/'.$aData['surveyid'].'/gid/'.sanitize_int(Yii::app()->request->getQuery('gid')).'/qid/'.sanitize_int(Yii::app()->request->getQuery('qid'));
}

$aData['gid'] = sanitize_int(Yii::app()->request->getQuery('gid'));
if(isset($iSurveyID))
{
$aData['sidebar']['state'] = "close";
$surveyinfo = Survey::model()->findByPk($iSurveyID)->surveyinfo;
$aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyID.")";
if(Yii::app()->request->getQuery('gid')!='')
{
$aData['questiongroupbar']['closebutton']['url'] = 'admin/questiongroups/sa/view/surveyid/'.$aData['surveyid'].'/gid/'.sanitize_int(Yii::app()->request->getQuery('gid'));
}
else
{
$aData['surveybar']['closebutton']['url'] = 'admin/survey/sa/view/surveyid/'.$aData['surveyid'];
}

if(Yii::app()->request->getQuery('qid')!='')
{
$aData['questiongroupbar']['closebutton']['url'] = 'admin/questions/sa/view/surveyid/'.$aData['surveyid'].'/gid/'.sanitize_int(Yii::app()->request->getQuery('gid')).'/qid/'.sanitize_int(Yii::app()->request->getQuery('qid'));
$aData['gid'] = sanitize_int(Yii::app()->request->getQuery('gid'));
}
}


//header("Content-type: text/html; charset=UTF-8"); // needed for correct UTF-8 encoding
if(isset($_GET['sa']))
Expand Down
96 changes: 19 additions & 77 deletions application/controllers/admin/surveyadmin.php
Expand Up @@ -75,86 +75,28 @@ public function listsurveys()
$aData['issuperadmin'] = true;
}

$sort = new CSort();
$sort->attributes = array(
'Survey id'=>array(
'asc'=>'sid',
'desc'=>'sid desc',
),
'Title'=>array(
'asc'=>'surveys_languagesettings.surveyls_title',
'desc'=>'surveys_languagesettings.surveyls_title desc',
),

'Creation date'=>array(
'asc'=>'datecreated',
'desc'=>'datecreated desc',
),

'Owner'=>array(
'asc'=>'users.users_name',
'desc'=>'users.users_name desc',
),

'Anonymized responses'=>array(
'asc'=>'anonymized',
'desc'=>'anonymized desc',
),

'Active'=>array(
'asc'=>'active',
'desc'=>'active desc',
),

'Partial'=>array(
'asc'=>'countPartialAnswers',
'desc'=>'CountPartialAnswers desc',
),
);

$criteria = new CDbCriteria;
//$criteria->addCondition("active = 'Y'");
$criteria->join ='LEFT JOIN {{surveys_languagesettings}} AS surveys_languagesettings ON ( surveys_languagesettings.surveyls_language = t.language AND t.sid = surveys_languagesettings.surveyls_survey_id )';
$criteria->join .='LEFT JOIN {{users}} AS users ON ( users.uid = t.owner_id )';

$dataProvider=new CActiveDataProvider('Survey', array(

'sort'=>$sort,
'criteria'=>$criteria,

'pagination'=>array(
'pageSize'=>10,
),
));

$aData['surveysDatas'] = $dataProvider;

$aData['model'] = Survey::model();

$ucriteria = new CDbCriteria;
$ucriteria->select = array(
'*',
);
$ucriteria->addCondition("active = 'N'");
$ucriteria->join ='LEFT JOIN {{surveys_languagesettings}} AS surveys_languagesettings ON ( surveys_languagesettings.surveyls_language = t.language AND t.sid = surveys_languagesettings.surveyls_survey_id )';
$ucriteria->join .='LEFT JOIN {{users}} AS users ON ( users.uid = t.owner_id )';
$aData['model'] = $model = new Survey('search');


$udataProvider=new CActiveDataProvider('Survey', array(

'sort'=>$sort,
'criteria'=>$ucriteria,

'pagination'=>array(
'pageSize'=>10,
),
));
// Search
if (isset($_GET['Survey']['searched_value']))
{
$model->searched_value = $_GET['Survey']['searched_value'];
}

// Filter state
if (isset($_GET['active']))
{
$model->active = $_GET['active'];
}

// Set number of page
if (isset($_GET['pageSize']))
{
Yii::app()->user->setState('pageSize',(int)$_GET['pageSize']);
}


$aData['usurveysDatas'] = $udataProvider;

$this->_renderWrappedTemplate('survey', 'listSurveys_view', $aData);



}
}
Expand Down
143 changes: 70 additions & 73 deletions application/models/Survey.php
Expand Up @@ -27,8 +27,9 @@ class Survey extends LSActiveRecord
protected $findByPkCache = array();
/* Set some setting not by default database */
public $format = 'G';
public $full_answers_account;
public $partial_answers_account;
public $full_answers_account=null;
public $partial_answers_account=null;
public $searched_value;

/**
* init to set default
Expand Down Expand Up @@ -636,75 +637,71 @@ public function getbuttons()
return $button;
}

public function search()
{
$criteria=new CDbCriteria;





// select
$criteria->select = array(
'*',
$this->getCountFullAnswers() . " as full_answers_account",
$this->getCountPartialAnswers() . " as partial_answers_account",
);


$criteria->join = 'LEFT JOIN {{surveys_languagesettings}} AS surveys_languagesettings ON ( surveys_languagesettings.surveyls_language = t.language AND t.sid = surveys_languagesettings.surveyls_survey_id )';
$criteria->join .= 'LEFT JOIN {{users}} AS users ON ( users.uid = t.owner_id )';


// where
//$criteria->compare($this->getCountTotalAnswers, $this->full_answers_account);


$sort = new CSort();
$sort->attributes = array(
'Survey id'=>array(
'asc'=>'sid',
'desc'=>'sid desc',
),
'Title'=>array(
'asc'=>'surveys_languagesettings.surveyls_title',
'desc'=>'surveys_languagesettings.surveyls_title desc',
),

'Creation date'=>array(
'asc'=>'datecreated',
'desc'=>'datecreated desc',
),

'Owner'=>array(
'asc'=>'users.users_name',
'desc'=>'users.users_name desc',
),

'Anonymized responses'=>array(
'asc'=>'anonymized',
'desc'=>'anonymized desc',
),

'Full Answers'=>array(
'asc'=>'full_answers_account',
'desc'=>'full_answers_account desc',
),
);


return new CActiveDataProvider(get_class($this), array(
'criteria' => $criteria,
'sort'=>$sort,

'pagination'=>array(
'pageSize'=>15,
),

'pagination' => array(
'pageSize' => 20,
),
));
}

public function search()
{
$pageSize=Yii::app()->user->getState('pageSize',Yii::app()->params['defaultPageSize']);

$sort = new CSort();
$sort->attributes = array(
'Survey id'=>array(
'asc'=>'sid',
'desc'=>'sid desc',
),
'Title'=>array(
'asc'=>'surveys_languagesettings.surveyls_title',
'desc'=>'surveys_languagesettings.surveyls_title desc',
),

'Creation date'=>array(
'asc'=>'datecreated',
'desc'=>'datecreated desc',
),

'Owner'=>array(
'asc'=>'users.users_name',
'desc'=>'users.users_name desc',
),

'Anonymized responses'=>array(
'asc'=>'anonymized',
'desc'=>'anonymized desc',
),

'Active'=>array(
'asc'=>'active',
'desc'=>'active desc',
),

);

$criteria = new CDbCriteria;

// select
$criteria->select = array(
'*',
$this->getCountFullAnswers() . " as full_answers_account",
$this->getCountPartialAnswers() . " as partial_answers_account",
);


$criteria->join ='LEFT JOIN {{surveys_languagesettings}} AS surveys_languagesettings ON ( surveys_languagesettings.surveyls_language = t.language AND t.sid = surveys_languagesettings.surveyls_survey_id )';
$criteria->join .='LEFT JOIN {{users}} AS users ON ( users.uid = t.owner_id )';
$criteria->compare('active', $this->active, true, 'AND');
$criteria->compare('surveys_languagesettings.surveyls_title', $this->searched_value, true, 'AND');
$criteria->compare('sid', $this->searched_value, true, 'OR');
$criteria->compare('admin', $this->searched_value, true, 'OR');


$dataProvider=new CActiveDataProvider('Survey', array(

'sort'=>$sort,
'criteria'=>$criteria,

'pagination'=>array(
'pageSize'=>$pageSize,
),
));

return $dataProvider;
}
}
3 changes: 0 additions & 3 deletions application/views/admin/responses/browsemenubar_view.php
Expand Up @@ -73,15 +73,12 @@
<?php endif;?>

<?php if (Permission::model()->hasSurveyPermission($surveyid, 'statistics', 'read')): ?>


<!-- Get statistics from these responses -->
<a class="btn btn-default" href='<?php echo $this->createUrl("admin/statistics/sa/index/surveyid/$surveyid"); ?>' role="button">
<img src="<?php echo Yii::app()->getBaseUrl(true);?>/images/lime-icons/328637/statistics.png" />
<?php eT("Statistics"); ?>
</a>


<!-- Get time statistics from these responses -->
<?php if ($thissurvey['savetimings'] == "Y"):?>
<a class="btn btn-default" href='<?php echo $this->createUrl("admin/responses/sa/time/surveyid/$surveyid"); ?>' role="button">
Expand Down
1 change: 0 additions & 1 deletion application/views/admin/super/listquestiongroups.php
Expand Up @@ -7,7 +7,6 @@
* @var $surveyid int
*/
?>

<?php $pageSize=Yii::app()->user->getState('pageSize',Yii::app()->params['defaultPageSize']);?>
<div class="side-body">
<h3><?php eT('Question Groups in this survey'); ?></h3>
Expand Down
8 changes: 4 additions & 4 deletions application/views/admin/super/listquestions.php
Expand Up @@ -27,7 +27,7 @@

<!-- search input -->
<div class="form-group">
<?php echo $form->label($model, 'filter: ', array('class'=>'col-sm-2 control-label text-right col-sm-offset-6')); ?>
<?php echo $form->label($model, 'search: ', array('class'=>'col-sm-2 control-label text-right col-sm-offset-6')); ?>
<div class="col-sm-2 text-right">
<?php echo $form->textField($model, 'title', array('class'=>'form-control')); ?>
</div>
Expand All @@ -38,7 +38,7 @@
<?php echo $form->label($model, 'Group:', array('class'=>'col-sm-2 control-label text-right col-sm-offset-6')); ?>
<div class="col-sm-2 text-right">
<select name="group_name" class="form-control">
<option value=""><?php eT('select a question group');?></option>
<option value=""><?php eT('any group');?></option>
<?php foreach($model->AllGroups as $group): ?>
<option value="<?php echo $group->group_name;?>" <?php if( $group->group_name == $model->group_name){echo 'selected';} ?>>
<?php echo $group->group_name;?>
Expand All @@ -61,9 +61,9 @@
<?php
$this->widget('bootstrap.widgets.TbGridView', array(
'dataProvider' => $model->search(),
'id' => 'question-grid',


// Number of row per page selection
'id' => 'question-grid',
'summaryText'=>gT('Displaying {start}-{end} of {count} result(s).') .
CHtml::dropDownList(
'pageSize',
Expand Down

0 comments on commit 76ec2a0

Please sign in to comment.