diff --git a/client/src/components/content-blocks/assignment/Assignment.vue b/client/src/components/content-blocks/assignment/Assignment.vue index b4d37bb8..fb1a7947 100644 --- a/client/src/components/content-blocks/assignment/Assignment.vue +++ b/client/src/components/content-blocks/assignment/Assignment.vue @@ -9,7 +9,7 @@ class="assignment__main-text assignment-text" data-cy="assignment-main-text" v-if="assignment.assignment > ''" - v-html="assignment.assignment" + v-html="assignmentHtml" /> { let sanitizedFeedbackText = sanitize(feedback.text); return `Feedback von ${feedback.teacher.firstName} ${feedback.teacher.lastName}: ${sanitizedFeedbackText}`; }); +const containsParagraphs = (str: string) => { + const parser = new DOMParser(); + const doc = parser.parseFromString(str, 'text/html'); + return doc.querySelectorAll('p') > 0; +}; +const assignmentHtml = computed(() => { + const assignmentText = assignment.value.assignment; + if (containsParagraphs(assignmentText)) { + return assignmentText; + } + // text needs to be inside a paragraph, otherwise the highlighting will fail + return `

${assignmentText}

`; +}); const childElements = computed(() => { // todo: refactor and merge with the one in ContentComponent.vue