Files
odoo_source/addons/website_slides/views/website_slides_templates_profile.xml
Lopes Marc (loma) 2e5175919c [IMP] website_profile,*: specify reason for profile access denial
*: website_forum, website_slides

Purpose
=======

Website profiles of users like Mitchell Admin, which are set as "public",
are also rendered as "Private". In Fact, users can be denied access to
the public profile of other users for different reasons. In such
situations, users should get a more accurate feedback on the reason of
the access denial.

Specifications
==============

On profile access denial, give users a more accurate reason:

- "This profile is private!" when the profile is indeed private
or the karma of the user profile is equal to 0.

-"Not have enough karma to view other users' profile." when the profile
is public but the requesting user has insufficient karma rights.

Also:
- Redirect to the 404 page users trying to access a non-existing
profile.

Note: the minimum level of karma required to access a public profile is
now editable. See odoo/odoo#123411

Task-3360050

closes odoo/odoo#128686

Related: odoo/upgrade#4955
Signed-off-by: Stéphane Debauche (std) <std@odoo.com>
2023-09-28 10:22:05 +00:00

77 lines
4.2 KiB
XML

<?xml version="1.0" ?>
<odoo><data>
<!--Access Denied - Profile Page-->
<template id="profile_access_denied" inherit_id="website_profile.profile_access_denied">
<xpath expr="//div[@id='profile_access_denied_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-elif="request.env.user == user" class="text-muted d-inline-block">
Go through all its content to see a Course in this section. <br />
<a href="/slides/" class="btn-link">
<i class="fa fa-arrow-right"></i> Start Learning
</a>
</div>
<div t-else="" class="text-muted d-inline-block">No completed courses yet!</div>
<div t-if="request.env.user != user" class="text-end d-inline-block pull-right">
<a href="/slides/all" class="btn btn-link btn-sm"><i class="oi oi-arrow-right me-1"/>All Courses</a>
</div>
</div>
<div class="mb32">
<h5 class="border-bottom pb-1">Ongoing 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-elif="request.env.user == user" class="text-muted">
All the courses you attend will appear here. <br />
<a href="/slides/" class="btn-link">
<i class="fa fa-arrow-right"></i> Start Learning
</a>
</p>
<p t-else="" class="text-muted">No ongoing 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 t-field="course.channel_id.image_1920" t-options="{'widget': 'image', 'class':'o_wslides_course_card_image', 'preview_image': 'image_512'}" class="rounded-start"/>
<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>