update customize

This commit is contained in:
ivan deng
2021-10-08 01:15:45 +08:00
parent 2d503b8c79
commit f642e8c93e
11 changed files with 245 additions and 92 deletions

View File

@@ -23,17 +23,65 @@
{ {
'name': 'odoo 15 Customize OEM(Boost, Data reset)', 'name': 'odoo 15 Customize OEM(Boost, Data reset)',
'version': '15.21.10.07', 'version': '15.21.10.08',
'author': 'Sunpop.cn', 'author': 'Sunpop.cn',
'category': 'Productivity', 'category': 'Productivity',
'website': 'https://www.sunpop.cn', 'website': 'https://www.sunpop.cn',
'license': 'LGPL-3', 'license': 'LGPL-3',
'sequence': 2, 'sequence': 2,
'images': ['static/description/banner.gif'],
'summary': """ 'summary': """
1 click customize odoo, reset data. For quick develop. Set brand, boost, reset data, debug. Language Switcher. 1 click customize odoo, reset data. For quick develop. Set brand, boost, reset data, debug. Language Switcher.
Easy Delete data.reset account chart. Easy Delete data.reset account chart.
customize my odoo. customize my odoo.
""", """,
'depends': [
'base_setup',
'web',
'mail',
'iap',
# 'digest',
# when enterprise
# 'web_mobile'
],
'data': [
'security/res_groups.xml',
'security/ir.model.access.csv',
'views/app_odoo_customize_views.xml',
'views/app_theme_config_settings_views.xml',
'views/res_config_settings_views.xml',
'views/ir_views.xml',
'views/ir_module_module_views.xml',
'views/ir_translation_views.xml',
'views/ir_ui_menu_views.xml',
'views/ir_ui_view_views.xml',
'views/ir_model_fields_views.xml',
'views/ir_model_data_views.xml',
# data
'data/ir_config_parameter_data.xml',
'data/ir_module_module_data.xml',
# 'data/digest_template_data.xml',
'data/res_company_data.xml',
],
# 'qweb': [
# 'static/src/xml/*.xml',
# ],
'assets': {
'web.assets_backend': [
'app_odoo_customize/static/src/scss/app.scss',
'app_odoo_customize/static/src/scss/ribbon.scss',
'app_odoo_customize/static/src/scss/dialog.scss',
'app_odoo_customize/static/src/js/app_window_title.js',
'app_odoo_customize/static/src/js/user_menu.js',
# 'app_odoo_customize/static/src/js/ribbon.js',
'app_odoo_customize/static/src/js/dialog.js',
],
},
'pre_init_hook': 'pre_init_hook',
'post_init_hook': 'post_init_hook',
'installable': True,
'application': True,
'auto_install': True,
'description': """ 'description': """
App Customize Odoo (Change Title,Language,Documentation,Quick Debug) App Customize Odoo (Change Title,Language,Documentation,Quick Debug)
@@ -87,7 +135,7 @@
The user can get the help document just by one click. The user can get the help document just by one click.
## 在符合odoo开源协议的前提下去除odoo版权信息自定义你的odoo ## 在符合odoo开源协议的前提下去除odoo版权信息自定义你的odoo
可完全自行设置下列 odoo 选项,让 odoo 看上去像是你的软件产品 可完全自行设置下列 odoo 选项,让 odoo 看上去像是你的软件产品
支持odoo 15,14,13,12, 11, 10, 9 版本,社区版企业版通用 支持odoo 15,14,13,12, 11, 10, 9 版本,社区版企业版通用
1. 删除菜单导航页脚的 Odoo 标签 1. 删除菜单导航页脚的 Odoo 标签
2. 将弹出窗口中 "Odoo" 设置为自定义名称 2. 将弹出窗口中 "Odoo" 设置为自定义名称
3. 自定义用户菜单中的 Documentation, Support, About 的链接 3. 自定义用户菜单中的 Documentation, Support, About 的链接
@@ -119,61 +167,13 @@
29. App版本比较快速查看可本地更新的模块 29. App版本比较快速查看可本地更新的模块
30. 一键导出翻译文件 po 30. 一键导出翻译文件 po
31. 显示或去除 odoo 推荐 31. 显示或去除 odoo 推荐
32. 增加修复品类及区位名的操作 32. 增加修复品类及区位名的操作
33. 增加 Demo 的显示设置 33. 增加 Demo 的显示设置
34. 增加清除质检数据 34. 增加清除质检数据
35. 优化至odoo14适用 35. 优化至odoo14适用
36. 可为多个模块强制更新翻译 36. 可为多个模块强制更新翻译
37. noupdate字段的快速管理主要针对 xml_id 37. noupdate字段的快速管理主要针对 xml_id
38. 对话框可拖拽 38. 对话框可拖拽
39. 只有系统管理员可以操作快速debug 39. 只有系统管理员可以操作快速debug
""", """,
'images': ['static/description/banner.gif'],
'depends': [
'base_setup',
'web',
'mail',
'iap',
# 'digest',
# when enterprise
# 'web_mobile'
],
'data': [
'security/res_groups.xml',
'security/ir.model.access.csv',
'views/app_odoo_customize_views.xml',
'views/app_theme_config_settings_views.xml',
'views/res_config_settings_views.xml',
'views/ir_views.xml',
'views/ir_module_module_views.xml',
'views/ir_translation_views.xml',
'views/ir_ui_menu_views.xml',
'views/ir_ui_view_views.xml',
'views/ir_model_fields_views.xml',
'views/ir_model_data_views.xml',
# data
'data/ir_config_parameter_data.xml',
'data/ir_module_module_data.xml',
# 'data/digest_template_data.xml',
'data/res_company_data.xml',
],
'qweb': [
'static/src/xml/*.xml',
],
'assets': {
'web.assets_backend': [
'app_odoo_customize/static/src/scss/app.scss',
'app_odoo_customize/static/src/scss/ribbon.scss',
'app_odoo_customize/static/src/scss/dialog.scss',
'app_odoo_customize/static/src/js/app_window_title.js',
'app_odoo_customize/static/src/js/customize_user_menu.js',
'app_odoo_customize/static/src/js/ribbon.js',
'app_odoo_customize/static/src/js/dialog.js',
],
},
'pre_init_hook': 'pre_init_hook',
'post_init_hook': 'post_init_hook',
'installable': True,
'application': True,
'auto_install': True,
} }

