Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
executable file 301 lines (271 sloc) 15.9 KB
<?php
/**
* @var $this AdminController
*/
// DO NOT REMOVE This is for automated testing to validate we see that page
echo viewHelper::getViewTestTag('surveyResponsesBrowse');
?>
<div class='side-body <?php echo getSideBodyClass(false); ?>'>
<h3><?php eT('Survey responses'); ?></h3>
<!-- Display mode -->
<div class="text-right in-title">
<div class="pull-right">
<div class="form text-right">
<form action="<?=App()->createUrl('/admin/responses/sa/browse/', ['surveyid' => $surveyid])?>" class="pjax" method="POST" id="change-display-mode-form">
<div class="form-group">
<label for="display-mode">
<?php
eT('Display mode:');
?>
</label>
<?php
$state = Yii::app()->user->getState('responsesGridSwitchDisplayState') == "" ? 'compact' : Yii::app()->user->getState('responsesGridSwitchDisplayState');
$this->widget('yiiwheels.widgets.buttongroup.WhButtonGroup',
array(
'name' => 'displaymode',
'value'=> $state,
'selectOptions'=>array(
'extended'=>gT('Extended'),
'compact'=>gT('Compact')
),
'htmlOptions' => array(
'classes' => 'selector__action-change-display-mode'
)
)
);
?>
<input type="hidden" name="surveyid" value="<?=$surveyid?>" />
<input type="hidden" name="<?=Yii::app()->request->csrfTokenName?>" value="<?=Yii::app()->request->csrfToken?>" />
<input type="submit" class="hidden" name="submit" value="submit" />
</div>
</form>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div id='top-scroller' class="content-right scrolling-wrapper" >
<div id='fake-content'>&nbsp;</div>
</div>
<div id='bottom-scroller' class="content-right scrolling-wrapper" >
<input type='hidden' name='dateFormatDetails' value='<?php echo json_encode($dateformatdetails); ?>' />
<input type='hidden' name='rtl' value='<?php echo getLanguageRTL($_SESSION['adminlang']) ? '1' : '0'; ?>' />
<?php if (Yii::app()->user->getState('sql_'.$surveyid) != null ):?>
<!-- Filter is on -->
<?php eT("Showing filtered results"); ?>
<a class="btn btn-default" href="<?php echo Yii::app()->createUrl('admin/responses', array("sa"=>'browse','surveyid'=>$surveyid, 'filters'=>'reset')); ?>" role="button">
<?php eT("View without the filter."); ?>
<span aria-hidden="true">&times;</span>
</a>
<?php endif;?>
<?php
// the massive actions dropup button
$massiveAction = App()->getController()->renderPartial('/admin/responses/massive_actions/_selector', array(), true, false);
// The first few colums are fixed.
// Specific columns at start
$aColumns = array(
array(
'id'=>'id',
'class'=>'CCheckBoxColumn',
'selectableRows' => '100',
),
array(
'class'=>'bootstrap.widgets.TbButtonColumn',
'template'=>'{detail}{quexmlpdf}{edit}{downloadfiles}{deletefiles}{deleteresponse}',
//~ 'htmlOptions' => array('class' => 'text-left response-buttons'),
'buttons'=> $model->getGridButtons('responses-grid'),
),
array(
'header' => 'id',
'name' => 'id',
),
array(
'header' => 'seed',
'name' => 'seed'
)
);
if (!$filterableColumnsExist || in_array('lastpage', $filterableColumnsExist ? $filteredColumns : [])) {
$aColumns[] = array(
'header' => 'lastpage',
'name' => 'lastpage',
'type' => 'number',
'filter' => TbHtml::textField(
'SurveyDynamic[lastpage]',
$model->lastpage)
);
}
$filterableColumns[] = 'lastpage';
if (!$filterableColumnsExist || in_array(gT("completed"), $filterableColumnsExist ? $filteredColumns : [])) {
$aColumns[] = array(
'header' => gT("completed"),
'name' => 'completed_filter',
'value' => '$data->completed',
'type' => 'raw',
'filter' => TbHtml::dropDownList(
'SurveyDynamic[completed_filter]',
$model->completed_filter,
array('' => gT('All'), 'Y' => gT('Yes'), 'N' => gT('No')))
);
}
$filterableColumns[] = gT("completed");
//add token to top of list if survey is not private
if ($bHaveToken) {
if (!$filterableColumnsExist || in_array('token', $filterableColumnsExist ? $filteredColumns : [])) {
$aColumns[] = array(
'header' => 'token',
'name' => 'token',
'type' => 'raw',
'value' => '$data->tokenForGrid',
);
}
$filterableColumns[] = 'token';
if (!$filterableColumnsExist || in_array(gT("First name"), $filterableColumnsExist ? $filteredColumns : [])) {
$aColumns[] = array(
'header' => gT("First name"),
'name' => 'tokens.firstname',
'id' => 'firstname',
'type' => 'raw',
'value' => '$data->firstNameForGrid',
'filter' => TbHtml::textField(
'SurveyDynamic[firstname_filter]',
$model->firstname_filter)
);
}
$filterableColumns[] = gT("First name");
if (!$filterableColumnsExist || in_array(gT("Last name"), $filterableColumnsExist ? $filteredColumns : [])) {
$aColumns[] = array(
'header' => gT("Last name"),
'name' => 'tokens.lastname',
'type' => 'raw',
'id' => 'lastname',
'value' => '$data->lastNameForGrid',
'filter' => TbHtml::textField(
'SurveyDynamic[lastname_filter]',
$model->lastname_filter)
);
}
$filterableColumns[] = gT("Last name");
if (!$filterableColumnsExist || in_array(gT("Email"), $filterableColumnsExist ? $filteredColumns : [])) {
$aColumns[] = array(
'header' => gT("Email"),
'name' => 'tokens.email',
'id' => 'email',
'filter' => TbHtml::textField(
'SurveyDynamic[email_filter]',
$model->email_filter)
);
}
$filterableColumns[] = gT("Email");
}
if (!$filterableColumnsExist || in_array('startlanguage', $filterableColumnsExist ? $filteredColumns : [])) {
$aColumns[] = array(
'header' => 'startlanguage',
'name' => 'startlanguage',
);
}
$filterableColumns[] = 'startlanguage';
// The column model must be built dynamically, since the columns will differ from survey to survey, depending on the questions.
// All other columns are based on the questions.
// An array to control unicity of $code (EM code)
foreach($model->metaData->columns as $column)
{
if(!in_array($column->name, $aDefaultColumns))
{
$colName = viewHelper::getFieldCode($fieldmap[$column->name],array('LEMcompat'=>true)); // This must be unique ......
$base64jsonFieldMap = base64_encode(json_encode($fieldmap[$column->name]));
/* flat and ellipsize all part of question (sub question etc …, separate by br . mantis #14301 */
$colDetails = viewHelper::getFieldText($fieldmap[$column->name],array('abbreviated'=>$model->ellipsize_header_value,'separator'=>array('<br>','')));
/* Here we strip all tags, and separate with hr since we allow html (in popover), maybe use only viewHelper::purified ? But remind XSS. mantis #14301 */
$colTitle = viewHelper::getFieldText($fieldmap[$column->name],array('afterquestion'=>"<hr>",'separator'=>array('','<br>')));
if (!$filterableColumnsExist || in_array($colName . ': ' . $colDetails, $filterableColumnsExist ? $filteredColumns : [])) {
$aColumns[] = array(
'header' => '<div data-toggle="popover" data-trigger="hover focus" data-placement="bottom" title="' . $colName . '" data-content="' . CHtml::encode($colTitle) . '" data-html="1" data-container="#responses-grid">' . $colName . ' <br/> ' . $colDetails . '</div>',
'headerHtmlOptions' => array('style' => 'min-width: 350px;'),
'name' => $column->name,
'type' => 'raw',
'value' => '$data->getExtendedData("' . $column->name . '", "' . $language . '", "' . $base64jsonFieldMap . '")',
);
}
$filterableColumns[] = $colName . ': ' . $colDetails;
}
}
// create a modal to filter all columns
$filterColumns = App()->getController()->renderPartial('/admin/responses/modal_subviews/filterColumns', array('filterableColumns' => $filterableColumns, 'filteredColumns' => $filteredColumns), true, false);
$this->widget('ext.LimeGridView.LimeGridView', array(
'dataProvider' => $model->search(),
'filter' => $model,
'columns' => $aColumns,
'itemsCssClass' =>'table-striped',
'id' => 'responses-grid',
'ajaxUpdate' => 'responses-grid',
'ajaxType' => 'POST',
'afterAjaxUpdate'=>'js:function(id, data){ LS.resp.bindScrollWrapper(); onUpdateTokenGrid();$(".grid-view [data-toggle=\'popover\']").popover(); }',
'template' => "<div class='push-grid-pager'>{items}\n</div><div id='ListPager'><div class=\"col-sm-12\" id=\"massive-action-container\">$massiveAction$filterColumns</div><div class=\"col-sm-12 pager-container ls-ba \">{pager}</div><div class=\"col-sm-12 summary-container\">{summary}</div></div>",
'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'))
),
));
?>
</div>
<!-- To update rows per page via ajax setSession-->
<?php
$scriptVars = '
var postUrl = "'.Yii::app()->getController()->createUrl("admin/responses/", array("sa" => "setSession")).'"; // For massive export
';
$script = '
var postUrl = "'.Yii::app()->getController()->createUrl("admin/responses/", array("sa" => "setSession")).'"; // For massive export
jQuery(document).on("change", "#pageSize", function(){
$.fn.yiiGridView.update("responses-grid",{ data:{ pageSize: $(this).val() }});
});
$(".grid-view [data-toggle=\'popover\']").popover();
';
App()->getClientScript()->registerScript('listresponses', $scriptVars, LSYii_ClientScript::POS_BEGIN);
App()->getClientScript()->registerScript('listresponses', $script, LSYii_ClientScript::POS_POSTSCRIPT);
?>
</div>
</div>
</div>
<!-- Edit Token Modal -->
<div class="modal fade" tabindex="-1" role="dialog" id="editTokenModal">
<div class="modal-dialog" style="width: 1100px">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php eT('Edit survey participant');?></h4>
</div>
<div class="modal-body">
<!-- the ajax loader -->
<div id="ajaxContainerLoading2" class="ajaxLoading" >
<p><?php eT('Please wait, loading data...');?></p>
<div class="preloader loading">
<span class="slice"></span>
<span class="slice"></span>
<span class="slice"></span>
<span class="slice"></span>
<span class="slice"></span>
<span class="slice"></span>
</div>
</div>
<div id="modal-content">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?php eT("Close");?></button>
<button type="button" class="btn btn-primary" id="save-edittoken"><?php eT("Save");?></button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
<div style="display: none;">
<?php
Yii::app()->getController()->widget('yiiwheels.widgets.datetimepicker.WhDateTimePicker', array(
'name' => "no",
'id' => "no",
'value' => '',
));
?>
</div>
You can’t perform that action at this time.