summaryrefslogtreecommitdiff
path: root/framework/Web/UI/ActiveControls/TCallbackResponseWriter.php
diff options
context:
space:
mode:
Diffstat (limited to 'framework/Web/UI/ActiveControls/TCallbackResponseWriter.php')
-rw-r--r--framework/Web/UI/ActiveControls/TCallbackResponseWriter.php70
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 &copy; 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