View File

@@ -17,7 +17,7 @@
<function model="ir.config_parameter" name="set_param" eval="('app_support_url', 'https://www.sunpop.cn/trial')"/> <function model="ir.config_parameter" name="set_param" eval="('app_support_url', 'https://www.sunpop.cn/trial')"/>
<function model="ir.config_parameter" name="set_param" eval="('app_account_title', 'My Online Account')"/> <function model="ir.config_parameter" name="set_param" eval="('app_account_title', 'My Online Account')"/>
<function model="ir.config_parameter" name="set_param" eval="('app_account_url', 'https://www.sunpop.cn/my-account')"/> <function model="ir.config_parameter" name="set_param" eval="('app_account_url', 'https://www.sunpop.cn/my-account')"/>
<function model="ir.config_parameter" name="set_param" eval="('app_ribbon_name', 'Sunpop.cn')"/> <function model="ir.config_parameter" name="set_param" eval="('app_ribbon_name', 'Sunpop.cn({db_name})')"/>
<function model="ir.config_parameter" name="set_param" eval="('app_ribbon_color', '#f0f0f0')"/> <function model="ir.config_parameter" name="set_param" eval="('app_ribbon_color', '#f0f0f0')"/>
<function model="ir.config_parameter" name="set_param" eval="('app_ribbon_background_color', 'rgba(255,0,0,.4)')"/> <function model="ir.config_parameter" name="set_param" eval="('app_ribbon_background_color', 'rgba(255,0,0,.4)')"/>
</data> </data>

View File

