diff --git a/core/autoload.php b/core/autoload.php index 83f4e972cb..b244272b86 100644 --- a/core/autoload.php +++ b/core/autoload.php @@ -24,7 +24,7 @@ MetaModel::IncludeModule('application/user.dashboard.class.inc.php'); MetaModel::IncludeModule('application/audit.rule.class.inc.php'); MetaModel::IncludeModule('application/audit.domain.class.inc.php'); MetaModel::IncludeModule('application/query.class.inc.php'); -MetaModel::IncludeModule('setup/moduleinstallation.class.inc.php'); +MetaModel::IncludeModule('setup/moduleinstallation/moduleinstallation.class.inc.php'); MetaModel::IncludeModule('core/event.class.inc.php'); MetaModel::IncludeModule('core/action.class.inc.php'); diff --git a/setup/compiler.class.inc.php b/setup/compiler.class.inc.php index 299aa1e478..76310d49ba 100644 --- a/setup/compiler.class.inc.php +++ b/setup/compiler.class.inc.php @@ -22,6 +22,7 @@ use Combodo\iTop\Application\Branding; use Combodo\iTop\Application\WebPage\iTopWebPage; use Combodo\iTop\Application\WebPage\Page; use Combodo\iTop\DesignDocument; +use Combodo\iTop\DesignElement; use Combodo\iTop\PropertyType\PropertyTypeDesign; require_once(APPROOT.'setup/setuputils.class.inc.php'); @@ -2654,6 +2655,9 @@ CSS; $oDefNode = $oXMLDoc->importNode($oNode, true); // layout, cells, etc Nodes and below $oRootNode->appendChild($oDefNode); } + if (!is_dir($sTempTargetDir.'/'.$sModuleRelativeDir)) { + SetupUtils::builddir($sTempTargetDir.'/'.$sModuleRelativeDir); + } $oXMLDoc->save($sTempTargetDir.'/'.$sModuleRelativeDir.'/'.$sFileName); } $sNewMenu = "new DashboardMenuNode('$sMenuId', $sTemplateSpec, $sParentSpec, $fRank {$sOptionalEnableParams});"; diff --git a/setup/modelfactory.class.inc.php b/setup/modelfactory.class.inc.php index f969b3ba6b..fe4277f2c5 100644 --- a/setup/modelfactory.class.inc.php +++ b/setup/modelfactory.class.inc.php @@ -308,18 +308,20 @@ class MFModule { $aDictionaries = []; foreach ([$this->sRootDir, $this->sRootDir.'/dictionaries'] as $sRootDir) { - if ($hDir = @opendir($sRootDir)) { - while (($sFile = readdir($hDir)) !== false) { - $aMatches = []; - if (preg_match( - "/^[^\\.]+.dict.".$this->sName.'.php$/i', - $sFile, - $aMatches - )) { // Dictionary files are named like .dict..php - $aDictionaries[] = $sRootDir.'/'.$sFile; + if (is_dir($sRootDir)) { + if ($hDir = @opendir($sRootDir)) { + while (($sFile = readdir($hDir)) !== false) { + $aMatches = []; + if (preg_match( + "/^[^\\.]+.dict.".$this->sName.'.php$/i', + $sFile, + $aMatches + )) { // Dictionary files are named like .dict..php + $aDictionaries[] = $sRootDir.'/'.$sFile; + } } + closedir($hDir); } - closedir($hDir); } } diff --git a/setup/modulediscovery.class.inc.php b/setup/modulediscovery.class.inc.php index 0a6ea4f192..fff99f9aeb 100755 --- a/setup/modulediscovery.class.inc.php +++ b/setup/modulediscovery.class.inc.php @@ -183,14 +183,16 @@ class ModuleDiscovery $sDir.'/dictionaries' => self::$m_sModulePath.'/dictionaries', ]; foreach ($aDirs as $sRootDir => $sPath) { - if ($hDir = @opendir($sRootDir)) { - while (($sFile = readdir($hDir)) !== false) { - $aMatches = []; - if (preg_match("/^[^\\.]+.dict.$sModuleName.php$/i", $sFile, $aMatches)) { // Dictionary files named like .dict..php are loaded automatically - self::$m_aModules[$sId]['dictionary'][] = $sPath.'/'.$sFile; + if (is_dir($sRootDir)) { + if ($hDir = @opendir($sRootDir)) { + while (($sFile = readdir($hDir)) !== false) { + $aMatches = []; + if (preg_match("/^[^\\.]+.dict.$sModuleName.php$/i", $sFile, $aMatches)) { // Dictionary files named like .dict..php are loaded automatically + self::$m_aModules[$sId]['dictionary'][] = $sPath.'/'.$sFile; + } } + closedir($hDir); } - closedir($hDir); } } }