diff --git a/app_odoo_customize/__manifest__.py b/app_odoo_customize/__manifest__.py
index f8e0c742..5e21f353 100644
--- a/app_odoo_customize/__manifest__.py
+++ b/app_odoo_customize/__manifest__.py
@@ -23,7 +23,7 @@
{
'name': 'Customize odoo OEM (Boost, My Odoo)',
- 'version': '13.20.05.10',
+ 'version': '13.20.07.13',
'author': 'Sunpop.cn',
'category': 'Productivity',
'website': 'https://www.sunpop.cn',
@@ -73,6 +73,7 @@
30. 1 key export app translate file like .po file.
31. Show or hide odoo Referral in the top menu.
32. Fix odoo bug of complete name bug of product category and stock location..
+ 33. Add Demo Ribbon Setting.
This module can help to white label the Odoo.
Also helpful for training and support for your odoo end-user.
@@ -112,6 +113,7 @@
30. 一键导出翻译文件 po
31. 显示或去除 odoo 推荐
32. 增加修复品类及区位名的操作
+ 33. 增加 Demo 的显示设置
""",
'images': ['static/description/banner.gif'],
'depends': [
diff --git a/app_odoo_customize/data/ir_config_parameter.xml b/app_odoo_customize/data/ir_config_parameter.xml
index 09db64d3..aa39b7c6 100644
--- a/app_odoo_customize/data/ir_config_parameter.xml
+++ b/app_odoo_customize/data/ir_config_parameter.xml
@@ -62,5 +62,20 @@
app_account_url
https://www.sunpop.cn/my-account
+
+
+ app_ribbon_name
+ ({db_name})]]>
+
+
+
+ app_ribbon_color
+ #f0f0f0
+
+
+
+ app_ribbon_background_color
+ rgba(255,0,0,.4)
+
\ No newline at end of file
diff --git a/app_odoo_customize/i18n/zh_CN.po b/app_odoo_customize/i18n/zh_CN.po
index a7a516fc..43ddc7d9 100644
--- a/app_odoo_customize/i18n/zh_CN.po
+++ b/app_odoo_customize/i18n/zh_CN.po
@@ -4,10 +4,10 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 13.0+e\n"
+"Project-Id-Version: Odoo Server 13.0+e-20200628\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-10 15:54+0000\n"
-"PO-Revision-Date: 2020-05-10 15:54+0000\n"
+"POT-Creation-Date: 2020-07-13 08:56+0000\n"
+"PO-Revision-Date: 2020-07-13 08:56+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -228,6 +228,11 @@ msgstr "开发者手册链接"
msgid "Developer Manual"
msgstr "开发者手册"
+#. module: app_odoo_customize
+#: model:ir.model.fields,field_description:app_odoo_customize.field_web_environment_ribbon_backend__display_name
+msgid "Display Name"
+msgstr "显示名称"
+
#. module: app_odoo_customize
#: model:ir.model.fields,field_description:app_odoo_customize.field_res_config_settings__app_documentation_url
msgid "Documentation Url"
@@ -239,11 +244,21 @@ msgstr "用户手册链接"
msgid "Export Translation"
msgstr "导出翻译"
+#. module: app_odoo_customize
+#: model:ir.model.fields,field_description:app_odoo_customize.field_web_environment_ribbon_backend__id
+msgid "ID"
+msgstr ""
+
#. module: app_odoo_customize
#: model:ir.model,name:app_odoo_customize.model_base_language_install
msgid "Install Language"
msgstr "安装语言"
+#. module: app_odoo_customize
+#: model:ir.model.fields,field_description:app_odoo_customize.field_web_environment_ribbon_backend____last_update
+msgid "Last Modified on"
+msgstr ""
+
#. module: app_odoo_customize
#: model:ir.ui.menu,name:app_odoo_customize.menu_app_demo_data
msgid "Load demo data"
@@ -296,6 +311,11 @@ msgstr "设定系统名称,代替原 Odoo 字样"
msgid "Show Author in Apps Dashboard"
msgstr "显示应用的作者-在安装面板中"
+#. module: app_odoo_customize
+#: model:ir.model.fields,field_description:app_odoo_customize.field_res_config_settings__app_ribbon_name
+msgid "Show Demo Ribbon"
+msgstr "显示全站测试标签"
+
#. module: app_odoo_customize
#: model:ir.model.fields,field_description:app_odoo_customize.field_res_config_settings__app_show_documentation_dev
msgid "Show Developer Documentation"
@@ -420,13 +440,18 @@ msgstr "菜单项具体操作设置"
#. module: app_odoo_customize
#: model:ir.model,name:app_odoo_customize.model_ir_ui_view
msgid "View"
-msgstr "视图"
+msgstr "查看"
#. module: app_odoo_customize
#: model_terms:ir.ui.view,arch_db:app_odoo_customize.view_app_theme_config_settings
msgid "Visit our website for more apps and Support. https://www.sunpop.cn"
msgstr "请访问我们的网站获取更多支持. http://www.sunpop.cn"
+#. module: app_odoo_customize
+#: model:ir.model,name:app_odoo_customize.model_web_environment_ribbon_backend
+msgid "Web Environment Ribbon Backend"
+msgstr "全站测试标签"
+
#. module: app_odoo_customize
#: model:ir.model.fields,help:app_odoo_customize.field_res_config_settings__app_show_account
msgid "When enable,User can login to your website"
diff --git a/app_odoo_customize/models/__init__.py b/app_odoo_customize/models/__init__.py
index 4e9e5333..1c5bcbfb 100644
--- a/app_odoo_customize/models/__init__.py
+++ b/app_odoo_customize/models/__init__.py
@@ -4,4 +4,5 @@ from . import res_config_settings
from . import ir_ui_view
from . import base_language_install
from . import ir_module_module
+from . import web_environment_ribbon_backend
# from . import ir_ui_menu
diff --git a/app_odoo_customize/models/res_config_settings.py b/app_odoo_customize/models/res_config_settings.py
index 162e162c..80a2afda 100644
--- a/app_odoo_customize/models/res_config_settings.py
+++ b/app_odoo_customize/models/res_config_settings.py
@@ -32,6 +32,7 @@ class ResConfigSettings(models.TransientModel):
app_account_title = fields.Char('My Odoo.com Account Title')
app_account_url = fields.Char('My Odoo.com Account Url')
app_enterprise_url = fields.Char('Customize Module Url(eg. Enterprise)')
+ app_ribbon_name = fields.Char('Show Demo Ribbon')
@api.model
def get_values(self):
@@ -57,6 +58,7 @@ class ResConfigSettings(models.TransientModel):
app_account_title = ir_config.get_param('app_account_title', default='My Online Account')
app_account_url = ir_config.get_param('app_account_url', default='https://www.sunpop.cn/my-account/')
app_enterprise_url = ir_config.get_param('app_enterprise_url', default='https://www.sunpop.cn')
+ app_ribbon_name = ir_config.get_param('app_ribbon_name', default='*Sunpop.cn')
res.update(
app_system_name=app_system_name,
app_show_lang=app_show_lang,
@@ -74,7 +76,8 @@ class ResConfigSettings(models.TransientModel):
app_support_url=app_support_url,
app_account_title=app_account_title,
app_account_url=app_account_url,
- app_enterprise_url=app_enterprise_url
+ app_enterprise_url=app_enterprise_url,
+ app_ribbon_name=app_ribbon_name
)
return res
@@ -100,6 +103,7 @@ class ResConfigSettings(models.TransientModel):
ir_config.set_param("app_account_title", self.app_account_title or "My Online Account")
ir_config.set_param("app_account_url", self.app_account_url or "https://www.sunpop.cn/my-account/")
ir_config.set_param("app_enterprise_url", self.app_enterprise_url or "https://www.sunpop.cn")
+ ir_config.set_param("app_ribbon_name", self.app_ribbon_name or "*Sunpop.cn")
def set_module_url(self):
sql = "UPDATE ir_module_module SET website = '%s' WHERE license like '%s' and website <> ''" % (self.app_enterprise_url, 'OEEL%')
diff --git a/app_odoo_customize/models/web_environment_ribbon_backend.py b/app_odoo_customize/models/web_environment_ribbon_backend.py
new file mode 100644
index 00000000..b1ec801d
--- /dev/null
+++ b/app_odoo_customize/models/web_environment_ribbon_backend.py
@@ -0,0 +1,36 @@
+# Copyright 2017 ACSONE SA/NV
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+from odoo import api, models
+
+
+class WebEnvironmentRibbonBackend(models.AbstractModel):
+
+ _name = "web.environment.ribbon.backend"
+ _description = "Web Environment Ribbon Backend"
+
+ @api.model
+ def _prepare_ribbon_format_vals(self):
+ return {"db_name": self.env.cr.dbname}
+
+ @api.model
+ def _prepare_ribbon_name(self):
+ name_tmpl = self.env["ir.config_parameter"].sudo().get_param("app_ribbon_name") or False
+ vals = self._prepare_ribbon_format_vals()
+ return name_tmpl and name_tmpl.format(**vals) or name_tmpl
+
+ @api.model
+ def get_environment_ribbon(self):
+ """
+ This method returns the ribbon data from ir config parameters
+ :return: dictionary
+ """
+ ir_config_model = self.env["ir.config_parameter"]
+ name = self._prepare_ribbon_name()
+ return {
+ "name": name,
+ "color": ir_config_model.sudo().get_param("app_ribbon_color"),
+ "background_color": ir_config_model.sudo().get_param(
+ "app_ribbon_background_color"
+ ),
+ }
diff --git a/app_odoo_customize/static/src/js/ribbon.js b/app_odoo_customize/static/src/js/ribbon.js
new file mode 100644
index 00000000..187b3044
--- /dev/null
+++ b/app_odoo_customize/static/src/js/ribbon.js
@@ -0,0 +1,63 @@
+/* Copyright 2015 Sylvain Calador
+ Copyright 2015 Javi Melendez
+ Copyright 2016 Antonio Espinosa
+ Copyright 2017 Thomas Binsfeld
+ Copyright 2017 Xavier Jiménez
+ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). */
+
+odoo.define("web_environment_ribbon.ribbon", function(require) {
+ "use strict";
+
+ var rpc = require("web.rpc");
+ var core = require("web.core");
+
+ // Code from: http://jsfiddle.net/WK_of_Angmar/xgA5C/
+ function validStrColour(strToTest) {
+ if (strToTest === "") {
+ return false;
+ }
+ if (strToTest === "inherit") {
+ return true;
+ }
+ if (strToTest === "transparent") {
+ return true;
+ }
+ var image = document.createElement("img");
+ image.style.color = "rgb(0, 0, 0)";
+ image.style.color = strToTest;
+ if (image.style.color !== "rgb(0, 0, 0)") {
+ return true;
+ }
+ image.style.color = "rgb(255, 255, 255)";
+ image.style.color = strToTest;
+ return image.style.color !== "rgb(255, 255, 255)";
+ }
+
+ core.bus.on("web_client_ready", null, function() {
+ var ribbon = $('');
+ $("body").append(ribbon);
+ ribbon.hide();
+ // Get ribbon data from backend
+ rpc.query({
+ model: "web.environment.ribbon.backend",
+ method: "get_environment_ribbon",
+ }).then(function(ribbon_data) {
+ // Ribbon name
+ if (ribbon_data.name && ribbon_data.name !== "False") {
+ ribbon.html(ribbon_data.name);
+ ribbon.show();
+ }
+ // Ribbon color
+ if (ribbon_data.color && validStrColour(ribbon_data.color)) {
+ ribbon.css("color", ribbon_data.color);
+ }
+ // Ribbon background color
+ if (
+ ribbon_data.background_color &&
+ validStrColour(ribbon_data.background_color)
+ ) {
+ ribbon.css("background-color", ribbon_data.background_color);
+ }
+ });
+ });
+});
diff --git a/app_odoo_customize/static/src/scss/ribbon.scss b/app_odoo_customize/static/src/scss/ribbon.scss
new file mode 100644
index 00000000..97ee8600
--- /dev/null
+++ b/app_odoo_customize/static/src/scss/ribbon.scss
@@ -0,0 +1,28 @@
+/* Copyright 2015 Francesco OpenCode Apruzzese
+ Copyright 2017 Thomas Binsfeld
+ * License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). */
+
+.test-ribbon {
+ width: 300px;
+ top: 25px;
+ left: -100px;
+ text-align: center;
+ padding: 10px;
+ line-height: 20px;
+ letter-spacing: 1px;
+ color: #f0f0f0;
+ -webkit-transform: rotate(-45deg);
+ -ms-transform: rotate(-45deg);
+ -moz-transform: rotate(-45deg);
+ -o-transform: rotate(-45deg);
+ transform: rotate(-45deg);
+ z-index: 9999;
+ position: fixed;
+ box-shadow: 0 0 3px rgba(0, 0, 0, 0.3);
+ background: rgba(255, 0, 0, 0.6);
+ pointer-events: none;
+}
+
+.test-ribbon b {
+ font-size: 20px;
+}
diff --git a/app_odoo_customize/views/app_odoo_customize_views.xml b/app_odoo_customize/views/app_odoo_customize_views.xml
index 704e3bc2..ce0d018c 100644
--- a/app_odoo_customize/views/app_odoo_customize_views.xml
+++ b/app_odoo_customize/views/app_odoo_customize_views.xml
@@ -1,13 +1,17 @@
-
-
+
+
+
+
+
+
diff --git a/app_odoo_customize/views/app_theme_config_settings_views.xml b/app_odoo_customize/views/app_theme_config_settings_views.xml
index 3a749e50..23055e8d 100644
--- a/app_odoo_customize/views/app_theme_config_settings_views.xml
+++ b/app_odoo_customize/views/app_theme_config_settings_views.xml
@@ -94,6 +94,10 @@
+
+
+
+