When a snippet part is removed, like a column, we check that one of
its ancestor has a snippet editor attached and we remove all the empty
element up to and including that ancestor if possible. This way, if we
remove the last column of most snippet, the whole snippet is removed.
The problem is when that ancestor is a main editable area that should
not be able to be removed.
The case is currently probably never occuring but it could be backported
if needed. This is made in preparation of the mega menu task, during
whose implementation it was discovered.
PURPOSE
Purpose of this merge is to provide fixes and usability fixes or
improvements in eLearning.
SPECIFICATIONS
Improve "New content" modal: upload new course content should be revamped
-------------------------------------------------------------------------
* general layout: https://drive.google.com/a/odoo.com/file/d/1zbNO0Vg1262ijkXA6pwSuenMI0h4NsPm/view?usp=drivesdk
* remove picture tab;
* display as two column with preview on right on change of picture
or document;
Do not put odoobot responsible of demo courses
----------------------------------------------
Do not crash if there is any issue loading quiz
-----------------------------------------------
Do not allow fullscreen to bypass ACLs
--------------------------------------
Currently fullscreen takes all information from categorized slides to
display its menu. In order to avoid calls to server some information
is prepared in DOM to speedup loading. It means slide information is
available even when not being member of a course which leads to some content
leak.
This merge fixes that by correctly checking that a slide can be accessed
before allowing to have access to its information and embedded code. Access
of a slide is either member of a course, either course publisher.
Correctly set sequence of newly added content
---------------------------------------------
Purpose of this commit is to add new content at last position in frontend.
Indeed backend uses last position in embedded list view, frontend should
do the same. Moreover when having a lot of content, having everything at
the bottom of the screen at the same position of Add content / section
buttons makes sens.
Specifications
* when adding a new category: add it as last category;
* when adding a new slide in a category: add it as last slide of the
category;
Specific case of slide without category
* when adding a new slide without category: add it as last slide of the
channel (display it as last) but keep it on top in backend view
(display as first);
Improve content list display in frontend of eLearning
* contents without section are now at the bottom;
* fixed alignment of buttons icon (Add Content and Add Section)
* fixed broken design because of title too long
LINKS
Task 2049640 (website slides back2basics and fiximp)
Task 2058595 (eLearning v13 testing)
Task 2064112 (fullscreen bug report)
Task 2061672 (new content bug report)
Improve backend UI, views and user actions
------------------------------------------
Containing
* channel kanban view tweaking;
* channel form view: some spacing and renaming improvements. Also set
advanced field (new content email, share template) as group no one;
* slide kanban view tweaking;
* removed sections from kanban and list view for contents;
* contents form view: various improvements, with notably
* removed field website_url;
* set publishded date is now readonly, tracked and in group_no_one as
it is automatically set when publishing the lesson, and people should
not update it manually;
* removed the sum "Content" and replaced it by a stat button
* reword quiz constraint error messages;
* rating views improvements:
* revamped the kanban view of rating that were a bit broken;
* added a pivot view in Reporting/Reviews;
* updated graph view in Reporting/Reviews;
This commit also provides some usability fixes
* prevent sending email if new content is category;
* email: Prevent displaying an image if there is no image;
Fixes some display issues in eLearning frontend
-----------------------------------------------
* fix the share button in documentation. It was not working as model was
not correctly placed;
* fix top3 users banners broken in mobile;
* fix left menu of fullscreen being behind content on mobile (image, video);
* removed upload button in training channel aside as there are already
buttons available for that purpose;
Revamp "New Course" menu
------------------------
Purpose of this commit is to change the modal to make it more mobile friendly.
Notably remove the two columns.
Allow website publisher to create forum
---------------------------------------
Security file was buggy and not imported.
closesodoo/odoo#36348
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
Add a `check_company` attribute on relational fields to apply a default domain restricting the records to the one of the record's company or without company.
Add a `check_company` method on Model to ensure these domains are respected.
Add a `check_company_auto` attribute on model to call `check_company` at create and write.
Use this in stock, mrp and related addons.
Joint work with
William Henrotin <whe@odoo.com>
Arnold Moyaux <arm@odoo.com>
task-1985992
closesodoo/odoo#36222
Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
Ensure proper domains are applied and enforced on relation fields thanks
to the `check_company` attributes.
Make sure unbuild have proper sequence for each companies.
The produce wizard and workorders company is the one of the production.
The BoM line company_id is the one of its bom_id.
Added some tests.
task-1985992
Ensure proper domains are applied and enforced on relation fields thanks
to the `check_company` attributes.
Adapt `_compute_value_svl` to return the valuation for a specific
company.
Every time a property is read, make sure `force_company` is properly in
the context.
Fixed the ir.rule.
task-1985992
Now that company_id is required on the picking type, make sure we create
as many dropship picking type/rules/sequence as there are companies
task-1985992
Ensure proper domains are applied and enforced on relation fields thanks
to the `check_company` attributes.
product.template
- make responsible a property field in order to ensure proper next activities when a product
is used between multiple companies
stock.putaway.rule
- added a company_id field
stock.move.line
- company_id is not related anymore since a move line can exist without a move until its validation
stock.package_level
- added a company_id field
stock.picking.type
- company_id is now required
stock.production.lot
- added a company_id field, adapted the constraint accordingly
stock.quant
- check the consistency only in inventory mode
stock.quant.package
- company_id is now empty if the package is empty
stock.picking
- company_id is now related to the one of its picking type
Added some tests.
Moved stock_traceability in the `report` directory.
Removed useless /tests/tours/route.js.
task-1985992
Assigning `check_company=True` to a field will
- set a default domain filtering the companies
- allow to call `_check_company` on the records to ensure the domain is
respected
Setting `_check_company_auto = True` on a model will ensure
`_check_company` is called at create and write, enforcing the multi
company domain.
Joint work with Raphael Collet <rco@odoo.com>
task-1985992
Purpose of this commit is to change the modal to make it more mobile friendly.
Notably remove the two columns.
Task 2049640 (website slides back2basics and fiximp)
Fix some display issues in eLearning
* fix the share button in documentation. It was not working as model was
not correctly placed;
* fix top3 users banners broken in mobile;
* fix left menu of fullscreen being behind content on mobile (image, video);
* removed upload button in training channel aside as there are already
buttons available for that purpose;
Task 2049640 (website slides back2basics and fiximp)
Purpose of this commit is to perform a back2basics on eLearning backend
views. It helps users in their daily use of eLearning and improve UI.
Containing
* channel kanban view tweaking;
* channel form view: some spacing and renaming improvements. Also set
advanced field (new content email, share template) as group no one;
* slide kanban view tweaking;
* removed sections from kanban and list view for contents;
* contents form view: various improvements, with notably
* removed field website_url;
* set publishded date is now readonly, tracked and in group_no_one as
it is automatically set when publishing the lesson, and people should
not update it manually;
* removed the sum "Content" and replaced it by a stat button
* reword quiz constraint error messages;
* rating views improvements:
* revamped the kanban view of rating that were a bit broken;
* added a pivot view in Reporting/Reviews;
* updated graph view in Reporting/Reviews;
This commit also provides some usability fixes
* prevent sending email if new content is category;
* email: Prevent displaying an image if there is no image;
LINKS
Task 2049640 (website slides back2basics and fiximp)
Task 2058595 (eLearning v13 testing)
Purpose of this commit is to add new content at last position in frontend.
Indeed backend uses last position in embedded list view, frontend should
do the same. Moreover when having a lot of content, having everything at
the bottom of the screen at the same position of Add content / section
buttons makes sens.
Specifications
* when adding a new category: add it as last category;
* when adding a new slide in a category: add it as last slide of the
category;
Specific case of slide without category
* when adding a new slide without category: add it as last slide of the
channel (display it as last) but keep it on top in backend view
(display as first);
Improve content list display in frontend of eLearning
* contents without section are now at the bottom;
* fixed alignment of buttons icon (Add Content and Add Section)
* fixed broken design because of title too long
Task 2049640 (website slides back2basics and fiximp)
Task 2061672 (new content bug report)
Co-Authored-By: Michaël Mattiello <mcm@odoo.com>
Co-Authored-By: Alexis Lacroix <laa@odoo.com>
Currently fullscreen takes all information from categorized slides to
display its menu. In order to avoid calls to server some information
is prepared in DOM to speedup loading. It means slide information is
available even when not being member of a course which leads to some content
leak.
This commit fixes that by correctly checking that a slide can be accessed
before allowing to have access to its information and embedded code. Access
of a slide is either member of a course, either course publisher.
Task 2058595 (eLearning v13 testing)
Task 2064112 (fullscreen bug report)
Template displaying quiz should not crash if call to server did not answer
correctly. Minimal fix is to have void data to display. Real issue is that
unreadable quiz should not be displayed. This will be fixed in an upcoming
fix.
Task 2058595 (eLearning v13 testing)
Task 2064863 (quiz bug report)
If the session is unbound before a call to this route, this assertion
will raise. The point of this code is not to crash when the parameters
are incorrect or the session unbound - the point is to avoid leaking
incorrect information.
Simply return an empty object to the JS code, it will stop polling after
a single failed attempt instead of crashing.
closesodoo/odoo#36356
Signed-off-by: Damien Bouvy (dbo) <dbo@odoo.com>
`sale`
Delivery Lead Time -> Lead Time
`stock`
Assign owner -> Assign Owner
Task #2058665closesodoo/odoo#36132
Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
When an inventory is canceled, the user is able to edit its locations
and products fields. So, if he/she does and then restart the inventory,
it can have some lines who don't match these fields.
Now when an inventory adjustment is canceled, we delete all its lines.
Its lines will be recreated when the inventory adjustment will be
restarted. Thus, lines will always corresponding to their inventory
`location_ids` and `product_ids`.
Also, a confirmation popup was added to ask if user really want to
cancel the inventory when he/shes clicks on the cancel button (to avoid
users delete their on going inv. adj. by miss clicking).
Task #2058665
Before this commit, forecasted quantity in the product stat button and
in graph/grid view wasn't always equals.
The issue was the forecasted quantity is based on quant in location who
is child of warehouse location, and the `report.inventory.quantity` used
in graph/grid view didn't filter on warehouse location (took all
internal location).
So, completes the domain on `report.inventory.quantity` to get only
quantity in the warehouse.
Same change is applied to the Forecasted Inventory report.
Task #2058665
The canonical tag is important for SEO, indeed it prevents search engines from
indexing duplicate content.
Reasoning
=========
The choice has been made to create the canonical tag automatically depending on
the request path, ignoring the query string, and manually prefixing the
appropriate domain and language code.
Indeed creating it manually for each resource would create a lot of code and
potential mistakes.
It is more dangerous to do it the generic way, but after investigation it
appears that it is an acceptable trade-off since the vast majority of our routes
are well built and already ready for this:
- using query string only for minor features that do not change the main content
- having the models, the ids, the pager and other important features in the path
Override
========
It is still possible to override the default behavior by passing
`canonical_params` manually to the view or to the different methods.
This is done for `/event` because the only way to display Past Events is to add
`date=old`.
Languages
=========
Fix an issue where it was possible for a bot to be on the URL without language
code but to use a language that is not the default language.
Adapt hreflang, because it:
- must only be present on canonical pages
- must always lead to canonical pages
- should not be set if there is no alternate language
Misc
====
task-1958075
closes#12532
Inspired by OCA module `website_canonical_url` courtesy of Jairo Llopis.
closesodoo/odoo#35852
Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
Co-authored-by: Jairo Llopis <jairo.llopis@tecnativa.com>
Co-authored-by: Sébastien Theys <seb@odoo.com>
When the cursor hovers just above the settings icon that appears when
the cursor is in the column is blinking between the pointer and the
"move column" pointer cursor
Task: 2060825
closesodoo/odoo#36377
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
The mobile-specific code relies on the size of the browser <= SM
(currently 767px).
But when phantomjs was used to run the JS tests headlessly there was no
way to force that size for the mobile test suite (e.g. when running from
the command line, runbot...). The only solution was to mock some
variables (isMobile, size_class) in web.config to force them to
mobile-like values (see commits odoo/odoo@9bc5009481 and
odoo/odoo@497dfb6917).
Since the switch to Chrome Headless the browser size is set to a
mobile-friendly size (currently 375x667) when the mobile test suite is
ran. So isMobile is automatically set to true.
The code to mock the web.config has then become redundant.
This commit removes it to only rely on the browser window size for the
mobile test suite execution.
Notes:
When testing manually in the browser it's now required to set the
browser window to a mobile-friendly size. Even if it was already the
case, it will provide a more realistic environment and allows to test
important/behavior-related media queries (e.g. clicking on a button only
visible/present on mobile).
BTW the easiest way to run all tests is to execute them directly using
Chrome Headless (except for debugging of course).
closesodoo/odoo#36328
Signed-off-by: Christophe Monniez (moc) <moc@odoo.com>
Task 2039772
Add a new amount matching mode by taking the amount from the label, based on a regex. The regex must contain a capture group. If multiple groups are matched, there will be an error.
Also add a 'remaining' option for the second line, that puts the remaining amount of the statement in the second line.
closesodoo/odoo#35143
Signed-off-by: Quentin De Paoli (qdp) <qdp@openerp.com>
Part of task 2039772
The second line of reconciliation models (client side) was computed based on the amount of the bank statement instead of the remaining balance, like on the server side.
We also need it to be based on the remaining balance, for the next commit introducing the detection of the amount thanks to a regex on the commuication of the statement.
Commit fff2a30 introduces a dialog to show quantities on hand directly
on sale order line.
This commit replace the dialog by a bootstrap popover
Task 2058670
closesodoo/odoo#36213
Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>