diff options
Diffstat (limited to 'framework/Web/UI/ActiveControls/TCallbackResponseWriter.php')
-rw-r--r-- | framework/Web/UI/ActiveControls/TCallbackResponseWriter.php | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/framework/Web/UI/ActiveControls/TCallbackResponseWriter.php b/framework/Web/UI/ActiveControls/TCallbackResponseWriter.php new file mode 100644 index 00000000..3a50e02e --- /dev/null +++ b/framework/Web/UI/ActiveControls/TCallbackResponseWriter.php @@ -0,0 +1,70 @@ +<?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 System.Web.UI.ActiveControls + */ + +/** + * 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 System.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().'-->'; + } +}
\ No newline at end of file |