diff options
Diffstat (limited to 'framework/web/helpers/CGoogleApi.php')
| -rw-r--r-- | framework/web/helpers/CGoogleApi.php | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/framework/web/helpers/CGoogleApi.php b/framework/web/helpers/CGoogleApi.php new file mode 100644 index 0000000..7bb08fe --- /dev/null +++ b/framework/web/helpers/CGoogleApi.php @@ -0,0 +1,71 @@ +<?php +/** + * CGoogleApi class file. + * + * @author Qiang Xue <qiang.xue@gmail.com> + * @link http://www.yiiframework.com/ + * @copyright Copyright © 2008-2011 Yii Software LLC + * @license http://www.yiiframework.com/license/ + */ + +/** + * CGoogleApi provides helper methods to easily access {@link http://code.google.com/apis/ajax/ Google AJAX APIs}. + * + * @author Qiang Xue <qiang.xue@gmail.com> + * @version $Id: CGoogleApi.php 3515 2011-12-28 12:29:24Z mdomba $ + * @package system.web.helpers + */ +class CGoogleApi +{ + public static $bootstrapUrl='http://www.google.com/jsapi'; + + /** + * Renders the jsapi script file. + * @param string $apiKey the API key. Null if you do not have a key. + * @return string the script tag that loads Google jsapi. + */ + public static function init($apiKey=null) + { + if($apiKey===null) + return CHtml::scriptFile(self::$bootstrapUrl); + else + return CHtml::scriptFile(self::$bootstrapUrl.'?key='.$apiKey); + } + + /** + * Loads the specified API module. + * Note that you should call {@link init} first. + * @param string $name the module name + * @param string $version the module version + * @param array $options additional js options that are to be passed to the load() function. + * @return string the js code for loading the module. You can use {@link CHtml::script()} + * to enclose it in a script tag. + */ + public static function load($name,$version='1',$options=array()) + { + if(empty($options)) + return "google.load(\"{$name}\",\"{$version}\");"; + else + return "google.load(\"{$name}\",\"{$version}\",".CJavaScript::encode($options).");"; + } + + /** + * Registers the specified API module. + * This is similar to {@link load} except that it registers the loading code + * with {@link CClientScript} instead of returning it. + * This method also registers the jsapi script needed by the loading call. + * @param string $name the module name + * @param string $version the module version + * @param array $options additional js options that are to be passed to the load() function. + * @param string $apiKey the API key. Null if you do not have a key. + */ + public static function register($name,$version='1',$options=array(),$apiKey=null) + { + $cs=Yii::app()->getClientScript(); + $url=$apiKey===null?self::$bootstrapUrl:self::$bootstrapUrl.'?key='.$apiKey; + $cs->registerScriptFile($url); + + $js=self::load($name,$version,$options); + $cs->registerScript($name,$js,CClientScript::POS_HEAD); + } +}
\ No newline at end of file |
