diff options
Diffstat (limited to 'lib/prado/framework/pradolite.php')
-rw-r--r-- | lib/prado/framework/pradolite.php | 60 |
1 files changed, 55 insertions, 5 deletions
diff --git a/lib/prado/framework/pradolite.php b/lib/prado/framework/pradolite.php index 4a6de98..6cbcb39 100644 --- a/lib/prado/framework/pradolite.php +++ b/lib/prado/framework/pradolite.php @@ -1,7 +1,7 @@ <?php /** * File Name: pradolite.php - * Last Update: 2016/03/09 11:34:32 + * Last Update: 2016/04/19 16:01:56 * Generated By: buildscripts/phpbuilder/build.php * * This file is used in lieu of prado.php to boost PRADO application performance. @@ -25,19 +25,18 @@ class PradoBase protected static $classExists = array(); public static function getVersion() { - return '3.3.0'; + return '3.3.1'; } public static function initErrorHandlers() { set_error_handler(array('PradoBase','phpErrorHandler')); register_shutdown_function(array('PradoBase','phpFatalErrorHandler')); set_exception_handler(array('PradoBase','exceptionHandler')); + ini_set('display_errors', 0); } public static function autoload($className) { - include_once($className.self::CLASS_FILE_EXT); - if(!class_exists($className,false) && !interface_exists($className,false)) - self::fatalError("Class file for '$className' cannot be found."); + @include_once($className.self::CLASS_FILE_EXT); } public static function poweredByPrado($logoType=0) { @@ -6996,6 +6995,7 @@ class TClientScriptManager extends TApplicationComponent { const SCRIPT_PATH='Web/Javascripts/source'; const PACKAGES_FILE='Web/Javascripts/packages.php'; + const CSS_PACKAGES_FILE='Web/Javascripts/css-packages.php'; private $_page; private $_hiddenFields=array(); private $_beginScripts=array(); @@ -7008,9 +7008,13 @@ class TClientScriptManager extends TApplicationComponent private $_registeredPradoScripts=array(); private static $_pradoScripts; private static $_pradoPackages; + private $_registeredPradoStyles=array(); + private static $_pradoStyles; + private static $_pradoStylePackages; private $_renderedHiddenFields; private $_renderedScriptFiles=array(); private $_expandedPradoScripts; + private $_expandedPradoStyles; public function __construct(TPage $owner) { $this->_page=$owner; @@ -7186,6 +7190,52 @@ class TClientScriptManager extends TApplicationComponent $params=func_get_args(); $this->_page->registerCachingAction('Page.ClientScript','registerFocusControl',$params); } + public function registerPradoStyle($name) + { + $this->registerPradoStyleInternal($name); + $params=func_get_args(); + $this->_page->registerCachingAction('Page.ClientScript','registerPradoStyle',$params); + } + protected function registerPradoStyleInternal($name) + { + if(!isset($this->_registeredPradoStyles[$name])) + { + $base = $this->getPradoScriptAssetUrl(); + if(self::$_pradoStyles === null) + { + $packageFile = Prado::getFrameworkPath().DIRECTORY_SEPARATOR.self::CSS_PACKAGES_FILE; + list($packages,$deps)= include($packageFile); + self::$_pradoStyles = $deps; + self::$_pradoStylePackages = $packages; + } + if (isset(self::$_pradoStyles[$name])) + $this->_registeredPradoStyles[$name]=true; + else + throw new TInvalidOperationException('csmanager_pradostyle_invalid',$name); + if(($packages=array_keys($this->_registeredPradoStyles))!==array()) + { + $base = Prado::getFrameworkPath().DIRECTORY_SEPARATOR.self::SCRIPT_PATH; + list($path,$baseUrl)=$this->getPackagePathUrl($base); + $packagesUrl=array(); + $isDebug=$this->getApplication()->getMode()===TApplicationMode::Debug; + foreach ($packages as $p) + { + foreach (self::$_pradoStyles[$p] as $dep) + { + foreach (self::$_pradoStylePackages[$dep] as $style) + if (!isset($this->_expandedPradoStyles[$style])) + { + $this->_expandedPradoStyles[$style] = true; + if (!in_array($url=$baseUrl.'/'.$style,$packagesUrl)) + $packagesUrl[]=$url; + } + } + } + foreach($packagesUrl as $url) + $this->registerStyleSheetFile($url,$url); + } + } + } public function registerStyleSheetFile($key,$url,$media='') { if($media==='') |