@@ -1,8 +1,9 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from . import res_config_settings from . import res_config_settings
from . import ir_ui_view
from . import base_language_install from . import base_language_install
from . import ir_module_module from . import ir_module_module
from . import web_environment_ribbon_backend from . import web_environment_ribbon_backend
from . import ir_http
# from . import ir_ui_view
# from . import ir_ui_menu # from . import ir_ui_menu

View File

@@ -0,0 +1,27 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import models
from odoo.http import request
class IrHttp(models.AbstractModel):
_inherit = 'ir.http'
def session_info(self):
result = super(IrHttp, self).session_info()
config_parameter = request.env['ir.config_parameter'].sudo()
result['app_system_name'] = config_parameter.get_param('app_system_name', 'odooApp')
result['app_documentation_url'] = config_parameter.get_param('app_documentation_url')
result['app_documentation_dev_url'] = config_parameter.get_param('app_documentation_dev_url')
result['app_support_url'] = config_parameter.get_param('app_support_url')
result['app_account_title'] = config_parameter.get_param('app_account_title')
result['app_account_url'] = config_parameter.get_param('app_account_url')
result['app_show_documentation'] = config_parameter.get_param('app_show_documentation')
result['app_show_documentation_dev'] = config_parameter.get_param('app_show_documentation_dev')
result['app_show_support'] = config_parameter.get_param('app_show_support')
result['app_show_account'] = config_parameter.get_param('app_show_account')
result['app_show_poweredby'] = config_parameter.get_param('app_show_poweredby')
return result

View File

@@ -46,7 +46,7 @@ class IrModule(models.Model):
}) })
return action return action
@api.depends('name', 'state') @api.depends('name', 'latest_version', 'state')
def _get_latest_version(self): def _get_latest_version(self):
default_version = modules.adapt_version('1.0') default_version = modules.adapt_version('1.0')
for module in self: for module in self:

View File

@@ -9,10 +9,9 @@ _logger = logging.getLogger(__name__)
class View(models.Model): class View(models.Model):
_inherit = 'ir.ui.view' _inherit = 'ir.ui.view'
@api.model def _render_template(self, template, values=None, engine='ir.qweb'):
def render_template(self, template, values=None, engine='ir.qweb'): # if template in ['web.login', 'web.webclient_bootstrap']:
if template in ['web.login', 'web.webclient_bootstrap']: if not values:
if not values: values = {}
values = {} values["title"] = values["app_title"] = self.env['ir.config_parameter'].sudo().get_param("app_system_name", "odooApp")
values["title"] = self.env['ir.config_parameter'].sudo().get_param("app_system_name", "odooApp") return super(View, self)._render_template(template, values=values, engine=engine)
return super(View, self).render_template(template, values=values, engine=engine)

View File

@@ -3,6 +3,7 @@
import logging import logging
from odoo import api, fields, models, _ from odoo import api, fields, models, _
from odoo.exceptions import UserError, ValidationError
_logger = logging.getLogger(__name__) _logger = logging.getLogger(__name__)

View File

@@ -1,12 +1,13 @@
odoo.define('app_odoo_customize.app_system_name', function (require) { /** @odoo-module **/
"use strict";
var WebClient = require('web.WebClient'); import { WebClient } from "@web/webclient/webclient";
WebClient.include({ import { patch } from "@web/core/utils/patch";
init: function() { import { session } from "@web/session";
patch(WebClient.prototype, "app_odoo_customize.WebClient", {
setup() {
this._super.apply(this, arguments); this._super.apply(this, arguments);
this.set('title_part', {"zopenerp": document.title}); const app_system_name = session.app_system_name || 'odooApp';
this.title.setParts({ zopenerp: app_system_name }); // zopenerp is easy to grep
} }
}); });
});

View File

