diff --git a/addons/website_slides/controllers/main.py b/addons/website_slides/controllers/main.py index 3f7c3c53807..de9ca4deeb6 100644 --- a/addons/website_slides/controllers/main.py +++ b/addons/website_slides/controllers/main.py @@ -137,17 +137,26 @@ class WebsiteSlides(WebsiteProfile): def _get_slide_quiz_data(self, slide): is_designer = request.env.user.has_group('website.group_website_designer') + slides_resources = slide.slide_resource_ids if slide.channel_id.is_member else [] values = { + 'slide_description': slide.description, 'slide_questions': [{ + 'answer_ids': [{ + 'comment': answer.comment if is_designer else None, + 'id': answer.id, + 'is_correct': answer.is_correct if slide.user_has_completed or is_designer else None, + 'text_value': answer.text_value, + } for answer in question.sudo().answer_ids], 'id': question.id, 'question': question.question, - 'answer_ids': [{ - 'id': answer.id, - 'text_value': answer.text_value, - 'is_correct': answer.is_correct if slide.user_has_completed or is_designer else None, - 'comment': answer.comment if is_designer else None - } for answer in question.sudo().answer_ids], - } for question in slide.question_ids] + } for question in slide.question_ids], + 'slide_resource_ids': [{ + 'display_name' : resource.display_name, + 'download_url': resource.download_url, + 'id': resource.id, + 'link': resource.link, + 'resource_type': resource.resource_type, + } for resource in slides_resources] } if 'slide_answer_quiz' in request.session: slide_answer_quiz = json.loads(request.session['slide_answer_quiz']) diff --git a/addons/website_slides/static/src/js/slides_course_quiz.js b/addons/website_slides/static/src/js/slides_course_quiz.js index f37bdeab1ee..dc879bad900 100644 --- a/addons/website_slides/static/src/js/slides_course_quiz.js +++ b/addons/website_slides/static/src/js/slides_course_quiz.js @@ -196,11 +196,13 @@ }).then(function (quiz_data) { self.slide.sessionAnswers = quiz_data.session_answers; self.quiz = { + description_safe: Markup(quiz_data.slide_description), questions: quiz_data.slide_questions || [], questionsCount: quiz_data.slide_questions.length, quizAttemptsCount: quiz_data.quiz_attempts_count || 0, quizKarmaGain: quiz_data.quiz_karma_gain || 0, quizKarmaWon: quiz_data.quiz_karma_won || 0, + slideResources: quiz_data.slide_resource_ids || [], }; }); }, @@ -298,7 +300,16 @@ QWeb.render('slide.slide.quiz.validation', {'widget': this}) ); }, - + /* + * Toggle additional resource info box + * + * @private + * @param {Boolean} show - Whether show or hide the information + */ + _toggleAdditionalResourceInfo: function(show) { + const resourceInfo = document.getElementsByClassName('o_wslides_js_lesson_quiz_resource_info')[0]; + resourceInfo && (show ? resourceInfo.classList.remove('d-none') : resourceInfo.classList.add('d-none')); + }, /** * Renders the button to join a course. * If the user is logged in, the course is public, and the user has previously tried to @@ -382,6 +393,7 @@ this._hideEditOptions(); this._renderAnswersHighlightingAndComments(); this._renderValidationInfo(); + this._toggleAdditionalResourceInfo(!completed); }, /** diff --git a/addons/website_slides/static/src/scss/slides_slide_fullscreen.scss b/addons/website_slides/static/src/scss/slides_slide_fullscreen.scss index 4fb858435f8..f5130110a9d 100644 --- a/addons/website_slides/static/src/scss/slides_slide_fullscreen.scss +++ b/addons/website_slides/static/src/scss/slides_slide_fullscreen.scss @@ -108,6 +108,13 @@ } } + .o_wslides_js_lesson_quiz_resource_info{ + ul { + margin-bottom: 0; + padding-left: 20px; + } + } + .o_wslides_js_lesson_quiz_question { .list-group-item { font-size: 1rem; diff --git a/addons/website_slides/static/src/xml/slide_quiz.xml b/addons/website_slides/static/src/xml/slide_quiz.xml index 033b88e7f3f..efc48bbad50 100644 --- a/addons/website_slides/static/src/xml/slide_quiz.xml +++ b/addons/website_slides/static/src/xml/slide_quiz.xml @@ -3,9 +3,9 @@
- +
. @@ -34,7 +34,7 @@
-
+
@@ -119,6 +119,16 @@
+
+
+ Need help? Review related content: + +
+