Exercises: Use png instead of jpeg, fix base64 format + show sign in pdf

BT#17793
pull/3600/head^2
Julio Montoya 5 years ago
parent b52c33db24
commit 58b7ae4784
  1. 13
      main/exercise/exercise.class.php
  2. 9
      main/exercise/exercise_result.php
  3. 8
      main/exercise/exercise_show.php
  4. 14
      main/exercise/result.php
  5. 3
      main/inc/ajax/exercise.ajax.php
  6. 6
      main/template/default/exercise/partials/result_exercise.tpl
  7. 7
      main/template/default/exercise/result.tpl
  8. 18
      plugin/exercise_signature/lib/ExerciseSignature.php

@ -6403,19 +6403,14 @@ class Exercise
}
$signature = '';
/*if (api_get_configuration_value('')) {
$extraFieldValue = new ExtraFieldValue('exercise');
$result = $extraFieldValue->get_values_by_handler_and_field_variable($objExercise->iId, 'signature_activated');
if ($result && isset($result['value']) && 1 === (int) $result['value']) {
$allowSignature = true;
}
$signature
}*/
if (ExerciseSignaturePlugin::exerciseHasSignatureActivated($this)) {
$signature = ExerciseSignaturePlugin::getSignature($trackExerciseInfo['exe_user_id'], $trackExerciseInfo);
}
$tpl = new Template(null, false, false, false, false, false, false);
$tpl->assign('data', $data);
$tpl->assign('allow_signature', $allowSignature);
//$tpl->assign('signature', $signature);
$tpl->assign('signature', $signature);
$tpl->assign('allow_export_pdf', $allowExportPdf);
$tpl->assign('export_url', api_get_path(WEB_CODE_PATH).'exercise/result.php?action=export&id='.$exeId.'&'.api_get_cidreq());

@ -119,14 +119,7 @@ $logInfo = [
];
Event::registerLog($logInfo);
$allowSignature = false;
if ('true' === api_get_plugin_setting('exercise_signature', 'tool_enable')) {
$extraFieldValue = new ExtraFieldValue('exercise');
$result = $extraFieldValue->get_values_by_handler_and_field_variable($objExercise->iId, 'signature_activated');
if ($result && isset($result['value']) && 1 === (int) $result['value']) {
$allowSignature = true;
}
}
$allowSignature = ExerciseSignaturePlugin::exerciseHasSignatureActivated($objExercise);
if ($allowSignature) {
$htmlHeadXtra[] = api_get_asset('signature_pad/signature_pad.umd.js');
}

@ -845,7 +845,7 @@ foreach ($questionList as $questionId) {
$contents = ob_get_clean();
$question_content = '<div class="question_row">';
if ($show_results && $objQuestionTmp) {
$objQuestionTmp->export = $action == 'export';
$objQuestionTmp->export = $action === 'export';
// Shows question title an description
$question_content .= $objQuestionTmp->return_header(
$objExercise,
@ -913,10 +913,7 @@ if (!empty($category_list) && ($show_results || $show_only_total_score || $showT
'score' => $myTotalScoreTemp,
'total' => $totalWeighting,
];
echo TestCategory::get_stats_table_by_attempt(
$objExercise->id,
$category_list
);
echo TestCategory::get_stats_table_by_attempt($objExercise->id, $category_list);
}
if (in_array(
@ -1051,7 +1048,6 @@ if ($isFeedbackAllowed && $origin !== 'learnpath' && $origin !== 'student_progre
$url
);
$emailForm->setDefaults(['notification_content' => $content]);
$emailForm->addButtonSend(
get_lang('CorrectTest'),
'submit',

@ -57,15 +57,11 @@ if (!$is_allowedToEdit) {
}
$allowSignature = false;
if ($student_id === $current_user_id && 'true' === api_get_plugin_setting('exercise_signature', 'tool_enable')) {
$extraFieldValue = new ExtraFieldValue('exercise');
$result = $extraFieldValue->get_values_by_handler_and_field_variable($exercise_id, 'signature_activated');
if ($result && isset($result['value']) && 1 === (int) $result['value']) {
// Check if signature exists.
$signature = ExerciseSignaturePlugin::getSignature($current_user_id, $track_exercise_info);
if (false === $signature) {
$allowSignature = true;
}
if ($student_id === $current_user_id && ExerciseSignaturePlugin::exerciseHasSignatureActivated($objExercise)) {
// Check if signature exists.
$signature = ExerciseSignaturePlugin::getSignature($current_user_id, $track_exercise_info);
if (false === $signature) {
$allowSignature = true;
}
}

@ -919,11 +919,14 @@ switch ($action) {
if ('true' !== api_get_plugin_setting('exercise_signature', 'tool_enable')) {
exit;
}
$file = isset($_REQUEST['file']) ? $_REQUEST['file'] : '';
if (empty($exeId) || empty($file)) {
echo 0;
exit;
}
$file = str_replace(' ', '+', $file);
$track = ExerciseLib::get_exercise_track_exercise_info($exeId);
if ($track) {
$result = ExerciseSignaturePlugin::saveSignature($currentUserId, $track, $file);

@ -13,7 +13,11 @@
<img src="{{ data.avatar }}">
</div>
<div class="user-info">
<strong>{{ data.name_url }}</strong><br>
<strong>{{ data.name_url }}</strong>
<br />
{% if signature %}
<img src="{{ signature }}" />
{% endif %}
</div>
</div>
<div class="col-md-9">

@ -29,9 +29,10 @@
</div>
<script>
var imageFormat = 'image/png';
var canvas = document.querySelector("canvas");
var signaturePad = new SignaturePad(canvas);
var dataURL = signaturePad.toDataURL("image/jpeg");
var dataURL = signaturePad.toDataURL(imageFormat);
var url = "{{ _p.web_ajax }}exercise.ajax.php?{{ _p.web_cid_query }}";
var exeId = "{{ exe_id }}";
@ -54,10 +55,8 @@
return false;
}
var dataURL = signaturePad.toDataURL("image/jpeg");
var dataURL = signaturePad.toDataURL(imageFormat);
$.ajax({
contentType: "application/x-www-form-urlencoded",
beforeSend: function(result) {
$('#loading').show();
},

@ -26,6 +26,24 @@ class ExerciseSignaturePlugin extends Plugin
return $instance ? $instance : $instance = new self();
}
public static function exerciseHasSignatureActivated(Exercise $exercise)
{
if (empty($exercise->iId)) {
return false;
}
if ('true' === api_get_plugin_setting('exercise_signature', 'tool_enable')) {
$extraFieldValue = new ExtraFieldValue('exercise');
$result = $extraFieldValue->get_values_by_handler_and_field_variable($exercise->iId, 'signature_activated');
if ($result && isset($result['value']) && 1 === (int) $result['value']) {
return true;
}
}
return false;
}
public static function saveSignature($userId, $trackInfo, $file)
{
if (false === self::validateSignatureAccess($userId, $trackInfo)) {

Loading…
Cancel
Save