Skip to content
Snippets Groups Projects
Commit af690f67 authored by Patrick Hoste's avatar Patrick Hoste Committed by Thibault Delavallée
Browse files

[IMP] website_slides: allow to toggle free preview from frontend


Purpose of this commit is to ease slides / lessons management in eLearning
frontend.

The publisher will now be able to see if a slide is in preview mode from
the slide list in frontend of eLearning.

He'll be able to activate/deactivate the free preview mode with a button.

Task 1999705.

closes odoo/odoo#34182

Signed-off-by: default avatarThibault Delavallee (tde) <tde@openerp.com>
parent f4157f68
Branches
Tags
No related merge requests found
......@@ -658,6 +658,13 @@ class WebsiteSlides(WebsiteProfile):
return False
@http.route('/slides/slide/toggle_is_preview', type='json', auth='user', website=True)
def slide_preview(self, slide_id):
slide = request.env['slide.slide'].browse(int(slide_id))
if slide.channel_id.can_publish:
slide.is_preview = not slide.is_preview
return slide.is_preview
@http.route(['/slides/slide/send_share_email'], type='json', auth='user', website=True)
def slide_send_share_email(self, slide_id, email):
slide = request.env['slide.slide'].browse(int(slide_id))
......
odoo.define('website_slides.slide.preview', function (require) {
'use strict';
var publicWidget = require('web.public.widget');
publicWidget.registry.websiteSlidesSlideToggleIsPreview = publicWidget.Widget.extend({
selector: '.o_wslides_js_slide_toggle_is_preview',
xmlDependencies: ['/website_slides/static/src/xml/slide_management.xml'],
events: {
'click': '_onPreviewSlideClick',
},
_toggleSlidePreview: function($slideTarget) {
this._rpc({
route: '/slides/slide/toggle_is_preview',
params: {
slide_id: $slideTarget.data('slideId')
},
}).then(function (isPreview) {
if (isPreview) {
$slideTarget.removeClass('badge-light badge-hide border');
$slideTarget.addClass('badge-success');
} else {
$slideTarget.removeClass('badge-success');
$slideTarget.addClass('badge-light badge-hide border');
}
});
},
_onPreviewSlideClick: function (ev) {
ev.preventDefault();
this._toggleSlidePreview($(ev.currentTarget));
},
});
return {
websiteSlidesSlideToggleIsPreview: publicWidget.registry.websiteSlidesSlideToggleIsPreview
};
});
......@@ -272,6 +272,21 @@ $o-wslides-fs-side-width: 300px;
border: 1px solid $border-color;
}
.o_wslides_slides_list_slide {
a {
text-decoration: none;
}
.badge-hide {
display: none;
}
&:hover .badge-hide {
display: block;
}
}
.o_wslides_slides_list_slide_hilight {
background-color: #1252F3;
height: 1px;
......
<?xml version="1.0" encoding="UTF-8"?>
<templates xml:space="preserve">
<t t-name="slides.slide.archive">
<div>
<p>Are you sure you want to archive this slide ?</p>
......
......@@ -14,6 +14,7 @@
<script type="text/javascript" src="/website_slides/static/src/js/slides_upload.js"/>
<script type="text/javascript" src="/website_slides/static/src/js/slides_category_add.js"/>
<script type="text/javascript" src="/website_slides/static/src/js/slides_slide_archive.js"/>
<script type="text/javascript" src="/website_slides/static/src/js/slides_slide_toggle_is_preview.js"/>
<script type="text/javascript" src="/website_slides/static/src/js/slides_slide_like.js"/>
<script type="text/javascript" src="/website_slides/static/src/js/slides_course_slides_list.js"/>
<script type="text/javascript" src="/website_slides/static/src/js/slides_course_fullscreen_player.js"/>
......
......@@ -409,7 +409,10 @@
<t t-esc="channel_progress[slide.id].get('quiz_karma_won', 0) if channel_progress[slide.id].get('completed') else channel_progress[slide.id].get('quiz_karma_gain', 0)"/> xp
</span>
<span class="badge badge-danger font-weight-normal px-2 py-1 m-1" t-if="not slide.website_published">Unpublished</span>
<span class="badge badge-success font-weight-normal px-2 py-1 m-1" t-if="slide.is_preview and not channel.is_member">Free preview</span>
<a t-if="channel.can_upload" href="#">
<span t-att-data-slide-id="slide.id" t-attf-class="o_wslides_js_slide_toggle_is_preview badge #{'badge-success' if slide.is_preview else 'badge-light badge-hide border'} font-weight-normal px-2 py-1 m-1">Free preview</span>
</a>
<span t-elif="slide.is_preview and not channel.is_member" class="badge badge-success font-weight-normal px-2 py-1 m-1">Free preview</span>
</div>
<div t-if="channel.is_member or channel.can_publish" class="pt-2 pb-2 border-left ml-2 mr-2 pl-2 d-flex align-items-center o_wslides_slides_list_slide_controls">
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment