diff --git a/application/itopwebpage.class.inc.php b/application/itopwebpage.class.inc.php index 36bf2309b..b7a4a1fc8 100644 --- a/application/itopwebpage.class.inc.php +++ b/application/itopwebpage.class.inc.php @@ -542,12 +542,17 @@ EOF public function output() { $sAbsURLAppRoot = addslashes($this->m_sRootUrl); + $sAbsURLModulesRoot = addslashes(utils::GetAbsoluteUrlModulesRoot()); $this->add_script( <<set_base($this->m_sRootUrl.'pages/'); diff --git a/application/portalwebpage.class.inc.php b/application/portalwebpage.class.inc.php index 4e03c0d8a..cd27f1c5e 100644 --- a/application/portalwebpage.class.inc.php +++ b/application/portalwebpage.class.inc.php @@ -60,6 +60,7 @@ class PortalWebPage extends NiceWebPage $this->add_linked_stylesheet("../css/jquery.treeview.css"); $this->add_linked_stylesheet("../css/jquery.autocomplete.css"); $sAbsURLAppRoot = addslashes(utils::GetAbsoluteUrlAppRoot()); // Pass it to Javascript scripts + $sAbsURLModulesRoot = addslashes(utils::GetAbsoluteUrlModulesRoot()); // Pass it to Javascript scripts $oAppContext = new ApplicationContext(); $sAppContext = addslashes($oAppContext->GetForLink()); if ($sAlternateStyleSheet != '') @@ -172,6 +173,11 @@ EOF return '$sAbsURLAppRoot'; } + function GetAbsoluteUrlModulesRoot() + { + return '$sAbsURLModulesRoot'; + } + function AddAppContext(sURL) { var sContext = '$sAppContext'; diff --git a/application/utils.inc.php b/application/utils.inc.php index 0005d691c..ef90c8b2a 100644 --- a/application/utils.inc.php +++ b/application/utils.inc.php @@ -460,10 +460,8 @@ class utils } /** - * Returns the absolute URL to the server's root path - * @param $sCurrentRelativePath string NO MORE USED, kept for backward compatibility only ! - * @param $bForceHTTPS bool True to force HTTPS, false otherwise - * @return string The absolute URL to the server's root, without the first slash + * Returns the absolute URL to the application root path + * @return string The absolute URL to the application root, without the first slash */ static public function GetAbsoluteUrlAppRoot() { @@ -757,5 +755,14 @@ class utils return APPCONF.self::GetCurrentEnvironment().'/'.ITOP_CONFIG_FILE; } + /** + * Returns the absolute URL to the modules root path + * @return string ... + */ + static public function GetAbsoluteUrlModulesRoot() + { + $sUrl = self::GetAbsoluteUrlAppRoot().'env-'.self::GetCurrentEnvironment().'/'; + return $sUrl; + } } -?> +?> \ No newline at end of file diff --git a/core/metamodel.class.php b/core/metamodel.class.php index fd4337e36..15538f847 100644 --- a/core/metamodel.class.php +++ b/core/metamodel.class.php @@ -738,10 +738,6 @@ abstract class MetaModel final static public function GetAttributeDef($sClass, $sAttCode) { self::_check_subclass($sClass); -if (!array_key_exists($sAttCode, self::$m_aAttribDefs[$sClass])) -{ - echo "

$sAttCode is NOT a valid attribute of class $sClass.

"; -} return self::$m_aAttribDefs[$sClass][$sAttCode]; } @@ -4033,6 +4029,8 @@ if (!array_key_exists($sAttCode, self::$m_aAttribDefs[$sClass])) public static function Startup($config, $bModelOnly = false, $bAllowCache = true, $bTraceSourceFiles = false) { + define('MODULESROOT', APPROOT.'env-'.utils::GetCurrentEnvironment().'/'); + self::$m_bTraceSourceFiles = $bTraceSourceFiles; // $config can be either a filename, or a Configuration object (volatile!) @@ -4615,6 +4613,10 @@ if (!array_key_exists($sAttCode, self::$m_aAttribDefs[$sClass])) */ static public function ApplyParams($aInput, $aParams) { + // Declare magic parameters + $aParams['APP_URL'] = utils::GetAbsoluteUrlAppRoot(); + $aParams['MODULES_URL'] = utils::GetAbsoluteUrlModulesRoot(); + $aSearches = array(); $aReplacements = array(); foreach($aParams as $sSearch => $replace) diff --git a/modules/itop-attachments/main.attachments.php b/modules/itop-attachments/main.attachments.php index 8f5d29e0b..d51430367 100644 --- a/modules/itop-attachments/main.attachments.php +++ b/modules/itop-attachments/main.attachments.php @@ -238,7 +238,7 @@ EOF { $sIsDeleteEnabled = $this->m_bDeleteEnabled ? 'true' : 'false'; $iTransactionId = $oPage->GetTransactionId(); - $oPage->add_linked_script(utils::GetAbsoluteUrlAppRoot().'modules/itop-attachments/ajaxfileupload.js'); + $oPage->add_linked_script(utils::GetAbsoluteUrlModulesRoot().'itop-attachments/ajaxfileupload.js'); $sClass = get_class($oObject); $sTempId = session_id().'_'.$iTransactionId; $sDeleteBtn = Dict::S('Attachments:DeleteBtn'); @@ -273,7 +273,7 @@ EOF $.ajaxFileUpload ( { - url: GetAbsoluteUrlAppRoot()+'modules/itop-attachments/ajax.attachment.php?obj_class={$sClass}&temp_id={$sTempId}&operation=add', + url: GetAbsoluteUrlModulesRoot()+'itop-attachments/ajax.attachment.php?obj_class={$sClass}&temp_id={$sTempId}&operation=add', secureuri:false, fileElementId:'file', dataType: 'json', @@ -496,7 +496,7 @@ EOF break; } - return "modules/itop-attachments/icons/$sIcon"; + return utils::GetAbsoluteUrlModulesRoot()."itop-attachments/icons/$sIcon"; } ///////////////////////////////////////////////////////////////////////// diff --git a/modules/itop-config-mgmt-1.0.0/cis_menu.html b/modules/itop-config-mgmt-1.0.0/cis_menu.html index 08c3aade6..d4389e952 100644 --- a/modules/itop-config-mgmt-1.0.0/cis_menu.html +++ b/modules/itop-config-mgmt-1.0.0/cis_menu.html @@ -91,7 +91,7 @@ a.summary:hover {