From f7130556bbcbc0a0b93ba07ef1da9c9d11b68b54 Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Fri, 10 Aug 2018 15:37:17 +0200 Subject: [PATCH] [REF] *: add support for RTL languages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit מזל טוב The direction parameter will now have a real impact on the web interface and completly switch the direction of the interface. Add the dependency rtlcss to switch the direction with a css postprocessor. Two different assets will be generated for ltr or rtl /web/content/<...>/web.assets_backend.0.css and /web/content/<...>/rtl/web.assets_backend.0.css to be able to differentiate it easily Adapt the css and views to be easier to switch direction Render graph as it is, do not move y-axis right side, as per mathematical rule value goes left from origin are considered negative, so keep graph as it is for right to left language add test cases for language direction specific assets bundle if language direction is rtl then we also store css files in assets bundle now we store two assets bundle, one for ltr and one for rtl language direction test two assets bundles generated, also test two assets bundle generated for en_US and ar_SY --- .../src/scss/account_reconciliation.scss | 16 ++ addons/delivery/views/delivery_view.xml | 4 +- .../im_livechat/static/src/js/im_livechat.js | 4 +- .../src/js/services/mail_window_manager.js | 5 +- .../thread_windows/abstract_thread_window.js | 3 +- .../src/scss/abstract_thread_window.scss | 1 + addons/mail/static/src/scss/systray.scss | 1 + addons/point_of_sale/static/src/css/pos.css | 2 + addons/point_of_sale/views/point_of_sale.xml | 4 + addons/portal/views/portal_templates.xml | 3 +- .../src/js/chrome/abstract_web_client.js | 1 + addons/web/static/src/js/core/dom.js | 10 +- .../js/views/calendar/calendar_renderer.js | 1 + .../src/js/views/pivot/pivot_controller.js | 5 +- addons/web/static/src/scss/datepicker.scss | 12 + addons/web/static/src/scss/dropdown.scss | 6 + .../src/scss/fontawesome_overriden.scss | 36 +++ addons/web/static/src/scss/graph_view.scss | 1 + addons/web/static/src/scss/report.scss | 1 + addons/web/static/src/scss/search_view.scss | 1 + addons/web/static/src/scss/ui.scss | 16 ++ addons/web/static/src/scss/webclient.scss | 1 + .../web/static/src/scss/webclient_extra.scss | 6 + addons/web/views/webclient_templates.xml | 4 + addons/web_editor/views/iframe.xml | 3 +- addons/web_tour/static/src/js/tip.js | 19 +- addons/web_tour/static/src/scss/tip.scss | 15 +- .../static/src/scss/website.backend.scss | 1 + .../website/static/src/scss/website.ui.scss | 1 + addons/website_forum/views/website_forum.xml | 6 +- odoo/addons/base/data/res.lang.csv | 6 +- odoo/addons/base/models/assetsbundle.py | 177 +++++++++++---- .../static/src/css/test_cssfile3.css | 3 + .../tests/test_assetsbundle.py | 211 +++++++++++++++++- 34 files changed, 507 insertions(+), 79 deletions(-) create mode 100644 addons/web/static/src/scss/fontawesome_overriden.scss create mode 100644 odoo/addons/test_assetsbundle/static/src/css/test_cssfile3.css diff --git a/addons/account/static/src/scss/account_reconciliation.scss b/addons/account/static/src/scss/account_reconciliation.scss index baae6a584f1..6c21d14e8f2 100644 --- a/addons/account/static/src/scss/account_reconciliation.scss +++ b/addons/account/static/src/scss/account_reconciliation.scss @@ -342,3 +342,19 @@ } } } + +// This is rtl language specific fix +// It will flip the fa-fa play icon in left direction +.o_rtl { + .o_reconciliation { + .o_reconciliation_line { + .toggle_match, .toggle_create { + transform: rotate(180deg); + transition: transform 300ms; + } + .visible_toggle, &[data-mode="match"] .toggle_match, &[data-mode="create"] .toggle_create { + transform: rotate(270deg); + } + } + } +} \ No newline at end of file diff --git a/addons/delivery/views/delivery_view.xml b/addons/delivery/views/delivery_view.xml index ec1f4e1d475..715884304fb 100644 --- a/addons/delivery/views/delivery_view.xml +++ b/addons/delivery/views/delivery_view.xml @@ -290,8 +290,8 @@
- +
diff --git a/addons/im_livechat/static/src/js/im_livechat.js b/addons/im_livechat/static/src/js/im_livechat.js index 3e3555516c5..3179986e88a 100644 --- a/addons/im_livechat/static/src/js/im_livechat.js +++ b/addons/im_livechat/static/src/js/im_livechat.js @@ -230,7 +230,9 @@ var LivechatButton = Widget.extend({ }; this._chatWindow = new WebsiteLivechatWindow(this, this._livechat, options); this._chatWindow.appendTo($('body')).then(function () { - self._chatWindow.$el.css({right: 0, bottom: 0}); + var cssProps = {bottom: 0}; + cssProps[_t.database.parameters.direction === 'rtl' ? 'left' : 'right'] = 0; + self._chatWindow.$el.css(cssProps); self.$el.hide(); }); this._chatWindow.on('close', this, function () { diff --git a/addons/mail/static/src/js/services/mail_window_manager.js b/addons/mail/static/src/js/services/mail_window_manager.js index d65675c42a7..733ca366a95 100644 --- a/addons/mail/static/src/js/services/mail_window_manager.js +++ b/addons/mail/static/src/js/services/mail_window_manager.js @@ -9,6 +9,7 @@ var core = require('web.core'); var utils = require('web.utils'); var QWeb = core.qweb; +var _t = core._t; var THREAD_WINDOW_WIDTH = 325 + 5; // 5 pixels between windows @@ -518,7 +519,9 @@ MailManager.include({ var index = 0; while (index < count && index < this._threadWindows.length) { var threadWindow = this._threadWindows[index]; - threadWindow.$el.css({ right: THREAD_WINDOW_WIDTH*index, bottom: 0 }); + var cssProps = {bottom: 0}; + cssProps[_t.database.parameters.direction === 'rtl' ? 'left' : 'right'] = THREAD_WINDOW_WIDTH*index; + threadWindow.$el.css(cssProps); threadWindow.do_show(); index++; } diff --git a/addons/mail/static/src/js/thread_windows/abstract_thread_window.js b/addons/mail/static/src/js/thread_windows/abstract_thread_window.js index 5b354ed2aa8..8ec8aa84b31 100644 --- a/addons/mail/static/src/js/thread_windows/abstract_thread_window.js +++ b/addons/mail/static/src/js/thread_windows/abstract_thread_window.js @@ -86,7 +86,8 @@ var AbstractThreadWindow = Widget.extend({ this._focusInput(); } if (!config.device.isMobile) { - this.$el.css('margin-right', $.position.scrollbarWidth()); + var margin_dir = _t.database.parameters.direction === "rtl" ? "margin-left" : "margin-right"; + this.$el.css(margin_dir, $.position.scrollbarWidth()); } var def = this.threadWidget.replace(this.$('.o_thread_window_content')); return $.when(this._super(), def); diff --git a/addons/mail/static/src/scss/abstract_thread_window.scss b/addons/mail/static/src/scss/abstract_thread_window.scss index 02d41948f12..127b7b8adaf 100644 --- a/addons/mail/static/src/scss/abstract_thread_window.scss +++ b/addons/mail/static/src/scss/abstract_thread_window.scss @@ -1,6 +1,7 @@ $o-mail-thread-window-zindex: $zindex-modal + 1 !default; .o_thread_window { + direction: ltr; display: flex; flex-flow: column nowrap; position: fixed; diff --git a/addons/mail/static/src/scss/systray.scss b/addons/mail/static/src/scss/systray.scss index 1383d462a38..542e6ded473 100644 --- a/addons/mail/static/src/scss/systray.scss +++ b/addons/mail/static/src/scss/systray.scss @@ -27,6 +27,7 @@ font-size: 0.7em; } .o_mail_systray_dropdown { + direction: ltr; width: 350px; padding: 0; diff --git a/addons/point_of_sale/static/src/css/pos.css b/addons/point_of_sale/static/src/css/pos.css index 904e5f1b432..2510c25656e 100644 --- a/addons/point_of_sale/static/src/css/pos.css +++ b/addons/point_of_sale/static/src/css/pos.css @@ -110,6 +110,7 @@ td { } .pos { + direction: ltr; padding: 0; margin: 0; background-color: #f0eeee; @@ -1431,6 +1432,7 @@ td { .pos .pos-receipt-container { font-size: 0.75em; text-align: center; + direction: ltr; } .pos .pos-sale-ticket { diff --git a/addons/point_of_sale/views/point_of_sale.xml b/addons/point_of_sale/views/point_of_sale.xml index 85c7e310eec..e6428ca8611 100644 --- a/addons/point_of_sale/views/point_of_sale.xml +++ b/addons/point_of_sale/views/point_of_sale.xml @@ -6,6 +6,10 @@ + + + + diff --git a/addons/portal/views/portal_templates.xml b/addons/portal/views/portal_templates.xml index 840b44275e6..cd8e774171f 100644 --- a/addons/portal/views/portal_templates.xml +++ b/addons/portal/views/portal_templates.xml @@ -22,7 +22,8 @@ -
+ +