The layout of slides needs a little freshening-up. ### Comments and slides * The ratings are only showed once, and only for "documentation" contents * Indications of why the user cannot post a comment are added (signing up, Karma, commenting not allowed), and the portal template is not called if there is no comment and commenting is not allowed (for user or course). In addition, the "Comment" tab is never hidden anymore, to not hide the available/activate-able features. * Detailed view statistics are now shown only to selected users. * Slide public views represent views by the public and all users that are not members of the course. * When channel/slide images are not set or inaccessible, a default image is used (instead of plain background or unauthorized requests). * These images are now editable on frontend. * The 'Additional Resources' subtitle is hidden from the detailed slide view for invite-only courses as nothing else was shown with it. ### Misc. * This commit also fixes the "unresponsive" `total_views` count after public views, by manually incrementing it too. This is required because `public_views` is directly updated via SQL query and does not trigger model _computes. * We also adjusted the test in survey that used a public user while in all cases users must be logged-in (and therefore get portal privileges) before they can participate. Task-2663320 Part of odoo/odoo#79615
65 lines
3.4 KiB
XML
65 lines
3.4 KiB
XML
<?xml version="1.0" ?>
|
|
<odoo><data>
|
|
<!--Private profile-->
|
|
<template id="private_profile" inherit_id="website_profile.private_profile">
|
|
<xpath expr="//div[@id='private_profile_return_link_container']" position="inside">
|
|
<t t-if="request.params.get('channel_id')">
|
|
<p><a t-attf-href="/slides/course-#{request.params.get('channel_id')}">Return to the course.</a></p>
|
|
</t>
|
|
</xpath>
|
|
</template>
|
|
|
|
<template id="user_profile_content" inherit_id="website_profile.user_profile_content">
|
|
<xpath expr="//div[@id='profile_about_badge']" position="before">
|
|
<t t-if="channel">
|
|
<div class="mb32">
|
|
<h5 class="border-bottom pb-1">Completed Courses</h5>
|
|
<t t-if="courses_completed" t-call="website_slides.display_course">
|
|
<t t-set="courses" t-value="courses_completed"></t>
|
|
</t>
|
|
<div t-else="" class="text-muted d-inline-block">No completed courses yet!</div>
|
|
<div class="text-end d-inline-block pull-right">
|
|
<a href="/slides/all" class="btn btn-link btn-sm"><i class="fa fa-arrow-right me-1"/>All Courses</a>
|
|
</div>
|
|
</div>
|
|
<div class="mb32">
|
|
<h5 class="border-bottom pb-1">Followed Courses</h5>
|
|
<t t-if="courses_ongoing" t-call="website_slides.display_course">
|
|
<t t-set="courses" t-value="courses_ongoing"></t>
|
|
</t>
|
|
<p t-else="" class="text-muted">No followed courses yet!</p>
|
|
</div>
|
|
</t>
|
|
</xpath>
|
|
</template>
|
|
|
|
<template id="display_course">
|
|
<div class="row">
|
|
<div class="col-12 col-lg-6" t-foreach="courses" t-as="course">
|
|
<div class="card mb-2">
|
|
<div class="card-body o_wprofile_slides_course_card_body p-0 d-flex"
|
|
t-attf-onclick="location.href='/slides/#{slug(course.channel_id)}';">
|
|
<div class="o_wslides_background_image ps-5 pe-4 rounded-start" t-attf-style="background-image: url(#{course.channel_id.website_background_image_url});"/>
|
|
<div class="p-2 w-100">
|
|
<h5 class="mt-0 mb-1" t-field="course.channel_id.name"/>
|
|
|
|
<div class="overflow-hidden mb-1" style="height:24px">
|
|
<t t-foreach="course.channel_id.tag_ids.filtered(lambda tag: tag.color)" t-as="tag">
|
|
<a t-att-href="'/slides/all/tag/%s' % slug(tag)" t-attf-class="badge o_wslides_channel_tag post_link #{'o_tag_color_'+str(tag.color)}" t-esc="tag.name"/>
|
|
</t>
|
|
</div>
|
|
|
|
<div class="d-flex align-items-center">
|
|
<div class="progress flex-grow-1" style="height:0.5em">
|
|
<div class="progress-bar bg-primary" t-att-style="'width: '+ str(course.completion)+'%'"/>
|
|
</div>
|
|
<small class="fw-bold ps-2"><span t-esc="course.completion"/> %</small>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</data></odoo>
|