blob: f6b0df557b5b0767830d7524176e0ae57e6f8301 (
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
|
<?php
/**
* TCallbackResponseAdapter and TCallbackResponseWriter class file.
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @link http://www.pradosoft.com/
* @copyright Copyright © 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @package Prado\Web\UI\ActiveControls
*/
namespace Prado\Web\UI\ActiveControls;
use Prado\IO\TTextWriter;
/**
* TCallbackResponseWriter class.
*
* TCallbackResponseWriter class enclosed a chunck of content within a
* html comment boundary. This allows multiple chuncks of content to return
* in the callback response and update multiple HTML elements.
*
* The {@link setBoundary Boundary} property sets boundary identifier in the
* HTML comment that forms the boundary. By default, the boundary identifier
* is generated using microtime.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @package Prado\Web\UI\ActiveControls
* @since 3.1
*/
class TCallbackResponseWriter extends TTextWriter
{
/**
* @var string boundary ID
*/
private $_boundary;
/**
* Constructor. Generates unique boundary ID using microtime.
*/
public function __construct()
{
$this->_boundary = sprintf('%x',crc32(microtime()));
}
/**
* @return string boundary identifier.
*/
public function getBoundary()
{
return $this->_boundary;
}
/**
* @param string boundary identifier.
*/
public function setBoundary($value)
{
$this->_boundary = $value;
}
/**
* Returns the text content wrapped within a HTML comment with boundary
* identifier as its comment content.
* @return string text content chunck.
*/
public function flush()
{
$content = parent::flush();
if(empty($content))
return "";
return '<!--'.$this->getBoundary().'-->'.$content.'<!--//'.$this->getBoundary().'-->';
}
}
|