diff --git a/addons/website_slides/controllers/main.py b/addons/website_slides/controllers/main.py index e92bd961b30a169007e21a7201aa5d8c5c0dd998..af251ab89e34f6f0c9be6e19bec00a82e58ae310 100644 --- a/addons/website_slides/controllers/main.py +++ b/addons/website_slides/controllers/main.py @@ -434,7 +434,7 @@ class WebsiteSlides(WebsiteProfile): }] values['slide_promoted'] = request.env['slide.slide'].sudo().search(domain, limit=1, order=order) values['category_data'] = category_data - values['channel_progress'] = self._get_channel_progress(channel) + values['channel_progress'] = self._get_channel_progress(channel, include_quiz=True) values = self._prepare_additional_channel_values(values, **kw) diff --git a/addons/website_slides/data/slide_channel_demo.xml b/addons/website_slides/data/slide_channel_demo.xml index 4f30bc22bae5c50e60e41c49530459d43bcbfce6..1c6ae501db413feb16b99250d66f4dcb762dfb7d 100644 --- a/addons/website_slides/data/slide_channel_demo.xml +++ b/addons/website_slides/data/slide_channel_demo.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<odoo><data noupdate="0"> +<odoo><data noupdate="1"> <record id="website_slides.channel_public" model="slide.channel"> <field name="name">Basics of Gardening</field> diff --git a/addons/website_slides/data/slide_slide_demo.xml b/addons/website_slides/data/slide_slide_demo.xml index 852d472425a828402aba5dadb3f42c0bf3fbd87c..9407a40867158003be029f31981a354d228986c1 100644 --- a/addons/website_slides/data/slide_slide_demo.xml +++ b/addons/website_slides/data/slide_slide_demo.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<odoo><data noupdate="0"> +<odoo><data noupdate="1"> <!-- CHANNEL 0: Basics of Gardening --> <!-- ================================================== --> diff --git a/addons/website_slides/data/slide_user_demo.xml b/addons/website_slides/data/slide_user_demo.xml index 0bfd991251e2ff07fb675f33e7bf58c66d1accd4..3254205e18a87a06c402378f9b81f4a35b00afc0 100644 --- a/addons/website_slides/data/slide_user_demo.xml +++ b/addons/website_slides/data/slide_user_demo.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<odoo><data noupdate="0"> +<odoo><data noupdate="1"> <!-- CHANNEL 0: Basics of Gardening --> <!-- ================================================== --> diff --git a/addons/website_slides/views/website_slides_templates_course.xml b/addons/website_slides/views/website_slides_templates_course.xml index 4e5795b81f38c5adb5f250a6a0825bbfd948ae62..6a6ede4a374a01e8e7c63f08694af8b88950f417 100644 --- a/addons/website_slides/views/website_slides_templates_course.xml +++ b/addons/website_slides/views/website_slides_templates_course.xml @@ -346,7 +346,10 @@ <span t-esc="slide.name"/> </span> <t t-if="slide.question_ids"> - <span class="badge badge-warning text-white font-weight-bold"><i class="fa fa-flag"></i><t t-esc="channel_progress[slide.id].get('quiz_gain', slide.quiz_first_attempt_reward)"/> xp</span> + <span t-att-class="'badge text-white font-weight-bold %s' % ('badge-success' if channel_progress[slide.id].get('completed') else 'badge-warning')"> + <i class="fa fa-flag mr-2"></i> + <t t-esc="channel_progress[slide.id].get('quiz_karma_won', 0) if channel_progress[slide.id].get('completed') else channel_progress[slide.id].get('quiz_karma_gain', 0)"/> xp + </span> </t> <span class="badge badge-info ml-2" t-if="slide.is_preview">Free preview</span> <div t-if="channel.is_member or channel.can_publish" class="pt-2 pb-2 border-left ml-2 mr-2 pl-2 d-flex align-items-center o_wslides_slides_list_slide_controls"> diff --git a/addons/website_slides/views/website_slides_templates_lesson.xml b/addons/website_slides/views/website_slides_templates_lesson.xml index 7e4b97cfecc743b7c99e5430f53692a59b9c3b1f..67338fbe190c8166ed20675b1760e393f4eff88b 100644 --- a/addons/website_slides/views/website_slides_templates_lesson.xml +++ b/addons/website_slides/views/website_slides_templates_lesson.xml @@ -26,7 +26,7 @@ <span><t t-esc="slide.channel_id.completion"/> %</span> </div> </div> - <i t-att-class="'fa fa-trophy m-0 ml-2 p-0 %s' % ('text-warning' if slide.channel_id.completed else 'text-light')"></i> + <i t-att-class="'fa fa-trophy m-0 ml-2 p-0 %s' % ('text-success' if slide.channel_id.completed else 'text-warning')"></i> </div> </div> </div> @@ -146,7 +146,7 @@ <span t-esc="aside_slide.name" t-att-class="'mr-2 %s' % ('text-800' if aside_slide == slide else 'text-600')"/> <span t-if="aside_slide.question_ids" t-att-class="'ml-auto badge badge-pill %s' % ('badge-success' if channel_progress[aside_slide.id].get('completed') else 'badge-light text-600')"> - <t t-esc="channel_progress[aside_slide.id].get('quiz_karma_max')"/> + <t t-esc="channel_progress[aside_slide.id].get('quiz_karma_won') if channel_progress[aside_slide.id].get('completed') else channel_progress[aside_slide.id].get('quiz_karma_gain')"/> xp </span> </a> <ul t-if="aside_slide.link_ids or aside_slide.question_ids" class="list-group ml-5 list-unstyled"> @@ -186,20 +186,24 @@ </span> </div> <div class="ml-auto"> - <a class="btn btn-light border" role="button" - t-att-disabled="'disabled' if not previous_slide else None" - t-att-href="'/slides/slide/%s' % (slug(previous_slide)) if previous_slide else '#'"><i class="fa fa-chevron-left mr-2"></i> Prev</a> - <a class="btn btn-primary border text-white" role="button" - t-att-disabled="'disabled' if slide.question_ids or channel_progress[slide.id].get('completed') else None" - t-att-href="None if (channel_progress[slide.id].get('completed') or slide.question_ids) else '/slides/slide/%s/set_completed?%s' % (slide.id, 'next_slide_id=%s' % (next_slide.id) if next_slide else '')"> + <a t-att-class="'btn btn-light border %s' % ('disabled' if not previous_slide else '')" + role="button" t-att-aria-disabled="'disabled' if not previous_slide else None" + t-att-href="'/slides/slide/%s' % (slug(previous_slide)) if previous_slide else '#'"> + <i class="fa fa-chevron-left mr-2"></i> Prev + </a> + <a t-att-class="'btn btn-primary border text-white %s' % ('disabled' if slide.question_ids or channel_progress[slide.id].get('completed') else '')" + role="button" t-att-aria-disabled="'true' if slide.question_ids or channel_progress[slide.id].get('completed') else None" + t-att-href="'#' if slide.question_ids or channel_progress[slide.id].get('completed') else '/slides/slide/%s/set_completed?%s' % (slide.id, 'next_slide_id=%s' % (next_slide.id) if next_slide else '')"> Set Done </a> - <a class="btn btn-light border" role="button" - t-att-disabled="'disabled' if not next_slide else None" - t-att-href="'/slides/slide/%s' % (slug(next_slide)) if next_slide else '#'">Next <i class="fa fa-chevron-right ml-2"></i></a> - <a class="btn btn-light border ml-2" role="button" - t-att-disabled="'disabled' if slide.channel_id.channel_type != 'training' else None" - t-att-href="'/slides/slide/%s?fullscreen=1' % (slug(slide))"><i class="fa fa-desktop mr-2"></i> Fullscreen</a> + <a t-att-class="'btn btn-light border %s' % ('disabled' if not next_slide else '')" + role="button" t-att-aria-disabled="'disabled' if not next_slide else None" + t-att-href="'/slides/slide/%s' % (slug(next_slide)) if next_slide else '#'"> + Next <i class="fa fa-chevron-right ml-2"></i> + </a> + <a t-att-class="'btn btn-light border ml-2 %s' % ('disabled' if slide.channel_id.channel_type != 'training' else '')" + role="button" t-att-aria-disabled="'disabled' if slide.channel_id.channel_type != 'training' else None" + t-att-href="'/slides/slide/%s?fullscreen=1' % (slug(slide)) if slide.channel_id.channel_type == 'training' else '#'"><i class="fa fa-desktop mr-2"></i> Fullscreen</a> </div> </div> <div t-if="slide.tag_ids" class="col"> diff --git a/addons/website_slides_forum/data/slide_channel_demo.xml b/addons/website_slides_forum/data/slide_channel_demo.xml index 3ecdfc9dc47e580ada2248726a3fe67fc00d4007..502045b71f4775f1c455a866bc87782b398a3212 100644 --- a/addons/website_slides_forum/data/slide_channel_demo.xml +++ b/addons/website_slides_forum/data/slide_channel_demo.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<odoo><data noupdate="0"> +<odoo><data noupdate="1"> <record id="forum_forum_demo_channel_0" model="forum.forum"> <field name="name">Basics of Gardening</field> diff --git a/addons/website_slides_survey/controllers/slides.py b/addons/website_slides_survey/controllers/slides.py index c232c86547459d9c8ea477cfd43e84a580963e45..b65b3c3333b12723852361881961b53023056d16 100644 --- a/addons/website_slides_survey/controllers/slides.py +++ b/addons/website_slides_survey/controllers/slides.py @@ -7,6 +7,7 @@ from odoo.http import request class WebsiteSlides(WebsiteSlides): + def _get_valid_slide_post_values(self): result = super(WebsiteSlides, self)._get_valid_slide_post_values() result.append('survey_id') @@ -24,10 +25,12 @@ class WebsiteSlides(WebsiteSlides): This is used in the context of a website_publisher designing a course.""" result = super(WebsiteSlides, self)._get_slide_detail(slide) if not request.env.user._is_public() and slide.slide_type == 'certification' and slide.survey_id: + result['certification_test_entry'] = not slide.channel_id.is_member + result['certification_done'] = False if slide.channel_id.is_member: user_membership_id_sudo = slide.user_membership_id.sudo() quizz_passed = user_membership_id_sudo.survey_quizz_passed - result['quizz_passed'] = quizz_passed + result['certification_done'] = quizz_passed result['survey_id'] = slide.survey_id.id if not quizz_passed: last_user_input = next(user_input for user_input in user_membership_id_sudo.user_input_ids.sorted( @@ -35,8 +38,6 @@ class WebsiteSlides(WebsiteSlides): )) result['certification_url'] = last_user_input._get_survey_url() else: - result['quizz_passed'] = False - result['test_entry'] = True user_input = slide.survey_id._create_answer( partner=request.env.user.partner_id, check_attempts=False, diff --git a/addons/website_slides_survey/data/slide_slide_demo.xml b/addons/website_slides_survey/data/slide_slide_demo.xml index 3e006b6ee05f9c3bafd6a00667083af7b38908e6..fe4642fbaf51ca4e4649956fa2ee9d8b5c8ca385 100644 --- a/addons/website_slides_survey/data/slide_slide_demo.xml +++ b/addons/website_slides_survey/data/slide_slide_demo.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<odoo><data noupdate="0"> +<odoo><data noupdate="1"> <!-- CHANNEL 5: Basics of Furniture Creation --> <!-- ======================================= --> diff --git a/addons/website_slides_survey/views/website_slides_templates_lesson.xml b/addons/website_slides_survey/views/website_slides_templates_lesson.xml index 8d6a4d1f1231d5c55e0c68ce2344b9e4f476fc8f..c6233535bed198831d37bc27f7e6bbafebf2500a 100644 --- a/addons/website_slides_survey/views/website_slides_templates_lesson.xml +++ b/addons/website_slides_survey/views/website_slides_templates_lesson.xml @@ -3,9 +3,9 @@ <data> <template id="slide_content_detailed" inherit_id="website_slides.slide_content_detailed"> <xpath expr="//div[hasclass('o_wslides_lesson_content_type')]" position="inside"> - <t t-if="not test_entry" t-set="begin_certification_label" t-value="'Begin certification'" /> - <t t-if="test_entry" t-set="begin_certification_label" t-value="'Test certification'" /> - <div t-if="slide.slide_type == 'certification' and not quizz_passed" class="mb8"> + <t t-if="not certification_test_entry" t-set="begin_certification_label" t-value="'Begin certification'" /> + <t t-if="certification_test_entry" t-set="begin_certification_label" t-value="'Test certification'" /> + <div t-if="slide.slide_type == 'certification' and not certification_done" class="col mt32 mb8 d-flex justify-content-center"> <a role="button" class="btn btn-primary btn-lg" t-att-href="certification_url"> @@ -13,7 +13,7 @@ <t t-esc="begin_certification_label" /> </a> </div> - <div t-if="slide.slide_type == 'certification' and quizz_passed" class="mb8"> + <div t-if="slide.slide_type == 'certification' and certification_done" class="col mt32 mb8 d-flex justify-content-center"> <a role="button" t-att-data-survey_id="survey_id" class="btn btn-primary btn-lg o_wslides_survey_download_certification"