From 29f21a23f1ed90dcc0b62bf5652df78e59b6cb41 Mon Sep 17 00:00:00 2001 From: qsm-odoo Date: Thu, 23 Jun 2022 22:47:05 +0200 Subject: [PATCH 01/88] [MOV] website, *: move static files to prepare website UI in backend *: web_editor, web_unsplash, website_event, website_blog, website_event_meet, website_forum, website_links, website_livechat, website_sale_slides, website_slides With [1], many files will move as the website UI is moved in the backend. This commit moves all the static files (JS/CSS/XML) to their final destination without modifying them, in an attempt to preserve some history and ease some forward-ports. After this commit, everything works as before as the files are simply renamed and the references to them adapted. However, technically, many files will actually be split into multiple files by the work made with [1]. While it is theoretically possible to preserve history over multiples files, this would require inner merge commits, which does not go well with robodoo. In those cases, the "main" file of the split was chosen. Mainly, 4 worth-noticing splits were detected (and so the history moved only to the first file): move: addons/web_editor/static/src/js/wysiwyg/widgets/media.js to: addons/web_editor/static/src/components/media_dialog/file_selector.js - addons/web_editor/static/src/components/media_dialog/search_media.js - addons/web_editor/static/src/components/media_dialog/image_selector.js - addons/web_editor/static/src/components/media_dialog/document_selector.js - addons/web_editor/static/src/components/media_dialog/icon_selector.js - addons/web_editor/static/src/components/media_dialog/video_selector.js move: addons/web_editor/static/src/js/wysiwyg/widgets/upload_progress_toast.js to: addons/web_editor/static/src/components/upload_progress_toast/upload_progress_toast.js - addons/web_editor/static/src/components/upload_progress_toast/upload_service.js move: addons/website/static/src/js/menu/content.js to: addons/website/static/src/components/dialog/edit_menu.js - addons/website/static/src/components/dialog/page_properties.js - addons/website/static/src/components/wysiwyg_adapter/page_options.js - addons/website/static/src/js/website_page_list.js move: addons/website/static/src/js/menu/edit.js to: addons/website/static/src/components/wysiwyg_adapter/wysiwyg_adapter.js - addons/website/static/src/systray_items/edit_website.js - addons/website/static/src/components/editor/editor.js Notice that as those moves were made post-work and the rest of the work (80+ commits) rebased on top of it, some commits may remove more than they should in a moved file to then reimplement some of what was removed in a later commit... ideally this should have been avoided of course but keep in mind that the final files are just entirely rewritten and split as converted to OWL. It seemed however worth it to keep most of the inner history of the work made here to see step by step what was done. [1] will obviously be merged with a merge commit, binding the whole work together. [1]: https://github.com/odoo/odoo/pull/89223 task-2687506 --- addons/web_editor/__manifest__.py | 3 +++ .../media_dialog/file_selector.js} | 2 +- .../media_dialog}/media_dialog.js | 0 .../upload_progress_toast.js | 0 addons/web_unsplash/__manifest__.py | 4 ++-- .../media_dialog/image_selector.js} | 2 +- .../media_dialog/image_selector.xml} | 0 .../unsplash_service.js} | 0 addons/website/__manifest__.py | 24 +++++++++---------- .../configurator/configurator.js | 2 +- .../configurator}/configurator.scss | 0 .../configurator/configurator.xml | 0 .../ace_editor/ace_editor.js} | 0 .../dialog/edit_menu.js} | 8 +++---- .../dialog/edit_menu.xml} | 0 .../dialog/page_properties.xml} | 0 .../src/{js/menu => components/dialog}/seo.js | 18 +++++++------- .../dialog/seo.xml} | 0 .../fullscreen_indication.js | 0 .../media_dialog/image_selector.js} | 0 .../translator}/translator.xml | 0 .../wysiwyg_adapter/wysiwyg_adapter.js} | 0 .../static/src/js/content/website_root.js | 2 +- .../mobile_preview.js} | 0 .../{js/menu => systray_items}/new_content.js | 0 .../translate_website.js} | 2 +- addons/website_blog/__manifest__.py | 2 +- .../new_content.js} | 0 addons/website_event/__manifest__.py | 4 ++-- .../new_content.js} | 0 .../options.js} | 0 addons/website_event_meet/__manifest__.py | 2 +- .../options.js} | 0 addons/website_forum/__manifest__.py | 2 +- .../new_content.js} | 0 addons/website_links/__manifest__.py | 2 +- .../navbar/navbar.js} | 0 .../new_content.js} | 0 .../src/js/website_sale_slides_editor.js | 2 +- addons/website_slides/__manifest__.py | 2 +- .../new_content.js} | 0 41 files changed, 43 insertions(+), 40 deletions(-) rename addons/web_editor/static/src/{js/wysiwyg/widgets/media.js => components/media_dialog/file_selector.js} (99%) rename addons/web_editor/static/src/{js/wysiwyg/widgets => components/media_dialog}/media_dialog.js (100%) rename addons/web_editor/static/src/{js/wysiwyg/widgets => components/upload_progress_toast}/upload_progress_toast.js (100%) rename addons/web_unsplash/static/src/{js/unsplash_image_widget.js => components/media_dialog/image_selector.js} (99%) rename addons/web_unsplash/static/src/{xml/unsplash_image_widget.xml => components/media_dialog/image_selector.xml} (100%) rename addons/web_unsplash/static/src/{js/unsplashapi.js => services/unsplash_service.js} (100%) rename addons/website/static/src/{components => client_actions}/configurator/configurator.js (99%) rename addons/website/static/src/{scss => client_actions/configurator}/configurator.scss (100%) rename addons/website/static/src/{components => client_actions}/configurator/configurator.xml (100%) rename addons/website/static/src/{js/widgets/ace.js => components/ace_editor/ace_editor.js} (100%) rename addons/website/static/src/{js/menu/content.js => components/dialog/edit_menu.js} (99%) rename addons/website/static/src/{xml/website.contentMenu.xml => components/dialog/edit_menu.xml} (100%) rename addons/website/static/src/{xml/website.pageProperties.xml => components/dialog/page_properties.xml} (100%) rename addons/website/static/src/{js/menu => components/dialog}/seo.js (98%) rename addons/website/static/src/{xml/website.seo.xml => components/dialog/seo.xml} (100%) rename addons/website/static/src/{js/widgets => components/fullscreen_indication}/fullscreen_indication.js (100%) rename addons/website/static/src/{js/widgets/media.js => components/media_dialog/image_selector.js} (100%) rename addons/website/static/src/{xml => components/translator}/translator.xml (100%) rename addons/website/static/src/{js/menu/edit.js => components/wysiwyg_adapter/wysiwyg_adapter.js} (100%) rename addons/website/static/src/{js/menu/mobile_view.js => systray_items/mobile_preview.js} (100%) rename addons/website/static/src/{js/menu => systray_items}/new_content.js (100%) rename addons/website/static/src/{js/menu/translate.js => systray_items/translate_website.js} (99%) rename addons/website_blog/static/src/js/{website_blog.editor.js => systray_items/new_content.js} (100%) rename addons/website_event/static/src/js/{website_event.editor.js => systray_items/new_content.js} (100%) rename addons/website_event/static/src/{js/website_event_set_customize_options.js => snippets/options.js} (100%) rename addons/website_event_meet/static/src/js/{customize_options.js => snippets/options.js} (100%) rename addons/website_forum/static/src/js/{website_forum.editor.js => systray_items/new_content.js} (100%) rename addons/website_links/static/src/{js/website_links_menu.js => components/navbar/navbar.js} (100%) rename addons/website_livechat/static/src/js/{website_livechat.editor.js => systray_items/new_content.js} (100%) rename addons/website_slides/static/src/js/{website_slides.editor.js => systray_items/new_content.js} (100%) diff --git a/addons/web_editor/__manifest__.py b/addons/web_editor/__manifest__.py index 3a71ebdc627..1649e9fda5e 100644 --- a/addons/web_editor/__manifest__.py +++ b/addons/web_editor/__manifest__.py @@ -78,6 +78,9 @@ Odoo Web Editor widget. # widgets & plugins 'web_editor/static/src/js/wysiwyg/widgets/**/*', + 'web_editor/static/src/components/media_dialog/file_selector.js', + 'web_editor/static/src/components/media_dialog/media_dialog.js', + 'web_editor/static/src/components/upload_progress_toast/upload_progress_toast.js', 'web_editor/static/src/js/editor/snippets.editor.js', 'web_editor/static/src/js/editor/toolbar.js', 'web_editor/static/src/js/editor/snippets.options.js', diff --git a/addons/web_editor/static/src/js/wysiwyg/widgets/media.js b/addons/web_editor/static/src/components/media_dialog/file_selector.js similarity index 99% rename from addons/web_editor/static/src/js/wysiwyg/widgets/media.js rename to addons/web_editor/static/src/components/media_dialog/file_selector.js index 3cac0191254..fd6470098ea 100644 --- a/addons/web_editor/static/src/js/wysiwyg/widgets/media.js +++ b/addons/web_editor/static/src/components/media_dialog/file_selector.js @@ -11,7 +11,7 @@ var Widget = require('web.Widget'); var session = require('web.session'); const {removeOnImageChangeAttrs} = require('web_editor.image_processing'); const {getCSSVariableValue, DEFAULT_PALETTE} = require('web_editor.utils'); -const { UploadProgressToast } = require('@web_editor/js/wysiwyg/widgets/upload_progress_toast'); +const { UploadProgressToast } = require('@web_editor/components/upload_progress_toast/upload_progress_toast'); var QWeb = core.qweb; var _t = core._t; diff --git a/addons/web_editor/static/src/js/wysiwyg/widgets/media_dialog.js b/addons/web_editor/static/src/components/media_dialog/media_dialog.js similarity index 100% rename from addons/web_editor/static/src/js/wysiwyg/widgets/media_dialog.js rename to addons/web_editor/static/src/components/media_dialog/media_dialog.js diff --git a/addons/web_editor/static/src/js/wysiwyg/widgets/upload_progress_toast.js b/addons/web_editor/static/src/components/upload_progress_toast/upload_progress_toast.js similarity index 100% rename from addons/web_editor/static/src/js/wysiwyg/widgets/upload_progress_toast.js rename to addons/web_editor/static/src/components/upload_progress_toast/upload_progress_toast.js diff --git a/addons/web_unsplash/__manifest__.py b/addons/web_unsplash/__manifest__.py index 30b9591fa5c..8fd5603f0e0 100644 --- a/addons/web_unsplash/__manifest__.py +++ b/addons/web_unsplash/__manifest__.py @@ -13,8 +13,8 @@ 'auto_install': True, 'assets': { 'web_editor.assets_wysiwyg': [ - 'web_unsplash/static/src/js/unsplashapi.js', - 'web_unsplash/static/src/js/unsplash_image_widget.js', + 'web_unsplash/static/src/services/unsplash_service.js', + 'web_unsplash/static/src/components/media_dialog/image_selector.js', ], 'web.assets_frontend': [ 'web_unsplash/static/src/js/unsplash_beacon.js', diff --git a/addons/web_unsplash/static/src/js/unsplash_image_widget.js b/addons/web_unsplash/static/src/components/media_dialog/image_selector.js similarity index 99% rename from addons/web_unsplash/static/src/js/unsplash_image_widget.js rename to addons/web_unsplash/static/src/components/media_dialog/image_selector.js index d01d2d451e4..073def5314a 100644 --- a/addons/web_unsplash/static/src/js/unsplash_image_widget.js +++ b/addons/web_unsplash/static/src/components/media_dialog/image_selector.js @@ -22,7 +22,7 @@ delete originalEvents['click .o_existing_attachment_cell']; widgetsMedia.ImageWidget.include({ xmlDependencies: widgetsMedia.ImageWidget.prototype.xmlDependencies.concat( - ['/web_unsplash/static/src/xml/unsplash_image_widget.xml'] + ['/web_unsplash/static/src/components/media_dialog/image_selector.xml'] ), events: _.extend({}, widgetsMedia.ImageWidget.prototype.events, { 'click .o_unsplash_attachment_cell[data-imgid]': '_onUnsplashImgClick', diff --git a/addons/web_unsplash/static/src/xml/unsplash_image_widget.xml b/addons/web_unsplash/static/src/components/media_dialog/image_selector.xml similarity index 100% rename from addons/web_unsplash/static/src/xml/unsplash_image_widget.xml rename to addons/web_unsplash/static/src/components/media_dialog/image_selector.xml diff --git a/addons/web_unsplash/static/src/js/unsplashapi.js b/addons/web_unsplash/static/src/services/unsplash_service.js similarity index 100% rename from addons/web_unsplash/static/src/js/unsplashapi.js rename to addons/web_unsplash/static/src/services/unsplash_service.js diff --git a/addons/website/__manifest__.py b/addons/website/__manifest__.py index f512f404f5a..1a80ba97813 100644 --- a/addons/website/__manifest__.py +++ b/addons/website/__manifest__.py @@ -125,7 +125,7 @@ 'website/static/src/js/utils.js', 'website/static/src/js/content/website_root.js', 'website/static/src/js/widgets/dialog.js', - 'website/static/src/js/widgets/fullscreen_indication.js', + 'website/static/src/components/fullscreen_indication/fullscreen_indication.js', 'website/static/src/js/content/compatibility.js', 'website/static/src/js/content/menu.js', 'website/static/src/js/content/snippets.animation.js', @@ -212,7 +212,7 @@ 'website/static/src/snippets/s_process_steps/options.js', 'website/static/src/js/editor/wysiwyg.js', 'website/static/src/js/editor/widget_link.js', - 'website/static/src/js/widgets/media.js', + 'website/static/src/components/media_dialog/image_selector.js', 'website/static/src/js/widgets/link_popover_widget.js', ], 'website.assets_editor': [ @@ -222,24 +222,24 @@ 'website/static/src/scss/website.editor.ui.scss', 'website/static/src/scss/website.theme_install.scss', 'website/static/src/js/form_editor_registry.js', - 'website/static/src/js/menu/content.js', + 'website/static/src/components/dialog/edit_menu.js', 'website/static/src/js/menu/customize.js', 'website/static/src/js/menu/debug_menu.js', - 'website/static/src/js/menu/edit.js', - 'website/static/src/js/menu/mobile_view.js', - 'website/static/src/js/menu/new_content.js', - 'website/static/src/js/menu/seo.js', - 'website/static/src/js/menu/translate.js', + 'website/static/src/components/wysiwyg_adapter/wysiwyg_adapter.js', + 'website/static/src/systray_items/mobile_preview.js', + 'website/static/src/systray_items/new_content.js', + 'website/static/src/components/dialog/seo.js', + 'website/static/src/systray_items/translate_website.js', 'website/static/src/js/set_view_track.js', 'website/static/src/js/tours/homepage.js', 'website/static/src/js/tours/tour_utils.js', - 'website/static/src/js/widgets/ace.js', + 'website/static/src/components/ace_editor/ace_editor.js', ], 'web.assets_qweb': [ 'website/static/src/xml/website.backend.xml', 'website/static/src/xml/website_widget.xml', 'website/static/src/xml/theme_preview.xml', - 'website/static/src/components/configurator/configurator.xml', + 'website/static/src/client_actions/configurator/configurator.xml', ], 'website.test_bundle': [ '/web/static/lib/qweb/qweb2.js', @@ -251,11 +251,11 @@ 'http://test.external.link/style2.css', ], 'website.website_configurator_assets_js': [ - '/website/static/src/components/configurator/configurator.js', + '/website/static/src/client_actions/configurator/configurator.js', ], 'website.website_configurator_assets_scss': [ ('include', 'web.assets_frontend'), - '/website/static/src/scss/configurator.scss', + '/website/static/src/client_actions/configurator/configurator.scss', '/website/static/src/scss/website.theme_install.scss', '/website/static/src/scss/website.wysiwyg.scss' ] diff --git a/addons/website/static/src/components/configurator/configurator.js b/addons/website/static/src/client_actions/configurator/configurator.js similarity index 99% rename from addons/website/static/src/components/configurator/configurator.js rename to addons/website/static/src/client_actions/configurator/configurator.js index 6e128184ecd..20b18f0cb36 100644 --- a/addons/website/static/src/components/configurator/configurator.js +++ b/addons/website/static/src/client_actions/configurator/configurator.js @@ -746,7 +746,7 @@ async function setup() { if (!env.state.industries) { await skipConfigurator(env.services); } else { - const templates = await (await fetch('/website/static/src/components/configurator/configurator.xml')).text(); + const templates = await (await fetch('/website/static/src/client_actions/configurator/configurator.xml')).text(); const app = new App(Configurator, { env, dev: env.debug, diff --git a/addons/website/static/src/scss/configurator.scss b/addons/website/static/src/client_actions/configurator/configurator.scss similarity index 100% rename from addons/website/static/src/scss/configurator.scss rename to addons/website/static/src/client_actions/configurator/configurator.scss diff --git a/addons/website/static/src/components/configurator/configurator.xml b/addons/website/static/src/client_actions/configurator/configurator.xml similarity index 100% rename from addons/website/static/src/components/configurator/configurator.xml rename to addons/website/static/src/client_actions/configurator/configurator.xml diff --git a/addons/website/static/src/js/widgets/ace.js b/addons/website/static/src/components/ace_editor/ace_editor.js similarity index 100% rename from addons/website/static/src/js/widgets/ace.js rename to addons/website/static/src/components/ace_editor/ace_editor.js diff --git a/addons/website/static/src/js/menu/content.js b/addons/website/static/src/components/dialog/edit_menu.js similarity index 99% rename from addons/website/static/src/js/menu/content.js rename to addons/website/static/src/components/dialog/edit_menu.js index 7c467f021b6..6cb7809f507 100644 --- a/addons/website/static/src/js/menu/content.js +++ b/addons/website/static/src/components/dialog/edit_menu.js @@ -17,7 +17,7 @@ var qweb = core.qweb; var PagePropertiesDialog = weWidgets.Dialog.extend({ template: 'website.pagesMenu.page_info', xmlDependencies: weWidgets.Dialog.prototype.xmlDependencies.concat( - ['/website/static/src/xml/website.pageProperties.xml'] + ['/website/static/src/components/dialog/page_properties.xml'] ), events: _.extend({}, weWidgets.Dialog.prototype.events, { 'keyup input#page_name': '_onNameChanged', @@ -474,7 +474,7 @@ var MenuEntryDialog = weWidgets.LinkDialog.extend({ isNewWindow: data.new_window, }, data || {})); - this.linkWidget.xmlDependencies = this.linkWidget.xmlDependencies.concat(['/website/static/src/xml/website.contentMenu.xml']); + this.linkWidget.xmlDependencies = this.linkWidget.xmlDependencies.concat(['/website/static/src/components/dialog/edit_menu.xml']); const oldSave = this.linkWidget.save; /** @@ -521,7 +521,7 @@ var MenuEntryDialog = weWidgets.LinkDialog.extend({ var SelectEditMenuDialog = weWidgets.Dialog.extend({ template: 'website.contentMenu.dialog.select', xmlDependencies: weWidgets.Dialog.prototype.xmlDependencies.concat( - ['/website/static/src/xml/website.contentMenu.xml'] + ['/website/static/src/components/dialog/edit_menu.xml'] ), /** @@ -552,7 +552,7 @@ var SelectEditMenuDialog = weWidgets.Dialog.extend({ var EditMenuDialog = weWidgets.Dialog.extend({ template: 'website.contentMenu.dialog.edit', xmlDependencies: weWidgets.Dialog.prototype.xmlDependencies.concat( - ['/website/static/src/xml/website.contentMenu.xml'] + ['/website/static/src/components/dialog/edit_menu.xml'] ), events: _.extend({}, weWidgets.Dialog.prototype.events, { 'click a.js_add_menu': '_onAddMenuButtonClick', diff --git a/addons/website/static/src/xml/website.contentMenu.xml b/addons/website/static/src/components/dialog/edit_menu.xml similarity index 100% rename from addons/website/static/src/xml/website.contentMenu.xml rename to addons/website/static/src/components/dialog/edit_menu.xml diff --git a/addons/website/static/src/xml/website.pageProperties.xml b/addons/website/static/src/components/dialog/page_properties.xml similarity index 100% rename from addons/website/static/src/xml/website.pageProperties.xml rename to addons/website/static/src/components/dialog/page_properties.xml diff --git a/addons/website/static/src/js/menu/seo.js b/addons/website/static/src/components/dialog/seo.js similarity index 98% rename from addons/website/static/src/js/menu/seo.js rename to addons/website/static/src/components/dialog/seo.js index 54cc4b926be..143ca221014 100644 --- a/addons/website/static/src/js/menu/seo.js +++ b/addons/website/static/src/components/dialog/seo.js @@ -21,7 +21,7 @@ var WORD_SEPARATORS_REGEX = '([\\u2000-\\u206F\\u2E00-\\u2E7F\'!"#\\$%&\\(\\)\\* var Suggestion = Widget.extend({ template: 'website.seo_suggestion', - xmlDependencies: ['/website/static/src/xml/website.seo.xml'], + xmlDependencies: ['/website/static/src/components/dialog/seo.xml'], events: { 'click .o_seo_suggestion': 'select', }, @@ -37,7 +37,7 @@ var Suggestion = Widget.extend({ var SuggestionList = Widget.extend({ template: 'website.seo_suggestion_list', - xmlDependencies: ['/website/static/src/xml/website.seo.xml'], + xmlDependencies: ['/website/static/src/components/dialog/seo.xml'], init: function (parent, options) { this.root = options.root; @@ -93,7 +93,7 @@ var SuggestionList = Widget.extend({ var Keyword = Widget.extend({ template: 'website.seo_keyword', - xmlDependencies: ['/website/static/src/xml/website.seo.xml'], + xmlDependencies: ['/website/static/src/components/dialog/seo.xml'], events: { 'click a[data-action=remove-keyword]': 'destroy', }, @@ -149,7 +149,7 @@ var Keyword = Widget.extend({ var KeywordList = Widget.extend({ template: 'website.seo_list', - xmlDependencies: ['/website/static/src/xml/website.seo.xml'], + xmlDependencies: ['/website/static/src/components/dialog/seo.xml'], maxKeywords: 10, init: function (parent, options) { @@ -206,7 +206,7 @@ var KeywordList = Widget.extend({ var Preview = Widget.extend({ template: 'website.seo_preview', - xmlDependencies: ['/website/static/src/xml/website.seo.xml'], + xmlDependencies: ['/website/static/src/components/dialog/seo.xml'], init: function (parent, options) { this.title = options.title; @@ -318,7 +318,7 @@ var MetaTitleDescription = Widget.extend({ // Basically we don't want the too small alert when the field is empty and // we start typing on it. template: 'website.seo_meta_title_description', - xmlDependencies: ['/website/static/src/xml/website.seo.xml'], + xmlDependencies: ['/website/static/src/components/dialog/seo.xml'], events: { 'input input[name=website_meta_title]': '_titleChanged', 'input input[name=website_seo_name]': '_seoNameChanged', @@ -485,7 +485,7 @@ var MetaTitleDescription = Widget.extend({ var MetaKeywords = Widget.extend({ // Form and table for SEO meta keywords template: 'website.seo_meta_keywords', - xmlDependencies: ['/website/static/src/xml/website.seo.xml'], + xmlDependencies: ['/website/static/src/components/dialog/seo.xml'], events: { 'keyup input[name=website_meta_keywords]': '_confirmKeyword', 'click button[data-action=add]': '_addKeyword', @@ -569,7 +569,7 @@ var MetaKeywords = Widget.extend({ var MetaImageSelector = Widget.extend({ template: 'website.seo_meta_image_selector', - xmlDependencies: ['/website/static/src/xml/website.seo.xml'], + xmlDependencies: ['/website/static/src/components/dialog/seo.xml'], events: { 'click .o_meta_img_upload': '_onClickUploadImg', 'click .o_meta_img': '_onClickSelectImg', @@ -670,7 +670,7 @@ var MetaImageSelector = Widget.extend({ var SeoConfigurator = Dialog.extend({ template: 'website.seo_configuration', xmlDependencies: Dialog.prototype.xmlDependencies.concat( - ['/website/static/src/xml/website.seo.xml'] + ['/website/static/src/components/dialog/seo.xml'] ), canEditTitle: false, canEditDescription: false, diff --git a/addons/website/static/src/xml/website.seo.xml b/addons/website/static/src/components/dialog/seo.xml similarity index 100% rename from addons/website/static/src/xml/website.seo.xml rename to addons/website/static/src/components/dialog/seo.xml diff --git a/addons/website/static/src/js/widgets/fullscreen_indication.js b/addons/website/static/src/components/fullscreen_indication/fullscreen_indication.js similarity index 100% rename from addons/website/static/src/js/widgets/fullscreen_indication.js rename to addons/website/static/src/components/fullscreen_indication/fullscreen_indication.js diff --git a/addons/website/static/src/js/widgets/media.js b/addons/website/static/src/components/media_dialog/image_selector.js similarity index 100% rename from addons/website/static/src/js/widgets/media.js rename to addons/website/static/src/components/media_dialog/image_selector.js diff --git a/addons/website/static/src/xml/translator.xml b/addons/website/static/src/components/translator/translator.xml similarity index 100% rename from addons/website/static/src/xml/translator.xml rename to addons/website/static/src/components/translator/translator.xml diff --git a/addons/website/static/src/js/menu/edit.js b/addons/website/static/src/components/wysiwyg_adapter/wysiwyg_adapter.js similarity index 100% rename from addons/website/static/src/js/menu/edit.js rename to addons/website/static/src/components/wysiwyg_adapter/wysiwyg_adapter.js diff --git a/addons/website/static/src/js/content/website_root.js b/addons/website/static/src/js/content/website_root.js index 44edaa02ac3..0f90fcfb87e 100644 --- a/addons/website/static/src/js/content/website_root.js +++ b/addons/website/static/src/js/content/website_root.js @@ -7,7 +7,7 @@ import {Markup} from 'web.utils'; import session from 'web.session'; import publicRootData from 'web.public.root'; import "web.zoomodoo"; -import { FullscreenIndication } from '@website/js/widgets/fullscreen_indication'; +import { FullscreenIndication } from '@website/components/fullscreen_indication/fullscreen_indication'; export const WebsiteRoot = publicRootData.PublicRoot.extend(KeyboardNavigationMixin, { // TODO remove KeyboardNavigationMixin in master diff --git a/addons/website/static/src/js/menu/mobile_view.js b/addons/website/static/src/systray_items/mobile_preview.js similarity index 100% rename from addons/website/static/src/js/menu/mobile_view.js rename to addons/website/static/src/systray_items/mobile_preview.js diff --git a/addons/website/static/src/js/menu/new_content.js b/addons/website/static/src/systray_items/new_content.js similarity index 100% rename from addons/website/static/src/js/menu/new_content.js rename to addons/website/static/src/systray_items/new_content.js diff --git a/addons/website/static/src/js/menu/translate.js b/addons/website/static/src/systray_items/translate_website.js similarity index 99% rename from addons/website/static/src/js/menu/translate.js rename to addons/website/static/src/systray_items/translate_website.js index dd12fa2914b..cca36d65cec 100644 --- a/addons/website/static/src/js/menu/translate.js +++ b/addons/website/static/src/systray_items/translate_website.js @@ -18,7 +18,7 @@ var localStorageNoDialogKey = 'website_translator_nodialog'; var TranslatorInfoDialog = Dialog.extend({ template: 'website.TranslatorInfoDialog', xmlDependencies: Dialog.prototype.xmlDependencies.concat( - ['/website/static/src/xml/translator.xml'] + ['/website/static/src/components/translator/translator.xml'] ), /** diff --git a/addons/website_blog/__manifest__.py b/addons/website_blog/__manifest__.py index 61d3dba049f..3db7e32d2a3 100644 --- a/addons/website_blog/__manifest__.py +++ b/addons/website_blog/__manifest__.py @@ -35,7 +35,7 @@ 'website_blog/static/src/snippets/s_blog_posts/options.js', ], 'website.assets_editor': [ - 'website_blog/static/src/js/website_blog.editor.js', + 'website_blog/static/src/js/systray_items/new_content.js', 'website_blog/static/src/js/tours/website_blog.js', ], 'web.assets_frontend': [ diff --git a/addons/website_blog/static/src/js/website_blog.editor.js b/addons/website_blog/static/src/js/systray_items/new_content.js similarity index 100% rename from addons/website_blog/static/src/js/website_blog.editor.js rename to addons/website_blog/static/src/js/systray_items/new_content.js diff --git a/addons/website_event/__manifest__.py b/addons/website_event/__manifest__.py index be764f0b36a..8a6650cddda 100644 --- a/addons/website_event/__manifest__.py +++ b/addons/website_event/__manifest__.py @@ -58,10 +58,10 @@ 'website_event/static/src/js/register_toaster_widget.js', 'website_event/static/src/js/website_event.js', 'website_event/static/src/js/website_event_ticket_details.js', - 'website_event/static/src/js/website_event_set_customize_options.js', + 'website_event/static/src/snippets/options.js', ], 'website.assets_editor': [ - 'website_event/static/src/js/website_event.editor.js', + 'website_event/static/src/js/systray_items/new_content.js', ], 'website.assets_wysiwyg': [ '/website_event/static/src/snippets/s_events/options.js', diff --git a/addons/website_event/static/src/js/website_event.editor.js b/addons/website_event/static/src/js/systray_items/new_content.js similarity index 100% rename from addons/website_event/static/src/js/website_event.editor.js rename to addons/website_event/static/src/js/systray_items/new_content.js diff --git a/addons/website_event/static/src/js/website_event_set_customize_options.js b/addons/website_event/static/src/snippets/options.js similarity index 100% rename from addons/website_event/static/src/js/website_event_set_customize_options.js rename to addons/website_event/static/src/snippets/options.js diff --git a/addons/website_event_meet/__manifest__.py b/addons/website_event_meet/__manifest__.py index eab525fb7f4..7e0c6758dee 100644 --- a/addons/website_event_meet/__manifest__.py +++ b/addons/website_event_meet/__manifest__.py @@ -26,7 +26,7 @@ 'assets': { 'web.assets_frontend': [ 'website_event_meet/static/src/scss/event_meet_templates.scss', - 'website_event_meet/static/src/js/customize_options.js', + 'website_event_meet/static/src/js/snippets/options.js', 'website_event_meet/static/src/js/website_event_meeting_room.js', 'website_event_meet/static/src/js/website_event_create_meeting_room_button.js', ], diff --git a/addons/website_event_meet/static/src/js/customize_options.js b/addons/website_event_meet/static/src/js/snippets/options.js similarity index 100% rename from addons/website_event_meet/static/src/js/customize_options.js rename to addons/website_event_meet/static/src/js/snippets/options.js diff --git a/addons/website_forum/__manifest__.py b/addons/website_forum/__manifest__.py index 04d0eed46bb..2ece59da5de 100644 --- a/addons/website_forum/__manifest__.py +++ b/addons/website_forum/__manifest__.py @@ -42,7 +42,7 @@ Ask questions, get answers, no distractions 'assets': { 'website.assets_editor': [ 'website_forum/static/src/js/tours/website_forum.js', - 'website_forum/static/src/js/website_forum.editor.js', + 'website_forum/static/src/js/systray_items/new_content.js', ], 'web.assets_tests': [ 'website_forum/static/tests/**/*', diff --git a/addons/website_forum/static/src/js/website_forum.editor.js b/addons/website_forum/static/src/js/systray_items/new_content.js similarity index 100% rename from addons/website_forum/static/src/js/website_forum.editor.js rename to addons/website_forum/static/src/js/systray_items/new_content.js diff --git a/addons/website_links/__manifest__.py b/addons/website_links/__manifest__.py index 85f45be47f4..2af6b989591 100644 --- a/addons/website_links/__manifest__.py +++ b/addons/website_links/__manifest__.py @@ -26,7 +26,7 @@ Those trackers can be used in Google Analytics to track clicks and visitors, or 'website_links/static/tests/**/*', ], 'website.assets_editor': [ - 'website_links/static/src/js/website_links_menu.js', + 'website_links/static/src/components/navbar/navbar.js', ], 'web.assets_qweb': [ 'website_links/static/src/xml/*.xml', diff --git a/addons/website_links/static/src/js/website_links_menu.js b/addons/website_links/static/src/components/navbar/navbar.js similarity index 100% rename from addons/website_links/static/src/js/website_links_menu.js rename to addons/website_links/static/src/components/navbar/navbar.js diff --git a/addons/website_livechat/static/src/js/website_livechat.editor.js b/addons/website_livechat/static/src/js/systray_items/new_content.js similarity index 100% rename from addons/website_livechat/static/src/js/website_livechat.editor.js rename to addons/website_livechat/static/src/js/systray_items/new_content.js diff --git a/addons/website_sale_slides/static/src/js/website_sale_slides_editor.js b/addons/website_sale_slides/static/src/js/website_sale_slides_editor.js index 349ca3793c4..cd206976c5d 100644 --- a/addons/website_sale_slides/static/src/js/website_sale_slides_editor.js +++ b/addons/website_sale_slides/static/src/js/website_sale_slides_editor.js @@ -1,6 +1,6 @@ /** @odoo-module **/ -import {ChannelCreateDialog} from '@website_slides/js/website_slides.editor'; +import {ChannelCreateDialog} from '@website_slides/js/systray_items/new_content'; ChannelCreateDialog.include({ xmlDependencies: ChannelCreateDialog.prototype.xmlDependencies.concat( diff --git a/addons/website_slides/__manifest__.py b/addons/website_slides/__manifest__.py index 6e31959a126..abda6179c1b 100644 --- a/addons/website_slides/__manifest__.py +++ b/addons/website_slides/__manifest__.py @@ -100,7 +100,7 @@ Featuring 'website_slides/static/tests/tours/*.js', ], 'website.assets_editor': [ - 'website_slides/static/src/js/website_slides.editor.js', + 'website_slides/static/src/js/systray_items/new_content.js', ], 'website_slides.slide_embed_assets': [ ('include', 'web._assets_helpers'), diff --git a/addons/website_slides/static/src/js/website_slides.editor.js b/addons/website_slides/static/src/js/systray_items/new_content.js similarity index 100% rename from addons/website_slides/static/src/js/website_slides.editor.js rename to addons/website_slides/static/src/js/systray_items/new_content.js From a9a0107f7c024835f9b543f58efd3b0fd40e2a0c Mon Sep 17 00:00:00 2001 From: Younn Olivier Date: Wed, 22 Dec 2021 18:19:05 +0100 Subject: [PATCH 02/88] [IMP] website, *: reorganize website menus *: website_blog, website_forum, website_mail_group, website_sale, website_sale_comparison task-2687506 --- .../static/tests/tours/dashboard_tour.js | 2 +- .../views/res_config_settings_views.xml | 7 ---- addons/website/views/website_views.xml | 26 ++++++++++--- .../website/views/website_visitor_views.xml | 15 +++---- .../website_blog/views/website_blog_views.xml | 20 +++++----- addons/website_forum/views/forum.xml | 26 +++++-------- .../views/website_mail_group_menus.xml | 10 ++--- addons/website_sale/views/base_unit_view.xml | 2 +- .../website_sale/views/sale_order_views.xml | 39 ++++++++----------- .../views/website_sale_comparison_view.xml | 2 +- 10 files changed, 70 insertions(+), 79 deletions(-) diff --git a/addons/website/static/tests/tours/dashboard_tour.js b/addons/website/static/tests/tours/dashboard_tour.js index 343e90bf846..f883c3121ce 100644 --- a/addons/website/static/tests/tours/dashboard_tour.js +++ b/addons/website/static/tests/tours/dashboard_tour.js @@ -15,7 +15,7 @@ odoo.define("website.tour.backend_dashboard", function (require) { trigger: '.o_app[data-menu-xmlid="website.menu_website_configuration"]', }, { - trigger: 'button[data-menu-xmlid="website.menu_dashboard"]', + trigger: 'button[data-menu-xmlid="website.menu_reporting"]', }, { trigger: '.dropdown-item[data-menu-xmlid="website.menu_website_google_analytics"]', diff --git a/addons/website/views/res_config_settings_views.xml b/addons/website/views/res_config_settings_views.xml index 3e946198e4d..d23b908895c 100644 --- a/addons/website/views/res_config_settings_views.xml +++ b/addons/website/views/res_config_settings_views.xml @@ -357,13 +357,6 @@ sequence="10" /> - - + + - + - + + diff --git a/addons/website/views/website_visitor_views.xml b/addons/website/views/website_visitor_views.xml index 8e25e83bdc9..b0be3555b11 100644 --- a/addons/website/views/website_visitor_views.xml +++ b/addons/website/views/website_visitor_views.xml @@ -348,17 +348,12 @@ - - - diff --git a/addons/website_blog/views/website_blog_views.xml b/addons/website_blog/views/website_blog_views.xml index 56f88f48e34..dad9a3cf929 100644 --- a/addons/website_blog/views/website_blog_views.xml +++ b/addons/website_blog/views/website_blog_views.xml @@ -252,23 +252,23 @@ - - - + + + - + diff --git a/addons/website_forum/views/forum.xml b/addons/website_forum/views/forum.xml index 946e36f216f..c4b2dfbd4de 100644 --- a/addons/website_forum/views/forum.xml +++ b/addons/website_forum/views/forum.xml @@ -16,13 +16,6 @@ [('forum_id', '=', active_id), ('parent_id', '=', False), ('state', 'in', ('active', 'close'))] - - - - - forum.forum.list @@ -176,8 +169,6 @@ tree,form - - forum.post.list @@ -316,8 +307,6 @@ - - forum.tag.list @@ -360,8 +349,6 @@ - - forum.post.reason.list @@ -381,8 +368,15 @@ - - - + + + + + + + + + diff --git a/addons/website_mail_group/views/website_mail_group_menus.xml b/addons/website_mail_group/views/website_mail_group_menus.xml index de8cb84a82d..e6de0cc504b 100644 --- a/addons/website_mail_group/views/website_mail_group_menus.xml +++ b/addons/website_mail_group/views/website_mail_group_menus.xml @@ -1,16 +1,16 @@ - + sequence="200" + parent="website.menu_website_global_configuration"/> + parent="website_sale.menu_catalog" sequence="5" groups="website_sale.group_show_uom_price"/> diff --git a/addons/website_sale/views/sale_order_views.xml b/addons/website_sale/views/sale_order_views.xml index 4d7795b2b91..721129b565b 100644 --- a/addons/website_sale/views/sale_order_views.xml +++ b/addons/website_sale/views/sale_order_views.xml @@ -4,7 +4,7 @@ sale.order.ecommerce.search.view sale.order - primary + primary @@ -27,7 +27,7 @@ sale.order.ecommerce.search.unpaid.view sale.order - primary + primary 32 @@ -183,23 +183,18 @@ + - - - + parent="menu_catalog" groups="product.group_product_pricelist" sequence="3"/> + + + parent="website.menu_reporting" sequence="30" + groups="sales_team.group_sale_manager"/> - - - sale.order.form diff --git a/addons/website_sale_comparison/views/website_sale_comparison_view.xml b/addons/website_sale_comparison/views/website_sale_comparison_view.xml index 426c3970795..8726a9c405b 100644 --- a/addons/website_sale_comparison/views/website_sale_comparison_view.xml +++ b/addons/website_sale_comparison/views/website_sale_comparison_view.xml @@ -22,7 +22,7 @@ + parent="website_sale.menu_catalog" groups="product.group_product_variant" sequence="11"/> product.attribute.tree.inherit From 59b96b0742fe8da31eecf896f7a6157811d49de5 Mon Sep 17 00:00:00 2001 From: Younn Olivier Date: Wed, 15 Dec 2021 18:07:40 +0100 Subject: [PATCH 03/88] [IMP] website: add client action to display current website in an iframe This commit adds a new client action, that will display the frontend website in an iframe, inside the backend. Besides that iframe will be instantiated the edition components (the snippets menu, or the translate menu). This allows for a better integration with the other odoo apps, an easier mobile edition. It also avoid reloading the edition components when navigating inside the website. See merge commit for more information. task-2687506 --- addons/website/__manifest__.py | 5 ++- .../website_preview/website_preview.js | 37 +++++++++++++++++++ .../website_preview/website_preview.scss | 11 ++++++ .../website_preview/website_preview.xml | 8 ++++ .../static/src/js/backend/dashboard.js | 2 +- .../static/src/services/website_service.js | 21 +++++++++++ addons/website/views/website_views.xml | 18 ++++++--- 7 files changed, 94 insertions(+), 8 deletions(-) create mode 100644 addons/website/static/src/client_actions/website_preview/website_preview.js create mode 100644 addons/website/static/src/client_actions/website_preview/website_preview.scss create mode 100644 addons/website/static/src/client_actions/website_preview/website_preview.xml create mode 100644 addons/website/static/src/services/website_service.js diff --git a/addons/website/__manifest__.py b/addons/website/__manifest__.py index 1a80ba97813..456a70bf346 100644 --- a/addons/website/__manifest__.py +++ b/addons/website/__manifest__.py @@ -169,6 +169,9 @@ 'website/static/src/js/widget_iframe.js', 'website/static/src/js/theme_preview_kanban.js', 'website/static/src/js/theme_preview_form.js', + 'website/static/src/client_actions/*/*.js', + 'website/static/src/client_actions/*/*.scss', + 'website/static/src/services/website_service.js', ], 'web.qunit_suite_tests': [ 'website/static/tests/dashboard_tests.js', @@ -239,7 +242,7 @@ 'website/static/src/xml/website.backend.xml', 'website/static/src/xml/website_widget.xml', 'website/static/src/xml/theme_preview.xml', - 'website/static/src/client_actions/configurator/configurator.xml', + 'website/static/src/client_actions/*/*.xml', ], 'website.test_bundle': [ '/web/static/lib/qweb/qweb2.js', diff --git a/addons/website/static/src/client_actions/website_preview/website_preview.js b/addons/website/static/src/client_actions/website_preview/website_preview.js new file mode 100644 index 00000000000..d6f9c2889be --- /dev/null +++ b/addons/website/static/src/client_actions/website_preview/website_preview.js @@ -0,0 +1,37 @@ +/** @odoo-module **/ + +import { registry } from '@web/core/registry'; +import { useService } from '@web/core/utils/hooks'; + +const { Component, onWillStart } = owl; + +export class WebsitePreview extends Component { + setup() { + this.websiteService = useService('website'); + + onWillStart(async () => { + await this.websiteService.fetchWebsites(); + const encodedPath = encodeURIComponent(this.path); + this.initialUrl = `/website/force/${this.websiteId}?path=${encodedPath}`; + }); + } + + get websiteId() { + let websiteId = this.props.action.context.params && this.props.action.context.params.website_id; + if (!websiteId) { + websiteId = this.websiteService.websites[0].id; + } + return websiteId; + } + + get path() { + let path = this.props.action.context.params && this.props.action.context.params.path; + if (!path) { + path = '/'; + } + return path; + } +} +WebsitePreview.template = 'website.WebsitePreview'; + +registry.category('actions').add('website_preview', WebsitePreview); diff --git a/addons/website/static/src/client_actions/website_preview/website_preview.scss b/addons/website/static/src/client_actions/website_preview/website_preview.scss new file mode 100644 index 00000000000..89b84d2f969 --- /dev/null +++ b/addons/website/static/src/client_actions/website_preview/website_preview.scss @@ -0,0 +1,11 @@ +.o_website_preview { + position: relative; + height: 100%; + + > iframe { + @include o-position-absolute(0, 0, 0, 0); + width: 100%; + height: 100%; + border: none; + } +} diff --git a/addons/website/static/src/client_actions/website_preview/website_preview.xml b/addons/website/static/src/client_actions/website_preview/website_preview.xml new file mode 100644 index 00000000000..e856f8453c9 --- /dev/null +++ b/addons/website/static/src/client_actions/website_preview/website_preview.xml @@ -0,0 +1,8 @@ + + + +
+ ' + - '
' - ); - }, - /** - * Creates a video node according to the given URL and options. If not - * possible, returns an error code. - * - * @param {string} url - * @param {Object} options - * @returns {Object} - * $video -> the created video jQuery node - * type -> the type of the created video - * errorCode -> if defined, either '0' for invalid URL or '1' for - * unsupported video provider - */ - createVideoNode: async function (url, options) { - options = options || {}; - const videoData = await this._getVideoURLData(url, options); - if (videoData.error) { - return {errorCode: 0}; - } - if (!videoData.platform) { - return {errorCode: 1}; - } - const $video = $('