Minor - fix test report URL

pull/3064/head
Julio 6 years ago
parent d37774dc63
commit 50baa51e4c
  1. 8
      public/main/exercise/admin.php
  2. 11
      public/main/exercise/exercise_report.php
  3. 4
      public/main/exercise/exercise_show.php
  4. 2
      public/main/exercise/live_stats.php
  5. 11
      public/main/exercise/overview.php
  6. 2
      public/main/exercise/stats.php
  7. 52
      public/main/extra/myStudents.php
  8. 2
      public/main/inc/lib/exercise.lib.php
  9. 6
      public/main/mySpace/myStudents.php
  10. 2
      src/SkillBundle/Entity/SkillRelItem.php
  11. 8
      src/ThemeBundle/Resources/views/Mailer/Exercise/result_alert_body.html.twig

@ -231,7 +231,7 @@ if (!empty($clone_question) && !empty($objExercise->id)) {
Display::addFlash(Display::return_message(get_lang('Item copied'))); Display::addFlash(Display::return_message(get_lang('Item copied')));
header('Location: admin.php?'.api_get_cidreq().'&exerciseId='.$objExercise->id.'&page='.$page); header('Location: admin.php?'.api_get_cidreq().'&id='.$objExercise->id.'&page='.$page);
exit; exit;
} }
@ -258,7 +258,7 @@ if (api_is_in_gradebook()) {
$interbreadcrumb[] = ['url' => 'exercise.php?'.api_get_cidreq(), 'name' => get_lang('Tests')]; $interbreadcrumb[] = ['url' => 'exercise.php?'.api_get_cidreq(), 'name' => get_lang('Tests')];
if (isset($_GET['newQuestion']) || isset($_GET['editQuestion'])) { if (isset($_GET['newQuestion']) || isset($_GET['editQuestion'])) {
$interbreadcrumb[] = [ $interbreadcrumb[] = [
'url' => 'admin.php?exerciseId='.$objExercise->id.'&'.api_get_cidreq(), 'url' => 'admin.php?id='.$objExercise->id.'&'.api_get_cidreq(),
'name' => $objExercise->selectTitle(true), 'name' => $objExercise->selectTitle(true),
]; ];
} else { } else {
@ -321,10 +321,10 @@ if ($inATest) {
echo Display::url( echo Display::url(
Display::return_icon('test_results.png', get_lang('Results and feedback'), '', ICON_SIZE_MEDIUM), Display::return_icon('test_results.png', get_lang('Results and feedback'), '', ICON_SIZE_MEDIUM),
api_get_path(WEB_CODE_PATH).'exercise/exercise_report.php?'.api_get_cidreq().'&exerciseId='.$objExercise->id api_get_path(WEB_CODE_PATH).'exercise/exercise_report.php?'.api_get_cidreq().'&id='.$objExercise->id
); );
echo '<a href="'.api_get_path(WEB_CODE_PATH).'exercise/exercise_admin.php?'.api_get_cidreq().'&modifyExercise=yes&exerciseId='.$objExercise->id.'">'. echo '<a href="'.api_get_path(WEB_CODE_PATH).'exercise/exercise_admin.php?'.api_get_cidreq().'&modifyExercise=yes&id='.$objExercise->id.'">'.
Display::return_icon('settings.png', get_lang('Edit test name and settings'), '', ICON_SIZE_MEDIUM).'</a>'; Display::return_icon('settings.png', get_lang('Edit test name and settings'), '', ICON_SIZE_MEDIUM).'</a>';
$maxScoreAllQuestions = 0; $maxScoreAllQuestions = 0;

@ -1,11 +1,10 @@
<?php <?php
/* For licensing terms, see /license.txt */ /* For licensing terms, see /license.txt */
/** /**
* Exercise list: This script shows the list of exercises for administrators and students. * Exercise list: This script shows the list of exercises for administrators and students.
* *
* @package chamilo.exercise
*
* @author Julio Montoya <gugli100@gmail.com> jqgrid integration * @author Julio Montoya <gugli100@gmail.com> jqgrid integration
* Modified by hubert.borderiou (question category) * Modified by hubert.borderiou (question category)
* *
@ -13,8 +12,6 @@
*/ */
require_once __DIR__.'/../inc/global.inc.php'; require_once __DIR__.'/../inc/global.inc.php';
// Setting the tabs
$this_section = SECTION_COURSES;
$htmlHeadXtra[] = api_get_jqgrid_js(); $htmlHeadXtra[] = api_get_jqgrid_js();
$filter_user = isset($_REQUEST['filter_by_user']) ? (int) $_REQUEST['filter_by_user'] : null; $filter_user = isset($_REQUEST['filter_by_user']) ? (int) $_REQUEST['filter_by_user'] : null;
@ -305,7 +302,7 @@ if (isset($_REQUEST['comments']) &&
Database::query($sql); Database::query($sql);
if (empty($origin)) { if (empty($origin)) {
header('Location: '.api_get_path(WEB_CODE_PATH).'exercise/exercise_report.php?exerciseId='.$exercise_id.'&'.api_get_cidreq()); header('Location: '.api_get_path(WEB_CODE_PATH).'exercise/exercise_report.php?id='.$exercise_id.'&'.api_get_cidreq());
exit; exit;
} }
@ -399,7 +396,7 @@ if (($is_allowedToEdit || $is_tutor || api_is_coach()) &&
$exe_id, $exe_id,
api_get_utc_datetime() api_get_utc_datetime()
); );
header('Location: exercise_report.php?'.api_get_cidreq().'&exerciseId='.$exercise_id); header('Location: exercise_report.php?'.api_get_cidreq().'&id='.$exercise_id);
exit; exit;
} }
} }
@ -833,7 +830,7 @@ $gridJs = Display::grid_js(
var dateFormat = $( "#datepicker_start" ).datepicker( "option", "dateFormat" ); var dateFormat = $( "#datepicker_start" ).datepicker( "option", "dateFormat" );
var selectedDate = $.datepicker.formatDate(dateFormat, dateTypeVar); var selectedDate = $.datepicker.formatDate(dateFormat, dateTypeVar);
if (confirm("<?php echo convert_double_quote_to_single(get_lang('Are you sure you want to clean results for this test before the selected date ?')).' '; ?>" + selectedDate)) { if (confirm("<?php echo convert_double_quote_to_single(get_lang('Are you sure you want to clean results for this test before the selected date ?')).' '; ?>" + selectedDate)) {
self.location.href = "exercise_report.php?<?php echo api_get_cidreq(); ?>&exerciseId=<?php echo $exercise_id; ?>&delete_before_date="+dateForBDD+"&sec_token=<?php echo $token; ?>"; self.location.href = "exercise_report.php?<?php echo api_get_cidreq(); ?>&id=<?php echo $exercise_id; ?>&delete_before_date="+dateForBDD+"&sec_token=<?php echo $token; ?>";
} }
} }
} }

