diff --git a/sources/application/search/criterionconversion/criteriontosearchform.class.inc.php b/sources/application/search/criterionconversion/criteriontosearchform.class.inc.php index 2f83619e31..a1f12b401d 100644 --- a/sources/application/search/criterionconversion/criteriontosearchform.class.inc.php +++ b/sources/application/search/criterionconversion/criteriontosearchform.class.inc.php @@ -44,9 +44,11 @@ class CriterionToSearchForm extends CriterionConversionAbstract * * @param array $aClasses all the classes of the filter * + * @param bool $bIsRemovable + * * @return array */ - public static function Convert($aAndCriterionRaw, $aFieldsByCategory, $aClasses) + public static function Convert($aAndCriterionRaw, $aFieldsByCategory, $aClasses, $bIsRemovable = true) { $aAllFields = array(); foreach($aFieldsByCategory as $aFields) @@ -71,10 +73,17 @@ class CriterionToSearchForm extends CriterionConversionAbstract foreach($aAndCriterionRaw as $aCriteria) { + $aCriteria['label'] = trim($aCriteria['label'], "()"); + $aCriteria['is_removable'] = $bIsRemovable; + if (!$bIsRemovable) + { + $aCriteria['widget'] = AttributeDefinition::SEARCH_WIDGET_TYPE_RAW; + } + // Check criteria validity if (!array_key_exists('ref', $aCriteria) || !array_key_exists($aCriteria['ref'], $aAllFields)) { - $aCriteria['widget'] = AttributeDefinition::SEARCH_WIDGET_TYPE_RAW; + $aCriteria['label'] = Dict::S('UI:Search:Criteria:Raw:Filtered'); if (array_key_exists('ref', $aCriteria)) { diff --git a/sources/application/search/searchform.class.inc.php b/sources/application/search/searchform.class.inc.php index 12ec3b9732..469f37744c 100644 --- a/sources/application/search/searchform.class.inc.php +++ b/sources/application/search/searchform.class.inc.php @@ -128,9 +128,16 @@ class SearchForm $aArgs = array(); } + $bIsRemovable = true; + if (isset($aExtraParams['selection_mode']) && $aExtraParams['selection_mode']) + { + // Mark all criterion as read-only and non-removable + $bIsRemovable = false; + } $aFields = $this->GetFields($oSet); $oSearch = $oSet->GetFilter(); - $aCriterion = $this->GetCriterion($oSearch, $aFields, $aArgs); + $aCriterion = $this->GetCriterion($oSearch, $aFields, $aArgs, $bIsRemovable); + $oBaseSearch = $oSearch->DeepClone(); $oBaseSearch->ResetCondition(); @@ -149,17 +156,17 @@ class SearchForm { $aExtraParams['table_id'] = "search_form_result_{$sSearchFormId}"; } - if (!array_key_exists('table_inner_id', $aExtraParams)) + if (!isset($aExtraParams['table_inner_id'])) { $aListParams['table_inner_id'] = "table_inner_id_{$sSearchFormId}"; } // When table_id is different of result_list_outer_selector - if (array_key_exists('table_id2', $aExtraParams)) + if (isset($aExtraParams['table_id2'])) { $aListParams['table_id'] = $aExtraParams['table_id2']; } $bOpen = false; - if (array_key_exists('open', $aExtraParams)) + if (isset($aExtraParams['open'])) { $bOpen = $aExtraParams['open']; } @@ -349,9 +356,11 @@ class SearchForm * * @param array $aArgs * + * @param bool $bIsRemovable + * * @return array */ - public function GetCriterion($oSearch, $aFields, $aArgs = array()) + public function GetCriterion($oSearch, $aFields, $aArgs = array(), $bIsRemovable = true) { $oExpression = $oSearch->GetCriteria(); @@ -377,7 +386,7 @@ class SearchForm } $aAndCriterion[] = $oAndSubExpr->GetCriterion($oSearch); } - $aAndCriterion = CriterionToSearchForm::Convert($aAndCriterion, $aFields, $oSearch->GetJoinedClasses()); + $aAndCriterion = CriterionToSearchForm::Convert($aAndCriterion, $aFields, $oSearch->GetJoinedClasses(), $bIsRemovable); $aOrCriterion[] = array('and' => $aAndCriterion); }