@@ -1,17 +1,23 @@
odoo.define('app_odoo_customize.dialog', function (require) { /** @odoo-module **/
'use strict';
var Dialog = require('web.Dialog'); import { Dialog } from "@web/core/dialog/dialog";
import { patch } from "@web/core/utils/patch";
import { session } from "@web/session";
Dialog.include({ patch(Dialog.prototype, "app_odoo_customize.Dialog", {
open: function () { setup() {
this._super.apply(this, arguments); this._super.apply(this, arguments);
this._opened.then(function(){ const app_system_name = session.app_system_name || "odooApp";
$(".modal-content").draggable({ this.title = app_system_name;
handle: ".modal-header" },
}); // mounted() {
}); // //todo: 没用,不能用 jq的处理方式
return this; // this._super.apply(this, arguments);
}, // var $dl = this.__owl__.vnode ? this.__owl__.vnode.elm : null;
}); // var $ml = $dl.children[0].children[0].children[0];
// $ml.draggable({
// handle: ".modal-header"
// });
// },
}); });

View File

@@ -0,0 +1,116 @@
/** @odoo-module **/
import { UserMenu } from "@web/webclient/user_menu/user_menu";
import { routeToUrl } from "@web/core/browser/router_service";
import { patch } from "@web/core/utils/patch";
import { browser } from "@web/core/browser/browser";
import { registry } from "@web/core/registry";
import { session } from "@web/session";
const userMenuRegistry = registry.category("user_menuitems");
patch(UserMenu.prototype, "app_odoo_customize.UserMenu", {
setup() {
this._super.apply(this, arguments);
userMenuRegistry.remove("documentation");
userMenuRegistry.remove("support");
userMenuRegistry.remove("odoo_account");
userMenuRegistry.add("debug", debugItem)
.add("asset_asset", activateAssetsDebugging)
.add("leave_debug", leaveDebugMode)
.add("separator0", separator8)
.add("documentation", documentationItem)
.add("support", supportItem)
.add("odoo_account", odooAccountItem);
},
// getElements() {
// var ret = this._super.apply(this, arguments);
// return ret;
// },
});
function debugItem(env) {
const url_debug = $.param.querystring(window.location.href, 'debug=1');
return {
type: "item",
id: "debug",
description: env._t("Activate the developer mode"),
href: url_debug,
callback: () => {
browser.open(url_debug, "_self");
},
sequence: 5,
};
}
function activateAssetsDebugging(env) {
return {
type: "item",
description: env._t("Activate Assets Debugging"),
callback: () => {
browser.location.search = "?debug=assets";
},
sequence: 6,
};
}
function leaveDebugMode(env) {
return {
type: "item",
description: env._t("Leave the Developer Tools"),
callback: () => {
const route = env.services.router.current;
route.search.debug = "";
browser.location.href = browser.location.origin + routeToUrl(route);
},
sequence: 7,
};
}
function separator8() {
return {
type: "separator",
sequence: 8,
};
}
function documentationItem(env) {
const documentationURL = session.app_documentation_url;
return {
type: "item",
id: "documentation",
description: env._t("Documentation"),
href: documentationURL,
callback: () => {
browser.open(documentationURL, "_blank");
},
sequence: 10,
};
}
function supportItem(env) {
const url = session.app_support_url;
return {
type: "item",
id: "support",
description: env._t("Support"),
href: url,
callback: () => {
browser.open(url, "_blank");
},
sequence: 20,
};
}
function odooAccountItem(env) {
const app_account_title = session.app_account_title;
const app_account_url = session.app_account_url;
return {
type: "item",
id: "account",
description: env._t(app_account_title),
href: app_account_url,
callback: () => {
browser.open(app_account_url, "_blank");
},
sequence: 60,
};
}

View File

@@ -1,6 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<templates xml:space="preserve"> <templates xml:space="preserve">
<t t-extend="UserMenu.Actions"> <!--owl 处理继承继承-->
<t t-name="UserMenu" t-inherit="web.UserMenu" t-inherit-mode="extension" owl="1">
<xpath expr="//td[hasclass('client-line-email')]" position="after">
<t t-jquery="a[data-menu='documentation']" t-operation="before"> <t t-jquery="a[data-menu='documentation']" t-operation="before">
<switch-lang/> <switch-lang/>
<a role="menuitem" href="#" data-menu="debug" class="dropdown-item">Activate the developer mode</a> <a role="menuitem" href="#" data-menu="debug" class="dropdown-item">Activate the developer mode</a>