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);
     }
 }