Skip to content

Commit

Permalink
Dev: Added Vue; basic components working; styling and finetuning will…
Browse files Browse the repository at this point in the history
… follow.
  • Loading branch information
lacrioque committed Jun 26, 2017
1 parent aa6df6a commit 1a60828
Show file tree
Hide file tree
Showing 15 changed files with 19,389 additions and 330 deletions.
3 changes: 3 additions & 0 deletions .vscode/settings.json
@@ -0,0 +1,3 @@
// Place your settings in this file to overwrite default and user settings.
{
}
11 changes: 11 additions & 0 deletions application/config/packages.php
Expand Up @@ -103,5 +103,16 @@
'bootstrap-slider',
)
),
'adminpanel' => array(
'devBaseUrl' => 'assets/packages/adminpanel/build/',
'basePath' => 'core.adminpanel.build',
'coreScriptPosition'=>CClientScript::POS_END,
'defaultScriptFilePosition' =>CClientScript::POS_END,
'defaultScriptPosition' =>CClientScript::POS_END,
'position' =>CClientScript::POS_END,
'js' => array(
'lsadminpanel.js'
)
)

);
63 changes: 63 additions & 0 deletions application/controllers/admin/surveyadmin.php
Expand Up @@ -416,10 +416,71 @@ public function view($iSurveyID, $gid = null, $qid = null)
$aData['showLastQuestion'] = false;
}
$aData['templateapiversion'] = Template::model()->getTemplateConfiguration(null,$iSurveyID)->getApiVersion();
$cs = Yii::app()->clientScript;
$cs->registerPackage('adminpanel');
$this->_renderWrappedTemplate('survey', array(), $aData);
}

/**
* Ajaxified get questiongroup with containing questions
*
*
*/
public function getAjaxQuestionGroupArray($surveyid){
$iSurveyID = sanitize_int($surveyid);
$survey = Survey::model()->findByPk($iSurveyID);
$baselang = $survey->language;
$setting_entry = 'last_question_'.Yii::app()->user->getId().'_'.$iSurveyID;
$lastquestion = getGlobalSetting($setting_entry);
$setting_entry = 'last_question_'.Yii::app()->user->getId().'_'.$iSurveyID.'_gid';
$lastquestiongroup = getGlobalSetting($setting_entry);
$aGroups = QuestionGroup::model()->findAllByAttributes(array('sid' => $iSurveyID, "language" => $baselang), array('order'=>'group_order ASC'));
$aGroupViewable = array();
if(count($aGroups))
{
foreach($aGroups as $group)
{
$curGroup = $group->attributes;
$group->aQuestions = Question::model()->findAllByAttributes(array("sid"=>$iSurveyID, "gid"=>$group['gid'],"language"=>$baselang), array('order'=>'question_order ASC'));
$curGroup['questions'] = array();
foreach($group->aQuestions as $question)
{
if(is_object($question))
{
$curQuestion = $question->attributes;
$curQuestion['name_short'] = viewHelper::flatEllipsizeText($question->question,true,60,'[...]',0.5);
$curGroup['questions'][] = $curQuestion;
}

}
$aGroupViewable[] = $curGroup;
}
}

return Yii::app()->getController()->renderPartial(
'/admin/super/_renderJson',
array(
'data' => array(
'groups' => $aGroupViewable,
'settings' => array(
'lastquestion' => $lastquestion,
'lastquestiongroup' => $lastquestiongroup,
),
// 'debug' => [
// $iSurveyID,
// $survey,
// $baselang,
// $setting_entry,
// $lastquestion,
// $setting_entry,
// $lastquestiongroup
// ]
)
),
false,
false
);
}

