diff --git a/search_panel_extension/static/src/js/search_model.js b/search_panel_extension/static/src/js/search_model.js index a29db4d47..2b21980cf 100644 --- a/search_panel_extension/static/src/js/search_model.js +++ b/search_panel_extension/static/src/js/search_model.js @@ -99,6 +99,7 @@ patch(SearchModel.prototype, { // Array.from(group.values.values()).map(item => item.__count).reduce((acc, cur) => acc + cur, 0) group.__count = (section.values.values().find(item => item.id === key)?.__count ?? 0) const group_id = section.values.values().find(item => item.id === key)?.group_id + if (!group_id) return; if (ids.includes(group_id)) { if (group_id === key) { group.parent = false; diff --git a/sh_backmate_theme_adv_enterprise/__manifest__.py b/sh_backmate_theme_adv_enterprise/__manifest__.py index 89b03937b..ad78304f5 100644 --- a/sh_backmate_theme_adv_enterprise/__manifest__.py +++ b/sh_backmate_theme_adv_enterprise/__manifest__.py @@ -13,6 +13,7 @@ "version": "0.0.4", "depends": [ + "base", "web", "web_enterprise", "mail", @@ -65,7 +66,6 @@ "web.assets_web_dark": [ 'sh_backmate_theme_adv_enterprise/static/src/scss/night_mode/night_mode.scss', ], - 'web.assets_backend': [ #new_style_1_view# "sh_backmate_theme_adv_enterprise/static/src/scss/list_view/list_view_style.scss", @@ -282,7 +282,13 @@ 'web/static/lib/pdfjs/build/pdf.js', 'web/static/lib/pdfjs/build/pdf.worker.js', 'web/static/lib/pdfjs/web/viewer.js', - + + # edit_save_button + 'sh_backmate_theme_adv_enterprise/static/src/views/form/form_controller.xml', + 'sh_backmate_theme_adv_enterprise/static/src/views/form/form_controller.js', + + # breadcrumb_to_back_button + 'sh_backmate_theme_adv_enterprise/static/src/search/control_panel/*', ], 'web.assets_web': [ diff --git a/sh_backmate_theme_adv_enterprise/static/src/search/control_panel/control_panel.js b/sh_backmate_theme_adv_enterprise/static/src/search/control_panel/control_panel.js new file mode 100644 index 000000000..7a944fed8 --- /dev/null +++ b/sh_backmate_theme_adv_enterprise/static/src/search/control_panel/control_panel.js @@ -0,0 +1,13 @@ +/** @odoo-module **/ +import { patch } from "@web/core/utils/patch"; +import { ControlPanel } from "@web/search/control_panel/control_panel"; + + +patch(ControlPanel.prototype, { + + onBreadcrumbBackClicked(ev) { + const jsId = this.breadcrumbs[this.breadcrumbs.length - 2].jsId; + this.onBreadcrumbClicked(jsId); + } + +}); diff --git a/sh_backmate_theme_adv_enterprise/static/src/search/control_panel/control_panel.scss b/sh_backmate_theme_adv_enterprise/static/src/search/control_panel/control_panel.scss new file mode 100644 index 000000000..49c466420 --- /dev/null +++ b/sh_backmate_theme_adv_enterprise/static/src/search/control_panel/control_panel.scss @@ -0,0 +1,3 @@ +.breadcrumb-back-div { + display: flex; +} \ No newline at end of file diff --git a/sh_backmate_theme_adv_enterprise/static/src/search/control_panel/control_panel.xml b/sh_backmate_theme_adv_enterprise/static/src/search/control_panel/control_panel.xml new file mode 100644 index 000000000..09e05130d --- /dev/null +++ b/sh_backmate_theme_adv_enterprise/static/src/search/control_panel/control_panel.xml @@ -0,0 +1,28 @@ + + + + + + display: none !important; + + + display: none !important; + + + + + + + + diff --git a/sh_backmate_theme_adv_enterprise/static/src/views/form/form_controller.js b/sh_backmate_theme_adv_enterprise/static/src/views/form/form_controller.js new file mode 100644 index 000000000..05ce15f42 --- /dev/null +++ b/sh_backmate_theme_adv_enterprise/static/src/views/form/form_controller.js @@ -0,0 +1,80 @@ +/** @odoo-module **/ +import { patch } from "@web/core/utils/patch"; +import { session } from "@web/session"; +import { FormController } from "@web/views/form/form_controller"; + +const originalSetup = FormController.prototype.setup; +const originalEdit = FormController.prototype.edit; +const originalSaveButtonClicked = FormController.prototype.saveButtonClicked; +const originalDiscard = FormController.prototype.discard; + + +patch(FormController.prototype, { + setup() { + // change this to true if you want to prevent editing for admin + // this.isAdmin = session.name === "Administrator"; + // if (this.isAdmin) { + // this.props.preventEdit = this.env.inDialog ? false : true; + // } + this.props.preventEdit = this.env.inDialog ? false : true; + originalSetup.call(this); + }, + + async edit() { + if (originalEdit) { + await originalEdit.call(this); + } + + if (this.model && this.model.root) { + // 添加管理员才会变只读 + // if (this.isAdmin) { + await this.model.root.switchMode("edit"); + // } + } else { + console.error("Model or model root is not defined"); + } + }, + + async saveButtonClicked(params = {}) { + if (originalSaveButtonClicked) { + await originalSaveButtonClicked.call(this, params); + } + if (!this.env.inDialog) { + // 添加管理员才会变只读 + // if (this.isAdmin) { + await this.model.root.switchMode("readonly"); + // } + } else { + this.model.actionService.doAction({ type: 'ir.actions.act_window_close' }); + } + }, + + async discard() { + if (originalDiscard) { + await originalDiscard.call(this); + } + + if (!this.env.inDialog) { + // 添加管理员才会变只读 + // if (this.isAdmin) { + await this.model.root.switchMode("readonly"); + // } + } else { + this.model.actionService.doAction({ type: 'ir.actions.act_window_close' }); + } + }, + + // async beforeLeave() { + // if (this.model.root.isDirty) { + // if (confirm("The changes you have made will save Automatically!")) { + // await this.model.root.save(); + // return true; + // } else { + // return false; + // } + // } + // return true; + // } + +}) + diff --git a/sh_backmate_theme_adv_enterprise/static/src/views/form/form_controller.xml b/sh_backmate_theme_adv_enterprise/static/src/views/form/form_controller.xml new file mode 100644 index 000000000..35a9ea014 --- /dev/null +++ b/sh_backmate_theme_adv_enterprise/static/src/views/form/form_controller.xml @@ -0,0 +1,23 @@ + + + + + + + + + +
+ + +
+
+
+
+
\ No newline at end of file