From fedddfd60edb9cfe5bb5a90745ad7d8b963661ac Mon Sep 17 00:00:00 2001 From: "ctrlaltca@gmail.com" <> Date: Sat, 16 Jul 2011 09:28:55 +0000 Subject: applied prado-lazyload-in-callbacks-patch (ticket #348) --- framework/Web/UI/TClientScriptManager.php | 65 +++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) (limited to 'framework/Web/UI/TClientScriptManager.php') diff --git a/framework/Web/UI/TClientScriptManager.php b/framework/Web/UI/TClientScriptManager.php index eec347eb..677daa9b 100644 --- a/framework/Web/UI/TClientScriptManager.php +++ b/framework/Web/UI/TClientScriptManager.php @@ -3,6 +3,7 @@ * TClientScriptManager and TClientSideOptions class file. * * @author Qiang Xue + * @author Gabor Berczi (lazyload additions & progressive rendering) * @link http://www.pradosoft.com/ * @copyright Copyright © 2005-2011 PradoSoft * @license http://www.pradosoft.com/license/ @@ -16,6 +17,7 @@ * TClientScriptManager manages javascript and CSS stylesheets for a page. * * @author Qiang Xue + * @author Gabor Berczi (lazyload additions & progressive rendering) * @version $Id$ * @package System.Web.UI * @since 3.0 @@ -107,6 +109,16 @@ class TClientScriptManager extends TApplicationComponent || count($this->_headScriptFiles) || count($this->_headScripts); } + public static function getPradoPackages() + { + return self::$_pradoPackages; + } + + public static function getPradoScripts() + { + return self::$_pradoScripts; + } + /** * Registers Prado javascript by library name. See "Web/Javascripts/source/packages.php" * for library names. @@ -191,6 +203,37 @@ class TClientScriptManager extends TApplicationComponent } } + /** + * Returns the URLs of all script files referenced on the page + * @return array Combined list of all script urls used in the page + */ + public function getScriptUrls() + { + $scripts = array(); + + $packages=array_keys($this->_registeredPradoScripts); + $base = Prado::getFrameworkPath().DIRECTORY_SEPARATOR.self::SCRIPT_PATH; + list($path,$baseUrl)=$this->getPackagePathUrl($base); + foreach ($packages as $p) + { + foreach (self::$_pradoScripts[$p] as $dep) + { + foreach (self::$_pradoPackages[$dep] as $script) + { + if (!in_array($url=$baseUrl.'/'.$script,$scripts)) + $scripts[]=$url; + } + } + } + + $scripts = array_merge($scripts, array_values($this->_headScriptFiles)); + $scripts = array_merge($scripts, array_values($this->_scriptFiles)); + + $scripts = array_unique($scripts); + + return $scripts; + } + /** * Publishes a javascript library path and register packages to be loaded. * See TClientScriptLoader for component that enables users to register custom javascript libraries. @@ -423,6 +466,23 @@ class TClientScriptManager extends TApplicationComponent $this->_page->registerCachingAction('Page.ClientScript','registerStyleSheet',$params); } + /** + * Returns the URLs of all stylesheet files referenced on the page + * @return array Combined list of all stylesheet urls used in the page + */ + public function getStyleSheetUrls() + { + $stylesheets = array_values($this->_styleSheets); + + foreach(Prado::getApplication()->getAssetManager()->getPublished() as $path=>$url) + if (substr($url,strlen($url)-4)=='.css') + $stylesheets[] = $url; + + $stylesheets = array_unique($stylesheets); + + return $stylesheets; + } + /** * Registers a javascript file in the page head * @param string a unique key identifying the file @@ -714,6 +774,11 @@ class TClientScriptManager extends TApplicationComponent $writer->write("
\n".$str."
\n"); } + public function getHiddenFields() + { + return $this->_hiddenFields; + } + /** * Checks whether page rendering has not begun yet */ -- cgit v1.2.3