mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-24 02:58:43 +02:00
- New search form allowing to perform OQL queries for any class of object
SVN:trunk[92]
This commit is contained in:
@@ -18,12 +18,13 @@ $oP = new iTopWebPage("iTop - Universal search", $currentOrganization);
|
||||
// From now on the context is limited to the the selected organization ??
|
||||
|
||||
// Now render the content of the page
|
||||
$sClassName = utils::ReadParam('class', 'bizOrganization');
|
||||
$sOQLClass = utils::ReadParam('oql_class', 'bizOrganization');
|
||||
$sOQLClause = utils::ReadParam('oql_clause', '');
|
||||
$sClassName = utils::ReadParam('class', $sOQLClass);
|
||||
$sFilter = utils::ReadParam('filter', '');
|
||||
$sOperation = utils::ReadParam('operation', '');
|
||||
|
||||
// First part: select the class to search for
|
||||
$oP->add("<div id=\"TopPane\">");
|
||||
$oP->add("<form>");
|
||||
$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=\"class\" onChange=\"this.form.submit();\">");
|
||||
@@ -31,29 +32,44 @@ foreach(MetaModel::GetClasses('bizmodel') as $sClass)
|
||||
{
|
||||
$sDescription = MetaModel::GetClassDescription($sClass);
|
||||
$sSelected = ($sClass == $sClassName) ? " SELECTED" : "";
|
||||
$oP->add("<option value=\"$sClass\" title=\"$sDescription\"$sSelected>$sClass</option>");
|
||||
$oP->add("<option value=\"$sClass\" title=\"$sDescription\"$sSelected>".MetaModel::GetName($sClass)."</option>");
|
||||
}
|
||||
$oP->add("</select></form>");
|
||||
|
||||
// Second part: advanced search form:
|
||||
$oFilter = null;
|
||||
if (!empty($sFilter))
|
||||
try
|
||||
{
|
||||
$oFilter = CMDBSearchFilter::unserialize($sFilter);
|
||||
if ($sOperation == 'search_form')
|
||||
{
|
||||
$sOQL = "SELECT $sOQLClass $sOQLClause";
|
||||
$oFilter = DBObjectSearch::FromOQL($sOQL);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Second part: advanced search form:
|
||||
if (!empty($sFilter))
|
||||
{
|
||||
$oFilter = CMDBSearchFilter::unserialize($sFilter);
|
||||
}
|
||||
else if (!empty($sClassName))
|
||||
{
|
||||
$oFilter = new CMDBSearchFilter($sClassName);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (!empty($sClassName))
|
||||
catch (CoreException $e)
|
||||
{
|
||||
$oFilter = new CMDBSearchFilter($sClassName);
|
||||
$oP->P("<b>Error:</b>");
|
||||
$oP->P($e->getHtmlDesc());
|
||||
}
|
||||
|
||||
if ($oFilter != null)
|
||||
{
|
||||
$oSet =new CMDBObjectSet($oFilter);
|
||||
cmdbAbstractObject::DisplaySearchForm($oP, $oSet, array('org_id' => $currentOrganization, 'class' => $sClassName));
|
||||
$oP->add("</div>\n");
|
||||
$oSet = new CMDBObjectSet($oFilter);
|
||||
$oBlock = new DisplayBlock($oFilter, 'search', false);
|
||||
$oBlock->Display($oP, 0);
|
||||
|
||||
// Search results
|
||||
$oP->add("<div id=\"BottomPane\">");
|
||||
$oResultBlock = new DisplayBlock($oFilter, 'list', false);
|
||||
$oResultBlock->RenderContent($oP);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user