Exercise: Improve AI helper plugin, generate a test with results shown - refs GH#4589

pull/4592/head
Christian 3 years ago
parent 31635d10ca
commit a1d10357b0
  1. 19
      main/exercise/export/aiken/aiken_import.inc.php

@ -89,6 +89,7 @@ function generateAikenForm()
var nroQ = parseInt($("[name=\'nro_questions\']").val());
var qType = $("[name=\'question_type\']").val();
var valid = (quizName != \'\' && nroQ > 0);
var qWeight = 1;
if (valid) {
btnGenerate.attr("disabled", true);
@ -106,6 +107,7 @@ function generateAikenForm()
if (data.success && data.success == true) {
$("#aiken-area").show();
$("#textarea-aiken").text(data.text);
$("input[name=\'ai_total_weight\']").val(nroQ * qWeight);
$("#textarea-aiken").focus();
} else {
alert("'.get_lang('NoSearchResults').'. '.get_lang('PleaseTryAgain').'");
@ -136,7 +138,7 @@ function generateAikenForm()
'style' => 'width: 100%; height: 250px;',
]
);
$form->addElement('number', 'total_weight', get_lang('TotalWeight'));
$form->addElement('number', 'ai_total_weight', get_lang('TotalWeight'));
$form->addButtonImport(get_lang('Import'), 'submit_aiken_generated');
$form->addHtml('</div>');
@ -230,6 +232,7 @@ function aikenImportExercise($file = null, $request = [])
// set some default values for the new exercise
$exerciseInfo['name'] = preg_replace('/.(zip|txt)$/i', '', $file);
$exerciseInfo['total_weight'] = !empty($_POST['total_weight']) ? (int) ($_POST['total_weight']) : 20;
$exerciseInfo['question'] = [];
// if file is not a .zip, then we cancel all
@ -282,6 +285,7 @@ function aikenImportExercise($file = null, $request = [])
} elseif (!empty($request)) {
// The import is from aiken generated in textarea.
$exerciseInfo['name'] = $request['quiz_name'];
$exerciseInfo['total_weight'] = !empty($_POST['ai_total_weight']) ? (int) ($_POST['ai_total_weight']) : 20;
$exerciseInfo['question'] = [];
setExerciseInfoFromAikenText($request['aiken_format'], $exerciseInfo);
}
@ -290,6 +294,8 @@ function aikenImportExercise($file = null, $request = [])
if (!empty($exerciseInfo)) {
$exercise = new Exercise();
$exercise->exercise = $exerciseInfo['name'];
$exercise->disable(); // Invisible by default
$exercise->updateResultsDisabled(0); // Auto-evaluation mode: show score and expected answers
$exercise->save();
$lastExerciseId = $exercise->selectId();
$tableQuestion = Database::get_course_table(TABLE_QUIZ_QUESTION);
@ -385,6 +391,15 @@ function aikenImportExercise($file = null, $request = [])
my_delete($baseWorkDir.$uploadPath);
}
// Invisible by default
api_item_property_update(
api_get_course_info(),
TOOL_QUIZ,
$lastExerciseId,
'invisible',
api_get_user_id()
);
return $lastExerciseId;
}
}
@ -496,7 +511,7 @@ function setExerciseInfoFromAikenText($aikenText, &$exerciseInfo)
}
$totalQuestions = count($exerciseInfo['question']);
$totalWeight = !empty($_POST['total_weight']) ? (int) ($_POST['total_weight']) : 20;
$totalWeight = (int) $exerciseInfo['total_weight'];
foreach ($exerciseInfo['question'] as $key => $question) {
if (!isset($exerciseInfo['question'][$key]['weighting'])) {
continue;

Loading…
Cancel
Save