From 36cde352379d578f3c2e056798501427d2183049 Mon Sep 17 00:00:00 2001
From: Mohamed Eltayar <152964073+maltayyar2@users.noreply.github.com>
Date: Sat, 30 Aug 2025 20:29:48 +0300
Subject: [PATCH 1/2] enhance_trans
---
.../static/src/js/list_search.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/odex25_base/fims_general_search_tree_view/static/src/js/list_search.js b/odex25_base/fims_general_search_tree_view/static/src/js/list_search.js
index 4f83cdb60..431b91e72 100644
--- a/odex25_base/fims_general_search_tree_view/static/src/js/list_search.js
+++ b/odex25_base/fims_general_search_tree_view/static/src/js/list_search.js
@@ -382,7 +382,7 @@ odoo.define('fims_general_search_tree_view.list_search', function (require) {
if (state.isFiltered && state.filteredCount >= 0) {
this.$('.oe_search_count')
- .text(_t('Records: ') + state.filteredCount)
+ .text(_t('عدد السجلات: ') + state.filteredCount)
.removeClass('text-danger')
.show();
}
@@ -410,7 +410,7 @@ odoo.define('fims_general_search_tree_view.list_search', function (require) {
}
var countText = isFiltered ?
- _t('Records: ') + savedCount : '';
+ _t('عدد السجلات: ') + savedCount : '';
var html =
'
' +
From 2331f74a23af5f6b99d266a589db1f4d1b03ca8a Mon Sep 17 00:00:00 2001
From: Mohamed Eltayar <152964073+maltayyar2@users.noreply.github.com>
Date: Sat, 30 Aug 2025 20:33:23 +0300
Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=8E=AF=20[FIX]=20Exclude=20search=20b?=
=?UTF-8?q?ox=20from=20Many2Many/One2Many=20fields=20within=20forms?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- Enhanced _shouldAddSearchBox logic to detect relational field contexts
- Added comprehensive DOM traversal to identify form-embedded lists
- Prevents search box appearance in o_field_widget, o_field_many2many, o_field_one2many
- Maintains search functionality for standalone list views only
- Added size-based filtering for small embedded lists
- Preserves all existing functionality for main list views
---
.../static/src/js/list_search.js | 53 +++++++++++++++++--
1 file changed, 48 insertions(+), 5 deletions(-)
diff --git a/odex25_base/fims_general_search_tree_view/static/src/js/list_search.js b/odex25_base/fims_general_search_tree_view/static/src/js/list_search.js
index 431b91e72..93bad4ea9 100644
--- a/odex25_base/fims_general_search_tree_view/static/src/js/list_search.js
+++ b/odex25_base/fims_general_search_tree_view/static/src/js/list_search.js
@@ -390,11 +390,54 @@ odoo.define('fims_general_search_tree_view.list_search', function (require) {
},
_shouldAddSearchBox: function() {
- return this.arch &&
- this.arch.tag === 'tree' &&
- this.$el &&
- this.$el.hasClass('o_list_view') &&
- !this.$el.find('.oe_search_container').length;
+ // Basic requirements check
+ if (!this.arch ||
+ this.arch.tag !== 'tree' ||
+ !this.$el ||
+ !this.$el.hasClass('o_list_view') ||
+ this.$el.find('.oe_search_container').length > 0) {
+ return false;
+ }
+
+ // Check if this is inside a relational field (Many2Many/One2Many)
+ // Look for parent containers that indicate we're inside a form field
+ var $parent = this.$el.parent();
+
+ // Check for various indicators that we're inside a relational field
+ while ($parent.length > 0) {
+ // Check if parent has classes that indicate it's a field widget
+ if ($parent.hasClass('o_field_widget') ||
+ $parent.hasClass('o_field_many2many') ||
+ $parent.hasClass('o_field_one2many') ||
+ $parent.hasClass('o_field_x2many_list') ||
+ $parent.hasClass('o_x2many_control_panel') ||
+ $parent.attr('name') && $parent.closest('.o_form_view').length > 0) {
+ return false; // Don't show search box in relational fields
+ }
+
+ // Check if we're inside a form view (not a standalone list view)
+ if ($parent.hasClass('o_form_view') &&
+ this.$el.closest('.o_content').find('.o_form_view').length > 0) {
+ return false; // Don't show in embedded lists within forms
+ }
+
+ // Stop at main content area
+ if ($parent.hasClass('o_content') ||
+ $parent.hasClass('o_action_manager') ||
+ $parent.hasClass('o_main_content')) {
+ break;
+ }
+
+ $parent = $parent.parent();
+ }
+
+ // Additional check: if the list is very small (likely embedded), don't show
+ if (this.$el.find('tbody tr').length <= 5 &&
+ this.$el.closest('.o_form_view').length > 0) {
+ return false;
+ }
+
+ return true; // Show search box for standalone list views
},
_addCustomSearchBox: function() {