Display
* improve color of trophy displayed on top of course main page (success if
course done, warning while working on it);
* correctly fetch and display karma/xp points on course lesson list. It is
either gain of next try, either awarded points depending on slide
completion;
* fix control buttons in course main page (prev, next, set done,
set completed, fullscren), notably correctly set them disabled;
Linting / Code
* put demo in no update;
* rename some parameter in website_slides_survey to avoid conflict between
quiz (on a slide) and certification (a survey);
Commit linked to task ID 1941250 and PR #31697.
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
If there are too much users to show on the page and to avoid performance
issues, a pager is now applied on the all users page.
A new pager based on website_pager is added in order to ease the navigation
through the potential high number of pages. 'Go to first page' and 'Go to last
page' buttons have been added and the design of the pager have been adapted
to be more integrated into the new eLearning platform.
Also add the pager on the slide page if search category is applied. The pager
was already computed in the controller but not displayed.
Task ID : 1946160
PR #31697
Purpose of this commit is to perform a cleaning and upgrade of the lesson
view in front-end when not using the fullscreen mode. This page had not
been updated since eLearning addition.
A method is added on slide model to have a protected method computing quiz
related information on a given set of slides, notably potential karma gain,
gained karma and number of attempts. It is mainly a code move from controllers
now working in batch.
Some linting is also done, notably a badly-named file.
See original eLearning task for main specifications [1].
Commit linked to task ID 1941250 and PR #31657.
[1] See task ID 1902304
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
This commit makes the quiz widget a real odoo widget that triggers up some
events. The widget is now only responsible of
* fetching quiz data (if not given)
* decorating the anwsers according to the result
* displaying message (error or modal)
To do so, some code move/rewrite was needed
* extract and factorize some template
* add 'sudo' on technical model to avoid access rights error
* factorize some python method from controller to model
* remove some CSS classes to lighten the code
* fixing access model error
* make quiz widget handle the display of error message
* give browse record for template rendering, rather than slug
* cleaning some spaghetti code in Fullscreen widget
* ...
Commit linked to task ID 1941250 and PR #31584.
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
If a new user try to access the elearning platform or his porfile, if he has
no karma, has it is the case for new users, he won't get any rank. So that
the next rank karma minus current rank karma equals zero.
To avoid this, next_rank will always be first one existing if the user has no
karma. Also, the current rank will not be displayed if the user has no karma.
finally, next rank will not be displayed if the user reached the last existing
rank.
Task ID : 1941250
PR #31512
Simple fix to already have the standard gray background. Future commits will
improve display of not fullscreen lessons but this fix was necessary for
incoming work.
Commit linked to task ID 1941250 and PR #31512.
Currently there is a tool method on controller allowing to prepare some
slide related data. However controllers still add values in the slide
dictionary outside of this method, making it non consistent.
Let us prepare all side related data in this tool method to simplify code
understanding.
Commit linked to task ID 1941250 and PR #31512.
Currently slides are displayed in a reorderable list, using current user
access rights. This means external customers see only published and free
lessons.
However purpose of course page is to display all lessons, and display
only available ones as clickable. Other one should be displayed as muted
to tease people.
Note that a specific lesson page does check for access rights. Here we
just display all lessons names. A label for free preview is also added.
Fetch of data when displaying a channel is therefore a bit modified as
there are less differences between training and documentation channels.
User progress is also updated to be easier to use in templates.
Commit linked to task ID 1941250 and PR #31453
Purpose of this commit is to make a new design linting pass on homepage.
Containing
* various bs4 and responsive improvements;
* footer banner improvements;
Commit linked to task ID 1941250 and PR #31453
Purpose is to perform a cleaning pass on website_profile templates. It
cleans the DOM, templates and CSS and proposes various improvements on
general design and layouting. This includes notably
* lessen custom CSS and use bootstrap 4 classes;
* simplify layout when possible;
* make is responsive and mobile friendly;
No functional changes should occur with this commit.
Sub modules are impacted as profile is extended in various other
applications: eLearning, forum and certification.
Commit linked to task ID 1941250 and PR #31453
A specific template to display an icon depending on slide type has been
added recently. However presentation icon was missing. This commit fixes
that.
We also added an option to tune the classes added on the icon. It gives more
flexibility when using it.
Commit linked to task ID 1941250 and PR #31453
This commit replaces a widget with standard boostrap code: the progress bar
classes. Creating a widget was a little bit over engineered, and since the
progress animation is handle in CSS, this replacement does not cause any loss
of feature.
Commit linked to task ID 1942852 and PR #31394.
The review tab exists on channel homepage, but does not show the reviews of
the channel. This commit makes the tab dynamic for homepage content and
reviews. Forum tab still redirects user to the forum page.
Layouting of course page is also improved to better match the new homepage
layouting.
Commit linked to task ID 1942852 and PR #31394.
Various fixes :
* better label on upload modal;
* upload always visible slide. When uploading a slide with the is_preview
checkbox checked, it does not work as in the controller we are looking
after a string when receiving a python boolean;
* switch modal buttons in slide upload modal to have a correct order;
* prevent auto scroll up. When clicking on the plus icon in drag'n'droppable
list view of a course homepage, if the user has scroll down the page he
will be automatically scroll up. This is very annoying and make some of
my colleagues grumpy;
* hide slide upload if not channel.can_upload. This commit hides the "+"
icon next to the channel categories if the user doesn't have the rights to
upload slides;
Commit linked to task ID 1942852 and PR #31394.
Co-Authored-By: David Beguin <dbe@odoo.com>
Co-Authored-By: Jerome Maes <jem@odoo.com>
Co-Authored-By: Aurélien Warnon <awa@odoo.com>
Moves
* sidebar of course main template in its own template;
* fullscreen templates in their own file;
It will ease future modification of this page layout.
Commit linked to task ID 1942852 and PR #31394.
Purpose
=======
This commit introduces an icon template to factorize some xml code.
It also correctly overrides this template in website_slides_survey to add
the 'certification' case.
Commit linked to task ID 1942852 and PR #31394.
Purpose
=======
This commit adds the management and display of uncategorized slides
for both the frontend publishing management and the fullscreen
course views.
We add a "Uncategorized" section on top of all the categories that is
hidden for the student if it's empty.
Course publishers can drag and drop slides from and to that
new "Uncategorized" section to easily reorganize the course.
Commit linked to task ID 1942852 and PR #31394.
Purpose
=======
This commit refactors the way slides and categories are reordered in the
frontend course view (training courses). The use of jqueryui's "sortable"
widget makes it easier and more user friendly to drag and drop both sections
and slides to reorganize your course.
Commit linked to task ID 1942852 and PR #31394.
Purpose
=======
This commits refactors the way slide.category are added on frontend:
* JS now extends a standard Dialog widget;
* added "required" name value on the form and handled validation;
* controller adds the category at the bottom of the list (sequence+1);
Commit linked to task ID 1942852 and PR #31394.
Purpose
=======
This commits refactors the slide archiving confirmation modal to make it a
standard Dialog (remove global selectors, remove most of useless xml, ...).
It also adds a new slide archive route to allow channel publishers to archive
slides in sudo mode. Indeed ACLs only website_publishers can write on slide
model. In some case people without real rights may update slides.
Commit linked to task ID 1942852 and PR #31394.
Purpose of this commit is to perform some linting and cleaning in lesson widget
JS and its related css. Notably for fullscreen widget of eLearning. Containing
* better naming of css classes;
* deleted sidebar file as it is now included directly in the fullscreen
widget;
* removed unused css;
* apply JS linting;
* clean some controllers;
Commit linked to task ID 1942852 and PR #31394.
Purpose is to clean a bit the card layout in documentation courses, notably
* better layout for cards:
* fetch (in controller as slides in course display are sudo-ed to display
a card even if current user has no access) completion data and display it;
Commit linked to task ID 1941250 and PR #31317.
Purpose: the "My courses" button on the slides home page now redirects the user
to the list of channels for which he is a member of.
In this commit we also clean a bit controller code to remove support of
category_id which makes no sense on a page displaying courses as categories
are not cross-courses, only course-specific.
A clear search icon is also added.
Commit linked to task ID 1941250 and PR #31317.
This commit do some small UI adjustment:
* remove a potential doubled <hr/>;
* remove a "mb8" to make views consistent whether you're a channel publisher
or not;
* add a specific parameter to see 'uncategorized' slides on a documentation
channel as /category is a slug and does not allow Falsy values;
Commit linked to task ID 1941250 and PR #31317.
- slidesChannelDropdownSort : dropdown items back to visible (was white on white)
- Featured lesson : change icon to bullhorn instead of + icon
- Pass certification fullscreen button : btn primary
- set max height to fullscreen content to 100% minus header
- Fix 'infographic' slide type image view
- change image for 'Furniture Technical Specifications' course
- fix fullscreen presentation mode: The condition to add the iframe that
contains the presentation of the document was wrong and, so, never met.
Those conditions are evaluated in javascript and not in python as it's part
of t-name template linked to a javascript widget.
Commit linked to task ID 1941250 and PR #31279.
* remove useless slide management buttons. This commit removes the frontend
edit/publish/unlink buttons on slide cards (for the 'document' channel view)
as they were not handled on the backend side.
* hide slide type filter for documentation channels. The slide type filter
(including statistics) on the left side of the channel frontend view
was only handled for channels of type 'documentation'. This commit hides
the slide type stats/filters if the channel is not of type documentation.
* display add content/section buttons based on user rights. Fixes two channel
frontend issues with user rights management:
* Users that have the right to upload (can_upload field) should have the
"Add content" button available.
* The "Add section" button should only be available to website_publisher
accordingly to ACLs
Commit linked to task ID 1941250 and PR #31279.
Force white background + add the default bootstrap shadow. Do not use <h4>
tags to keep the right font-size on mobile. Simplify layout, add a second
navabar to handle content supposed to be moved to the right.
Commit linked to task ID 1941250 and PR #31279.
Various fixes linked to homepage of courses
* move channel navigation in its right container, clean its display and
related templating;
* display a Completed badge for completed courses;
* display a cropped image for channel image card in order to avoid blank lines
around image not having the right aspect ratio;
* use standard qweb widgets, notably float_time;
* make header and footer of /slides and /slides/all editable and improve
their styling;
* remove old and unused css linked to previous versions of homepage;
* various small code cleaning;
Commit linked to task ID 1941250 and PR #31279.
Co-Authored-By: Thibault Delavallée <tde@odoo.com>
Co-Authored-By: Stefano Rigano <sri@odoo.com>
Purpose of this commit is to provide a better way to display channel information.
Description is split into two fields. A text one, holding the short description
and used in channel header. A long html one, holding more details course
description.
Commit linked to task ID 1941250 and PR #31272.
Purpose is to reduce model naming complexity. Currently you have: slide_type
<type>, and related statistics on channel and category nbr_<type>s with a
trailing and error-prone s. Let us remove the trailing s to reduce complexity
of code reading. Some code cleaning in statistics computation is also done.
Commit linked to task ID 1941250 and PR #31272.
Purpose is to perform some linting in code. No functional change should
occur with this commit, only some code move. Diff may appear huge but
it is just because some files are split.
This cleaning allow to better understand code and templates architecture
now that eLearning feature has landed in Odoo Community. It will ease future
additions, modifications and fixes.
Containing :
* [REF] make some internal slide-related methods private as they are not
intended to be called by outside world;
* [MOV] new channel invite wizard in wizard folder;
* [MOV] split frontend templates in some files to better locate code. There is
now files for homepage, course, lesson, embed and utils in addition to
slide-related profile template;
* [REM] dead (unused) templates;
Commit linked to task ID 1941250 and PR #31272.
Purpose is to ensure more advanced use cases are still supported in new
elearning platform in addition to more public use cases. Fields controlling
access are now
* enroll: who can enroll on course: public (everyone, simply click on join
button), invite (added by already members) and payment (in bridge with
website_sale, if SO with product is confirmed);
* enroll_group_ids: automatically add members of those groups to the channel
to ease having groups for a given subset of users;
* visibility: who can see a channel and its slides: public (everyone, it means
channel is visible on website for example), members (hidden for non members)
* website_published on channels and slides; non publishers cannot see what
is not published, whatever other parameters;
* upload_group_ids: who can upload on a channel;
* download_security on a slide is completely removed as it makes no sense
for most slide types;
To ensure a better user experience responsible of a channel is added in its
members. People uploading a slide are now also allowed to read it to avoid
having inconsistency behavior between upload_group_ids and access rules.
Some tests are added.
This commit is linked to task ID 1942836 and PR #31239.
Co-Authored-By: Aurélien Warnon <awa@odoo.com>
Co-Authored-By: Thibault Delavallée <tde@odoo.com>
Purpose of this commit is to introduce a new way of displaying and managing
slides in eLearning module. Its purpose is to give a better experience to
users when going through a course. Notably a fullscreen mode allows to take
lessons one by one without going out of the elearning display. Integration
of all slide types eases taking the course step by step.
Quiz are introduced in this commit. Those are an addition to slides with
some question / answers (multiple choice). It allows customer to gain karma
and improves gamification. Certifications are still done using the survey
application. Quiz targets only small tests at the end of a given slide.
A new widget is added to display and control slide display in fullscreen
mode. Old display is still available for documentation channels or when
going out of fullscreen mode, to see details on comments / review / statistics
and have access to share options.
This commit is linked to task ID 1902304 and PR #29876. It closes the main
work on refactoring website slides into eLearning, with other tasks already
merged in current community [1][2][3][4][5].
[1] Task ID 1940360 landed at b2149bc7a2: certification inclusion
[2] Task ID 1936153 landed at 6c6179e57c: homepage inclusion
[3] Task ID 1937160 landed at 8b7605c9e5: selling courses
[4] Task ID 1922159 and 1940516 landed at 5fa651cb01 and 6a64c3ce82:
new user profile and gamification of slides / forum
[5] Task ID 1938643 landed at 77b5673a0d: upload channel/slide
Since 556b6454dab07cdf716d404ec0db9aa51a09b165, channel can be linked to a dedicated forum.
But the link could only be done in backend, in the slide.channel configuration
For now on, website_publishers can create a new dedicated forum when they create
a new slide.channel.
Link buttons have been added in both forum and slide.channel headers to navigate easily
between them.
Fix the relation between course and forum in a model point of view.
Task ID : 1922159
PR #31109
Two new sections are added in the profile page : Completed courses and Followed courses
Thoses sections replace the former 'Courses' section.
Use span instead of b tag in profile page
Task ID : 1922159
PR #31109
Purpose of this commit is to improve karma and gamification inclusion in
elearning [1].
* remove a border, replaced by a standard hr, in rank template. It allows to
reuse it easier as we don't necessarily want that border in other templates
using it;
Commit linked to task ID 1941250 and PR #31133.
[1] task ID 1922159 (landed at 5fa651cb01)
Purpose of this commit is to
* clean user avatar controller and its calls;
* extract default image computation;
* add a controller to get slide image even when not having access to the slide
as all slide name and images are displayed even if not available to the
current user;
Commit linked to task ID 1941250 and PR #31133.
This commit fixes various issues introduced by recent commits in slides
* fix slide type computation: using a dict in a fromkeys makes a shared
object for all keys. It is better to fix that behavior;
* correctly display number of course steps in elearning homepage. Currently
number of steps of a course is simply the length of its one2many;
holding slides. However this one depends on access rights which give funny
results like a course with 2 steps for public users and 7 for admin;
Right computation is: number of published lessons, whatever your access
rights are. This is already computed as total_slides;
* people that cannot publish should not be able to unpublish;
Commit linked to task ID 1941250 and PR #31133.
Task #1940360
Subtask of #1902304
Purpose
=======
Adds certification capabilities to the website_slides module.
Channel/courses can now include certifications as a new type of slide.
This new type of slide is available as a "Certification" button on the slide creation
frontend view (next to "Video", "Presentation", ...).
Users have to link the slide to an actual survey that has the 'certificate' field
set to true (that will populate the slide's survey_id field).
Slides of type certification are handled in frontend in a very simple way for now:
- A button "Begin certification" that redirects the user to the related survey frontend.
- A button "Download certification" when the user has succeeded the certification.
- When the survey is done, if it's linked to a slide, a button "Go back to course" allows
the user to go back to the slide frontend.
(There is a special use case for when the website_publisher designing the survey lands on a
certification slide: he is allowed to test the survey with a survey_input created as test_entry)
Survey creation as well as limited time, limited number of attempts, ... are still completely
handled in the survey module. That means that the user will have to first create a suitable survey
that is a certification and only then create a slide of type "certification" and link
the created survey to it.
Ideally, the taking of the survey should be transparently included in the slide frontend but
it requires a full refactoring of the way surveys are submitted. This will most likely come in
a later commit.
This commit is an advanced merge of full eLearning module (see task #1902304).
Task #1940360
Subtask of #1902304
Purpose
=======
Some fields displayed on the slide.slide form view are not relevant
for all slide_types and should be hidden.
This commit proposes a new homepage for slides module evolving towards
an eLearning platform. It includes
* a new main page displaying top courses / channels. It displays 3 most
popular and newest channels as well as its ongoing courses (if logged).
Achievements and karma update done by eLearning community allow to give
a gamification look and feel;
* an 'All' page displaying all courses / channels. Tag groups and tags
allow to search / filter displayed courses;
* a new pimped and revamped display for main course / channel page;
For more details about specifications, send an email to aware people that
will be able to send you mockups. Or see the related task. Thanks to
@qmo-odoo who helped developing this homepage based on its work.
This commit is linked to task ID 1936153 and PR #30770.
Co-Authored-By: qmo-odoo <qmo@odoo.com>
Co-Authored-By: Thibault Delavallee <tde@odoo.com>
This commit squashes several fixes / light improvements related to the new
slides / elearning homepage [1][2].
Containing notably
* clean promote strategy field on channel model: less entries as they
are now used only to display lessons in a given order on channels of
documentation type;
* remove promotional fields, not used anymore since partial access on channel
allowing to have some kind of small preview of slides has been removed;
* use standard image field (image, image_medium and image_small) and use
image_resize_image from tools like all other odoo applications;
* improve image resizing to have medium images better looking on frontend
and use that nice image_large that broke my build yesterday;
* add last publication date change on channel;
* clean dead code;
[1] new homepage task: ID 1936153 and PR #30770
[1] main elearning task: ID 1902304 and PR #29876
Co-Authored-By: Aurélien Warnon <awa@odoo.com>
Co-Authored-By: Thibault Delavallée <tde@odoo.com>
With this commit, the user can activate review on channel content when
creating a channel from frontend, or editing it from backend. Once
activated, the comment tab below the slide content will allow user
to post a comment with optional rating.
The way of commenting is different regarding channel type:
- documentation: user can post comment and vote (list/dislike) on
slide content
- training: user can post comment with review (rating)
Task-1902304
Before this commit, the user can only create a webpage slide
by setting its name, category and tags. On the channel grid,
no tumbnail was shown.
This commit allow the user to upload a cover image from the
slide upload modal and to modify it from form view. the
mimetype of webpage slide is now 'forced' through the
modal to 'text/html' to avoid conflit with 'image/png'
when setting the cover image.
Task-1902304