/**
* Load list question groups view for a specified by $iSurveyID
Expand Down Expand Up @@ -1597,6 +1658,8 @@ private function _registerScriptFiles()
App()->getClientScript()->registerPackage('jquery-json');
App()->clientScript->registerPackage('bootstrap-switch');
App()->getClientScript()->registerPackage('jquery-datatable');
App()->clientScript->defaultScriptFilePosition=CClientScript::POS_END;
App()->clientScript->registerPackage('adminpanel');

}

Expand Down
57 changes: 57 additions & 0 deletions application/core/LSYii_ClientScript.php
Expand Up @@ -184,4 +184,61 @@ private function analyzeUrl($sUrl)

return array('toPublish'=>($sType=='toPublish'), 'sPathToFile' => $sPath );
}


/**
* Renders the specified core javascript library.
*/
public function renderCoreScripts()
{
if($this->coreScripts===null)
return;
$cssFiles=array();
$jsFiles=array();
$jsFilesPositioned=array();
foreach($this->coreScripts as $name=>$package)
{
$baseUrl=$this->getPackageBaseUrl($name);
if(!empty($package['js']))
{
foreach($package['js'] as $js){
if(isset($package['position'])){
$jsFilesPositioned[$package['position']][$baseUrl.'/'.$js]=$baseUrl.'/'.$js;
} else {
$jsFiles[$baseUrl.'/'.$js]=$baseUrl.'/'.$js;
}
}
}
if(!empty($package['css']))
{
foreach($package['css'] as $css)
$cssFiles[$baseUrl.'/'.$css]='';
}
}
// merge in place
if($cssFiles!==array())
{
foreach($this->cssFiles as $cssFile=>$media)
$cssFiles[$cssFile]=$media;
$this->cssFiles=$cssFiles;
}
if($jsFiles!==array())
{
if(isset($this->scriptFiles[$this->coreScriptPosition]))
{
foreach($this->scriptFiles[$this->coreScriptPosition] as $url => $value)
$jsFiles[$url]=$value;
}
$this->scriptFiles[$this->coreScriptPosition]=$jsFiles;
}
if($jsFilesPositioned!==array())
{
foreach($jsFilesPositioned as $position=>$fileArray){
if(isset($this->scriptFiles[$position]))
foreach($this->scriptFiles[$position] as $url => $value)
$fileArray[$url]=$value;
$this->scriptFiles[$position]=$fileArray;
}
}
}
}
8 changes: 8 additions & 0 deletions application/views/admin/super/_renderJson.php
@@ -0,0 +1,8 @@
<?php
header('Content-type: application/json');
//echo $data;
$this->layout=false;

echo CJavaScript::jsonEncode($data);

?>
1 change: 0 additions & 1 deletion application/views/admin/super/footer.php
Expand Up @@ -4,7 +4,6 @@
* Inserted in all pages
*/
?>

<!-- Footer -->
<footer class='footer'>
<div class="container-fluid">
Expand Down
13 changes: 12 additions & 1 deletion application/views/admin/super/sidemenu.php
Expand Up @@ -19,8 +19,17 @@
{
$showSideMenu = true;
}
$getQuestionsUrl = $this->createUrl("/admin/survey/sa/getAjaxQuestionGroupArray/surveyid/$surveyid");
?>
<?php

<div style="position:absolute; width:300px;left:0;">
<div id="vue-side-menu-app">
<sidebar :options="[]" get-questions-url="<?=$getQuestionsUrl ?>" :translate="{settings: '<?php eT("Survey Settings");?>', structure:'<?php eT("Survey Structure");?>' }"></sidebar>
</div>
</div>

<?php
/*
// TODO : move to controller
$bSurveyIsActive = (isset($surveyIsActive))?$surveyIsActive:$oSurvey->active=='Y';
$sidemenu = (isset($sidemenu))?$sidemenu:array();
Expand Down Expand Up @@ -189,3 +198,5 @@ class="absolute-wrapper hidden-xs"
</div><!-- /.navbar-collapse -->
</nav>
</div>
*/
?>
29 changes: 29 additions & 0 deletions assets/packages/adminpanel/.eslint.json
@@ -0,0 +1,29 @@
{
"env": {
"browser": true,
"commonjs": true,
"es6": true,
"node": true
},
"parserOptions": {
"ecmaFeatures": {
"jsx": true
},
"sourceType": "module"
},
// https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style
"extends": "standard",
// required to lint *.vue files
"plugins": [
"html"
],
"rules": {
"no-const-assign": "warn",
"no-this-before-super": "warn",
"no-undef": "warn",
"no-unreachable": "warn",
"no-unused-vars": "warn",
"constructor-super": "warn",
"valid-typeof": "warn"
}
}

0 comments on commit 1a60828

Please sign in to comment.