From 47d91a218938ac2782c86a8b0f2248ad528dbcc0 Mon Sep 17 00:00:00 2001 From: ljmwkx <1340053001@qq.com> Date: Mon, 20 Jan 2025 14:10:47 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E6=A0=87=E9=A2=98?= =?UTF-8?q?=E5=92=8C=E5=9B=BE=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- keke_window_title/__init__.py | 3 ++ keke_window_title/__manifest__.py | 20 ++++++++ keke_window_title/models/__init__.py | 5 ++ keke_window_title/models/ir_ui_view.py | 18 +++++++ keke_window_title/models/res_company.py | 20 ++++++++ keke_window_title/models/res_config.py | 34 +++++++++++++ .../static/src/js/web_window_title.js | 12 +++++ keke_window_title/templates/web_layout.xml | 13 +++++ keke_window_title/views/res_config.xml | 51 +++++++++++++++++++ 9 files changed, 176 insertions(+) create mode 100644 keke_window_title/__init__.py create mode 100644 keke_window_title/__manifest__.py create mode 100644 keke_window_title/models/__init__.py create mode 100644 keke_window_title/models/ir_ui_view.py create mode 100644 keke_window_title/models/res_company.py create mode 100644 keke_window_title/models/res_config.py create mode 100644 keke_window_title/static/src/js/web_window_title.js create mode 100644 keke_window_title/templates/web_layout.xml create mode 100644 keke_window_title/views/res_config.xml diff --git a/keke_window_title/__init__.py b/keke_window_title/__init__.py new file mode 100644 index 000000000..cde864bae --- /dev/null +++ b/keke_window_title/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import models diff --git a/keke_window_title/__manifest__.py b/keke_window_title/__manifest__.py new file mode 100644 index 000000000..d071aa53c --- /dev/null +++ b/keke_window_title/__manifest__.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +{ + 'license': 'LGPL-3', + 'name': "自定义窗口标题和图标", + 'summary': "自定义窗口标题和图标", + 'version': '1.0', + 'depends': ['base_setup'], + 'data': [ + 'templates/web_layout.xml', + 'views/res_config.xml', + ], + 'assets': { + 'web.assets_backend': [ + 'keke_window_title/static/src/js/keke_window_title.js', + ], + }, + 'installable': True, + 'auto_install': False, + 'application': False, +} \ No newline at end of file diff --git a/keke_window_title/models/__init__.py b/keke_window_title/models/__init__.py new file mode 100644 index 000000000..6a905aa87 --- /dev/null +++ b/keke_window_title/models/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- + +from . import ir_ui_view +from . import res_config +from . import res_company diff --git a/keke_window_title/models/ir_ui_view.py b/keke_window_title/models/ir_ui_view.py new file mode 100644 index 000000000..633dbc950 --- /dev/null +++ b/keke_window_title/models/ir_ui_view.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- + +import logging + +from odoo import api, fields, models, _ + +_logger = logging.getLogger(__name__) + +class View(models.Model): + _inherit = 'ir.ui.view' + + @api.model + def _render_template(self, template, values=None): + if template in ['web.login', 'web.webclient_bootstrap']: + if not values: + values = {} + values["title"] = self.env['ir.config_parameter'].sudo().get_param("web.base.title", "") + return super(View, self)._render_template(template, values) diff --git a/keke_window_title/models/res_company.py b/keke_window_title/models/res_company.py new file mode 100644 index 000000000..bfaefbdc0 --- /dev/null +++ b/keke_window_title/models/res_company.py @@ -0,0 +1,20 @@ +from odoo import models, fields + + +class ResCompany(models.Model): + + _inherit = 'res.company' + + #---------------------------------------------------------- + # Fields + #---------------------------------------------------------- + + favicon = fields.Binary( + string="Company Favicon", + attachment=True + ) + + background_image = fields.Binary( + string='Apps Menu Background Image', + attachment=True + ) diff --git a/keke_window_title/models/res_config.py b/keke_window_title/models/res_config.py new file mode 100644 index 000000000..0e28039d3 --- /dev/null +++ b/keke_window_title/models/res_config.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- + +import logging + +from odoo import api, fields, models, _ + +_logger = logging.getLogger(__name__) + +CONFIG_PARAM_KEKE_WINDOW_TITLE = "web.base.title" + +class ResConfigSettings(models.TransientModel): + _inherit = 'res.config.settings' + + keke_window_title = fields.Char('Window Title') + + theme_favicon = fields.Binary( + related='company_id.favicon', + readonly=False + ) + + @api.model + def get_values(self): + res = super(ResConfigSettings, self).get_values() + ir_config = self.env['ir.config_parameter'].sudo() + keke_window_title = ir_config.get_param(CONFIG_PARAM_KEKE_WINDOW_TITLE, default='') + res.update( + keke_window_title=keke_window_title + ) + return res + + def set_values(self): + super(ResConfigSettings, self).set_values() + ir_config = self.env['ir.config_parameter'].sudo() + ir_config.set_param(CONFIG_PARAM_KEKE_WINDOW_TITLE, self.keke_window_title or "") diff --git a/keke_window_title/static/src/js/web_window_title.js b/keke_window_title/static/src/js/web_window_title.js new file mode 100644 index 000000000..11eb79c99 --- /dev/null +++ b/keke_window_title/static/src/js/web_window_title.js @@ -0,0 +1,12 @@ +/** @odoo-module alias=web.window.title **/ + +import { WebClient } from "@web/webclient/webclient"; +import {patch} from "@web/core/utils/patch"; + +patch(WebClient.prototype, { + setup() { + const title = document.title; + super.setup(); + this.title.setParts({ zopenerp: title }); + } +}); diff --git a/keke_window_title/templates/web_layout.xml b/keke_window_title/templates/web_layout.xml new file mode 100644 index 000000000..0d6b85232 --- /dev/null +++ b/keke_window_title/templates/web_layout.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/keke_window_title/views/res_config.xml b/keke_window_title/views/res_config.xml new file mode 100644 index 000000000..324d0f397 --- /dev/null +++ b/keke_window_title/views/res_config.xml @@ -0,0 +1,51 @@ + + + + + + res.config.settings.web.window.title + res.config.settings + + +
+

窗口设置

+
+
+
+ 窗口标题 +
+ 自定义 Web 窗口标题 +
+
+
+
+
+
+
+
+
+ 窗口图标 +
+ 自定义 Web 窗口图标 +
+
+
+
+
+
+
+
+ +
+
+ +
+
+
+ +
+
\ No newline at end of file