Skip to content

Commit

Permalink
Dev: Question theme preview created on edit question page
Browse files Browse the repository at this point in the history
  • Loading branch information
dominikvitt committed May 23, 2018
1 parent 33eb43b commit c8678ed
Show file tree
Hide file tree
Showing 3 changed files with 82 additions and 13 deletions.
53 changes: 48 additions & 5 deletions application/models/QuestionTemplate.php
Expand Up @@ -393,7 +393,18 @@ static public function getQuestionTemplateUserList($type)
$sUserQTemplateRootDir = Yii::app()->getConfig("userquestionthemerootdir");
$aQuestionTemplates = array();

$aQuestionTemplates['core'] = gT('Default');
if ($type == '*'){
$preview_filename = 'EQUATION.png';
} elseif ($type == ':'){
$preview_filename = 'COLON.png';
} elseif ($type == '|'){
$preview_filename = 'PIPE.png';
} else {
$preview_filename = $type.'.png';
}

$aQuestionTemplates['core']['title'] = gT('Default');
$aQuestionTemplates['core']['preview'] = Yii::app()->getConfig("imageurl").'/screenshots/'.$preview_filename;

$sFolderName = self::getFolderName($type);

Expand All @@ -411,8 +422,18 @@ static public function getQuestionTemplateUserList($type)
$oConfig = self::getTemplateConfig($sFullPathToQuestionTemplate);

