Skip to content

Commit

Permalink
Fix salesagility#10377 - Fix issues with global search not displaying…
Browse files Browse the repository at this point in the history
… values correctly

Update how enums fields, currency fields and module names are displayed in global search
  • Loading branch information
JackBuchanan committed Mar 13, 2024
1 parent 8735575 commit e77859c
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 2 deletions.
37 changes: 37 additions & 0 deletions lib/Search/SearchResults.php
Original file line number Diff line number Diff line change
Expand Up @@ -143,13 +143,50 @@ public function getHitsAsBeans(): array

$obj->load_relationships();
$fieldDefs = $obj->getFieldDefinitions();
$obj = $this->formatForDisplay($obj, $fieldDefs);
$parsed[$module][] = $this->updateFieldDefLinks($obj, $fieldDefs);
}
}

return $parsed;
}

/**
* Format data so it can be correctly displayed on search results
*
* @param SugarBean $obj
* @param array $fieldDefs
* @return SugarBean
*/
protected function formatForDisplay(SugarBean $obj, array $fieldDefs): SugarBean
{
global $app_list_strings;

foreach ($fieldDefs as $fieldDef) {
$value = $obj->{$fieldDef['name']};
if (isset($value)) {
switch ($fieldDef['type']){
case 'enum':
case 'dynamicenum':
case 'multienum':
if (isset($obj->field_name_map[$fieldDef['name']]['options']) &&
isset($app_list_strings[$obj->field_name_map[$fieldDef['name']]['options']]) &&
isset($app_list_strings[$obj->field_name_map[$fieldDef['name']]['options']][$value])
) {
$obj->{$fieldDef['name']} = $app_list_strings[$obj->field_name_map[$fieldDef['name']]['options']][$value];
}
break;

case 'currency':
require_once('modules/Currencies/Currency.php');
$obj->{$fieldDef['name']} = currency_format_number($value);
break;
}
}
}
return $obj;
}

/**
*
* @param SugarBean $obj
Expand Down
8 changes: 7 additions & 1 deletion lib/Search/UI/SearchResultsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,13 @@ public function display(): void
$smarty->assign('results', $this->results);
$smarty->assign('APP', $app_strings);
try {
$smarty->assign('resultsAsBean', $this->results->getHitsAsBeans());
$hitsAsBeans = $this->results->getHitsAsBeans();
foreach($hitsAsBeans as $module => $bean){
$moduleName[$bean[0]->module_name] = translate('LBL_MODULE_NAME', $bean[0]->module_name);
}
$smarty->assign('moduleLabel', $moduleName);

$smarty->assign('resultsAsBean', $hitsAsBeans);
} catch (\SuiteCRM\Exception\Exception $e) {
LoggerManager::getLogger()->fatal("Failed to retrieve ElasticSearch options");
}
Expand Down
2 changes: 1 addition & 1 deletion lib/Search/UI/templates/search.results.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@
{/if}
{foreach from=$resultsAsBean item=beans key=module}
<h3>{$module}</h3>
<h3>{$moduleLabel[$module]}</h3>
<table class="list view">
<thead>
<tr>
Expand Down

0 comments on commit e77859c

Please sign in to comment.