From 15f6747485b5912f657c2c0fce8f41c01c70d2ad Mon Sep 17 00:00:00 2001 From: "ctrlaltca@gmail.com" <> Date: Fri, 24 Jun 2011 22:12:36 +0000 Subject: merged in the patch for progressive rendering from #235; unit tests doesn't evidence any regression, but of course more proper testing is needed --- framework/Web/UI/TPage.php | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'framework/Web/UI/TPage.php') diff --git a/framework/Web/UI/TPage.php b/framework/Web/UI/TPage.php index 43b2f421..f3060dcc 100644 --- a/framework/Web/UI/TPage.php +++ b/framework/Web/UI/TPage.php @@ -167,6 +167,10 @@ class TPage extends TTemplateControl implements IPageEvents * @var boolean whether client supports javascript */ private $_enableJavaScript=true; + /** + * @var THtmlWriter current html render writer + */ + private $_writer; /** * Constructor. @@ -186,6 +190,8 @@ class TPage extends TTemplateControl implements IPageEvents public function run($writer) { Prado::trace("Running page life cycles",'System.Web.UI.TPage'); + $this->_writer = $writer; + $this->determinePostBackMode(); if($this->getIsPostBack()) @@ -197,6 +203,8 @@ class TPage extends TTemplateControl implements IPageEvents } else $this->processNormalRequest($writer); + + $this->_writer = null; } protected function processNormalRequest($writer) @@ -932,6 +940,14 @@ class TPage extends TTemplateControl implements IPageEvents $postBackHandler->raisePostBackEvent($this->getPostBackEventParameter()); } + /** + * @return boolean Whether form rendering is in progress + */ + public function getInFormRender() + { + return $this->_inFormRender; + } + /** * Ensures the control is rendered within a form. * @param TControl the control to be rendered @@ -951,8 +967,8 @@ class TPage extends TTemplateControl implements IPageEvents if($this->_formRendered) throw new TConfigurationException('page_form_duplicated'); $this->_formRendered=true; - $this->_inFormRender=true; $this->getClientScript()->registerHiddenField(self::FIELD_PAGESTATE,$this->getClientState()); + $this->_inFormRender=true; } /** @@ -1199,6 +1215,15 @@ class TPage extends TTemplateControl implements IPageEvents $this->_cachingStack=new TStack; return $this->_cachingStack; } + + /** + * Flushes output + */ + public function flushWriter() + { + if ($this->_writer) + $this->Response->write($this->_writer->flush()); + } } -- cgit v1.2.3