From f82d8f889bdc00a174d443ce5700b588941a2825 Mon Sep 17 00:00:00 2001 From: markusfluer Date: Tue, 15 Aug 2017 12:07:19 +0200 Subject: [PATCH] Dev: added surveygroup frontending Surveygroup edition and adjustments on Frontend --- application/config/version.php | 2 +- .../admin/SurveysGroupsController.php | 14 +- .../controllers/admin/templateoptions.php | 24 +++ .../core/plugins/QuickMenu/QuickMenu.php | 4 +- .../extensions/bootstrap/helpers/TbHtml.php | 2 +- .../helpers/update/updatedb_helper.php | 10 ++ application/models/Survey.php | 2 +- application/models/Surveymenu.php | 2 +- application/models/SurveysGroups.php | 110 ++++++++++++- application/models/TemplateConfiguration.php | 2 +- .../admin/export/statistics_user_view.php | 2 +- .../views/admin/export/statistics_view.php | 2 +- .../admin/responses/browsemenubar_view.php | 6 +- .../views/admin/super/fullpagebar_view.php | 16 +- .../views/admin/survey/listSurveys_view.php | 149 +++++++----------- .../views/admin/survey/surveySummary_view.php | 4 +- .../views/admin/surveysgroups/_form.php | 23 ++- .../views/admin/surveysgroups/create.php | 2 +- .../views/admin/surveysgroups/update.php | 77 ++++++--- .../views/admin/templateoptions/update.php | 18 ++- installer/sql/create-mysql.sql | 1 + 21 files changed, 317 insertions(+), 155 deletions(-) diff --git a/application/config/version.php b/application/config/version.php index 6bd0b0fb1c3..d5721306053 100644 --- a/application/config/version.php +++ b/application/config/version.php @@ -14,7 +14,7 @@ $config['versionnumber'] = '3.0.0-beta.2'; //The current version of this branch $config['masterversion'] = '2.67.2'; //The current masters version merged into this branch -$config['dbversionnumber'] = 310; +$config['dbversionnumber'] = 311; $config['buildnumber'] = ''; $config['updatable'] = true; $config['assetsversionnumber'] = '2902'; diff --git a/application/controllers/admin/SurveysGroupsController.php b/application/controllers/admin/SurveysGroupsController.php index c8a983a8312..895a3eb2a71 100644 --- a/application/controllers/admin/SurveysGroupsController.php +++ b/application/controllers/admin/SurveysGroupsController.php @@ -45,7 +45,7 @@ public function create() if(isset($_POST['SurveysGroups'])) { $model->attributes=$_POST['SurveysGroups']; - $model->name = sanitize_paranoid_string($_POST['SurveysGroups']['title']); + $model->name = sanitize_paranoid_string($model->name); $model->created_by = $model->owner_uid = Yii::app()->user->id; if($model->save()) $this->getController()->redirect(array('admin/survey/sa/listsurveys ')); @@ -71,13 +71,21 @@ public function update($id) { $model->attributes=$_POST['SurveysGroups']; if($model->save()) - $this->getController()->redirect(array('admin/survey/sa/listsurveys ')); + $this->getController()->redirect($this->getController()->createUrl('admin/survey/sa/listsurveys').'#surveygroups'); } $aData['model'] = $model; $oSurveySearch = new Survey('search'); $oSurveySearch->gsid = $model->gsid; - $aData['oSurveySearch'] = $oSurveySearch; + + $oTemplateOptions = Template::getTemplateConfiguration(null, null, $model->gsid); + $oTemplateOptions->bUseMagicInherit = false; + $oTemplateOptionsReplacement = TemplateConfiguration::model()->findByPk($oTemplateOptions->id); + $templateOptionPage = $oTemplateOptionsReplacement->optionPage; + + $aData['templateOptionsModel'] = $oTemplateOptions; + $aData['templateOptionPage'] = $templateOptionPage; + $this->_renderWrappedTemplate('surveysgroups', 'update', $aData); } diff --git a/application/controllers/admin/templateoptions.php b/application/controllers/admin/templateoptions.php index da74093a971..0a56e28042c 100644 --- a/application/controllers/admin/templateoptions.php +++ b/application/controllers/admin/templateoptions.php @@ -138,6 +138,30 @@ public function updatesurvey($sid) $this->_updateCommon($model, $sid); } + /** + * Updates a particular model. + * If update is successful, the browser will be redirected to the 'view' page. + * @param integer $id the ID of the model to be updated + */ + public function updatesurveygroup($gsid) + { + if (! Permission::model()->hasGlobalPermission('templates', 'update')){ + Yii::app()->setFlashMessage(gT('Access denied!'),'error'); + $this->getController()->redirect(Yii::app()->getController()->createUrl("/admin/surveysgroups/sa/update/",['id'=>$gsid])); + } + + $model = Template::getTemplateConfiguration(null, null, $gsid); + $model->bUseMagicInherit = false; + + if(isset($_POST['TemplateConfiguration'])){ + $model->attributes=$_POST['TemplateConfiguration']; + if($model->save()) + $this->getController()->redirect(Yii::app()->getController()->createUrl("/admin/surveysgroups/sa/update/",['id'=>$gsid])); + } + + $this->_updateCommon($model, $sid); + } + /** * Lists all models. */ diff --git a/application/core/plugins/QuickMenu/QuickMenu.php b/application/core/plugins/QuickMenu/QuickMenu.php index cb7b3d7f687..ba7fe29c05f 100644 --- a/application/core/plugins/QuickMenu/QuickMenu.php +++ b/application/core/plugins/QuickMenu/QuickMenu.php @@ -103,7 +103,7 @@ class QuickMenu extends \ls\pluginmanager\PluginBase ), 'statistics' => array( 'type' => 'checkbox', - 'label' => 'Statistics ', + 'label' => 'Statistics ', 'default' => '0', 'help' => 'Needed permission: Statistics - View' ), @@ -324,7 +324,7 @@ private function initialiseButtons(array $data) 'name' => 'statistics', 'href' => Yii::app()->getController()->createUrl("admin/statistics/sa/index/surveyid/$surveyId"), 'tooltip' => gT('Statistics'), - 'iconClass' => 'fa fa-stats navbar-brand', + 'iconClass' => 'fa fa-bar-chart navbar-brand', 'showOnlyWhenSurveyIsActivated' => true, 'neededPermission' => array('statistics', 'read') )), diff --git a/application/extensions/bootstrap/helpers/TbHtml.php b/application/extensions/bootstrap/helpers/TbHtml.php index 595330e69d0..d621ec8e09c 100755 --- a/application/extensions/bootstrap/helpers/TbHtml.php +++ b/application/extensions/bootstrap/helpers/TbHtml.php @@ -466,7 +466,7 @@ class TbHtml extends CHtml // required in order to access the protected methods const ICON_SOUND_STEREO = 'fa-sound-stereo'; const ICON_STAR = 'fa-star'; const ICON_STAR_EMPTY = 'fa-star-empty'; - const ICON_STATS = 'fa-stats'; + const ICON_STATS = 'fa-bar-chart'; const ICON_STEP_BACKWARD = 'fa-step-backward'; const ICON_STEP_FORWARD = 'fa-step-forward'; const ICON_STOP = 'fa-stop'; diff --git a/application/helpers/update/updatedb_helper.php b/application/helpers/update/updatedb_helper.php index c6e3d416827..203ecf40428 100644 --- a/application/helpers/update/updatedb_helper.php +++ b/application/helpers/update/updatedb_helper.php @@ -376,6 +376,16 @@ function db_upgrade_all($iOldDBVersion, $bSilent=false) { $oTransaction->commit(); } + /* + * Add template settings to survey groups + */ + if ($iOldDBVersion < 311) { + $oTransaction = $oDB->beginTransaction(); + addColumn('{{surveys_groups}}','template', "string(128) DEFAULT 'default'"); + $oDB->createCommand()->update('{{settings_global}}',array('stg_value'=>311),"stg_name='DBVersion'"); + $oTransaction->commit(); + } + } catch(Exception $e) diff --git a/application/models/Survey.php b/application/models/Survey.php index d0c34004815..2daf79fc457 100644 --- a/application/models/Survey.php +++ b/application/models/Survey.php @@ -1320,7 +1320,7 @@ public function getbuttons() } if(Permission::model()->hasSurveyPermission($this->sid, 'statistics', 'read') && $this->active=='Y' ) { - $button .= ''.gT('Statistics').''; + $button .= ''.gT('Statistics').''; } if (Permission::model()->hasSurveyPermission($this->sid, 'survey', 'create')) { diff --git a/application/models/Surveymenu.php b/application/models/Surveymenu.php index 197a1ffa9e6..ce1704666e4 100644 --- a/application/models/Surveymenu.php +++ b/application/models/Surveymenu.php @@ -109,7 +109,7 @@ public function getSurveyIdOptions (){ } public function getNextOrderPosition(){ - $oSurveymenus = Surveymenu::model()->findAll(); + $oSurveymenus = Surveymenu::model()->findAll('parent_id=:parent_id',array('parent_id'=>0)); return count($oSurveymenus); } diff --git a/application/models/SurveysGroups.php b/application/models/SurveysGroups.php index b5fc00bac27..d1d8c75d423 100644 --- a/application/models/SurveysGroups.php +++ b/application/models/SurveysGroups.php @@ -76,6 +76,90 @@ public function attributeLabels() ); } + public function getColumns(){ + return array( + + array( + 'id'=>'gsid', + 'class'=>'CCheckBoxColumn', + 'selectableRows' => '100', + ), + + array( + 'header' => gT('Survey Group ID'), + 'name' => 'gsid', + 'type' => 'raw', + 'value'=>'CHtml::link($data->gsid, Yii::app()->createUrl("admin/surveysgroups/sa/update/",array("id"=>$data->gsid)))', + 'headerHtmlOptions'=>array('class' => 'hidden-xs'), + 'htmlOptions' => array('class' => 'hidden-xs has-link'), + ), + + array( + 'header' => gT('Name'), + 'name' => 'name', + 'type' => 'raw', + 'value'=>'CHtml::link($data->name, Yii::app()->createUrl("admin/surveysgroups/sa/update/",array("id"=>$data->gsid)))', + 'headerHtmlOptions'=>array('class' => 'hidden-xs'), + 'htmlOptions' => array('class' => 'has-link'), + ), + + array( + 'header' => gT('Title'), + 'name' => 'title', + 'type' => 'raw', + 'value'=>'CHtml::link($data->title, Yii::app()->createUrl("admin/surveysgroups/sa/update/",array("id"=>$data->gsid)))', + 'headerHtmlOptions'=>array('class' => 'hidden-xs'), + 'htmlOptions' => array('class' => 'has-link'), + ), + + array( + 'header' => gT('Description'), + 'name' => 'description', + 'type' => 'raw', + 'value'=>'CHtml::link($data->description, Yii::app()->createUrl("admin/surveysgroups/sa/update/",array("id"=>$data->gsid)))', + 'headerHtmlOptions'=>array('class' => 'hidden-xs'), + 'htmlOptions' => array('class' => 'hidden-xs has-link'), + ), + + array( + 'header' => gT('Parent Group'), + 'name' => 'parent', + 'type' => 'raw', + 'value'=>'CHtml::link( $data->parentTitle, Yii::app()->createUrl("admin/surveysgroups/sa/update/",array("id"=>$data->gsid)))', + 'headerHtmlOptions'=>array('class' => 'hidden-xs'), + 'htmlOptions' => array('class' => 'hidden-xs has-link'), + ), + + array( + 'header' => gT('Owner'), + 'name' => 'owner', + 'value'=>'$data->owner->users_name', + 'headerHtmlOptions'=>array('class' => 'hidden-xs'), + 'htmlOptions' => array('class' => 'hidden-xs has-link'), + ), + + array( + 'header' => gT('Order'), + 'name' => 'order', + 'type' => 'raw', + 'value'=>'CHtml::link($data->order, Yii::app()->createUrl("admin/surveysgroups/sa/update/",array("id"=>$data->gsid)))', + 'headerHtmlOptions'=>array('class' => 'hidden-xs'), + 'htmlOptions' => array('class' => 'hidden-xs has-link'), + ), + + + array( + 'header' => gT('Actions'), + 'name' => 'order', + 'type' => 'raw', + 'value'=> '$data->buttons', + 'headerHtmlOptions'=>array('class' => 'hidden-xs'), + 'htmlOptions' => array('class' => 'hidden-xs has-link'), + ), + + ); + } + /** * Retrieves a list of models based on the current search/filter conditions. * @@ -132,10 +216,14 @@ public function getHasSurveys() public function getButtons() { $sDeleteUrl = App()->createUrl("admin/surveysgroups/sa/delete", array("id"=>$this->gsid)); + $sEditUrl = App()->createUrl("admin/surveysgroups/sa/update", array("id"=>$this->gsid)); $button = ''; + if (! $this->gsid !== 1){ + $button .= ''.gT('Edit survey group').''; + } if (! $this->hasSurveys){ - $button .= ''.gT('Delete survey group').''; + $button .= ''.gT('Delete survey group').''; } return $button; @@ -144,7 +232,7 @@ public function getButtons() public static function getSurveyGroupsList() { $aSurveyList = []; - $oSurveyGroups = self::model()->findAll(); + $oSurveyGroups = self::model()->findAll('parent_id=:parent_id',array('parent_id'=>0)); foreach( $oSurveyGroups as $oSurveyGroup){ $aSurveyList[$oSurveyGroup->gsid] = $oSurveyGroup->title; @@ -153,6 +241,24 @@ public static function getSurveyGroupsList() return $aSurveyList; } + public function getNextOrderPosition(){ + $oSurveysGroups = SurveysGroups::model()->findAll(); + return count($oSurveysGroups); + } + + public function getParentGroupOptions (){ + $oSurveysGroups = SurveysGroups::model()->findAll(); + $options = [ + '' => gT('No parent menu') + ]; + foreach($oSurveysGroups as $oSurveysGroup){ + //$options[] = ""; + $options[''.($oSurveysGroup->gsid).''] = '('.$oSurveysGroup->name.') '.$oSurveysGroup->title; + } + //return join('\n',$options); + return $options; + } + /** * Returns the static model of the specified AR class. * Please note that you should have this exact method in all your CActiveRecord descendants! diff --git a/application/models/TemplateConfiguration.php b/application/models/TemplateConfiguration.php index a332de8aa9e..24f2ce8381e 100644 --- a/application/models/TemplateConfiguration.php +++ b/application/models/TemplateConfiguration.php @@ -502,7 +502,7 @@ protected function setOptionInheritance() foreach($oOptions as $sKey => $sOption){ if ($sOption == 'inherit'){ - $aParentOptions = (array) json_decode($this->getParentConfiguration('options')); + $aParentOptions = (array) json_decode($this->options); $oOptions->$sKey = $aParentOptions[$sKey]; } } diff --git a/application/views/admin/export/statistics_user_view.php b/application/views/admin/export/statistics_user_view.php index ae5a3ef8f0c..6b20a8f40c7 100644 --- a/application/views/admin/export/statistics_user_view.php +++ b/application/views/admin/export/statistics_user_view.php @@ -13,7 +13,7 @@

-     +    

diff --git a/application/views/admin/export/statistics_view.php b/application/views/admin/export/statistics_view.php index 5d4aa2227cf..48ccf74abc7 100644 --- a/application/views/admin/export/statistics_view.php +++ b/application/views/admin/export/statistics_view.php @@ -11,7 +11,7 @@

-     +    

diff --git a/application/views/admin/responses/browsemenubar_view.php b/application/views/admin/responses/browsemenubar_view.php index ddc9880c6cb..bb53c6c3b12 100644 --- a/application/views/admin/responses/browsemenubar_view.php +++ b/application/views/admin/responses/browsemenubar_view.php @@ -50,7 +50,7 @@ hasSurveyPermission($surveyid, 'statistics', 'read')): ?> - + @@ -177,12 +177,12 @@ - + - + diff --git a/application/views/admin/super/fullpagebar_view.php b/application/views/admin/super/fullpagebar_view.php index 88b123f5674..49c9d9e5ebe 100644 --- a/application/views/admin/super/fullpagebar_view.php +++ b/application/views/admin/super/fullpagebar_view.php @@ -7,21 +7,9 @@