mirror of
https://github.com/Combodo/iTop.git
synced 2026-05-17 06:18:44 +02:00
Advanced Search: generic title for raw filters on joined classes
SVN:b1162[5551]
This commit is contained in:
@@ -871,6 +871,21 @@ class FieldExpression extends UnaryExpression
|
||||
{
|
||||
return $aAttDefs[$this->m_sName];
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($this->m_sName == 'id')
|
||||
{
|
||||
$aParams = array(
|
||||
'default_value' => 0,
|
||||
'is_null_allowed' => false,
|
||||
'allowed_values' => null,
|
||||
'depends_on' => null,
|
||||
'sql' => 'id',
|
||||
);
|
||||
|
||||
return new AttributeInteger($this->m_sName, $aParams);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
@@ -1468,6 +1468,9 @@ When associated with a trigger, each action is given an "order" number, specifyi
|
||||
'UI:Search:Criteria:DateTime:PlaceholderFromTime' => 'Any date',
|
||||
'UI:Search:Criteria:DateTime:PlaceholderUntil' => 'Any date',
|
||||
'UI:Search:Criteria:DateTime:PlaceholderUntilTime' => 'Any date',
|
||||
|
||||
'UI:Search:Criteria:Raw:Filtered' => 'Filtered',
|
||||
'UI:Search:Criteria:Raw:FilteredOn' => 'Filtered on %1$s',
|
||||
));
|
||||
|
||||
//
|
||||
|
||||
@@ -1234,6 +1234,9 @@ Lors de l\'association à un déclencheur, on attribue à chaque action un numé
|
||||
// -
|
||||
'UI:Search:Value:Filter:Placeholder' => 'Filter...',
|
||||
'UI:Search:Value:Toggler:CheckAllNone' => 'Check all / none',
|
||||
|
||||
'UI:Search:Criteria:Raw:Filtered' => 'Filtré',
|
||||
'UI:Search:Criteria:Raw:FilteredOn' => 'Filtré sur %1$s',
|
||||
));
|
||||
|
||||
|
||||
|
||||
@@ -32,6 +32,8 @@ use Combodo\iTop\Application\Search\CriterionConversionAbstract;
|
||||
use DateInterval;
|
||||
use DateTime;
|
||||
use Dict;
|
||||
use Exception;
|
||||
use MetaModel;
|
||||
|
||||
class CriterionToSearchForm extends CriterionConversionAbstract
|
||||
{
|
||||
@@ -40,9 +42,11 @@ class CriterionToSearchForm extends CriterionConversionAbstract
|
||||
* @param array $aAndCriterionRaw
|
||||
* @param array $aFieldsByCategory
|
||||
*
|
||||
* @param array $aClasses all the classes of the filter
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function Convert($aAndCriterionRaw, $aFieldsByCategory)
|
||||
public static function Convert($aAndCriterionRaw, $aFieldsByCategory, $aClasses)
|
||||
{
|
||||
$aAllFields = array();
|
||||
foreach($aFieldsByCategory as $aFields)
|
||||
@@ -71,6 +75,22 @@ class CriterionToSearchForm extends CriterionConversionAbstract
|
||||
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))
|
||||
{
|
||||
$aRef = explode('.', $aCriteria['ref']);
|
||||
if (isset($aClasses[$aRef[0]]))
|
||||
{
|
||||
$sClass = $aClasses[$aRef[0]];
|
||||
try
|
||||
{
|
||||
$aCriteria['label'] = Dict::Format('UI:Search:Criteria:Raw:FilteredOn', MetaModel::GetName($sClass));
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (array_key_exists('widget', $aCriteria))
|
||||
{
|
||||
|
||||
@@ -206,8 +206,6 @@ class SearchForm
|
||||
public function GetFields($oSet)
|
||||
{
|
||||
$oSearch = $oSet->GetFilter();
|
||||
// TODO: Later consider all the fields including the joined classes
|
||||
//$aAllClasses = $oSearch->GetJoinedClasses();
|
||||
$aAllClasses = $oSearch->GetSelectedClasses();
|
||||
$aAuthorizedClasses = array();
|
||||
foreach($aAllClasses as $sAlias => $sClassName)
|
||||
@@ -334,7 +332,7 @@ class SearchForm
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \DBSearch $oSearch
|
||||
* @param \DBObjectSearch $oSearch
|
||||
* @param array $aFields
|
||||
*
|
||||
* @param array $aArgs
|
||||
@@ -367,7 +365,7 @@ class SearchForm
|
||||
}
|
||||
$aAndCriterion[] = $oAndSubExpr->GetCriterion($oSearch);
|
||||
}
|
||||
$aAndCriterion = CriterionToSearchForm::Convert($aAndCriterion, $aFields);
|
||||
$aAndCriterion = CriterionToSearchForm::Convert($aAndCriterion, $aFields, $oSearch->GetJoinedClasses());
|
||||
$aOrCriterion[] = array('and' => $aAndCriterion);
|
||||
}
|
||||
|
||||
|
||||
@@ -165,7 +165,7 @@ class CriterionConversionTest extends ItopDataTestCase
|
||||
$oSearchForm = new SearchForm();
|
||||
$oSearch = \DBSearch::FromOQL("SELECT Contact");
|
||||
$aFields = $oSearchForm->GetFields(new \DBObjectSet($oSearch));
|
||||
$aRes = CriterionToSearchForm::Convert($aCriterion, $aFields);
|
||||
$aRes = CriterionToSearchForm::Convert($aCriterion, $aFields, $oSearch->GetJoinedClasses());
|
||||
$this->debug($aRes);
|
||||
$this->assertEquals($sExpectedOperator, $aRes[0]['operator']);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user