@ -972,7 +972,7 @@ if ($isFeedbackAllowed && $origin != 'learnpath' && $origin != 'student_progress
if (in_array($origin, ['tracking_course', 'user_course', 'correct_exercise_in_lp'])) { if (in_array($origin, ['tracking_course', 'user_course', 'correct_exercise_in_lp'])) {
$formUrl = api_get_path(WEB_CODE_PATH).'exercise/exercise_report.php?'.api_get_cidreq().'&'; $formUrl = api_get_path(WEB_CODE_PATH).'exercise/exercise_report.php?'.api_get_cidreq().'&';
$formUrl .= http_build_query([ $formUrl .= http_build_query([
'exerciseId' => $exercise_id, 'id' => $exercise_id,
'filter' => 2, 'filter' => 2,
'comments' => 'update', 'comments' => 'update',
'exeid' => $id, 'exeid' => $id,
@ -989,7 +989,7 @@ if ($isFeedbackAllowed && $origin != 'learnpath' && $origin != 'student_progress
} else { } else {
$formUrl = api_get_path(WEB_CODE_PATH).'exercise/exercise_report.php?'.api_get_cidreq().'&'; $formUrl = api_get_path(WEB_CODE_PATH).'exercise/exercise_report.php?'.api_get_cidreq().'&';
$formUrl .= http_build_query([ $formUrl .= http_build_query([
'exerciseId' => $exercise_id, 'id' => $exercise_id,
'filter' => 1, 'filter' => 1,
'comments' => 'update', 'comments' => 'update',
'exeid' => $id, 'exeid' => $id,

@ -108,7 +108,7 @@ $(function() {
</script> </script>
<?php <?php
$actions = '<a href="exercise_report.php?exerciseId='.intval($_GET['exerciseId']).'&'.api_get_cidreq().'">'. $actions = '<a href="exercise_report.php?id='.intval($_GET['exerciseId']).'&'.api_get_cidreq().'">'.
Display::return_icon('back.png', get_lang('Go back to the questions list'), '', ICON_SIZE_MEDIUM).'</a>'; Display::return_icon('back.png', get_lang('Go back to the questions list'), '', ICON_SIZE_MEDIUM).'</a>';
echo $actions = Display::div($actions, ['class' => 'actions']); echo $actions = Display::div($actions, ['class' => 'actions']);

@ -1,24 +1,17 @@
<?php <?php
/* For licensing terms, see /license.txt */
use ChamiloSession as Session; /* For licensing terms, see /license.txt */
/** /**
* Exercise preview. * Exercise preview.
* *
* @package chamilo.exercise
*
* @author Julio Montoya <gugli100@gmail.com> * @author Julio Montoya <gugli100@gmail.com>
*/ */
require_once __DIR__.'/../inc/global.inc.php'; require_once __DIR__.'/../inc/global.inc.php';
$current_course_tool = TOOL_QUIZ;
// Clear the exercise session just in case // Clear the exercise session just in case
Exercise::cleanSessionVariables(); Exercise::cleanSessionVariables();
$this_section = SECTION_COURSES;
$js = '<script>'.api_get_language_translate_html().'</script>'; $js = '<script>'.api_get_language_translate_html().'</script>';
$htmlHeadXtra[] = $js; $htmlHeadXtra[] = $js;
@ -99,7 +92,7 @@ if ($is_allowed_to_edit) {
} }
$editLink .= Display::url( $editLink .= Display::url(
Display::return_icon('test_results.png', get_lang('Results and feedback and feedback'), [], ICON_SIZE_SMALL), Display::return_icon('test_results.png', get_lang('Results and feedback and feedback'), [], ICON_SIZE_SMALL),
api_get_path(WEB_CODE_PATH).'exercise/exercise_report.php?'.api_get_cidreq().'&exerciseId='.$objExercise->id, api_get_path(WEB_CODE_PATH).'exercise/exercise_report.php?'.api_get_cidreq().'&id='.$objExercise->id,
['title' => get_lang('Results and feedback and feedback')] ['title' => get_lang('Results and feedback and feedback')]
); );
} }

@ -310,7 +310,7 @@ $interbreadcrumb[] = [
]; ];
$tpl = new Template(get_lang('Report by question')); $tpl = new Template(get_lang('Report by question'));
$actions = '<a href="exercise_report.php?exerciseId='.$exerciseId.'&'.api_get_cidreq().'">'. $actions = '<a href="exercise_report.php?id='.$exerciseId.'&'.api_get_cidreq().'">'.
Display:: return_icon( Display:: return_icon(
'back.png', 'back.png',
get_lang('Go back to the questions list'), get_lang('Go back to the questions list'),

@ -1121,7 +1121,7 @@ if (!empty($studentId)) {
WHERE WHERE
quiz.c_id = ".$courseInfo['real_id']." AND quiz.c_id = ".$courseInfo['real_id']." AND
active IN (0, 1) active IN (0, 1)
$sessionCondition $sessionCondition
ORDER BY quiz.title ASC "; ORDER BY quiz.title ASC ";
$result_exercices = Database::query($sql); $result_exercices = Database::query($sql);
@ -1217,7 +1217,7 @@ if (!empty($studentId)) {
} }
echo '</td>'; echo '</td>';
echo '<td>'; echo '<td>';
$all_attempt_url = "../exercise/exercise_report.php?exerciseId=$exercise_id&cidReq=$course_code&filter_by_user=$studentId&id_session=$sessionId"; $all_attempt_url = "../exercise/exercise_report.php?id=$exercise_id&cidReq=$course_code&filter_by_user=$studentId&id_session=$sessionId";
echo Display::url( echo Display::url(
Display::return_icon( Display::return_icon(
'test_results.png', 'test_results.png',
@ -1404,8 +1404,8 @@ $nom_hor = $horaire_id['official_code'];
$course_code_real = $_course['real_id']; $course_code_real = $_course['real_id'];
//avec le nom d'horaire= official code, on trouve le nombre de jour a faire //avec le nom d'horaire= official code, on trouve le nombre de jour a faire
$sql = "SELECT * FROM $TABLECALHORAIRE $sql = "SELECT * FROM $TABLECALHORAIRE
where where
name = '$nom_hor' and name = '$nom_hor' and
c_id = $course_code_real "; c_id = $course_code_real ";
$res = Database::query($sql); $res = Database::query($sql);
@ -1460,10 +1460,10 @@ while ($a_courses = Database::fetch_array($result2)) {
$lp_item_id = $resulta['id']; $lp_item_id = $resulta['id'];
$Req3 = "SELECT MAX(id) $Req3 = "SELECT MAX(id)
FROM c_lp_item_view FROM c_lp_item_view
WHERE WHERE
lp_item_id = $lp_item_id AND lp_item_id = $lp_item_id AND
lp_view_id = $lp_id_view AND lp_view_id = $lp_id_view AND
c_id = $c_id_view AND c_id = $c_id_view AND
status = 'completed' status = 'completed'
"; ";
$res3 = Database::query($Req3); $res3 = Database::query($Req3);
@ -1471,8 +1471,8 @@ while ($a_courses = Database::fetch_array($result2)) {
$max = $resul['0']; $max = $resul['0'];
$Req4 = "SELECT COUNT( id ) $Req4 = "SELECT COUNT( id )
FROM c_lp_item_view FROM c_lp_item_view
WHERE WHERE
id = $max AND id = $max AND
c_id = $c_id_view"; c_id = $c_id_view";
$res4 = Database::query($Req4); $res4 = Database::query($Req4);
while ($resultat = Database::fetch_array($res4)) { while ($resultat = Database::fetch_array($res4)) {
@ -1504,9 +1504,9 @@ while ($jour_agenda == '') {
$tour++; $tour++;
$date = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d") - $tour, date("Y"))); $date = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d") - $tour, date("Y")));
$sql4 = "SELECT * FROM $tbl_personal_agenda $sql4 = "SELECT * FROM $tbl_personal_agenda
WHERE WHERE
user = $studentId AND user = $studentId AND
text='Pour le calendrier, ne pas effacer' AND text='Pour le calendrier, ne pas effacer' AND
date like '".$date." %:%' "; date like '".$date." %:%' ";
$result4 = Database::query($sql4); $result4 = Database::query($sql4);
$res4 = Database::fetch_array($result4); $res4 = Database::fetch_array($result4);
@ -1531,7 +1531,7 @@ $goto = $num_days + $diff2;
$goto = number_format($goto); $goto = number_format($goto);
$sqlgo = "SELECT * FROM $tbl_personal_agenda $sqlgo = "SELECT * FROM $tbl_personal_agenda
WHERE user = $studentId WHERE user = $studentId
AND title = '".$goto."' AND title = '".$goto."'
"; ";
$result7 = Database::query($sqlgo); $result7 = Database::query($sqlgo);
$res7 = Database::fetch_array($result7); $res7 = Database::fetch_array($result7);
@ -1684,10 +1684,10 @@ if ($end_date < '2010-01-01') {
$tbl_stats_exercices = Database:: get_main_table(TABLE_STATISTIC_TRACK_E_EXERCISES); $tbl_stats_exercices = Database:: get_main_table(TABLE_STATISTIC_TRACK_E_EXERCISES);
$sqlinter = "SELECT * $sqlinter = "SELECT *
FROM $tbl_stats_exercices FROM $tbl_stats_exercices
WHERE WHERE
exe_user_id = $studentId AND exe_user_id = $studentId AND
level != 0 level != 0
ORDER BY exe_date ASC, level ASC ORDER BY exe_date ASC, level ASC
"; ";
$resultinter = Database::query($sqlinter); $resultinter = Database::query($sqlinter);
$mod_no = null; $mod_no = null;
@ -1703,8 +1703,8 @@ if ($end_date < '2010-01-01') {
<td> <td>
$inter_date $inter_date
</td> </td>
<td>$inter_coment <td>$inter_coment
</td> </td>
"; ";
$exe_id = $a_inter['exe_id']; ?> $exe_id = $a_inter['exe_id']; ?>
@ -1823,7 +1823,7 @@ if (empty($_GET['details'])) {
// firts connection date // firts connection date
$sql2 = 'SELECT STR_TO_DATE(access_date,"%Y-%m-%d") $sql2 = 'SELECT STR_TO_DATE(access_date,"%Y-%m-%d")
FROM '.$tbl_stats_access.' FROM '.$tbl_stats_access.'
WHERE access_user_id = '.$studentId.' WHERE access_user_id = '.$studentId.'
AND c_id = '.$c_id.' AND c_id = '.$c_id.'
ORDER BY access_id ASC LIMIT 0,1 ORDER BY access_id ASC LIMIT 0,1
@ -1860,9 +1860,9 @@ if (empty($_GET['details'])) {
$nombre_jours_module = number_format($nombre_jours_module, 0); $nombre_jours_module = number_format($nombre_jours_module, 0);
//on trouve la date de fin de chaque module AND date = date_format('$first_connection_date_to_module','%Y-%m-%d') //on trouve la date de fin de chaque module AND date = date_format('$first_connection_date_to_module','%Y-%m-%d')
$sql = "SELECT * FROM `c_cal_dates` $sql = "SELECT * FROM `c_cal_dates`
WHERE WHERE
horaire_name = '$nom_hor' AND horaire_name = '$nom_hor' AND
c_id = '$course_code_real' AND c_id = '$course_code_real' AND
STR_TO_DATE(date,'%Y-%m-%d') >= STR_TO_DATE('$first_connection_date_to_module','%Y-%m-%d') STR_TO_DATE(date,'%Y-%m-%d') >= STR_TO_DATE('$first_connection_date_to_module','%Y-%m-%d')
ORDER BY STR_TO_DATE(date, '%Y-%m-%d') ASC "; ORDER BY STR_TO_DATE(date, '%Y-%m-%d') ASC ";
$res = Database::query($sql); $res = Database::query($sql);
@ -2041,7 +2041,7 @@ if (empty($_GET['details'])) {
// firts connection date // firts connection date
$sql2 = 'SELECT access_date $sql2 = 'SELECT access_date
FROM '.$tbl_stats_access.' FROM '.$tbl_stats_access.'
WHERE access_user_id = '.$studentId.' WHERE access_user_id = '.$studentId.'
AND c_id = '.$c_id.' AND c_id = '.$c_id.'
ORDER BY access_id ASC LIMIT 0,1 ORDER BY access_id ASC LIMIT 0,1
@ -2324,7 +2324,7 @@ if (empty($_GET['details'])) {
echo '</td>'; echo '</td>';
echo '<td>'; echo '<td>';
$all_attempt_url = "../exercice/exercise_report.php?exerciseId=$exercise_id&cidReq=$course_code&filter_by_user=$studentId&id_session=$session_id"; $all_attempt_url = "../exercice/exercise_report.php?id=$exercise_id&cidReq=$course_code&filter_by_user=$studentId&id_session=$session_id";
echo Display::url( echo Display::url(
Display::return_icon('test_results.png', get_lang('All attempts'), [], ICON_SIZE_SMALL), Display::return_icon('test_results.png', get_lang('All attempts'), [], ICON_SIZE_SMALL),
$all_attempt_url $all_attempt_url
@ -2607,7 +2607,7 @@ if ($export_csv) {
</form> </form>
<strong><?php echo get_lang('imprime_sommaire'); ?> </strong> <strong><?php echo get_lang('imprime_sommaire'); ?> </strong>
<?php <?php
echo '<a target="_blank" echo '<a target="_blank"
href="print_myStudents.php?student='.$studentId.'&details=true&course='.$course_code.'&origin=tracking_course"> href="print_myStudents.php?student='.$studentId.'&details=true&course='.$course_code.'&origin=tracking_course">
<img src="'.api_get_path(WEB_IMG_PATH).'printmgr.gif" border="0" /></a>'; <img src="'.api_get_path(WEB_IMG_PATH).'printmgr.gif" border="0" /></a>';
// tableau pour date de fin prévue pour chaque module // tableau pour date de fin prévue pour chaque module

@ -2279,7 +2279,7 @@ HOTSPOT;
); );
$filterByUser = isset($_GET['filter_by_user']) ? (int) $_GET['filter_by_user'] : 0; $filterByUser = isset($_GET['filter_by_user']) ? (int) $_GET['filter_by_user'] : 0;
$delete_link = '<a href="exercise_report.php?'.api_get_cidreq().'&filter_by_user='.$filterByUser.'&filter='.$filter.'&exerciseId='.$exercise_id.'&delete=delete&did='.$id.'" $delete_link = '<a href="exercise_report.php?'.api_get_cidreq().'&filter_by_user='.$filterByUser.'&filter='.$filter.'&id='.$exercise_id.'&delete=delete&did='.$id.'"
onclick="javascript:if(!confirm(\''.sprintf( onclick="javascript:if(!confirm(\''.sprintf(
addslashes(get_lang('Delete attempt?')), addslashes(get_lang('Delete attempt?')),
$results[$i]['username'], $results[$i]['username'],

@ -1632,12 +1632,12 @@ if (empty($details)) {
'quiz.session_id' 'quiz.session_id'
); );
$sql = "SELECT quiz.title, id $sql = "SELECT quiz.title, id
FROM $t_quiz AS quiz FROM $t_quiz AS quiz
WHERE WHERE
quiz.c_id = ".$courseInfo['real_id']." AND quiz.c_id = ".$courseInfo['real_id']." AND
active IN (0, 1) active IN (0, 1)
$sessionCondition $sessionCondition
ORDER BY quiz.title ASC "; ORDER BY quiz.title ASC ";
$result_exercices = Database::query($sql); $result_exercices = Database::query($sql);
@ -1736,7 +1736,7 @@ if (empty($details)) {
echo '<td>'; echo '<td>';
if ($count_attempts > 0) { if ($count_attempts > 0) {
$all_attempt_url = "../exercise/exercise_report.php?exerciseId=$exercise_id&" $all_attempt_url = "../exercise/exercise_report.php?id=$exercise_id&"
."cidReq=$course_code&filter_by_user=$student_id&id_session=$sessionId"; ."cidReq=$course_code&filter_by_user=$student_id&id_session=$sessionId";
echo Display::url( echo Display::url(
Display::return_icon( Display::return_icon(

@ -409,7 +409,7 @@ class SkillRelItem
$url = ''; $url = '';
switch ($this->getItemType()) { switch ($this->getItemType()) {
case ITEM_TYPE_EXERCISE: case ITEM_TYPE_EXERCISE:
$url = 'exercise/exercise_report.php?'.$cidReq.'&exerciseId='.$this->getItemId(); $url = 'exercise/exercise_report.php?'.$cidReq.'&id='.$this->getItemId();
break; break;
case ITEM_TYPE_STUDENT_PUBLICATION: case ITEM_TYPE_STUDENT_PUBLICATION:

@ -1,16 +1,16 @@
<div id="email-message" style="padding-top:10px; padding-bottom:10px;"> <div id="email-message" style="padding-top:10px; padding-bottom:10px;">
<p><strong>{{ 'DearStudentEmailIntroduction'|trans }}</strong> {{ 'AttemptVCC'|trans }} </p> <p><strong>{{ 'Dear learner,'|trans }}</strong> {{ 'Your following attempt has been viewed/commented/corrected by the trainer'|trans }} </p>
<div style="border-color: #bce8f1; padding: 15px; background-color: #d9edf7; margin-bottom: 15px; font-size: 16px; color:#31708f;"> <div style="border-color: #bce8f1; padding: 15px; background-color: #d9edf7; margin-bottom: 15px; font-size: 16px; color:#31708f;">
<p> <p>
<strong>{{ 'CourseName'|trans }}: </strong> <strong>{{ 'Course name'|trans }}: </strong>
{{ course_title }} {{ course_title }}
<br> <br>
<strong>{{ 'Exercise'|trans }}: </strong> <strong>{{ 'Test'|trans }}: </strong>
{{ test_title }} {{ test_title }}
</p> </p>
</div> </div>
<p>{{ 'ClickLinkToViewComment'|trans }}</p> <p>{{ 'Click the link below to access your account and view your commented Examsheet.'|trans }}</p>
<p><a style="font-weight: bold; color: #2BA6CB;" href="{{ url }}">{{ url }}</a></p> <p><a style="font-weight: bold; color: #2BA6CB;" href="{{ url }}">{{ url }}</a></p>
<div style="text-align: right;"> <div style="text-align: right;">
<p><strong>{{ 'Regards'|trans }}</strong><br> <p><strong>{{ 'Regards'|trans }}</strong><br>

Loading…
Cancel
Save