blob: 180e102537cc579ac381d80c071bdd52de09498b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
<?php
/**
* TClientScriptManager and TClientSideOptions class file.
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @author Gabor Berczi <gabor.berczi@devworx.hu> (lazyload additions & progressive rendering)
* @link http://www.pradosoft.com/
* @copyright Copyright © 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @package System.Web.UI
*/
/**
* TClientSideOptions abstract class.
*
* TClientSideOptions manages client-side options for components that have
* common client-side javascript behaviours and client-side events such as
* between ActiveControls and validators.
*
* @author <weizhuo[at]gmail[dot]com>
* @package System.Web.UI
* @since 3.0
*/
abstract class TClientSideOptions extends TComponent
{
/**
* @var TMap list of client-side options.
*/
private $_options;
/**
* Adds on client-side event handler by wrapping the code within a
* javascript function block. If the code begins with "javascript:", the
* code is assumed to be a javascript function block rather than arbiturary
* javascript statements.
* @param string option name
* @param string javascript statements.
*/
protected function setFunction($name, $code)
{
if(!TJavaScript::isJsLiteral($code))
$code = TJavaScript::quoteJsLiteral($this->ensureFunction($code));
$this->setOption($name, $code);
}
/**
* @return string gets a particular option, null if not set.
*/
protected function getOption($name)
{
if ($this->_options)
return $this->_options->itemAt($name);
else
return null;
}
/**
* @param string option name
* @param mixed option value.
*/
protected function setOption($name, $value)
{
$this->getOptions()->add($name, $value);
}
/**
* @return TMap gets the list of options as TMap
*/
public function getOptions()
{
if (!$this->_options)
$this->_options = Prado::createComponent('System.Collections.TMap');
return $this->_options;
}
/**
* Ensure that the javascript statements are wrapped in a javascript
* function block as <code>function(sender, parameter){ //code }</code>.
*/
protected function ensureFunction($javascript)
{
return "function(sender, parameter){ {$javascript} }";
}
}
|