diff --git a/addons/website_sale_slides/views/website_slides_templates.xml b/addons/website_sale_slides/views/website_slides_templates.xml index ec51520fd3d..abeb0ec227d 100644 --- a/addons/website_sale_slides/views/website_slides_templates.xml +++ b/addons/website_sale_slides/views/website_slides_templates.xml @@ -79,4 +79,39 @@ + + + + + + + + diff --git a/addons/website_slides/data/slide_slide_demo.xml b/addons/website_slides/data/slide_slide_demo.xml index d5925fe69f9..5c8d20cf1f7 100644 --- a/addons/website_slides/data/slide_slide_demo.xml +++ b/addons/website_slides/data/slide_slide_demo.xml @@ -18,6 +18,12 @@ A summary of know-how: how and what. All the basics for this course about gardening. + + + Document + + + Home Gardening 2 @@ -191,6 +197,12 @@ http://www.example.com + + + Presentation + + + How to plant a potted tree 5 @@ -392,6 +404,12 @@ http://www.example.com + + + Tree image + + + Do you make beams out of lemon trees ? diff --git a/addons/website_slides/models/slide_slide.py b/addons/website_slides/models/slide_slide.py index e64a7ecf363..917371b0b29 100644 --- a/addons/website_slides/models/slide_slide.py +++ b/addons/website_slides/models/slide_slide.py @@ -63,6 +63,15 @@ class SlideLink(models.Model): link = fields.Char('Link', required=True) +class SlideResource(models.Model): + _name = 'slide.slide.resource' + _description = "Additional resource for a particular slide" + + slide_id = fields.Many2one('slide.slide', required=True, ondelete='cascade') + name = fields.Char('Name', required=True) + data = fields.Binary('Resource') + + class EmbeddedSlide(models.Model): """ Embedding in third party websites. Track view count, generate statistics. """ _name = 'slide.embed' @@ -160,6 +169,8 @@ class Slide(models.Model): url = fields.Char('Document URL', help="Youtube or Google Document URL") document_id = fields.Char('Document ID', help="Youtube or Google Document ID") link_ids = fields.One2many('slide.slide.link', 'slide_id', string="External URL for this slide") + slide_resource_ids = fields.One2many('slide.slide.resource', 'slide_id', string="Additional Resource for this slide") + slide_resource_downloadable = fields.Boolean('Allow Download', default=False, help="Allow the user to download the content of the slide.") mime_type = fields.Char('Mime-type') html_content = fields.Html("HTML Content", help="Custom HTML content for slides of type 'Web Page'.", translate=True) # website @@ -347,12 +358,20 @@ class Slide(models.Model): @api.onchange('datas') def _on_change_datas(self): - """ For PDFs, we assume that it takes 5 minutes to read a page. """ + """ For PDFs, we assume that it takes 5 minutes to read a page. + If the selected file is not a PDF, it is an image (You can + only upload PDF or Image file) then the slide_type is changed + into infographic and the uploaded dataS is transfered to the + image field. (It avoids the infinite loading in PDF viewer)""" if self.datas: data = base64.b64decode(self.datas) if data.startswith(b'%PDF-'): pdf = PyPDF2.PdfFileReader(io.BytesIO(data), overwriteWarnings=False) self.completion_time = (5 * len(pdf.pages)) / 60 + else: + self.slide_type = 'infographic' + self.image_1920 = self.datas + self.datas = None @api.depends('name', 'channel_id.website_id.domain') def _compute_website_url(self): diff --git a/addons/website_slides/security/ir.model.access.csv b/addons/website_slides/security/ir.model.access.csv index b6d1a76ce44..43f14a23bbf 100644 --- a/addons/website_slides/security/ir.model.access.csv +++ b/addons/website_slides/security/ir.model.access.csv @@ -22,4 +22,7 @@ access_slide_channel_partners_system,slide.channel.users.system,model_slide_chan access_slide_embed_all,slide.embed.all,model_slide_embed,,1,0,0,0 access_slide_embed_user,slide.embed.user,model_slide_embed,base.group_user,1,1,1,1 access_slide_slide_link_all,slide.slide.link.all,model_slide_slide_link,,1,0,0,0 -access_slide_slide_link_officer,slide.slide.link.officer,model_slide_slide_link,website_slides.group_website_slides_officer,1,1,1,1 \ No newline at end of file +access_slide_slide_link_officer,slide.slide.link.officer,model_slide_slide_link,website_slides.group_website_slides_officer,1,1,1,1 +access_slide_slide_resource_all,slide.slide.resource.all,model_slide_slide_resource,,1,0,0,0 +access_slide_slide_resource_public,slide.slide.resource.public,model_slide_slide_resource,base.group_public,0,0,0,0 +access_slide_slide_resource_publisher,slide.slide.resource.publisher,model_slide_slide_resource,website_slides.group_website_slides_officer,1,1,1,1 diff --git a/addons/website_slides/security/website_slides_security.xml b/addons/website_slides/security/website_slides_security.xml index a6a347dd85f..bcfd70f0682 100644 --- a/addons/website_slides/security/website_slides_security.xml +++ b/addons/website_slides/security/website_slides_security.xml @@ -155,5 +155,17 @@ + + + + Resource: restricted to channel members and channel responsible + + [('slide_id.channel_id.partner_ids', '=', user.partner_id.id)] + + + + + + \ No newline at end of file diff --git a/addons/website_slides/static/src/js/slides_course_fullscreen_player.js b/addons/website_slides/static/src/js/slides_course_fullscreen_player.js index 00490ed9a0a..ef317465bbc 100644 --- a/addons/website_slides/static/src/js/slides_course_fullscreen_player.js +++ b/addons/website_slides/static/src/js/slides_course_fullscreen_player.js @@ -15,6 +15,7 @@ odoo.define('website_slides.fullscreen', function (require) { var Dialog = require('web.Dialog'); + require('website_slides.course.join.widget'); /** * Helper: Get the slide dict matching the given criteria diff --git a/addons/website_slides/views/slide_slide_views.xml b/addons/website_slides/views/slide_slide_views.xml index 10fd9f7d3ad..0301710e345 100644 --- a/addons/website_slides/views/slide_slide_views.xml +++ b/addons/website_slides/views/slide_slide_views.xml @@ -75,13 +75,13 @@ - - @@ -89,8 +89,8 @@ - - + + @@ -98,6 +98,14 @@ + + + + + + + + diff --git a/addons/website_slides/views/website_slides_templates_lesson.xml b/addons/website_slides/views/website_slides_templates_lesson.xml index 71457ea0bb1..35d104c1589 100644 --- a/addons/website_slides/views/website_slides_templates_lesson.xml +++ b/addons/website_slides/views/website_slides_templates_lesson.xml @@ -162,7 +162,7 @@ -