diff options
| -rw-r--r-- | HISTORY | 1 | ||||
| -rw-r--r-- | framework/Web/UI/TClientScriptManager.php | 35 | 
2 files changed, 32 insertions, 4 deletions
| @@ -3,6 +3,7 @@ BUG: URL wildcard patterns didn't work with subfolders  BUG: Issue#87 - TinyMCE : empty string disapears after encoding JS, that's a problem! (Christophe)  BUG: Issue#96 - THttpResponse::redirect don't send status code (Christophe)  BUG: Issue#107 - typo in TDbConnection::getCharset() (Christophe) +CHG: Issue#7 - Clients Scripts are not combined anymore in Debug application mode (Christophe)  ENH: Issue#106 - TJavaScript::jsonEncode and TJavaScript::jsonDecode should use built-in PHP functions (Christophe)  ENH: Issue#115 - Registry for Prado generated clientside counterparts of serverside controls (Yves Berkholz)  ENH: Added caching of message files to TException (Michael) diff --git a/framework/Web/UI/TClientScriptManager.php b/framework/Web/UI/TClientScriptManager.php index f0eb6157..09e240c2 100644 --- a/framework/Web/UI/TClientScriptManager.php +++ b/framework/Web/UI/TClientScriptManager.php @@ -76,7 +76,12 @@ class TClientScriptManager extends TApplicationComponent  	 * @var array  	 */  	private static $_pradoScripts; - +	/** +	 * Client-side javascript library packages, loads from SCRIPT_PATH.'/packages.php'; +	 * @var array +	 */ +	 private static $_pradoPackages; +	   	/**  	 * Constructor.  	 * @param TPage page that owns this client script manager @@ -120,6 +125,7 @@ class TClientScriptManager extends TApplicationComponent  				$packageFile = Prado::getFrameworkPath().DIRECTORY_SEPARATOR.self::SCRIPT_PATH.'/packages.php';  				list($packages,$deps)= include($packageFile);  				self::$_pradoScripts = $deps; +				self::$_pradoPackages = $packages;  			}  			if(isset(self::$_pradoScripts[$name])) @@ -147,9 +153,30 @@ class TClientScriptManager extends TApplicationComponent  	{  		if(($packages=array_keys($this->_registeredPradoScripts))!==array())  		{ -			$base = Prado::getFrameworkPath().DIRECTORY_SEPARATOR.self::SCRIPT_PATH; -			$url = $this->registerJavascriptPackages($base, $packages); -			$writer->write(TJavaScript::renderScriptFile($url)); +			if (Prado::getApplication()->getMode()!==TApplicationMode::Debug) +			{ +				$base = Prado::getFrameworkPath().DIRECTORY_SEPARATOR.self::SCRIPT_PATH; +				$url = $this->registerJavascriptPackages($base, $packages); +				$writer->write(TJavaScript::renderScriptFile($url)); +			} +			else +			{ +				// In debug mode, we add 1 <script> line by file +				$baseUrl=$this->getPradoScriptAssetUrl(); +				$packagesUrl=array(); +				foreach ($packages as $p) +				{ +					foreach (self::$_pradoScripts[$p] as $dep) +					{ +						foreach (self::$_pradoPackages[$dep] as $script) +						{ +							if (!in_array($url=$baseUrl.'/'.$script,$packagesUrl)) +								$packagesUrl[]=$url; +						} +					} +				} +				$writer->write(TJavaScript::renderScriptFiles($packagesUrl)); +			}  		}  	} | 
