1
0
www.mikescher.com/framework/web/widgets/CFlexWidget.php

121 lines
3.3 KiB
PHP

<?php
/**
* CFlexWidget class file.
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.yiiframework.com/
* @copyright 2008-2013 Yii Software LLC
* @license http://www.yiiframework.com/license/
*/
/**
* CFlexWidget embeds a Flex 3.x application into a page.
*
* To use CFlexWidget, set {@link name} to be the Flex application name
* (without the .swf suffix), and set {@link baseUrl} to be URL (without the ending slash)
* of the directory containing the SWF file of the Flex application.
*
* @property string $flashVarsAsString The flash parameter string.
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @package system.web.widgets
* @since 1.0
*/
class CFlexWidget extends CWidget
{
/**
* @var string name of the Flex application.
* This should be the SWF file name without the ".swf" suffix.
*/
public $name;
/**
* @var string the base URL of the Flex application.
* This refers to the URL of the directory containing the SWF file.
*/
public $baseUrl;
/**
* @var string width of the application region. Defaults to 450.
*/
public $width='100%';
/**
* @var string height of the application region. Defaults to 300.
*/
public $height='100%';
/**
* @var string quality of the animation. Defaults to 'high'.
*/
public $quality='high';
/**
* @var string background color of the application region. Defaults to '#FFFFFF', meaning white.
*/
public $bgColor='#FFFFFF';
/**
* @var string align of the application region. Defaults to 'middle'.
*/
public $align='middle';
/**
* @var string the access method of the script. Defaults to 'sameDomain'.
*/
public $allowScriptAccess='sameDomain';
/**
* @var boolean whether to allow running the Flash in full screen mode. Defaults to false.
* @since 1.1.1
*/
public $allowFullScreen=false;
/**
* @var string the HTML content to be displayed if Flash player is not installed.
*/
public $altHtmlContent;
/**
* @var boolean whether history should be enabled. Defaults to true.
*/
public $enableHistory=true;
/**
* @var array parameters to be passed to the Flex application.
*/
public $flashVars=array();
/**
* Renders the widget.
*/
public function run()
{
if(empty($this->name))
throw new CException(Yii::t('yii','CFlexWidget.name cannot be empty.'));
if(empty($this->baseUrl))
throw new CException(Yii::t('yii','CFlexWidget.baseUrl cannot be empty.'));
if($this->altHtmlContent===null)
$this->altHtmlContent=Yii::t('yii','This content requires the <a href="http://www.adobe.com/go/getflash/">Adobe Flash Player</a>.');
$this->registerClientScript();
$this->render('flexWidget');
}
/**
* Registers the needed CSS and JavaScript.
*/
public function registerClientScript()
{
$cs=Yii::app()->getClientScript();
$cs->registerScriptFile($this->baseUrl.'/AC_OETags.js');
if($this->enableHistory)
{
$cs->registerCssFile($this->baseUrl.'/history/history.css');
$cs->registerScriptFile($this->baseUrl.'/history/history.js');
}
}
/**
* Generates the properly quoted flash parameter string.
* @return string the flash parameter string.
*/
public function getFlashVarsAsString()
{
$params=array();
foreach($this->flashVars as $k=>$v)
$params[]=urlencode($k).'='.urlencode($v);
return CJavaScript::quote(implode('&',$params));
}
}