blob: 301d424def1305ca400b97fcc39b152cd7075a83 (
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
|
<?php
/**
* TJuiControlAdapter class file.
*
* @author Fabio Bas <ctrlaltca@gmail.com>
* @link http://www.pradosoft.com/
* @copyright Copyright © 2013-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @package Prado\Web\UI\JuiControls
*/
namespace Prado\Web\UI\JuiControls;
Prado::using('System.Web.UI.ActiveControls.TActiveControlAdapter');
/**
* TJuiControlAdapter class
*
* TJuiControlAdapter is the base adapter class for controls that are
* derived from a jQuery-ui widget. It exposes convenience methods to
* publish jQuery-UI javascript and css assets.
*
* @author Fabio Bas <ctrlaltca@gmail.com>
* @package Prado\Web\UI\JuiControls
* @since 3.3
*/
class TJuiControlAdapter extends TActiveControlAdapter
{
const SCRIPT_PATH = 'jquery';
const CSS_PATH = 'css';
const BASE_CSS_FILENAME ='jquery-ui.css';
/**
* @param string set the jquery-ui style
*/
public function setJuiBaseStyle($value)
{
$this->getControl()->setViewState('JuiBaseStyle', $value, 'base');
}
/**
* @return string current jquery-ui style
*/
public function getJuiBaseStyle()
{
return $this->getControl()->getViewState('JuiBaseStyle', 'base');
}
/**
* Inject jquery script and styles before render
*/
public function onPreRender($param)
{
parent::onPreRender($param);
$this->getPage()->getClientScript()->registerPradoScript('jqueryui');
$this->publishJuiStyle(self::BASE_CSS_FILENAME);
}
/**
* @param string jQuery asset file in the self::SCRIPT_PATH directory.
* @return string jQuery asset url.
*/
protected function getAssetUrl($file='')
{
$base = $this->getPage()->getClientScript()->getPradoScriptAssetUrl();
return $base.'/'.self::SCRIPT_PATH.'/'.$file;
}
/**
* Publish the jQuery-ui style Css asset file.
* @param file name
* @return string Css file url.
*/
public function publishJuiStyle($file)
{
$url = $this->getAssetUrl(self::CSS_PATH.'/'.$this->getJuiBaseStyle().'/'.$file);
$cs = $this->getPage()->getClientScript();
if(!$cs->isStyleSheetFileRegistered($url))
$cs->registerStyleSheetFile($url, $url);
return $url;
}
}
|