summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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
-rw-r--r--addons/website_event_track_quiz/security/ir.model.access.csv4
11 files changed, 167 insertions, 2 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>
diff --git a/addons/website_event_track_quiz/security/ir.model.access.csv b/addons/website_event_track_quiz/security/ir.model.access.csv
index 35a10c26969..9ccf65851a7 100644
--- a/addons/website_event_track_quiz/security/ir.model.access.csv
+++ b/addons/website_event_track_quiz/security/ir.model.access.csv
@@ -3,5 +3,5 @@ event_quiz_access_event_user,event.quiz.access.event.user,model_event_quiz,event
event_quiz_access_event_manager,event.quiz.access.event.manager,model_event_quiz,event.group_event_manager,1,1,1,1
event_quiz_question_access_event_user,event.quiz.question.access.event.user,model_event_quiz_question,event.group_event_user,1,0,0,0
event_quiz_question_access_event_manager,event.quiz.question.access.event.manager,model_event_quiz_question,event.group_event_manager,1,1,1,1
-event_quiz_answer_access_event_user,event.quiz.answer.event.user,model_event_quiz_question_answer,event.group_event_user,1,0,0,0
-event_quiz_answer_access_event_manager,event.quiz.answer.event.manager,model_event_quiz_question_answer,event.group_event_manager,1,1,1,1
+event_quiz_answer_access_event_user,event.quiz.answer.event.user,model_event_quiz_answer,event.group_event_user,1,0,0,0
+event_quiz_answer_access_event_manager,event.quiz.answer.event.manager,model_event_quiz_answer,event.group_event_manager,1,1,1,1