- Enhancement to UniversalSearch:

1) Localization
2) Fixed two medium issues, see Trac #35

SVN:trunk[394]
This commit is contained in:
Denis Flaven
2010-05-04 13:57:14 +00:00
parent 2aa049092f
commit 65d6adde1c
3 changed files with 26 additions and 19 deletions

View File

@@ -427,6 +427,10 @@ Dict::Add('EN US', 'English', 'English', array(
'UI:CSVImport:HeaderSearch' => 'Search?', 'UI:CSVImport:HeaderSearch' => 'Search?',
'UI:CSVImport:AlertIncompleteMapping' => 'Please select a mapping for every field.', 'UI:CSVImport:AlertIncompleteMapping' => 'Please select a mapping for every field.',
'UI:CSVImport:AlertNoSearchCriteria' => 'Please select at least one search criteria', 'UI:CSVImport:AlertNoSearchCriteria' => 'Please select at least one search criteria',
'UI:UniversalSearchTitle' => 'iTop - Universal Search',
'UI:UniversalSearch:Error' => 'Error: %1$s',
'UI:UniversalSearch:LabelSelectTheClass' => 'Select the class to search: ',
)); ));

View File

@@ -427,6 +427,11 @@ Dict::Add('FR FR', 'French', 'Français', array(
'UI:CSVImport:HeaderSearch' => 'Recherche ?', 'UI:CSVImport:HeaderSearch' => 'Recherche ?',
'UI:CSVImport:AlertIncompleteMapping' => 'Veuillez choisir le correspondance de chacun des champs.', 'UI:CSVImport:AlertIncompleteMapping' => 'Veuillez choisir le correspondance de chacun des champs.',
'UI:CSVImport:AlertNoSearchCriteria' => 'Veuillez choisir au moins une clef de recherche.', 'UI:CSVImport:AlertNoSearchCriteria' => 'Veuillez choisir au moins une clef de recherche.',
'UI:UniversalSearchTitle' => 'iTop - Recherche Universelle',
'UI:UniversalSearch:Error' => 'Erreur : %1$s',
'UI:UniversalSearch:LabelSelectTheClass' => 'Sélectionnez le type d\'objets à rechercher : ',
)); ));
?> ?>

View File

@@ -11,35 +11,34 @@ LoginWebPage::DoLogin(); // Check user rights and prompt if needed
$oContext = new UserContext(); $oContext = new UserContext();
$oAppContext = new ApplicationContext(); $oAppContext = new ApplicationContext();
$iActiveNodeId = utils::ReadParam('menu', -1); $iActiveNodeId = utils::ReadParam('menu', -1);
$currentOrganization = utils::ReadParam('org_id', 1); $currentOrganization = utils::ReadParam('org_id', '');
$oP = new iTopWebPage("iTop - Universal search", $currentOrganization); $oP = new iTopWebPage(Dict::S('UI:UniversalSearchTitle'), $currentOrganization);
// From now on the context is limited to the the selected organization ?? // From now on the context is limited to the the selected organization ??
// Now render the content of the page // Now render the content of the page
$sClass = utils::ReadParam('class', 'bizOrganization'); $sBaseClass = utils::ReadParam('baseClass', 'bizOrganization');
$sOQLClass = utils::ReadParam('oql_class', $sClass); $sClass = utils::ReadParam('class', $sBaseClass);
$sOQLClause = utils::ReadParam('oql_clause', ''); $sOQLClause = utils::ReadParam('oql_clause', '');
$sClassName = $sOQLClass; //utils::ReadParam('class', $sOQLClass);
$sFilter = utils::ReadParam('filter', ''); $sFilter = utils::ReadParam('filter', '');
$sOperation = utils::ReadParam('operation', ''); $sOperation = utils::ReadParam('operation', '');
// First part: select the class to search for // First part: select the class to search for
$oP->add("<form>"); $oP->add("<form>");
$oP->add("<input type=\"hidden\" name=\"org_id\" value=\"$currentOrganization\" />"); $oP->add("<input type=\"hidden\" name=\"org_id\" value=\"$currentOrganization\" />");
$oP->add("Select the class to search: <select style=\"width: 150px;\" id=\"select_class\" name=\"oql_class\" onChange=\"this.form.submit();\">"); $oP->add(Dict::S('UI:UniversalSearch:LabelSelectTheClass')."<select style=\"width: 150px;\" id=\"select_class\" name=\"baseClass\" onChange=\"this.form.submit();\">");
$aClassLabels = array(); $aClassLabels = array();
foreach(MetaModel::GetClasses('bizmodel') as $sClass) foreach(MetaModel::GetClasses('bizmodel') as $sCurrentClass)
{ {
$aClassLabels[$sClass] = MetaModel::GetName($sClass); $aClassLabels[$sCurrentClass] = MetaModel::GetName($sCurrentClass);
} }
asort($aClassLabels); asort($aClassLabels);
foreach($aClassLabels as $sClass => $sLabel) foreach($aClassLabels as $sCurrentClass => $sLabel)
{ {
$sDescription = MetaModel::GetClassDescription($sClass); $sDescription = MetaModel::GetClassDescription($sCurrentClass);
$sSelected = ($sClass == $sClassName) ? " SELECTED" : ""; $sSelected = ($sCurrentClass == $sBaseClass) ? " SELECTED" : "";
$oP->add("<option value=\"$sClass\" title=\"$sDescription\"$sSelected>$sLabel</option>"); $oP->add("<option value=\"$sCurrentClass\" title=\"$sDescription\"$sSelected>$sLabel</option>");
} }
$oP->add("</select></form>"); $oP->add("</select></form>");
@@ -47,7 +46,7 @@ try
{ {
if ($sOperation == 'search_form') if ($sOperation == 'search_form')
{ {
$sOQL = "SELECT $sOQLClass $sOQLClause"; $sOQL = "SELECT $sClass $sOQLClause";
$oFilter = DBObjectSearch::FromOQL($sOQL); $oFilter = DBObjectSearch::FromOQL($sOQL);
} }
else else
@@ -57,17 +56,16 @@ try
{ {
$oFilter = CMDBSearchFilter::unserialize($sFilter); $oFilter = CMDBSearchFilter::unserialize($sFilter);
} }
else if (!empty($sClassName)) else if (!empty($sClass))
{ {
$oFilter = new CMDBSearchFilter($sClassName); $oFilter = new CMDBSearchFilter($sClass);
} }
} }
} }
catch (CoreException $e) catch (CoreException $e)
{ {
$oFilter = new CMDBSearchFilter($sClassName); $oFilter = new CMDBSearchFilter($sClass);
$oP->P("<b>Error:</b>"); $oP->P("<b>".Dict::Format('UI:UniversalSearch:Error', $e->getHtmlDesc())."</b>");
$oP->P($e->getHtmlDesc());
} }
if ($oFilter != null) if ($oFilter != null)
@@ -76,7 +74,7 @@ if ($oFilter != null)
$oBlock = new DisplayBlock($oFilter, 'search', false); $oBlock = new DisplayBlock($oFilter, 'search', false);
$aExtraParams = $oAppContext->GetAsHash(); $aExtraParams = $oAppContext->GetAsHash();
$aExtraParams['open'] = true; $aExtraParams['open'] = true;
$aExtraParams['oql_class'] = $sOQLClass; $aExtraParams['baseClass'] = $sBaseClass;
//$aExtraParams['class'] = $sClassName; //$aExtraParams['class'] = $sClassName;
$oBlock->Display($oP, 0, $aExtraParams); $oBlock->Display($oP, 0, $aExtraParams);