diff --git a/addons/website_slides/__manifest__.py b/addons/website_slides/__manifest__.py
index b24100651b2..7ebfc125132 100644
--- a/addons/website_slides/__manifest__.py
+++ b/addons/website_slides/__manifest__.py
@@ -29,6 +29,7 @@ Share and Publish Videos, Presentations and Documents'
'views/website_slides_embed_templates.xml',
'views/slide_slide_views.xml',
'views/slide_channel_views.xml',
+ 'views/slide_channel_tag_views.xml',
'views/website_slides_menu_views.xml',
'data/website_slides_ir_data.xml',
'data/mail_data.xml',
diff --git a/addons/website_slides/data/slide_data.xml b/addons/website_slides/data/slide_data.xml
index 164ba5957ef..cb2eda5bb3d 100644
--- a/addons/website_slides/data/slide_data.xml
+++ b/addons/website_slides/data/slide_data.xml
@@ -15,5 +15,11 @@
invite
Used to publish slides in partner network privately.
+
+
+ Tags
+ 20
+
+
diff --git a/addons/website_slides/models/__init__.py b/addons/website_slides/models/__init__.py
index c0bc050e663..3f6a3e49ddf 100644
--- a/addons/website_slides/models/__init__.py
+++ b/addons/website_slides/models/__init__.py
@@ -3,5 +3,6 @@
from . import gamification_challenge
from . import slide_slide
from . import slide_channel
+from . import slide_channel_tag
from . import res_config_settings
from . import website
diff --git a/addons/website_slides/models/slide_channel.py b/addons/website_slides/models/slide_channel.py
index 2c0d56d7b17..ec68cc3f46e 100644
--- a/addons/website_slides/models/slide_channel.py
+++ b/addons/website_slides/models/slide_channel.py
@@ -34,6 +34,9 @@ class Channel(models.Model):
active = fields.Boolean(default=True)
description = fields.Html('Description', translate=html_translate, sanitize_attributes=False)
sequence = fields.Integer(default=10, help='Display order')
+ tag_ids = fields.Many2many(
+ 'slide.channel.tag', 'slide_channel_tag_rel', 'channel_id', 'tag_id',
+ string='Tags', help='Used to categorize and filter displayed channels/courses')
category_ids = fields.One2many('slide.category', 'channel_id', string="Categories")
# slides: promote, statistics
slide_ids = fields.One2many('slide.slide', 'channel_id', string="Slides")
diff --git a/addons/website_slides/models/slide_channel_tag.py b/addons/website_slides/models/slide_channel_tag.py
new file mode 100644
index 00000000000..174ec347c7f
--- /dev/null
+++ b/addons/website_slides/models/slide_channel_tag.py
@@ -0,0 +1,31 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import fields, models
+
+
+class SlideChannelTagGroup(models.Model):
+ _name = 'slide.channel.tag.group'
+ _description = 'Channel/Course tags'
+ _order = 'sequence asc'
+
+ name = fields.Char('Name', required=True, translate=True)
+ sequence = fields.Integer('Sequence', default=10, index=True, required=True)
+ tag_ids = fields.One2many('slide.channel.tag', 'group_id', string='Tags')
+ website_published = fields.Boolean(
+ 'Menu entry', default=True,
+ help='Makes a menu entry in main navigation of Slides, allowing to filter on its tags directly from main navigation.')
+
+
+class SlideChannelTag(models.Model):
+ _name = 'slide.channel.tag'
+ _description = 'Channel/Course tags'
+ _order = 'group_sequence asc, sequence asc'
+
+ name = fields.Char('Name', required=True, translate=True)
+ sequence = fields.Integer('Sequence', default=10, index=True, required=True)
+ group_id = fields.Many2one('slide.channel.tag.group', string='Group', index=True, required=True)
+ group_sequence = fields.Integer(
+ 'Group sequence', related='group_id.sequence',
+ index=True, readonly=True, store=True)
+ channel_ids = fields.Many2many('slide.channel.tag', 'slide_channel_tag_rel', 'tag_id', 'channel_id', string='Channels')
diff --git a/addons/website_slides/security/ir.model.access.csv b/addons/website_slides/security/ir.model.access.csv
index 046ea6582e3..6f12b3236c7 100644
--- a/addons/website_slides/security/ir.model.access.csv
+++ b/addons/website_slides/security/ir.model.access.csv
@@ -5,6 +5,10 @@ access_slide_slide_partner_all,slide.slide.partner.all,model_slide_slide_partner
access_slide_slide_partner_system,slide.slide.partner.system,model_slide_slide_partner,website.group_website_publisher,1,1,1,1
access_slide_tag_all,slide.tag.all,model_slide_tag,,1,0,0,0
access_slide_tag_publisher,slide.tag.publisher,model_slide_tag,website.group_website_publisher,1,1,1,1
+access_slide_channel_tag_all,slide.channel.tag.all,model_slide_channel_tag,,1,0,0,0
+access_slide_channel_tag_user,slide.channel.tag.user,model_slide_channel_tag,website.group_website_publisher,1,1,1,1
+access_slide_channel_tag_group_all,slide.channel.tag.group.all,model_slide_channel_tag_group,,1,0,0,0
+access_slide_channel_tag_group_user,slide.channel.tag.group.user,model_slide_channel_tag_group,website.group_website_publisher,1,1,1,1
access_slide_channel_all,slide.channel.all,model_slide_channel,,1,0,0,0
access_slide_channel_publisher,slide.channel.publisher,model_slide_channel,website.group_website_publisher,1,1,1,1
access_slide_channel_partners_all,slide.channel.users.all,model_slide_channel_partner,,0,0,0,0
diff --git a/addons/website_slides/views/slide_channel_tag_views.xml b/addons/website_slides/views/slide_channel_tag_views.xml
new file mode 100644
index 00000000000..4a7eaf48f99
--- /dev/null
+++ b/addons/website_slides/views/slide_channel_tag_views.xml
@@ -0,0 +1,96 @@
+
+
+
+
+ slide.channel.tag.view.search
+ slide.channel.tag
+
+
+
+
+
+
+
+
+
+ slide.channel.tag.view.form
+ slide.channel.tag
+
+
+
+
+
+
+ slide.channel.tag.view.tree
+ slide.channel.tag
+
+
+
+
+
+
+
+
+
+
+
+ Channel Tags
+ slide.channel.tag
+ form
+ tree,form
+
+
+
+
+ slide.channel.tag.group.view.search
+ slide.channel.tag.group
+
+
+
+
+
+
+
+
+ slide.channel.tag.group.view.form
+ slide.channel.tag.group
+
+
+
+
+
+
+ slide.channel.tag.group.view.tree
+ slide.channel.tag.group
+
+
+
+
+
+
+
+
+
+
+ Channel Tag Groups
+ slide.channel.tag.group
+ form
+ tree,form
+
+
+
+
diff --git a/addons/website_slides/views/slide_channel_views.xml b/addons/website_slides/views/slide_channel_views.xml
index ba317e74375..bb044e82723 100644
--- a/addons/website_slides/views/slide_channel_views.xml
+++ b/addons/website_slides/views/slide_channel_views.xml
@@ -67,6 +67,7 @@
+
diff --git a/addons/website_slides/views/website_slides_menu_views.xml b/addons/website_slides/views/website_slides_menu_views.xml
index f2bbf21c25c..bf558fd0830 100644
--- a/addons/website_slides/views/website_slides_menu_views.xml
+++ b/addons/website_slides/views/website_slides_menu_views.xml
@@ -21,5 +21,16 @@
+
+
+
\ No newline at end of file