/** * Registers a Prado javascript library to be loaded. */ protected function registerPradoScriptInternal($name) { // $this->checkIfNotInRender(); if (!isset($this->_registeredScripts[$name])) { if (self::$_scripts === null) { $packageFile = Prado::getFrameworkPath() . DIRECTORY_SEPARATOR . self::PACKAGES_FILE; list($folders, $packages, $deps) = (include $packageFile); self::$_scriptsFolders = $folders; self::$_scripts = $deps; self::$_scriptsPackages = $packages; } if (isset(self::$_scripts[$name])) { $this->_registeredScripts[$name] = true; } else { throw new TInvalidOperationException('csmanager_pradoscript_invalid', $name); } if (($packages = array_keys($this->_registeredScripts)) !== array()) { $packagesUrl = array(); $isDebug = $this->getApplication()->getMode() === TApplicationMode::Debug; foreach ($packages as $p) { foreach (self::$_scripts[$p] as $dep) { foreach (self::$_scriptsPackages[$dep] as $script) { if (!isset($this->_expandedScripts[$script])) { list($base, $subPath) = $this->getScriptPackageFolder($script); list($path, $baseUrl) = $this->getPackagePathUrl($base); $this->_expandedScripts[$script] = true; if ($isDebug) { if (!in_array($url = $baseUrl . '/' . $subPath, $packagesUrl)) { $packagesUrl[] = $url; } } else { if (!in_array($url = $baseUrl . '/min/' . $subPath, $packagesUrl)) { if (!is_file($filePath = $path . '/min/' . $subPath)) { $dirPath = dirname($filePath); if (!is_dir($dirPath)) { mkdir($dirPath, PRADO_CHMOD, true); } file_put_contents($filePath, TJavaScript::JSMin(file_get_contents($base . '/' . $subPath))); chmod($filePath, PRADO_CHMOD); } $packagesUrl[] = $url; } } } } } } foreach ($packagesUrl as $url) { $this->registerScriptFile($url, $url); } } } }