summaryrefslogtreecommitdiff
path: root/addons/website_slides_forum
diff options
context:
space:
mode:
authorDavid Beguin <dbe@odoo.com>2019-02-14 10:45:26 +0000
committerDavid Beguin <dbe@odoo.com>2019-02-18 15:15:02 +0000
commit3ab9f1d8abeec6fcbe2fd0aedcf3712c3e3f583b (patch)
tree4bf4d50910b9e0e339861a5eaa0bf48e8097d712 /addons/website_slides_forum
parent705376a982d64fb41800f148a167ef0fc28ce4c6 (diff)
[IMP] website_slides_forum : set communication on slide.channel at creation - frontend side
Since 556b6454dab07cdf716d404ec0db9aa51a09b165, channel can be linked to a dedicated forum. But the link could only be done in backend, in the slide.channel configuration For now on, website_publishers can create a new dedicated forum when they create a new slide.channel. Link buttons have been added in both forum and slide.channel headers to navigate easily between them. Fix the relation between course and forum in a model point of view. Task ID : 1922159 PR #31109
Diffstat (limited to 'addons/website_slides_forum')
-rw-r--r--addons/website_slides_forum/__manifest__.py2
-rw-r--r--addons/website_slides_forum/controllers/main.py13
-rw-r--r--addons/website_slides_forum/models/forum.py13
-rw-r--r--addons/website_slides_forum/security/ir.model.access.csv2
-rw-r--r--addons/website_slides_forum/static/src/js/website_slides_forum.editor.js13
-rw-r--r--addons/website_slides_forum/static/src/xml/website_slides_forum_channel.xml32
-rw-r--r--addons/website_slides_forum/views/assets.xml8
-rw-r--r--addons/website_slides_forum/views/slide_channel_views.xml8
-rw-r--r--addons/website_slides_forum/views/website_slides_forum_templates.xml27
9 files changed, 110 insertions, 8 deletions
diff --git a/addons/website_slides_forum/__manifest__.py b/addons/website_slides_forum/__manifest__.py
index c6f8a4cf6d9..793665230e1 100644
--- a/addons/website_slides_forum/__manifest__.py
+++ b/addons/website_slides_forum/__manifest__.py
@@ -15,6 +15,8 @@
'views/slide_channel_views.xml',
'views/website_slides_templates.xml',
'data/slide_channel_demo.xml',
+ 'views/assets.xml',
+ 'views/website_slides_forum_templates.xml'
],
'auto_install': True,
}
diff --git a/addons/website_slides_forum/controllers/main.py b/addons/website_slides_forum/controllers/main.py
index e86a4d70bf0..6f898b90fc4 100644
--- a/addons/website_slides_forum/controllers/main.py
+++ b/addons/website_slides_forum/controllers/main.py
@@ -6,8 +6,21 @@ from odoo.addons.website_slides.controllers.main import WebsiteSlides
class WebsiteSlidesForum(WebsiteSlides):
+
+ def _slide_channel_prepare_values(self, **kwargs):
+ communication_type = kwargs.get('communication_type')
+ if communication_type:
+ if communication_type == 'forum':
+ forum = request.env['forum.forum'].create({
+ 'name': kwargs.get('name')
+ })
+ kwargs['forum_id'] = forum.id
+ kwargs['allow_comment'] = communication_type == 'comment'
+ return super(WebsiteSlidesForum, self)._slide_channel_prepare_values(**kwargs)
+
# Profile
# ---------------------------------------------------
+
def _prepare_user_profile_parameters(self, **post):
post = super(WebsiteSlidesForum, self)._prepare_user_profile_parameters(**post)
if post.get('channel_id'):
diff --git a/addons/website_slides_forum/models/forum.py b/addons/website_slides_forum/models/forum.py
index 907ae5c586e..a08d744ee49 100644
--- a/addons/website_slides_forum/models/forum.py
+++ b/addons/website_slides_forum/models/forum.py
@@ -1,10 +1,19 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
-from odoo import fields, models
+from odoo import api, fields, models
class Forum(models.Model):
_inherit = 'forum.forum'
- slide_channel_id = fields.Many2one('slide.channel', 'Course')
+ slide_channel_ids = fields.One2many('slide.channel', 'forum_id', 'Courses')
+ slide_channel_id = fields.Many2one('slide.channel', 'Course', compute='_compute_slide_channel_id')
+
+ @api.depends('slide_channel_ids')
+ def _compute_slide_channel_id(self):
+ for forum in self:
+ if forum.slide_channel_ids:
+ forum.slide_channel_id = forum.slide_channel_ids[0]
+ else:
+ forum.slide_channel_id = None
diff --git a/addons/website_slides_forum/security/ir.model.access.csv b/addons/website_slides_forum/security/ir.model.access.csv
new file mode 100644
index 00000000000..82ac84d07ba
--- /dev/null
+++ b/addons/website_slides_forum/security/ir.model.access.csv
@@ -0,0 +1,2 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_forum_forum_website_publisher,access.forum.forum.website.publisher,model_forum_forum,base.group_website_publisher,1,1,1,0
diff --git a/addons/website_slides_forum/static/src/js/website_slides_forum.editor.js b/addons/website_slides_forum/static/src/js/website_slides_forum.editor.js
new file mode 100644
index 00000000000..324d70c8ea6
--- /dev/null
+++ b/addons/website_slides_forum/static/src/js/website_slides_forum.editor.js
@@ -0,0 +1,13 @@
+odoo.define('website_slides_forum.editor', function (require) {
+"use strict";
+
+var core = require('web.core');
+var QWeb = core.qweb;
+var WebsiteNewMenu = require('website.newMenu');
+
+ WebsiteNewMenu.include({
+ xmlDependencies: WebsiteNewMenu.prototype.xmlDependencies.concat(
+ ['/website_slides_forum/static/src/xml/website_slides_forum_channel.xml']
+ ),
+});
+});
diff --git a/addons/website_slides_forum/static/src/xml/website_slides_forum_channel.xml b/addons/website_slides_forum/static/src/xml/website_slides_forum_channel.xml
new file mode 100644
index 00000000000..03389f2a12d
--- /dev/null
+++ b/addons/website_slides_forum/static/src/xml/website_slides_forum_channel.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<templates xml:space="preserve">
+ <t t-extend="website.slide.channel.create">
+ <t t-jquery=".o_wslide_channel_communication_type" t-operation="replace">
+ <fieldset id="channel_create_forum" class="form-group">
+ <div class="row">
+ <legend class="col-form-label col-sm-2">Communication</legend>
+ <div class="col-sm-10">
+ <div class="form-check">
+ <input class="form-check-input" type="radio" name="communication_type" id="communication_type1" value="nothing" checked="checked"/>
+ <label class="form-check-label" for="communication_type1">
+ No communication
+ </label>
+ </div>
+ <div class="form-check">
+ <input class="form-check-input" type="radio" name="communication_type" id="communication_type2" value="forum"/>
+ <label class="form-check-label" for="communication_type2">
+ Create a Forum
+ </label>
+ </div>
+ <div class="form-check">
+ <input class="form-check-input" type="radio" name="communication_type" id="communication_type3" value="comment"/>
+ <label class="form-check-label" for="communication_type3">
+ Allow comments
+ </label>
+ </div>
+ </div>
+ </div>
+ </fieldset>
+ </t>
+ </t>
+</templates>
diff --git a/addons/website_slides_forum/views/assets.xml b/addons/website_slides_forum/views/assets.xml
new file mode 100644
index 00000000000..9c36aa33ab2
--- /dev/null
+++ b/addons/website_slides_forum/views/assets.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+ <template id="assets_frontend" inherit_id="website.assets_frontend" name="Website slide forum frontend assets">
+ <xpath expr="//script[last()]" position="after">
+ <script type="text/javascript" src="/website_slides_forum/static/src/js/website_slides_forum.editor.js"></script>
+ </xpath>
+ </template>
+</odoo>
diff --git a/addons/website_slides_forum/views/slide_channel_views.xml b/addons/website_slides_forum/views/slide_channel_views.xml
index ddff2b256b4..0dab8d637f9 100644
--- a/addons/website_slides_forum/views/slide_channel_views.xml
+++ b/addons/website_slides_forum/views/slide_channel_views.xml
@@ -5,12 +5,8 @@
<field name="model">slide.channel</field>
<field name="inherit_id" ref="website_slides.view_slide_channel_form"/>
<field name="arch" type="xml">
- <xpath expr="//notebook" position="inside">
- <page string="Forum">
- <group>
- <field name="forum_id"/>
- </group>
- </page>
+ <xpath expr="//field[@name='allow_comment']" position="after">
+ <field name="forum_id"/>
</xpath>
</field>
</record>
diff --git a/addons/website_slides_forum/views/website_slides_forum_templates.xml b/addons/website_slides_forum/views/website_slides_forum_templates.xml
new file mode 100644
index 00000000000..2c47c9e759c
--- /dev/null
+++ b/addons/website_slides_forum/views/website_slides_forum_templates.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo><data>
+ <template id="website_slides_forum_header" inherit_id="website_forum.header">
+ <xpath expr="//div[hasclass('container')]" position="before">
+ <t t-if="forum.slide_channel_id">
+ <div class="row" style="background-color: #66445e; height: 48px;">
+ <div class="container o_wprofile_navtabs_container">
+ <ul class="nav nav-tabs o_wprofile_nav_tabs" role="tablist" id="profile_extra_info_tablist">
+ <li class="nav-item">
+ <a t-att-href="'/slides/%s%s?%s' % (slug(forum.slide_channel_id), '/%s' % slug(category) if category else '', keep_query('debug'))"
+ t-att-class="'nav-link o_wprofile_navlink'" style="border-left: 0px">
+ <i class="fa fa-home"/> Home</a>
+ </li>
+ <li class="nav-item">
+ <a href="#" t-att-class="'nav-link active o_wprofile_navlink'" style="border-left: 0px">Forum</a>
+ </li>
+ <li class="nav-item">
+ <a t-att-href="'/slides/%s' % (slug(forum.slide_channel_id))"
+ t-att-class="'nav-link o_wprofile_navlink'" style="border-left: 0px">Review</a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </t>
+ </xpath>
+ </template>
+</data></odoo>