protected function renderResponse($writer)
{
Prado::trace("ActivePage renderResponse()", 'Prado\\Web\\UI\\ActiveControls\\TActivePageAdapter');
//renders all the defered render() calls.
foreach ($this->_controlsToRender as $rid => $forRender) {
$forRender[0]->render($forRender[1]);
}
$response = $this->getResponse();
//send response data in header
if ($response->getHasAdapter()) {
$responseData = $response->getAdapter()->getResponseData();
if ($responseData !== null) {
$data = TJavaScript::jsonEncode($responseData);
$this->appendContentPart($response, self::CALLBACK_DATA_HEADER, $data);
}
}
//sends page state in header
if (($handler = $this->getCallbackEventTarget()) !== null) {
if ($handler->getActiveControl()->getClientSide()->getEnablePageStateUpdate()) {
$pagestate = $this->getPage()->getClientState();
$this->appendContentPart($response, self::CALLBACK_PAGESTATE_HEADER, $pagestate);
}
}
//safari must receive at least 1 byte of data.
$writer->write(" ");
//output the end javascript
if ($this->getPage()->getClientScript()->hasEndScripts()) {
$writer = $response->createHtmlWriter();
$this->getPage()->getClientScript()->renderEndScriptsCallback($writer);
$this->getPage()->getCallbackClient()->evaluateScript($writer);
}
//output the actions
$executeJavascript = $this->getCallbackClientHandler()->getClientFunctionsToExecute();
$actions = TJavaScript::jsonEncode($executeJavascript);
$this->appendContentPart($response, self::CALLBACK_ACTION_HEADER, $actions);
$cs = $this->Page->getClientScript();
// collect all stylesheet file references
$stylesheets = $cs->getStyleSheetUrls();
if (count($stylesheets) > 0) {
$this->appendContentPart($response, self::CALLBACK_STYLESHEETLIST_HEADER, TJavaScript::jsonEncode($stylesheets));
}
// collect all stylesheet snippets references
$stylesheets = $cs->getStyleSheetCodes();
if (count($stylesheets) > 0) {
$this->appendContentPart($response, self::CALLBACK_STYLESHEET_HEADER, TJavaScript::jsonEncode($stylesheets));
}
// collect all script file references
$scripts = $cs->getScriptUrls();
if (count($scripts) > 0) {
$this->appendContentPart($response, self::CALLBACK_SCRIPTLIST_HEADER, TJavaScript::jsonEncode($scripts));
}
// collect all hidden field references
$fields = $cs->getHiddenFields();
if (count($fields) > 0) {
$this->appendContentPart($response, self::CALLBACK_HIDDENFIELDLIST_HEADER, TJavaScript::jsonEncode($fields));
}
}