From 0be3c951a030f7c8d7aeb7c81c7428023884c76a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phan=20Sainl=C3=A9ger?= Date: Sun, 29 Mar 2026 15:21:08 +0200 Subject: [PATCH] [MIG] disable_fullscreen_slides: migration to 18.0 and full refactoring --- disable_fullscreen_slides/README.md | 57 ++++++++++++ disable_fullscreen_slides/README.rst | 2 +- disable_fullscreen_slides/__manifest__.py | 4 +- .../controllers/__init__.py | 4 - disable_fullscreen_slides/controllers/main.py | 36 -------- disable_fullscreen_slides/data/data.xml | 6 -- .../i18n/disable_fullscreen_slides.po | 0 disable_fullscreen_slides/i18n/fr.po | 0 disable_fullscreen_slides/models/__init__.py | 0 .../security/ir.model.access.csv | 1 - .../security/security.xml | 32 ------- .../static/src/css/main.css | 11 --- .../src/js/slides_course_slides_list.js | 90 ++----------------- .../static/src/xml/main.xml | 23 ----- disable_fullscreen_slides/views/view.xml | 24 ----- disable_fullscreen_slides/wizard/__init__.py | 0 16 files changed, 66 insertions(+), 224 deletions(-) create mode 100644 disable_fullscreen_slides/README.md delete mode 100644 disable_fullscreen_slides/controllers/__init__.py delete mode 100644 disable_fullscreen_slides/controllers/main.py delete mode 100644 disable_fullscreen_slides/data/data.xml delete mode 100644 disable_fullscreen_slides/i18n/disable_fullscreen_slides.po delete mode 100644 disable_fullscreen_slides/i18n/fr.po delete mode 100644 disable_fullscreen_slides/models/__init__.py delete mode 100644 disable_fullscreen_slides/security/ir.model.access.csv delete mode 100644 disable_fullscreen_slides/security/security.xml delete mode 100644 disable_fullscreen_slides/static/src/css/main.css delete mode 100644 disable_fullscreen_slides/static/src/xml/main.xml delete mode 100644 disable_fullscreen_slides/views/view.xml delete mode 100644 disable_fullscreen_slides/wizard/__init__.py diff --git a/disable_fullscreen_slides/README.md b/disable_fullscreen_slides/README.md new file mode 100644 index 0000000..eb92445 --- /dev/null +++ b/disable_fullscreen_slides/README.md @@ -0,0 +1,57 @@ +# Disable Fullscreen Slides + +Disables automatic full-screen video opening on eLearning website pages. + +## Description + +When navigating an eLearning course on an Odoo website, clicking on a video +slide automatically opens it in fullscreen mode. This module disables that +behavior by overriding the `websiteSlidesCourseSlidesList` widget from +`website_slides` and removing the `_updateHref()` function responsible for +the fullscreen redirect. + +## Installation + +Install this module using the standard Odoo module installation procedure. + +### Dependencies + +- `base` +- `website_slides` +- `web` + +## Configuration + +No configuration is needed. The module works out of the box once installed. + +## Usage + +Once installed, video slides in eLearning courses will open inline instead +of switching to fullscreen mode. No user action is required. + +## Known Issues / Roadmap + +None yet. + +## Bug Tracker + +Bugs are tracked on the +[project issue tracker](https://git.elabore.coop/Elabore/website-tools/issues). +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us fix it by providing detailed feedback. + +## Credits + +### Contributors + +- [Elabore](https://elabore.coop) + +### Funders + +The development of this module has been financially supported by: + +- [Elabore](https://elabore.coop) + +### Maintainer + +This module is maintained by [Elabore](https://elabore.coop). diff --git a/disable_fullscreen_slides/README.rst b/disable_fullscreen_slides/README.rst index 9b9dce5..f0ea6c0 100644 --- a/disable_fullscreen_slides/README.rst +++ b/disable_fullscreen_slides/README.rst @@ -14,7 +14,7 @@ Description =========== disables automatique full-screen while opening a video in elearning website pages by overwriting website_slides/js/slides_course_page/slides_course_slides_liste.js -and _updateHref() fonction +and _updateHref() fonction Known issues / Roadmap ====================== diff --git a/disable_fullscreen_slides/__manifest__.py b/disable_fullscreen_slides/__manifest__.py index b3876d0..7f2cd09 100644 --- a/disable_fullscreen_slides/__manifest__.py +++ b/disable_fullscreen_slides/__manifest__.py @@ -3,7 +3,7 @@ { "name": "disable_fullscreen_slides", - "version": "16.0.1.0.0", + "version": "18.0.1.0.0", "author": "Elabore", "website": "https://elabore.coop", "maintainer": "Elabore", @@ -38,4 +38,4 @@ # and independently installed. Used for synergetic or glue modules. "auto_install": False, "application": False, -} \ No newline at end of file +} diff --git a/disable_fullscreen_slides/controllers/__init__.py b/disable_fullscreen_slides/controllers/__init__.py deleted file mode 100644 index 067df5d..0000000 --- a/disable_fullscreen_slides/controllers/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -## package holder - -import main - diff --git a/disable_fullscreen_slides/controllers/main.py b/disable_fullscreen_slides/controllers/main.py deleted file mode 100644 index d22176a..0000000 --- a/disable_fullscreen_slides/controllers/main.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- - -import logging -import odoo -import odoo.modules.registry -from odoo.modules import get_module_resource -from odoo.tools.translate import _ -from odoo import http - -from odoo.http import request, serialize_exception as _serialize_exception - -_logger = logging.getLogger(__name__) - - -## -## Web Controllers -## - -# class Main(http.Controller): -# -# @http.route('/disable_fullscreen_slides', type='http', auth="none") -# def index(self, s_action=None, db=None, **kw): -# return http.local_redirect('/web', query=request.params, keep_hash=True) -# -# @http.route([ -# '/disable_fullscreen_slides/', -# '/disable_fullscreen_slides//', -# ], type='json', auth="user") -# def load_needaction(self, menu_ids): -# """ Loads needaction counters for specific menu ids. -# -# :return: needaction data -# :rtype: dict(menu_id: {'needaction_enabled': boolean, 'needaction_counter': int}) -# """ -# return request.session.model('ir.ui.menu').get_needaction_data(menu_ids, request.context) -# diff --git a/disable_fullscreen_slides/data/data.xml b/disable_fullscreen_slides/data/data.xml deleted file mode 100644 index 8a71be7..0000000 --- a/disable_fullscreen_slides/data/data.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/disable_fullscreen_slides/i18n/disable_fullscreen_slides.po b/disable_fullscreen_slides/i18n/disable_fullscreen_slides.po deleted file mode 100644 index e69de29..0000000 diff --git a/disable_fullscreen_slides/i18n/fr.po b/disable_fullscreen_slides/i18n/fr.po deleted file mode 100644 index e69de29..0000000 diff --git a/disable_fullscreen_slides/models/__init__.py b/disable_fullscreen_slides/models/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/disable_fullscreen_slides/security/ir.model.access.csv b/disable_fullscreen_slides/security/ir.model.access.csv deleted file mode 100644 index 301b7da..0000000 --- a/disable_fullscreen_slides/security/ir.model.access.csv +++ /dev/null @@ -1 +0,0 @@ -id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink diff --git a/disable_fullscreen_slides/security/security.xml b/disable_fullscreen_slides/security/security.xml deleted file mode 100644 index e5cc595..0000000 --- a/disable_fullscreen_slides/security/security.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - diff --git a/disable_fullscreen_slides/static/src/css/main.css b/disable_fullscreen_slides/static/src/css/main.css deleted file mode 100644 index 3e9c36e..0000000 --- a/disable_fullscreen_slides/static/src/css/main.css +++ /dev/null @@ -1,11 +0,0 @@ -/** - * Main css of disable_fullscreen_slides addon. - */ - - -/* -.oe-disable_fullscreen_slides { - color: black -} -*/ - diff --git a/disable_fullscreen_slides/static/src/js/slides_course_slides_list.js b/disable_fullscreen_slides/static/src/js/slides_course_slides_list.js index b469288..b30f74f 100644 --- a/disable_fullscreen_slides/static/src/js/slides_course_slides_list.js +++ b/disable_fullscreen_slides/static/src/js/slides_course_slides_list.js @@ -1,90 +1,12 @@ /** @odoo-module **/ -import publicWidget from 'web.public.widget'; -import { _t } from 'web.core'; -import { SlideCoursePage } from '@website_slides/js/slides_course_page'; - -/** overwrite all website_slides/js/slides_course_page/slides_course_slides_liste.js to remove _updateHref()**/ -publicWidget.registry.websiteSlidesCourseSlidesList = SlideCoursePage.extend({ - selector: '.o_wslides_slides_list', - - start: function () { - this._super.apply(this,arguments); - this.channelId = this.$el.data('channelId'); - this._bindSortable(); - }, - - //-------------------------------------------------------------------------- - // Private - //--------------------------------------------------------------------------, +import { patch } from "@web/core/utils/patch"; +import websiteSlidesCourseSlidesList from "@website_slides/js/slides_course_slides_list"; +patch(websiteSlidesCourseSlidesList.prototype, { /** - * Bind the sortable jQuery widget to both - * - course sections - * - course slides - * - * @private + * Override to prevent fullscreen mode when clicking on slide links. + * The original method appends "fullscreen=1" to all slide hrefs. */ - _bindSortable: function () { - this.$('ul.o_wslides_js_slides_list_container').sortable({ - handle: '.o_wslides_slides_list_drag', - stop: this._reorderSlides.bind(this), - items: '.o_wslides_slide_list_category', - placeholder: 'o_wslides_slides_list_slide_hilight position-relative mb-1' - }); - - this.$('.o_wslides_js_slides_list_container ul').sortable({ - handle: '.o_wslides_slides_list_drag', - connectWith: '.o_wslides_js_slides_list_container ul', - stop: this._reorderSlides.bind(this), - items: '.o_wslides_slides_list_slide:not(.o_wslides_js_slides_list_empty)', - placeholder: 'o_wslides_slides_list_slide_hilight position-relative mb-1' - }); - }, - - /** - * This method will check that a section is empty/not empty - * when the slides are reordered and show/hide the - * "Empty category" placeholder. - * - * @private - */ - _checkForEmptySections: function (){ - this.$('.o_wslides_slide_list_category').each(function (){ - var $categoryHeader = $(this).find('.o_wslides_slide_list_category_header'); - var categorySlideCount = $(this).find('.o_wslides_slides_list_slide:not(.o_not_editable)').length; - var $emptyFlagContainer = $categoryHeader.find('.o_wslides_slides_list_drag').first(); - var $emptyFlag = $emptyFlagContainer.find('small'); - if (categorySlideCount === 0 && $emptyFlag.length === 0){ - $emptyFlagContainer.append($('', { - 'class': "ms-1 text-muted fw-bold", - text: _t("(empty)") - })); - } else if (categorySlideCount > 0 && $emptyFlag.length > 0){ - $emptyFlag.remove(); - } - }); - }, - - _getSlides: function (){ - var categories = []; - this.$('.o_wslides_js_list_item').each(function (){ - categories.push(parseInt($(this).data('slideId'))); - }); - return categories; - }, - _reorderSlides: function (){ - var self = this; - self._rpc({ - route: '/web/dataset/resequence', - params: { - model: "slide.slide", - ids: self._getSlides() - } - }).then(function (res) { - self._checkForEmptySections(); - }); - }, + _updateHref() {}, }); - -export default publicWidget.registry.websiteSlidesCourseSlidesList; diff --git a/disable_fullscreen_slides/static/src/xml/main.xml b/disable_fullscreen_slides/static/src/xml/main.xml deleted file mode 100644 index c715cfb..0000000 --- a/disable_fullscreen_slides/static/src/xml/main.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - diff --git a/disable_fullscreen_slides/views/view.xml b/disable_fullscreen_slides/views/view.xml deleted file mode 100644 index 1a59e31..0000000 --- a/disable_fullscreen_slides/views/view.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - diff --git a/disable_fullscreen_slides/wizard/__init__.py b/disable_fullscreen_slides/wizard/__init__.py deleted file mode 100644 index e69de29..0000000