123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723 |
- <?php
- require_once('../application/application.inc.php');
- require_once('../application/nicewebpage.class.inc.php');
- require_once('../application/dialogstack.class.inc.php');
- require_once('../application/startup.inc.php');
- $oPage = new NiceWebPage("The very first iTop page");
- $oPage->no_cache();
- MetaModel::CheckDefinitions();
- // new API - MetaModel::DBCheckFormat();
- // not necessary, and time consuming!
- // MetaModel::DBCheckIntegrity();
- // Comment by Rom: MetaModel::GetSubclasses("logRealObject") retourne la totale
- // utiliser IsRootClass pour savoir si une classe obtenue est une classe feuille ou non
- $aTopLevelClasses = array('bizService', 'bizLocation', 'bizContact', 'logInfra', 'bizDocument', 'bizObject');
- function ReadParam($sName, $defaultValue = "")
- {
- return isset($_REQUEST[$sName]) ? $_REQUEST[$sName] : $defaultValue;
- }
- function DisplaySelectOrg($oPage, $sCurrentOrganization, $iContext)
- {
- global $oContext;
-
- //$oSearchFilter = new CMDBSearchFilter("bizOrganization");
- $oSearchFilter = $oContext->NewFilter("bizOrganization");
- $oPage->p($oSearchFilter->serialize());
- $oSet = new CMDBObjectSet($oSearchFilter);
- if ($oSet->Count() == 0)
- {
- $oPage->add("<div style=\"border:1px solid #97a5b0; margin-top:0.5em;\">\n");
- $oPage->add("<div style=\"padding:0.25em;background-color:#f0f0f0;text-align:center\">\n");
- $oPage->p("No organization found.\n");
- $oPage->p($oSearchFilter->__DescribeHTML());
- $oPage->add("</div>\n");
- $oPage->add("</div>\n");
- }
- else
- {
- $oCurrentOrganization = null;
- $oPage->add("<div style=\"border:1px solid #97a5b0; margin-top:0.5em;\">\n");
- $oPage->add("<div style=\"padding:0.25em;background-color:#f0f0f0;text-align:center\">\n");
- $oPage->add("<form method=\"get\"\">\n");
- $oPage->add("Select the context:\n");
- $oPage->add("<select name=\"ctx\">\n");
- $oPage->add("<option value=\"1\"".($iContext == 1 ? "selected" : "").">See everything (no context)</option>\n");
- $oPage->add("<option value=\"2\"".($iContext == 2 ? "selected" : "").">See only the iTop organization</option>\n");
- $oPage->add("<option value=\"3\"".($iContext == 3 ? "selected" : "").">See only organizations which name contains 'o', and contact in France (tel. contains +33)</option>\n");
- $oPage->add("</select>\n");
- $oPage->p("");
- $oPage->add("Select an organization: \n");
- $oPage->add("<select name=\"org\"\">\n");
- while($oOrg = $oSet->Fetch())
- {
- if ($sCurrentOrganization == $oOrg->GetKey())
- {
- $oCurrentOrganization = $oOrg;
- $sSelected = " selected";
- }
- else
- {
- $sSelected = "";
- }
- $oPage->add("<option value=\"".$oOrg->GetKey()."\"$sSelected>".$oOrg->Get('name')."</option>\n");
- }
- $oPage->add("</select>\n");
- $oPage->add("<input type=\"submit\" value=\" Search \">\n");
- $oPage->add("</form>\n");
- if ($oCurrentOrganization != null)
- {
- $oCurrentOrganization->DisplayDetails($oPage);
- }
- $oPage->add("</div>\n");
- $oPage->add("</div>\n");
- }
- }
- function DisplayDetails(WebPage $oPage, $sClassName, $sKey)
- {
- global $oContext;
- //$oObj = MetaModel::GetObject($sClassName, $sKey);
- $oObj = $oContext->GetObject($sClassName, $sKey);
- $oPage->p("Details of ".MetaModel::GetName($sClassName)." - $sKey");
- $oObj->DisplayDetails($oPage);
-
- // Modified by rom
- $aLinks = array();
- $aLinks[] = "<a href=\"?operation=changeslog&class=$sClassName&key=$sKey\">View changes log</a>";
- $aLinks[] = "<a href=\"?operation=edit&class=$sClassName&key=$sKey\">Edit this object</a>";
- $aLinks[] = "<a href=\"?operation=delete&class=$sClassName&key=$sKey\">Delete this object (no confirmation!)</a>";
- // By rom
- foreach (MetaModel::EnumLinkingClasses($sClassName) as $sLinkClass => $aRemoteClasses)
- {
- foreach($aRemoteClasses as $sExtKeyAttCode => $sRemoteClass)
- {
- // #@# quick and dirty: guess the extkey attcode from link to current class
- // later, this information should be part of the biz model
- $sExtKeyToMe = "";
- foreach(MetaModel::ListAttributeDefs($sLinkClass) as $sAttCode=>$oAttDef)
- {
- if ($oAttDef->IsExternalKey() && $oAttDef->GetTargetClass() == $sClassName)
- {
- $sExtKeyToMe = $sAttCode;
- break;
- }
- }
- if (empty($sExtKeyToMe))
- {
- $oPage->p("Houston... could not find the external key for $sClassName in $sLinkClass");
- }
- else
- {
- $oFilter = new CMDBSearchFilter($sRemoteClass); // just a dummy empty one for edition
- $sButton = "<div>\n";
- $sButton .= "<form action=\"./advanced_search.php\" method=\"post\">\n";
- $aOnOKArgs = array("operation"=>"addlinks", "linkclass"=>$sLinkClass, "extkeytome"=>$sExtKeyToMe, "extkeytopartner"=>$sExtKeyAttCode);
- $sButton .= dialogstack::RenderEditableField("Add links with $sRemoteClass", "filter", $oFilter->serialize(), true, "", $aOnOKArgs);
- $sButton .= "</form>\n";
- $sButton .= "</div>\n";
- $aLinks[] = $sButton;
- }
- }
- }
- $sLinks = implode(" / ", $aLinks);
- $oPage->p($sLinks);
- }
- // By Rom
- function DisplayChangesLog(WebPage $oPage, $sClassName, $sKey)
- {
- global $oContext;
- //$oObj = MetaModel::GetObject($sClassName, $sKey);
- $oObj = $oContext->GetObject($sClassName, $sKey);
- $oPage->p("Changes log for ".MetaModel::GetName($sClassName)." - $sKey");
- $oObj->DisplayChangesLog($oPage);
-
- $oPage->p("<a href=\"?operation=details&class=$sClassName&key=$sKey\">View details</a>");
- $oPage->p("<a href=\"?operation=edit&class=$sClassName&key=$sKey\">Edit this object</a>");
- $oPage->p("<a href=\"?operation=delete&class=$sClassName&key=$sKey\">Delete this object (no confirmation!)</a>");
- }
- function DumpObjectsAsCSV(WebPage $oPage, $sClassName, $oSearchFilter = null, $sSeparator = ",")
- {
- global $oContext;
-
- $aHeader = array();
- $aHeader[] = 'pkey';
- foreach(MetaModel::ListAttributeDefs($sClassName) as $sAttCode=>$oAttDef)
- {
- $aHeader[] = $oAttDef->GetLabel();
- }
- $oPage->Add(join($sSeparator, $aHeader)."\n");
-
- if ($oSearchFilter == null)
- {
- $oSearchFilter = $oContext->NewFilter($sClassName);
- }
- $oObjectSet = new CMDBObjectSet($oSearchFilter);
-
- while ($oObj = $oObjectSet->Fetch())
- {
- $aRow = array();
- $aRow[] = $oObj->GetKey();
- foreach($oObj->GetAttributesList($sClassName) as $sAttCode)
- {
- $aRow[] = $oObj->GetAsCSV($sAttCode);
- }
- $oPage->Add(join($sSeparator, $aRow)."\n");
- }
- }
- function DumpObjects(WebPage $oPage, $sClassName, CMDBSearchFilter $oSearchFilter = null)
- {
- global $oContext;
- if ($oSearchFilter == null)
- {
- //$oSearchFilter = new CMDBSearchFilter($sClassName);
- $oSearchFilter = $oContext->NewFilter($sClassName);
- }
- $aAttribs = array();
- foreach(MetaModel::ListAttributeDefs($sClassName) as $sAttCode=>$oAttDef)
- {
- $aAttribs['key'] = array('label' => 'key', 'description' => 'Primary Key');
- $aAttribs[$sAttCode] = array('label' => $oAttDef->GetLabel(), 'description' => $oAttDef->GetDescription());
- }
- $oObjectSet = new CMDBObjectSet($oSearchFilter);
-
- $aValues = array();
- while ($oObj = $oObjectSet->Fetch())
- {
- $aRow['key'] = "<a href=\"./index.php?operation=details&class=$sClassName&key=".$oObj->GetKey()."\">".$oObj->GetKey()."</a>";
- foreach($oObj->GetAttributesList($sClassName) as $sAttCode)
- {
- $aRow[$sAttCode] = $oObj->GetAsHTML($sAttCode);
- }
- $aValues[] = $aRow;
- }
- $oPage->table($aAttribs, $aValues);
- }
- function DisplayEditForm(WebPage $oPage, $sClassName, $sKey)
- {
- global $oContext;
- //$oObj = MetaModel::GetObject($sClassName, $sKey);
- $oObj = $oContext->GetObject($sClassName, $sKey);
- if ($oObj == null)
- {
- $oPage->p("You are not allowed to edit this object.");
- return;
- }
- $oPage->p("Edition of ".MetaModel::GetName($sClassName)." - $sKey\n");
-
- $aDetails = array();
- $oPage->add("<form method=\"post\">\n");
- foreach(MetaModel::ListAttributeDefs(get_class($oObj)) as $sAttCode=>$oAttDef)
- {
- if (!$oAttDef->IsExternalField())
- {
- if ($oAttDef->IsExternalKey())
- {
- //External key, display a combo
- $sTargetClass = $oAttDef->GetTargetClass();
- //$oFilter = new CMDBSearchFilter($sTargetClass);
- $oFilter = $oContext->NewFilter($sTargetClass);
- $oSet = new CMDBObjectSet($oFilter);
- $sValue = "<select name=\"attr[$sAttCode]\">\n";
- while($oTargetObj = $oSet->Fetch())
- {
- if ($oObj->Get($sAttCode) == $oTargetObj->GetKey())
- {
- $sSelected = " selected";
- }
- else
- {
- $sSelected = "";
- }
- $sValue .= "<option value=\"".$oTargetObj->GetKey()."\"$sSelected>".$oTargetObj->Get('name')."</option>\n";
- }
- $sValue .= "</select>\n";
- }
- else
- {
- $sValue = "<input size=\"50\" name=\"attr[$sAttCode]\" value=\"".($oObj->Get($sAttCode))."\">";
- }
- $aDetails[] = array('label' => $oAttDef->GetLabel(), 'value' => $sValue);
- }
- }
- $oPage->details($aDetails);
- $oPage->add("<input type=\"hidden\" name=\"key\" value=\"$sKey\">\n");
- $oPage->add("<input type=\"hidden\" name=\"class\" value=\"$sClassName\">\n");
- $oPage->add("<input type=\"hidden\" name=\"operation\" value=\"update\">\n");
- $oPage->add("<input type=\"submit\" value=\" Update \">\n");
- $oPage->add("<form method=\"post\">\n");
- }
- function DisplayCreationForm(WebPage $oPage, $sClassName)
- {
- global $oContext;
- $oPage->p("New $sClassName\n");
-
- $aDetails = array();
- $oPage->add("<form method=\"post\">\n");
- foreach(MetaModel::ListAttributeDefs($sClassName) as $sAttCode=>$oAttDef)
- {
- if (!$oAttDef->IsExternalField())
- {
- if ($oAttDef->IsExternalKey())
- {
- //External key, display a combo
- $sTargetClass = $oAttDef->GetTargetClass();
- //$oFilter = new CMDBSearchFilter($sTargetClass);
- $oFilter = $oContext->NewFilter($sTargetClass);
- $oSet = new CMDBObjectSet($oFilter);
- $sValue = "<select name=\"attr[$sAttCode]\">\n";
- while($oTargetObj = $oSet->Fetch())
- {
- $sValue .= "<option value=\"".$oTargetObj->GetKey()."\">".$oTargetObj->Get('name')."</option>\n";
- }
- $sValue .= "</select>\n";
- }
- else
- {
- $sValue = "<input size=\"50\" name=\"attr[$sAttCode]\" value=\"".$oAttDef->GetDefaultValue()."\">";
- }
- $aDetails[] = array('label' => $oAttDef->GetLabel(), 'value' => $sValue);
- }
- }
- $oPage->details($aDetails);
- $oPage->add("<input type=\"hidden\" name=\"class\" value=\"$sClassName\">\n");
- $oPage->add("<input type=\"hidden\" name=\"operation\" value=\"create\">\n");
- $oPage->add("<input type=\"submit\" value=\" Create \">\n");
- $oPage->add("<form method=\"post\">\n");
- }
- function UpdateObject(WebPage $oPage, $sClassName, $sKey, $aAttributes)
- {
- global $oContext;
- //$oObj = MetaModel::GetObject($sClassName, $sKey);
- $oObj = $oContext->GetObject($sClassName, $sKey);
- if ($oObj == null)
- {
- $oPage->p("You are not allowed to edit this object.");
- return;
- }
- $oPage->p("Update of $sClassName - $sKey");
- foreach(MetaModel::ListAttributeDefs(get_class($oObj)) as $sAttCode=>$oAttDef)
- {
- if (isset($aAttributes[$sAttCode]))
- {
- $oObj->Set($sAttCode, $aAttributes[$sAttCode]);
- }
- }
- if ($oObj->CheckToUpdate())
- {
- // By rom
- // $oObj->DBUpdate();
- $oMyChange = MetaModel::NewObject("CMDBChange");
- $oMyChange->Set("date", time());
- $oMyChange->Set("userinfo", "Made by somebody");
- $iChangeId = $oMyChange->DBInsert();
- $oObj->DBUpdateTracked($oMyChange);
- $oPage->p(MetaModel::GetName($sClassName)." updated\n");
- }
- else
- {
- $oPage->p("<strong>Error: object can not be updated!</strong>\n");
- $oObj->DBRevert(); // restore default values!
- }
- // By Rom
- // $oObj->DisplayDetails($oPage);
- // replaced by...
- DisplayDetails($oPage, $sClassName, $sKey);
- $oPage->p("<a href=\"\">Return to main page</a>");
- }
- function DeleteObject(WebPage $oPage, $sClassName, $sKey)
- {
- global $oContext;
- $sClassLabel = MetaModel::GetName($sClassName);
- //$oObj = MetaModel::GetObject($sClassName, $sKey);
- $oObj = $oContext->GetObject($sClassName, $sKey);
- if ($oObj == null)
- {
- $oPage->p("You are not allowed to delete this object.");
- return;
- }
- $oPage->p("Deletion of $sClassLabel - $sKey");
- if ($oObj->CheckToDelete())
- {
- // By Rom
- //$oObj->DBDelete();
- $oMyChange = MetaModel::NewObject("CMDBChange");
- $oMyChange->Set("date", time());
- $oMyChange->Set("userinfo", "Made by somebody");
- $iChangeId = $oMyChange->DBInsert();
- $oObj->DBDeleteTracked($oMyChange);
- $oPage->p("$sClassLabel deleted\n");
- }
- else
- {
- $oPage->p("<strong>Error: object can not be deleted!</strong>\n");
- // By Rom
- DisplayDetails($oPage, $sClassName, $sKey);
- }
- $oPage->p("<a href=\"\">Return to main page</a>");
- }
- function CreateObject(WebPage $oPage, $sClassName, $aAttributes)
- {
- $oObj = MetaModel::NewObject($sClassName);
- $sClassLabel = MetaModel::GetName(get_class($oObj));
- $oPage->p("Creation of $sClassLabel object.");
- foreach(MetaModel::ListAttributeDefs(get_class($oObj)) as $sAttCode=>$oAttDef)
- {
- if (isset($aAttributes[$sAttCode]))
- {
- $oObj->Set($sAttCode, $aAttributes[$sAttCode]);
- }
- }
- list($bRes, $aIssues) = $oObj->CheckToInsert();
- if ($bRes)
- {
- // By rom
- // $oObj->DBInsert();
- $oMyChange = MetaModel::NewObject("CMDBChange");
- $oMyChange->Set("date", time());
- $oMyChange->Set("userinfo", "Made by somebody");
- $iChangeId = $oMyChange->DBInsert();
- $oObj->DBInsertTracked($oMyChange);
- $oPage->p($sClassLabel." created\n");
- // By Rom
- // $oObj->DisplayDetails($oPage);
- // replaced by...
- DisplayDetails($oPage, get_class($oObj), $oObj->GetKey());
- }
- else
- {
- $oPage->p("<strong>Error: object can not be created!</strong>\n");
- $oPage->add("<ul>Issues:");
- foreach($aIssues as $sErrorMsg)
- {
- $oPage->add("<li>$sErrorMsg</li>");
- }
- $oPage->add("</ul>");
- }
- $oPage->p("<a href=\"\">Return to main page</a>");
- }
- // By Rom
- function AddLinks($oPage, $sClassName, $sKey, $sLinkClass, $sExtKeyToMe, $sExtKeyToPartner, $sFilter)
- {
- global $oContext;
- $sClassLabel = MetaModel::GetName($sClassName);
- //$oObj = MetaModel::GetObject($sClassName, $sKey);
- $oObj = $oContext->GetObject($sClassName, $sKey);
- if ($oObj == null)
- {
- $oPage->p("You are not allowed to modify (create links on) this object.");
- return;
- }
- $oPage->p("Creating links for $sClassLabel - $sKey");
- $oFilter = CMDBSearchFilter::unserialize($sFilter);
- $oPage->p("Linking to ".$oFilter->__DescribeHTML());
- $oObjSet = new CMDBObjectSet($oFilter);
- if ($oObjSet->Count() != 0)
- {
- while($oPartnerObj = $oObjSet->Fetch())
- {
- $oNewLink = MetaModel::NewObject($sLinkClass);
- $oNewLink->Set($sExtKeyToMe, $sKey);
- $oNewLink->Set($sExtKeyToPartner, $oPartnerObj->GetKey());
- list($bRes, $aIssues) = $oNewLink->CheckToInsert();
- if ($bRes)
- {
- $oMyChange = MetaModel::NewObject("CMDBChange");
- $oMyChange->Set("date", time());
- $oMyChange->Set("userinfo", "Made by somebody");
- $iChangeId = $oMyChange->DBInsert();
- $oNewLink->DBInsertTracked($oMyChange);
-
- $oPage->p(MetaModel::GetName($sLinkClass)." created\n");
- }
- else
- {
- $oPage->p("<strong>Error: link can not be created!</strong>\n");
- $oPage->add("<ul>Issues:");
- foreach($aIssues as $sErrorMsg)
- {
- $oPage->add("<li>$sErrorMsg</li>");
- }
- $oPage->add("</ul>");
- }
- }
- }
- else
- {}
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- //
- // M a i n P r o g r a m
- //
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- $operation = ReadParam('operation', '');
- $iContext = ReadParam('ctx', 1);
- $oContext = new UserContext();
- switch($iContext)
- {
- case 2: // See only the organization 'ITOP'
- $oContext->AddCondition('bizOrganization', 'pkey', 'ITOP', '=');
- $oContext->AddCondition('logRealObject', 'organization', 'ITOP', '=');
- break;
-
- case 3: // See only the organization containing 'o' and contacts containing +33
- $oContext->AddCondition('Organization', 'name', 'o', 'Contains');
- //$oContext->AddCondition('Object', 'orgname', 'o', 'Contains');
- $oContext->AddCondition('Contact', 'phone', '+33', 'Contains');
- break;
-
- case 1: // No limitation
- default:
- // nothing to do
- }
- dialogstack::DeclareCaller("Main navigation menu");
- switch($operation)
- {
- case 'details':
- $sClass = ReadParam('class');
- $sKey = ReadParam('key');
- DisplayDetails($oPage, $sClass, $sKey);
- break;
- // By rom
- case 'changeslog':
- $sClass = ReadParam('class');
- $sKey = ReadParam('key');
- DisplayChangesLog($oPage, $sClass, $sKey);
- break;
- case 'edit':
- $sClass = ReadParam('class');
- $sKey = ReadParam('key');
- DisplayEditForm($oPage, $sClass, $sKey);
- break;
-
- case 'update':
- $sClass = ReadParam('class');
- $sKey = ReadParam('key');
- $aAttributes = ReadParam('attr', array());
- UpdateObject($oPage, $sClass, $sKey, $aAttributes);
- break;
-
- case 'new':
- $sClass = ReadParam('class');
- DisplayCreationForm($oPage, $sClass);
- break;
- case 'create':
- $sClass = ReadParam('class');
- $aAttributes = ReadParam('attr', array());
- CreateObject($oPage, $sClass, $aAttributes);
- break;
-
- case 'delete':
- $sClass = ReadParam('class');
- $sKey = ReadParam('key');
- DeleteObject($oPage, $sClass, $sKey);
- break;
- case 'direct':
- $sFilter = ReadParam('filter');
- $sFormat = ReadParam('format', 'html');
- $oSearchFilter = CMDBSearchFilter::unserialize($sFilter);
- switch($sFormat)
- {
- case 'csv':
- $oPage->small_p($oSearchFilter->__DescribeHTML());
- $oPage->Add("<TEXTAREA ROWS=\"30\" COLS=\"100\">");
- DumpObjectsAsCSV($oPage, $oSearchFilter->GetClass(), $oSearchFilter);
- $oPage->Add("</TEXTAREA>");
- break;
-
- case 'xls':
- $oPage->add_header('Content-disposition: attachment;filename=served.xls'); // Will fool Excel
- $oPage->add_header('Content-Type: application/vnd.ms-excel'); // Will fool Excel
- DumpObjects($oPage, $oSearchFilter->GetClass(), $oSearchFilter);
- break;
-
- case 'html':
- default:
- $oSet = new CMDBObjectSet($oSearchFilter);
- cmdbAbstractObject::DisplaySet($oPage, $oSet);
- }
- break;
- case 'addlinks':
- $sClass = ReadParam('class');
- $sKey = ReadParam('key');
- $sLinkClass = ReadParam('linkclass');
- $sExtKeyToMe = ReadParam('extkeytome');
- $sExtKeyToPartner = ReadParam('extkeytopartner');
- $sFilter = ReadParam('filter');
- AddLinks($oPage, $sClass, $sKey, $sLinkClass, $sExtKeyToMe, $sExtKeyToPartner, $sFilter);
- break;
-
- default:
- $sCurrentOrganization = ReadParam('org', '');
- $sActiveTab = ReadParam('classname', '');
- DisplaySelectOrg($oPage, $sCurrentOrganization, $iContext);
- if ($sCurrentOrganization != "")
- {
- $oPage->add("<div id=\"classesTabs\" class=\"light\">\n");
- $oPage->add("<ul>\n");
- $index = 1;
- $iActiveTabIndex = 1; // By default the first tab is the active one
- foreach( $aTopLevelClasses as $sClassName)
- {
- if ($sClassName == $sActiveTab)
- {
- $iActiveTabIndex = $index;
- }
- $oPage->add("\t<li><a href=\"#tab_$sClassName\">$sClassName</a></li>\n");
- $index++;
- }
- $oPage->add("</ul>\n");
- foreach( $aTopLevelClasses as $sClassName)
- {
- $sClassLabel = MetaModel::GetName($sClassName);
- $oPage->add("<div id=\"tab_$sClassName\">");
- if (count(MetaModel::GetSubclasses($sClassName)) > 0)
- {
- $sActiveSubclass = ReadParam('subclassname', '');
- foreach(MetaModel::GetSubclasses($sClassName) as $sSubclassName)
- {
- $sSubclassLabel = MetaModel::GetName($sSubclassName);
- //$oSearchFilter = new CMDBSearchFilter($sSubclassName);
- $oSearchFilter = $oContext->NewFilter($sSubclassName);
- $oSearchFilter ->AddCondition('org_id', $sCurrentOrganization, '=');
- $oPage->add("<div style=\"border:1px solid #97a5b0; margin-top:0.5em;\">\n");
- $oPage->add("<div style=\"padding:0.25em;background-color:#f0f0f0\">\n");
- $oPage->p("<strong>$sSubclassLabel</strong> - ".MetaModel::GetClassDescription($sSubclassName));
- $oPage->add("<form method=\"get\">\n");
- $oPage->add("<input type=\"hidden\" name=\"classname\" value=\"$sClassName\">\n");
- $oPage->add("<input type=\"hidden\" name=\"subclassname\" value=\"$sSubclassName\">\n");
- $oPage->add("<input type=\"hidden\" name=\"ctx\" value=\"$iContext\">\n");
- $oPage->add("<input type=\"hidden\" name=\"org\" value=\"$sCurrentOrganization\">\n");
- foreach( MetaModel::GetClassFilterDefs($sSubclassName) as $sFilterCode=>$oFilterDef)
- {
- $sFilterValue = "";
- if (($sActiveTab == $sClassName) && ($sActiveSubclass == $sSubclassName))
- {
- $sFilterValue = ReadParam($sFilterCode, '');
- if (!empty($sFilterValue))
- {
- $oSearchFilter->AddCondition($sFilterCode, $sFilterValue, 'Contains');
- }
- }
- $oPage->add($oFilterDef->GetLabel().": <input name=\"$sFilterCode\" value=\"$sFilterValue\"/> \n");
- }
- $oPage->add("<input type=\"submit\" value=\"Search\">\n");
- $oPage->add("</form>\n");
- $oPage->add("</div>\n");
- $oSet = new CMDBObjectSet($oSearchFilter);
- $iMatchesCount = $oSet->Count();
- if ($iMatchesCount == 0)
- {
- $oPage->p("No $sSubclassLabel matches these criteria.");
- $oPage->small_p("(".$oSearchFilter->__DescribeHTML().")");
- }
- else
- {
- $oPage->p("$iMatchesCount item(s) found.");
- cmdbAbstractObject::DisplaySet($oPage, $oSet);
- }
- $oPage->p("<a href=\"?operation=new&class=$sSubclassName\">Create a new $sSubclassLabel</a>\n");
- $oPage->add("</div>\n");
- }
- }
- else
- {
- // No subclasses, list the form directly
- //$oSearchFilter = new CMDBSearchFilter($sClassName);
- $oSearchFilter = $oContext->NewFilter($sClassName);
- $oSearchFilter ->AddCondition('org_id', $sCurrentOrganization, '=');
- $oPage->add("<div style=\"border:1px solid #97a5b0; margin-top:0.5em;\">\n");
- $oPage->add("<div style=\"padding:0.25em;background-color:#f0f0f0\">\n");
- $oPage->p("<strong>$sClassLabel</strong> - ".MetaModel::GetClassDescription($sClassName));
- $oPage->add("<form method=\"get\">\n");
- $oPage->add("<input type=\"hidden\" name=\"classname\" value=\"$sClassName\">\n");
- $oPage->add("<input type=\"hidden\" name=\"org\" value=\"$sCurrentOrganization\">\n");
- $oPage->add("<input type=\"hidden\" name=\"ctx\" value=\"$iContext\">\n");
- foreach( MetaModel::GetClassFilterDefs($sClassName) as $sFilterCode=>$oFilterDef)
- {
- $sFilterValue = "";
- if ($sActiveTab == $sClassName)
- {
- $sFilterValue = ReadParam($sFilterCode, '');
- if (!empty($sFilterValue))
- {
- $oSearchFilter->AddCondition($sFilterCode, $sFilterValue, 'Contains');
- }
- }
- $oPage->add($oFilterDef->GetLabel().": <input name=\"$sFilterCode\" value=\"$sFilterValue\"/> \n");
- }
- $oPage->add("<input type=\"submit\" value=\"Search\">\n");
- $oPage->add("</form>\n");
- $oPage->add("</div>\n");
- $oPage->add("<div style=\"padding:0.25em;background-color:#fff\">\n");
- $oSet = new CMDBObjectSet($oSearchFilter);
- $iMatchesCount = $oSet->Count();
- if ($iMatchesCount == 0)
- {
- $oPage->p("No $sClassLabel matches these criteria.");
- $oPage->small_p("(".$oSearchFilter->__DescribeHTML().")");
- }
- else
- {
- $oPage->p("$iMatchesCount item(s) found.");
- cmdbAbstractObject::DisplaySet($oPage, $oSet);
- $oPage->small_p("(".$oSearchFilter->__DescribeHTML().")");
- }
- $oPage->p("<a href=\"?operation=new&ctx=$iContext&class=$sClassName\">Create a new $sClassLabel</a>\n");
- $oPage->add("</div>\n");
- $oPage->add("</div>\n");
- }
- $oPage->add("</div>\n");
- }
- $oPage->add("</div>\n");
- $oPage->add_script('$(function() {$("#classesTabs > ul").tabs( '.$iActiveTabIndex.', { fxFade: true, fxSpeed: \'fast\' } );});');
- }
- }
- $oPage->output();
- ?>
|