summaryrefslogtreecommitdiff
path: root/addons/website_event_track_live_quiz
diff options
context:
space:
mode:
authorAurélien Warnon <awa@odoo.com>2020-07-23 14:12:10 +0000
committerThibault Delavallée <tde@odoo.com>2020-08-04 14:28:29 +0000
commit92caab190183aed30726e4251366f972d0c5755f (patch)
treec0e4f1267786d89bcaf21e0ee2f19699d0081f1c /addons/website_event_track_live_quiz
parentfe17857e89cf48646b0d82cdb1cd3395447a1b3b (diff)
[ADD] website_event_track_live_quiz: integrate quiz within live track
RATIONALE Events are sometimes held online, gathering a community. In this merge we improve Event application to better support full-online events with improved tracks, wishlists, chat rooms, . PURPOSE This bridge module enables a better integration of the quiz features within the "next track suggestion" at the end of a track video. The track suggestion mechanism will let the user choose to take the quiz before being redirected to the next track. If he takes no action, he is redirected automatically. LINKS Task ID-2283735 (Talks -> Session upgrade) Task ID-2283729 (Live/Youtube Tracks) Co-Authored-By: Aurélien Warnon <awa@odoo.com> Co-Authored-By: David Beguin <dbe@odoo.com> Co-Authored-By: Quentin Mourier <qmo@odoo.com> Co-Authored-By: Thibault Delavallée <tde@odoo.com>
Diffstat (limited to 'addons/website_event_track_live_quiz')
-rw-r--r--addons/website_event_track_live_quiz/__init__.py2
-rw-r--r--addons/website_event_track_live_quiz/__manifest__.py4
-rw-r--r--addons/website_event_track_live_quiz/controllers/__init__.py4
-rw-r--r--addons/website_event_track_live_quiz/controllers/track_live_quiz.py12
-rw-r--r--addons/website_event_track_live_quiz/static/src/js/event_quiz.js58
-rw-r--r--addons/website_event_track_live_quiz/static/src/js/website_event_track_suggestion.js34
-rw-r--r--addons/website_event_track_live_quiz/static/src/xml/website_event_track_live_templates.xml14
-rw-r--r--addons/website_event_track_live_quiz/static/src/xml/website_event_track_quiz_templates.xml14
-rw-r--r--addons/website_event_track_live_quiz/views/assets.xml11
-rw-r--r--addons/website_event_track_live_quiz/views/event_track_templates_page.xml12
10 files changed, 165 insertions, 0 deletions
diff --git a/addons/website_event_track_live_quiz/__init__.py b/addons/website_event_track_live_quiz/__init__.py
index 67dee8c60db..dd15b5c32e5 100644
--- a/addons/website_event_track_live_quiz/__init__.py
+++ b/addons/website_event_track_live_quiz/__init__.py
@@ -1,2 +1,4 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from . import controllers
diff --git a/addons/website_event_track_live_quiz/__manifest__.py b/addons/website_event_track_live_quiz/__manifest__.py
index ec6a1d8c9d5..b01c4da1cce 100644
--- a/addons/website_event_track_live_quiz/__manifest__.py
+++ b/addons/website_event_track_live_quiz/__manifest__.py
@@ -14,10 +14,14 @@
'website_event_track_quiz',
],
'data': [
+ 'views/assets.xml',
+ 'views/event_track_templates_page.xml',
],
'demo': [
],
'qweb': [
+ 'static/src/xml/website_event_track_live_templates.xml',
+ 'static/src/xml/website_event_track_quiz_templates.xml',
],
'application': False,
'installable': True,
diff --git a/addons/website_event_track_live_quiz/controllers/__init__.py b/addons/website_event_track_live_quiz/controllers/__init__.py
new file mode 100644
index 00000000000..b4c6a301891
--- /dev/null
+++ b/addons/website_event_track_live_quiz/controllers/__init__.py
@@ -0,0 +1,4 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from . import track_live_quiz
diff --git a/addons/website_event_track_live_quiz/controllers/track_live_quiz.py b/addons/website_event_track_live_quiz/controllers/track_live_quiz.py
new file mode 100644
index 00000000000..282798301fe
--- /dev/null
+++ b/addons/website_event_track_live_quiz/controllers/track_live_quiz.py
@@ -0,0 +1,12 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo.addons.website_event_track_live.controllers.track_live import EventTrackLiveController
+
+
+class EventTrackLiveQuizController(EventTrackLiveController):
+
+ def _prepare_track_suggestion_values(self, track, track_suggestion):
+ res = super(EventTrackLiveQuizController, self)._prepare_track_suggestion_values(track, track_suggestion)
+ res['current_track']['show_quiz'] = bool(track.quiz_id) and not track.is_quiz_completed
+ return res
diff --git a/addons/website_event_track_live_quiz/static/src/js/event_quiz.js b/addons/website_event_track_live_quiz/static/src/js/event_quiz.js
new file mode 100644
index 00000000000..2fd34e66aa4
--- /dev/null
+++ b/addons/website_event_track_live_quiz/static/src/js/event_quiz.js
@@ -0,0 +1,58 @@
+odoo.define('website_event_track_live_quiz.event_quiz', function (require) {
+'use strict';
+
+var Quiz = require('website_event_track_quiz.event.quiz');
+
+var WebsiteEventTrackSuggestionQuiz = Quiz.include({
+ xmlDependencies: Quiz.prototype.xmlDependencies.concat([
+ '/website_event_track_live_quiz/static/src/xml/website_event_track_quiz_templates.xml',
+ ]),
+
+ /**
+ * @override
+ */
+ willStart: function () {
+ return Promise.all([
+ this._super(...arguments),
+ this._getTrackSuggestion()
+ ]);
+ },
+
+ //--------------------------------------------------------------------------
+ // Private
+ //--------------------------------------------------------------------------
+
+ _submitQuiz: function () {
+ var self = this;
+ return this._super(...arguments).then(function (data) {
+ if (data.quiz_completed) {
+ self.$('.o_quiz_js_quiz_next_track')
+ .removeClass('btn-light')
+ .addClass('btn-secondary');
+ }
+
+ return Promise.resolve(data);
+ });
+ },
+
+ //--------------------------------------------------------------------------
+ // Handlers
+ //--------------------------------------------------------------------------
+
+ _getTrackSuggestion: function () {
+ var self = this;
+ return this._rpc({
+ route: '/event_track/get_track_suggestion',
+ params: {
+ track_id: this.track.id,
+ }
+ }).then(function (suggestion) {
+ self.nextSuggestion = suggestion;
+ return Promise.resolve();
+ });
+ }
+});
+
+return WebsiteEventTrackSuggestionQuiz;
+
+});
diff --git a/addons/website_event_track_live_quiz/static/src/js/website_event_track_suggestion.js b/addons/website_event_track_live_quiz/static/src/js/website_event_track_suggestion.js
new file mode 100644
index 00000000000..17f98f9b7fd
--- /dev/null
+++ b/addons/website_event_track_live_quiz/static/src/js/website_event_track_suggestion.js
@@ -0,0 +1,34 @@
+odoo.define('website_event_track_live_quiz.website_event_track_suggestion', function (require) {
+'use strict';
+
+var WebsiteEventTrackSuggestion = require('website_event_track_live.website_event_track_suggestion');
+
+var WebsiteEventTrackSuggestionLiveQuiz = WebsiteEventTrackSuggestion.include({
+ xmlDependencies: WebsiteEventTrackSuggestion.prototype.xmlDependencies.concat([
+ '/website_event_track_live_quiz/static/src/xml/website_event_track_live_templates.xml',
+ ]),
+ events: _.extend({}, WebsiteEventTrackSuggestion.prototype.events, {
+ 'click .owevent_track_suggestion_quiz': '_onQuizClick'
+ }),
+
+ init: function (parent, options) {
+ this._super(...arguments);
+ this.currentTrack.showQuiz = options.current_track.show_quiz;
+ },
+
+ //--------------------------------------------------------------------------
+ // Handlers
+ //--------------------------------------------------------------------------
+
+ /**
+ * If the user takes the quiz, stop the next suggestion timer
+ */
+ _onQuizClick: function () {
+ clearInterval(this.timerInterval);
+ this.$('.owevent_track_suggestion_timer_text_wrapper').remove();
+ }
+});
+
+return WebsiteEventTrackSuggestionLiveQuiz;
+
+});
diff --git a/addons/website_event_track_live_quiz/static/src/xml/website_event_track_live_templates.xml b/addons/website_event_track_live_quiz/static/src/xml/website_event_track_live_templates.xml
new file mode 100644
index 00000000000..91c37f78bc0
--- /dev/null
+++ b/addons/website_event_track_live_quiz/static/src/xml/website_event_track_live_templates.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<odoo>
+
+<t t-extend="website_event_track_live.website_event_track_suggestion">
+ <t t-jquery="a.owevent_track_suggestion_replay" t-operation="before">
+ <a t-if="widget.currentTrack.showQuiz" class="btn btn-primary btn-lg mr-2 owevent_track_suggestion_quiz"
+ href="#we_track_quiz_container"
+ onclick="$('.o_quiz_js_quiz_container').removeClass('d-none');">
+ <span>Take the Quiz</span>
+ </a>
+ </t>
+</t>
+
+</odoo>
diff --git a/addons/website_event_track_live_quiz/static/src/xml/website_event_track_quiz_templates.xml b/addons/website_event_track_live_quiz/static/src/xml/website_event_track_quiz_templates.xml
new file mode 100644
index 00000000000..a1524d14621
--- /dev/null
+++ b/addons/website_event_track_live_quiz/static/src/xml/website_event_track_quiz_templates.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<odoo>
+
+<t t-extend="quiz.validation">
+ <t t-jquery="button.o_quiz_js_quiz_reset" t-operation="after">
+ <a t-if="widget.nextSuggestion"
+ t-attf-class="btn border o_quiz_js_quiz_next_track #{widget.track.completed ? 'btn-secondary' : 'btn-light'}"
+ t-att-href="widget.nextSuggestion.suggestion.website_url">
+ Next Track
+ </a>
+ </t>
+</t>
+
+</odoo>
diff --git a/addons/website_event_track_live_quiz/views/assets.xml b/addons/website_event_track_live_quiz/views/assets.xml
new file mode 100644
index 00000000000..7609ee3c03f
--- /dev/null
+++ b/addons/website_event_track_live_quiz/views/assets.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<odoo>
+
+<template id="assets_frontend" inherit_id="website.assets_frontend" name="Event Track Live Quiz Assets Frontend">
+ <xpath expr="//script[last()]" position="after">
+ <script type="text/javascript" src="/website_event_track_live_quiz/static/src/js/website_event_track_suggestion.js"></script>
+ <script type="text/javascript" src="/website_event_track_live_quiz/static/src/js/event_quiz.js"></script>
+ </xpath>
+</template>
+
+</odoo>
diff --git a/addons/website_event_track_live_quiz/views/event_track_templates_page.xml b/addons/website_event_track_live_quiz/views/event_track_templates_page.xml
new file mode 100644
index 00000000000..7bd968af4a0
--- /dev/null
+++ b/addons/website_event_track_live_quiz/views/event_track_templates_page.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+
+<template id="event_track_content"
+ name="Main Description: tweak quiz"
+ inherit_id="website_event_track_quiz.event_track_content">
+ <xpath expr="//div[hasclass('o_we_track_quiz_button')]" position="attributes">
+ <attribute name="t-if">track.quiz_id and not track.is_quiz_completed and not track.is_track_upcoming and (not track.is_track_live or track.is_youtube_replay or not track.youtube_video_id)</attribute>
+ </xpath>
+</template>
+
+</odoo>