Compare commits

...

4 commits

Author SHA1 Message Date
Christopher (Cris) Fuhrman
06b62cc869
Merge pull request #235 from ets-cfuhrman-pfe/JubaAzul/issue233
Some checks failed
CI/CD Pipeline for Backend / build_and_push_backend (push) Failing after 18s
CI/CD Pipeline for Nginx Router / build_and_push_nginx (push) Failing after 17s
CI/CD Pipeline for Frontend / build_and_push_frontend (push) Failing after 18s
Tests / tests (client) (push) Failing after 57s
Tests / tests (server) (push) Failing after 1m6s
Faire l'appel de TextTypeTemplate au lieu de format() et sanitize()
2025-02-07 11:21:48 -05:00
Christopher (Cris) Fuhrman
7552cbae01
Merge pull request #234 from ets-cfuhrman-pfe/JubaAzul/issue222
[Rythme enseignant] Fenêtre de rétroaction reste ouverte pour les prochaines questions si l'étudiant ne l'enlève pas
2025-02-07 11:16:53 -05:00
JubaAzul
c396b60734 Faire l'appel de TextTypeTemplate au lieu de format() et sanitize()
Fixes #233
2025-02-06 13:09:17 -05:00
JubaAzul
fc623582e0 [Rythme enseignant] Fenêtre de rétroaction reste ouverte pour les prochaines questions si l'étudiant ne l'enlève pas
Fixes #222
2025-02-05 19:45:55 -05:00
3 changed files with 7 additions and 4 deletions

View file

@ -3,7 +3,7 @@ import React, { useEffect, useState } from 'react';
import Template, { ErrorTemplate } from './templates'; import Template, { ErrorTemplate } from './templates';
import { parse } from 'gift-pegjs'; import { parse } from 'gift-pegjs';
import './styles.css'; import './styles.css';
import DOMPurify from 'dompurify'; import { FormattedTextTemplate } from './templates/TextTypeTemplate';
interface GIFTTemplatePreviewProps { interface GIFTTemplatePreviewProps {
questions: string[]; questions: string[];
@ -74,7 +74,7 @@ const GIFTTemplatePreview: React.FC<GIFTTemplatePreviewProps> = ({
<div className="error">{error}</div> <div className="error">{error}</div>
) : isPreviewReady ? ( ) : isPreviewReady ? (
<div data-testid="preview-container"> <div data-testid="preview-container">
<div dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(items) }}></div> <div dangerouslySetInnerHTML={{ __html: FormattedTextTemplate({ format: 'html', text: items }) }}></div>
</div> </div>
) : ( ) : (
<div className="loading">Chargement de la prévisualisation...</div> <div className="loading">Chargement de la prévisualisation...</div>

View file

@ -4,7 +4,7 @@ import katex from 'katex';
import { TextFormat } from 'gift-pegjs'; import { TextFormat } from 'gift-pegjs';
import DOMPurify from 'dompurify'; // cleans HTML to prevent XSS attacks, etc. import DOMPurify from 'dompurify'; // cleans HTML to prevent XSS attacks, etc.
export function formatLatex(text: string): string { function formatLatex(text: string): string {
return text return text
.replace(/\$\$(.*?)\$\$/g, (_, inner) => katex.renderToString(inner, { displayMode: true })) .replace(/\$\$(.*?)\$\$/g, (_, inner) => katex.renderToString(inner, { displayMode: true }))
.replace(/\$(.*?)\$/g, (_, inner) => katex.renderToString(inner, { displayMode: false })) .replace(/\$(.*?)\$/g, (_, inner) => katex.renderToString(inner, { displayMode: false }))

View file

@ -26,8 +26,11 @@ const TeacherModeQuiz: React.FC<TeacherModeQuizProps> = ({
const [feedbackMessage, setFeedbackMessage] = useState(''); const [feedbackMessage, setFeedbackMessage] = useState('');
useEffect(() => { useEffect(() => {
// Close the feedback dialog when the question changes
handleFeedbackDialogClose();
setIsAnswerSubmitted(false); setIsAnswerSubmitted(false);
}, [questionInfos]);
}, [questionInfos.question]);
const handleOnSubmitAnswer = (answer: string | number | boolean) => { const handleOnSubmitAnswer = (answer: string | number | boolean) => {
const idQuestion = Number(questionInfos.question.id) || -1; const idQuestion = Number(questionInfos.question.id) || -1;