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