mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-13 07:24:13 +01:00
Compiler: added the auto_load option + fixed issue with parent menu declared in another module
SVN:trunk[1949]
This commit is contained in:
@@ -586,6 +586,10 @@ class OQLMenuNode extends MenuNode
|
||||
public function SetParameters($aParams)
|
||||
{
|
||||
$this->m_aParams = $aParams;
|
||||
foreach($aParams as $sKey => $value)
|
||||
{
|
||||
$this->aReflectionProperties[$sKey] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
public function RenderContent(WebPage $oPage, $aExtraParams = array())
|
||||
|
||||
@@ -2985,24 +2985,28 @@
|
||||
<menu id="MyChanges" type="OQLMenuNode">
|
||||
<oql value="SELECT Change WHERE agent_id = :current_contact_id AND status NOT IN ("closed", "resolved")"/>
|
||||
<do_search value=""/>
|
||||
<auto_reload value="fast"/>
|
||||
<parent value="Change:Shortcuts"/>
|
||||
<rank value="1"/>
|
||||
</menu>
|
||||
<menu id="Changes" type="OQLMenuNode">
|
||||
<oql value="SELECT Change WHERE status != "closed""/>
|
||||
<do_search value=""/>
|
||||
<auto_reload value="fast"/>
|
||||
<parent value="Change:Shortcuts"/>
|
||||
<rank value="2"/>
|
||||
</menu>
|
||||
<menu id="WaitingApproval" type="OQLMenuNode">
|
||||
<oql value="SELECT ApprovedChange WHERE status IN ("plannedscheduled")"/>
|
||||
<do_search value=""/>
|
||||
<auto_reload value="fast"/>
|
||||
<parent value="Change:Shortcuts"/>
|
||||
<rank value="3"/>
|
||||
</menu>
|
||||
<menu id="WaitingAcceptance" type="OQLMenuNode">
|
||||
<oql value="SELECT NormalChange WHERE status IN ("new")"/>
|
||||
<do_search value=""/>
|
||||
<auto_reload value="fast"/>
|
||||
<parent value="Change:Shortcuts"/>
|
||||
<rank value="4"/>
|
||||
</menu>
|
||||
|
||||
@@ -14,17 +14,4 @@
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
$oMyMenuGroup = new MenuGroup('ChangeManagement', 50 /* fRank */);
|
||||
new TemplateMenuNode('Change:Overview', dirname(__FILE__).'/overview.html', $oMyMenuGroup->GetIndex() /* oParent */, 0 /* fRank */);
|
||||
new NewObjectMenuNode('NewChange', 'Change', $oMyMenuGroup->GetIndex(), 1 /* fRank */);
|
||||
new SearchMenuNode('SearchChanges', 'Change', $oMyMenuGroup->GetIndex(), 2 /* fRank */);
|
||||
$oShortcutNode = new TemplateMenuNode('Change:Shortcuts', '', $oMyMenuGroup->GetIndex(), 3 /* fRank */);
|
||||
$oNode = new OQLMenuNode('MyChanges', 'SELECT Change WHERE agent_id = :current_contact_id AND status NOT IN ("closed", "resolved")', $oShortcutNode->GetIndex(), 1 /* fRank */);
|
||||
$oNode->SetParameters(array('auto_reload' => 'fast'));
|
||||
$oNode = new OQLMenuNode('Changes', 'SELECT Change WHERE status != "closed"', $oShortcutNode->GetIndex(), 2 /* fRank */);
|
||||
$oNode->SetParameters(array('auto_reload' => 'fast'));
|
||||
$oNode = new OQLMenuNode('WaitingApproval', 'SELECT ApprovedChange WHERE status IN ("plannedscheduled")', $oShortcutNode->GetIndex(), 3 /* fRank */);
|
||||
$oNode->SetParameters(array('auto_reload' => 'fast'));
|
||||
$oNode = new OQLMenuNode('WaitingAcceptance', 'SELECT NormalChange WHERE status IN ("new")', $oShortcutNode->GetIndex(), 4 /* fRank */);
|
||||
$oNode->SetParameters(array('auto_reload' => 'fast'));
|
||||
?>
|
||||
|
||||
@@ -22,43 +22,4 @@ MetaModel::RegisterRelation("depends on", array("description"=>"That impacts ",
|
||||
// choice 'All Organizations' will always be available in the menu
|
||||
ApplicationMenu::SetFavoriteSiloQuery('SELECT Organization');
|
||||
|
||||
$oAdminMenu = new MenuGroup('DataAdministration', 70 /* fRank */, 'Organization', UR_ACTION_MODIFY, UR_ALLOWED_YES|UR_ALLOWED_DEPENDS);
|
||||
$iAdminGroup = $oAdminMenu->GetIndex();
|
||||
|
||||
new WebPageMenuNode('Audit', utils::GetAbsoluteUrlAppRoot().'pages/audit.php', $iAdminGroup, 33 /* fRank */);
|
||||
|
||||
$oTypologyNode = new TemplateMenuNode('Catalogs', '', $iAdminGroup, 50 /* fRank */);
|
||||
$iTopology = $oTypologyNode->GetIndex();
|
||||
new OQLMenuNode('Organization', 'SELECT Organization', $iTopology, 10 /* fRank */, true /* bSearch */);
|
||||
new OQLMenuNode('Application', 'SELECT Application', $iTopology, 20 /* fRank */);
|
||||
new OQLMenuNode('DBServer', 'SELECT DBServer', $iTopology, 40 /* fRank */);
|
||||
|
||||
|
||||
$oConfigManagementGroup = new MenuGroup('ConfigManagement', 20 /* fRank */);
|
||||
|
||||
// Create an entry, based on a custom template, for the Configuration management overview, under the top-level group
|
||||
new TemplateMenuNode('ConfigManagementOverview', dirname(__FILE__).'/overview.html', $oConfigManagementGroup->GetIndex(), 0 /* fRank */);
|
||||
|
||||
|
||||
$oContactNode = new TemplateMenuNode('Contact', dirname(__FILE__).'/contacts_menu.html', $oConfigManagementGroup->GetIndex(), 1 /* fRank */);
|
||||
new NewObjectMenuNode('NewContact', 'Contact', $oContactNode->GetIndex(), 1 /* fRank */);
|
||||
new SearchMenuNode('SearchContacts', 'Contact', $oContactNode->GetIndex(), 2 /* fRank */);
|
||||
|
||||
new OQLMenuNode('Document', 'SELECT Document', $oConfigManagementGroup->GetIndex(), 2 /* fRank */, true /* bSearch */);
|
||||
new OQLMenuNode('Location', 'SELECT Location', $oConfigManagementGroup->GetIndex(), 3 /* fRank */, true /* bSearch */);
|
||||
new OQLMenuNode('Group', 'SELECT Group', $oConfigManagementGroup->GetIndex(), 4 /* fRank */, true /* bSearch */);
|
||||
|
||||
|
||||
$oCINode = new TemplateMenuNode('ConfigManagementCI', dirname(__FILE__).'/cis_menu.html', $oConfigManagementGroup->GetIndex(), 5 /* fRank */);
|
||||
new NewObjectMenuNode('NewCI', 'FunctionalCI', $oCINode->GetIndex(), 0 /* fRank */);
|
||||
new SearchMenuNode('SearchCIs', 'FunctionalCI', $oCINode->GetIndex(), 1 /* fRank */);
|
||||
|
||||
$oShortcutsNode = new TemplateMenuNode('ConfigManagement:Shortcuts', '', $oConfigManagementGroup->GetIndex(), 6 /* fRank */);
|
||||
new OQLMenuNode('Server', 'SELECT Server', $oShortcutsNode->GetIndex(), 1 /* fRank */);
|
||||
new OQLMenuNode('NetworkDevice', 'SELECT NetworkDevice', $oShortcutsNode->GetIndex(), 2 /* fRank */);
|
||||
new OQLMenuNode('Printer', 'SELECT Printer', $oShortcutsNode->GetIndex(), 3 /* fRank */);
|
||||
new OQLMenuNode('PC', 'SELECT PC', $oShortcutsNode->GetIndex(), 4 /* fRank */);
|
||||
new OQLMenuNode('BusinessProcess', 'SELECT BusinessProcess', $oShortcutsNode->GetIndex(), 5 /* fRank */);
|
||||
new OQLMenuNode('ApplicationSolution', 'SELECT ApplicationSolution', $oShortcutsNode->GetIndex(), 6 /* fRank */);
|
||||
|
||||
?>
|
||||
|
||||
@@ -734,18 +734,21 @@
|
||||
<menu id="Incident:MyIncidents" type="OQLMenuNode">
|
||||
<oql value="SELECT Incident WHERE agent_id = :current_contact_id AND status NOT IN ("closed", "resolved")"/>
|
||||
<do_search value=""/>
|
||||
<auto_reload value="fast"/>
|
||||
<parent value="Incident:Shortcuts"/>
|
||||
<rank value="1"/>
|
||||
</menu>
|
||||
<menu id="Incident:EscalatedIncidents" type="OQLMenuNode">
|
||||
<oql value="SELECT Incident WHERE status IN ("escalated_tto", "escalated_ttr")"/>
|
||||
<do_search value=""/>
|
||||
<auto_reload value="fast"/>
|
||||
<parent value="Incident:Shortcuts"/>
|
||||
<rank value="2"/>
|
||||
</menu>
|
||||
<menu id="Incident:OpenIncidents" type="OQLMenuNode">
|
||||
<oql value="SELECT Incident WHERE status IN ("new", "assigned", "escalated_tto", "escalated_ttr", "resolved")"/>
|
||||
<do_search value=""/>
|
||||
<auto_reload value="standard"/>
|
||||
<parent value="Incident:Shortcuts"/>
|
||||
<rank value="3"/>
|
||||
</menu>
|
||||
|
||||
@@ -14,16 +14,4 @@
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
$oMyMenuGroup = new MenuGroup('IncidentManagement', 40 /* fRank */);
|
||||
new TemplateMenuNode('Incident:Overview', dirname(__FILE__).'/overview.html', $oMyMenuGroup->GetIndex() /* oParent */, 0 /* fRank */);
|
||||
new NewObjectMenuNode('NewIncident', 'Incident', $oMyMenuGroup->GetIndex(), 1 /* fRank */);
|
||||
new SearchMenuNode('SearchIncidents', 'Incident', $oMyMenuGroup->GetIndex(), 2 /* fRank */);
|
||||
$oShortcutNode = new TemplateMenuNode('Incident:Shortcuts', '', $oMyMenuGroup->GetIndex(), 3 /* fRank */);
|
||||
$oNode = new OQLMenuNode('Incident:MyIncidents', 'SELECT Incident WHERE agent_id = :current_contact_id AND status NOT IN ("closed", "resolved")', $oShortcutNode->GetIndex(), 1 /* fRank */);
|
||||
$oNode->SetParameters(array('auto_reload' => 'fast'));
|
||||
$oNode = new OQLMenuNode('Incident:EscalatedIncidents', 'SELECT Incident WHERE status IN ("escalated_tto", "escalated_ttr")', $oShortcutNode->GetIndex(), 2 /* fRank */);
|
||||
$oNode->SetParameters(array('auto_reload' => 'fast'));
|
||||
$oNode = new OQLMenuNode('Incident:OpenIncidents', 'SELECT Incident WHERE status IN ("new", "assigned", "escalated_tto", "escalated_ttr", "resolved")', $oShortcutNode->GetIndex(), 3 /* fRank */);
|
||||
$oNode->SetParameters(array('auto_reload' => 'standard'));
|
||||
|
||||
?>
|
||||
|
||||
@@ -14,11 +14,4 @@
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
$oMyMenuGroup = new MenuGroup('ProblemManagement', 42 /* fRank */);
|
||||
$iIndex = $oMyMenuGroup->GetIndex();
|
||||
new NewObjectMenuNode('NewError', 'KnownError', $iIndex, 3 /* fRank */);
|
||||
new SearchMenuNode('SearchError', 'KnownError', $iIndex, 4 /* fRank */);
|
||||
$oShortcutNode = new TemplateMenuNode('Problem:Shortcuts', '', $iIndex, 5 /* fRank */);
|
||||
new OQLMenuNode('Problem:KnownErrors', 'SELECT KnownError', $oShortcutNode->GetIndex(), 3 /* fRank */,true /*bsearch */);
|
||||
|
||||
?>
|
||||
|
||||
@@ -14,13 +14,4 @@
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
$oMyMenuGroup = new MenuGroup('ProblemManagement', 42 /* fRank */); // Will create if it does not exist
|
||||
$iIndex = $oMyMenuGroup->GetIndex();
|
||||
new TemplateMenuNode('Problem:Overview', dirname(__FILE__).'/overview.html', $iIndex /* oParent */, 0 /* fRank */);
|
||||
new NewObjectMenuNode('NewProblem', 'Problem', $iIndex, 1 /* fRank */);
|
||||
new SearchMenuNode('SearchProblems', 'Problem', $iIndex, 2 /* fRank */);
|
||||
$oShortcutNode = new TemplateMenuNode('Problem:Shortcuts', '', $iIndex, 5 /* fRank */);
|
||||
new OQLMenuNode('Problem:MyProblems', 'SELECT Problem WHERE agent_id = :current_contact_id AND status NOT IN ("closed", "resolved")', $oShortcutNode->GetIndex(), 1 /* fRank */);
|
||||
new OQLMenuNode('Problem:OpenProblems', 'SELECT Problem WHERE status IN ("new", "assigned", "resolved")', $oShortcutNode->GetIndex(), 2 /* fRank */);
|
||||
|
||||
?>
|
||||
|
||||
@@ -696,18 +696,21 @@
|
||||
<menu id="UserRequest:MyRequests" type="OQLMenuNode">
|
||||
<oql value="SELECT UserRequest WHERE agent_id = :current_contact_id AND status NOT IN ("closed","resolved")"/>
|
||||
<do_search value=""/>
|
||||
<auto_reload value="fast"/>
|
||||
<parent value="UserRequest:Shortcuts"/>
|
||||
<rank value="1"/>
|
||||
</menu>
|
||||
<menu id="UserRequest:EscalatedRequests" type="OQLMenuNode">
|
||||
<oql value="SELECT UserRequest WHERE status IN ("escalated_tto", "escalated_ttr")"/>
|
||||
<do_search value=""/>
|
||||
<auto_reload value="fast"/>
|
||||
<parent value="UserRequest:Shortcuts"/>
|
||||
<rank value="2"/>
|
||||
</menu>
|
||||
<menu id="UserRequest:OpenRequests" type="OQLMenuNode">
|
||||
<oql value="SELECT UserRequest WHERE status IN ("new", "assigned", "escalated_tto", "escalated_ttr", "frozen", "resolved")"/>
|
||||
<do_search value=""/>
|
||||
<auto_reload value="fast"/>
|
||||
<parent value="UserRequest:Shortcuts"/>
|
||||
<rank value="3"/>
|
||||
</menu>
|
||||
|
||||
@@ -14,17 +14,4 @@
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
$oMyMenuGroup = new MenuGroup('RequestManagement', 30 /* fRank */);
|
||||
|
||||
new TemplateMenuNode('UserRequest:Overview', dirname(__FILE__).'/overview.html', $oMyMenuGroup->GetIndex() /* oParent */, 0 /* fRank */);
|
||||
new NewObjectMenuNode('NewUserRequest', 'UserRequest', $oMyMenuGroup->GetIndex(), 1 /* fRank */);
|
||||
new SearchMenuNode('SearchUserRequests', 'UserRequest', $oMyMenuGroup->GetIndex(), 2 /* fRank */);
|
||||
$oShortcutNode = new TemplateMenuNode('UserRequest:Shortcuts', '', $oMyMenuGroup->GetIndex(), 3 /* fRank */);
|
||||
$oNode = new OQLMenuNode('UserRequest:MyRequests', 'SELECT UserRequest WHERE agent_id = :current_contact_id AND status NOT IN ("closed","resolved")', $oShortcutNode->GetIndex(), 1 /* fRank */);
|
||||
$oNode->SetParameters(array('auto_reload' => 'fast'));
|
||||
$oNode = new OQLMenuNode('UserRequest:EscalatedRequests', 'SELECT UserRequest WHERE status IN ("escalated_tto", "escalated_ttr")', $oShortcutNode->GetIndex(), 2 /* fRank */);
|
||||
$oNode->SetParameters(array('auto_reload' => 'fast'));
|
||||
$oNode = new OQLMenuNode('UserRequest:OpenRequests', 'SELECT UserRequest WHERE status IN ("new", "assigned", "escalated_tto", "escalated_ttr", "frozen", "resolved")', $oShortcutNode->GetIndex(), 3 /* fRank */);
|
||||
$oNode->SetParameters(array('auto_reload' => 'fast'));
|
||||
|
||||
?>
|
||||
|
||||
@@ -14,14 +14,4 @@
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
$oServiceManagementGroup = new MenuGroup('ServiceManagement', 60 /* fRank */);
|
||||
$iRank = 0;
|
||||
new TemplateMenuNode('Service:Overview', dirname(__FILE__).'/overview.html', $oServiceManagementGroup->GetIndex() /* oParent */, $iRank++ /* fRank */);
|
||||
new OQLMenuNode('ProviderContract', 'SELECT ProviderContract', $oServiceManagementGroup->GetIndex(), $iRank++,true /* bsearch */);
|
||||
new OQLMenuNode('CustomerContract', 'SELECT CustomerContract', $oServiceManagementGroup->GetIndex(), $iRank++,true /* bsearch */);
|
||||
new OQLMenuNode('Service', 'SELECT Service', $oServiceManagementGroup->GetIndex(), $iRank++,true /* bsearch */);
|
||||
new OQLMenuNode('ServiceSubcategory', 'SELECT ServiceSubcategory', $oServiceManagementGroup->GetIndex(), $iRank++,true /* bsearch */);
|
||||
new OQLMenuNode('SLA', 'SELECT SLA', $oServiceManagementGroup->GetIndex(), $iRank++,true /* bsearch */);
|
||||
new OQLMenuNode('SLT', 'SELECT SLT', $oServiceManagementGroup->GetIndex(), $iRank++,true /* bsearch */);
|
||||
|
||||
?>
|
||||
|
||||
@@ -171,16 +171,29 @@ EOF;
|
||||
EOF;
|
||||
file_put_contents($sResultFile, $sMenusHeader, FILE_APPEND);
|
||||
|
||||
// Preliminary: determine parent menus not defined within the current module
|
||||
$aMenusToLoad = array();
|
||||
foreach($oMenus as $oMenu)
|
||||
{
|
||||
if ($oParent = $this->GetOptionalElement($oMenu, 'parent'))
|
||||
{
|
||||
$aMenusToLoad[] = $oParent->GetAttribute('value');
|
||||
}
|
||||
// Note: the order matters: the parents must be defined BEFORE
|
||||
$aMenusToLoad[] = $oMenu->GetAttribute('id');
|
||||
}
|
||||
$aMenusToLoad = array_unique($aMenusToLoad);
|
||||
foreach($aMenusToLoad as $sMenuId)
|
||||
{
|
||||
$oMenu = $this->oFactory->GetMenu($sMenuId);
|
||||
try
|
||||
{
|
||||
$this->CompileMenu($oMenu, $sResultFile, $sRelativeDir, $oP);
|
||||
}
|
||||
catch (ssDOMFormatException $e)
|
||||
{
|
||||
$sClass = $oClass->getAttribute("name");
|
||||
throw new Exception("Failed to process class '$sClass', from '$sModuleRootDir': ".$e->getMessage());
|
||||
$sMenu = $oMenu->getAttribute("name");
|
||||
throw new Exception("Failed to process menu '$sMenu', from '$sModuleRootDir': ".$e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -868,20 +881,33 @@ EOF;
|
||||
$sNewMenu = "new MenuGroup('$sMenuId', $fRank);";
|
||||
}
|
||||
}
|
||||
$sIndent = ' ';
|
||||
$sPHPMenu = "\$__comp_menus__['$sMenuId'] = $sNewMenu";
|
||||
|
||||
$sIndent = '';
|
||||
$aPHPMenu = array("\$__comp_menus__['$sMenuId'] = $sNewMenu");
|
||||
if ($oAutoReload = $this->GetOptionalElement($oMenu, 'auto_reload'))
|
||||
{
|
||||
$sAutoReload = addslashes($oAutoReload->GetAttribute("value"));
|
||||
$aPHPMenu[] = "\$__comp_menus__['$sMenuId']->SetParameters(array('auto_reload' => '$sAutoReload'));";
|
||||
}
|
||||
|
||||
$oAdminOnly = $this->GetOptionalElement($oMenu, 'enable_admin_only');
|
||||
if ($oAdminOnly && $oAdminOnly->GetAttribute('value') == '1')
|
||||
{
|
||||
$sPHP = $sIndent."if (UserRights::IsAdministrator())\n";
|
||||
$sPHP .= $sIndent."{\n";
|
||||
$sPHP .= $sIndent." $sPHPMenu\n";
|
||||
foreach($aPHPMenu as $sPHPLine)
|
||||
{
|
||||
$sPHP .= $sIndent." $sPHPLine\n";
|
||||
}
|
||||
$sPHP .= $sIndent."}\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
$sPHP = $sIndent."$sPHPMenu\n";
|
||||
$sPHP = '';
|
||||
foreach($aPHPMenu as $sPHPLine)
|
||||
{
|
||||
$sPHP .= $sIndent.$sPHPLine."\n";
|
||||
}
|
||||
}
|
||||
|
||||
file_put_contents($sResFile, $sPHP, FILE_APPEND);
|
||||
|
||||
@@ -1159,6 +1159,31 @@ EOF
|
||||
return $this->_priv_GetNodes($sXPath, $this->oMenus);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a menu, given its is id
|
||||
* @param string $sModuleName
|
||||
* @param bool $bFlattenLayers
|
||||
* @throws Exception
|
||||
*/
|
||||
public function GetMenu($sMenuId, $bFlattenLayers = true)
|
||||
{
|
||||
if (!array_key_exists($sMenuId, self::$aLoadedMenus))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
$oMenuNode = self::$aLoadedMenus[$sMenuId];
|
||||
if ($bFlattenLayers)
|
||||
{
|
||||
$sOperation = $oMenuNode->getAttribute('_operation');
|
||||
if ($sOperation == 'removed')
|
||||
{
|
||||
$oMenuNode = null;
|
||||
}
|
||||
}
|
||||
return $oMenuNode;
|
||||
}
|
||||
|
||||
|
||||
public function ApplyChanges()
|
||||
{
|
||||
$oNodes = $this->ListChanges();
|
||||
|
||||
Reference in New Issue
Block a user