protected function resolveContentByPostSourceData(array $sourceData) { $content = parent::resolveContentByPostSourceData($sourceData); if (static::PREFER_SERIALIZED_DATA_OVER_HTML_CONTENT && isset($sourceData['serializedData'])) { $content['htmlContent'] = EmailTemplateSerializedDataToHtmlUtil::resolveHtmlBySerializedData($sourceData['serializedData']); } return $content; }
public function actionRenderPreview($id = null, $useHtmlContent = 1) { Yii::app()->clientScript->setToAjaxMode(); if (isset($id)) { $emailTemplate = EmailTemplate::getById(intval($id)); ControllerSecurityUtil::resolveAccessCanCurrentUserReadModel($emailTemplate); $content = $emailTemplate->htmlContent; if (!$useHtmlContent || empty($content)) { $content = EmailTemplateSerializedDataToHtmlUtil::resolveHtmlByEmailTemplateModel($emailTemplate, false); } Yii::app()->clientScript->render($content); echo $content; Yii::app()->end(0, false); } $serializedDataArray = Yii::app()->request->getPost('serializedData'); if (!Yii::app()->request->isPostRequest || $serializedDataArray === null) { Yii::app()->end(0, false); } $content = EmailTemplateSerializedDataToHtmlUtil::resolveHtmlBySerializedData($serializedDataArray, false); Yii::app()->clientScript->render($content); echo $content; }
public function __set($attributeName, $value) { parent::__set($attributeName, $value); // we exclude predefined because: // a- we don't want htmlContent compiled for those. It wont be used anywhere anyway. // b- Using console installer we get errors due to getAssetManager(used in BuilderCanvasElement) // not being available in CConsoleApplication if ($attributeName == 'serializedData' && $this->isBuilderTemplate() && !$this->isPredefinedBuilderTemplate() && ArrayUtil::getArrayValue(CJSON::decode($this->serializedData), 'dom')) { $this->htmlContent = EmailTemplateSerializedDataToHtmlUtil::resolveHtmlBySerializedData($this->serializedData, false); } }