diff options
| author | David Beguin <dbe@odoo.com> | 2019-02-14 10:45:26 +0000 |
|---|---|---|
| committer | David Beguin <dbe@odoo.com> | 2019-02-18 15:15:02 +0000 |
| commit | 3ab9f1d8abeec6fcbe2fd0aedcf3712c3e3f583b (patch) | |
| tree | 4bf4d50910b9e0e339861a5eaa0bf48e8097d712 /addons/website_slides_forum | |
| parent | 705376a982d64fb41800f148a167ef0fc28ce4c6 (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')
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> |