if (is_object($oConfig) && isset($oConfig->engine->show_as_template) && $oConfig->engine->show_as_template) {
$templateName = $file;
$aQuestionTemplates[$file] = $templateName;
if (!empty($oConfig->metadata->title)){
$aQuestionTemplates[$file]['title'] = json_decode(json_encode($oConfig->metadata->title), TRUE)[0];
} else {
$templateName = $file;
$aQuestionTemplates[$file]['title'] = $templateName;
}

if (!empty($oConfig->files->preview->filename)){
$aQuestionTemplates[$file]['preview'] = json_decode(json_encode($oConfig->files->preview->filename), TRUE)[0];
} else {
$aQuestionTemplates[$file]['preview'] = Yii::app()->getConfig("imageurl").'/screenshots/'.$preview_filename;
}
}
}
}
Expand All @@ -429,8 +450,19 @@ static public function getQuestionTemplateUserList($type)
static public function getQuestionTemplateCoreList($type)
{
$sCoreQTemplateRootDir = Yii::app()->getConfig("corequestionthemerootdir");
$sCoreQTemplateRootUrl = Yii::app()->getConfig("publicurl").'themes/question';
$aQuestionTemplates = array();

if ($type == '*'){
$preview_filename = 'EQUATION.png';
} elseif ($type == ':'){
$preview_filename = 'COLON.png';
} elseif ($type == '|'){
$preview_filename = 'PIPE.png';
} else {
$preview_filename = $type.'.png';
}

$sFolderName = self::getFolderName($type);

if ($sCoreQTemplateRootDir && is_dir($sCoreQTemplateRootDir)) {
Expand All @@ -442,13 +474,24 @@ static public function getQuestionTemplateCoreList($type)

$sFullPathToQuestionTemplate = "$sCoreQTemplateRootDir/$file/survey/questions/answer/$sFolderName";


if (is_dir($sFullPathToQuestionTemplate)) {
// Get the config file and check if template is available
$oConfig = self::getTemplateConfig($sFullPathToQuestionTemplate);

if (is_object($oConfig) && isset($oConfig->engine->show_as_template) && $oConfig->engine->show_as_template) {
$templateName = $file;
$aQuestionTemplates[$file] = $templateName;
if (!empty($oConfig->metadata->title)){
$aQuestionTemplates[$file]['title'] = json_decode(json_encode($oConfig->metadata->title), TRUE)[0];
} else {
$templateName = $file;
$aQuestionTemplates[$file]['title'] = $templateName;
}

if (!empty($oConfig->files->preview->filename)){
$aQuestionTemplates[$file]['preview'] = "$sCoreQTemplateRootUrl/$file/survey/questions/answer/$sFolderName/assets/".json_decode(json_encode($oConfig->files->preview->filename), TRUE)[0];
} else {
$aQuestionTemplates[$file]['preview'] = Yii::app()->getConfig("imageurl").'/screenshots/'.$preview_filename;
}
}
}
}
Expand Down
15 changes: 12 additions & 3 deletions application/views/admin/survey/Question/editQuestion_view.php
Expand Up @@ -11,6 +11,7 @@
<?php
$aQuestionTypeGroups = array();
$aQuestionTypeList = (array) getQuestionTypeList($eqrow['type'], 'array');
$question_template_preview = '';

foreach ( $aQuestionTypeList as $key=> $questionType)
{
Expand Down Expand Up @@ -237,12 +238,13 @@
<div class="">
<select id="question_template" name="question_template" class="form-control">
<?php
foreach ($aQuestionTemplateList as $code => $title) {
foreach ($aQuestionTemplateList as $code => $value) {
$selected = $aQuestionTemplateAttributes['value'] == $code ? 'selected' : '';
$question_template_preview = $aQuestionTemplateAttributes['value'] == $code ? $value['preview'] : '';
if(YII_DEBUG) {
echo sprintf("<option value='%s' %s>%s (code: %s)</option>", $code, $selected, $title, $code);
echo sprintf("<option value='%s' %s>%s (code: %s)</option>", $code, $selected, $value['title'], $code);
} else {
echo sprintf("<option value='%s' %s>%s</option>", $code, $selected, $title);
echo sprintf("<option value='%s' %s>%s</option>", $code, $selected, $value['title']);
}

}
Expand All @@ -254,6 +256,13 @@
</div>
</div>

<div class="form-group" id="QuestionTemplatePreview">
<label class=" control-label" for='gid' title="<?php eT("Question theme preview");?>"><?php eT("Question theme preview:"); ?></label>
<div class="">
<img src="<?php echo $question_template_preview; ?>" style="border: 1px solid gray; padding: 10px; max-width: 100%;">
</div>
</div>

<div class="form-group">
<label class=" control-label" for='gid' title="<?php eT("Set question group");?>"><?php eT("Question group:"); ?></label>
<div class="">
Expand Down
27 changes: 22 additions & 5 deletions assets/scripts/admin/questions.js
Expand Up @@ -105,12 +105,12 @@ var QuestionFunctions = function () {
init = function () {

updatequestionattributes('');
$('#question_type').on('change', updatequestionattributes(''));
$(document).on('change', '#question_template', function(){updatequestionattributes($('#question_template').val());});
$('#question_type').on('change', function(){updatequestionattributes(''); updateQuestionTemplatePreview();});
$(document).on('change', '#question_template', function(){updatequestionattributes($('#question_template').val()); updateQuestionTemplatePreview();});

if(selectormodeclass == 'default' || selectormodeclass == 'full'){
//bind advanced selector
$('#selector__modal_select-question-type').on('hide.bs.modal', function(){updatequestionattributes(''); updateQuestionTemplateOptions();});
$('#selector__modal_select-question-type').on('hide.bs.modal', function(){updatequestionattributes(''); updateQuestionTemplateOptions(); updateQuestionTemplatePreview();});
$('#selector__modal_select-question-type').on('show.bs.modal', function () {
var question_class = questionTypeArray[$('#question_type').val()].class;
$('#selector__question-type-select-modal_question-type-' + question_class).addClass('mark-as-selected').trigger('click').closest('div.panel-collapse').addClass('in');
Expand Down Expand Up @@ -230,13 +230,30 @@ function updateQuestionTemplateOptions() {
method: 'POST',
success: function (data) {
$("#question_template").html("");
$.each(data, function (key, title) {
$("#question_template").append("<option value="+key+">"+title+"</option>");
$.each(data, function (key, value) {
$("#question_template").append("<option value="+key+">"+value.title+"</option>");
});
}
});
}

function updateQuestionTemplatePreview() {
var type = $('#question_type').val();
var template = $('#question_template').val();
$.ajax({
url: get_question_template_options_url,
data: {'type': type},
method: 'POST',
success: function (data) {
if ( data[template] != undefined ) {
$("#QuestionTemplatePreview img").attr('src', data[template]['preview']);
} else {
$("#QuestionTemplatePreview img").attr('src', data['core']['preview']);
}
}
});
}

var qtypes = new Array();
var qnames = new Array();
var qhelp = new Array();
Expand Down

0 comments on commit c8678ed

Please sign in to comment.