protected function renderControlContentNonEditable()
 {
     if (!isset($this->properties['backend']['services'])) {
         return null;
     }
     $content = null;
     $sizeClass = null;
     if (isset($this->properties['backend']['sizeClass'])) {
         $sizeClass = $this->properties['backend']['sizeClass'];
     }
     foreach ($this->properties['backend']['services'] as $serviceName => $serviceDetails) {
         if (ArrayUtil::getArrayValue($serviceDetails, 'enabled') and ArrayUtil::getArrayValue($serviceDetails, 'url')) {
             $properties = array();
             $properties['frontend']['href'] = $serviceDetails['url'];
             $properties['frontend']['target'] = '_blank';
             $properties['backend']['text'] = $serviceName;
             $properties['backend']['sizeClass'] = 'button social-button ' . $serviceName . ' ' . $sizeClass;
             $id = $this->id . '_' . $serviceName;
             $element = BuilderElementRenderUtil::resolveElement('BuilderSocialButtonElement', $this->renderForCanvas, $id, $properties);
             $content .= $element->renderNonEditable();
             $content .= $this->resolveSpacerContentForVerticalLayout();
             $content .= $this->resolveTdCloseAndOpenContentForHorizontalLayout();
         }
     }
     return $content;
 }
 protected function induceColumn($count)
 {
     for ($i = 0; $i < $count; $i++) {
         $blankColumnElement = BuilderElementRenderUtil::resolveElement('BuilderColumnElement', $this->renderForCanvas);
         $blankColumnElementData = BuilderElementRenderUtil::resolveSerializedDataByElement($blankColumnElement);
         $this->content = CMap::mergeArray($this->content, $blankColumnElementData);
     }
 }
 protected function resolveDefaultTitleColumn(&$content)
 {
     $element = BuilderElementRenderUtil::resolveElement('BuilderHeaderTextElement', $this->renderForCanvas);
     $elementData = BuilderElementRenderUtil::resolveSerializedDataByElement($element);
     $columnElement = BuilderElementRenderUtil::resolveElement('BuilderColumnElement', $this->renderForCanvas, null, null, $elementData);
     $columnData = BuilderElementRenderUtil::resolveSerializedDataByElement($columnElement);
     $content[$columnElement->id] = $columnData[$columnElement->id];
 }
 protected function renderControlContentNonEditable()
 {
     $properties = $this->properties;
     if (isset($properties['backend']['align'])) {
         unset($properties['backend']['align']);
     }
     $element = BuilderElementRenderUtil::resolveElement('BuilderButtonElement', $this->renderForCanvas, null, $properties);
     $content = $element->renderNonEditable();
     return $content;
 }
 /**
  * @depends testRenderElementEditableWithClassNameAndIdAndContentForCanvas
  */
 public function testRenderElementEditableWithClassNameAndIdAndContentAndPropertiesForCanvas()
 {
     $formClassName = BaseBuilderElement::getModelClassName();
     $className = 'BuilderTitleElement';
     $content = array('text' => 'dummyContent');
     $id = __FUNCTION__ . __LINE__;
     $renderForCanvas = true;
     $properties = array('frontend' => array('inlineStyles' => array('color' => '#cccccc')), 'backend' => array('headingLevel' => 'h3'));
     $params = null;
     $expectedContent = BuilderElementRenderUtil::renderEditable($className, $renderForCanvas, $id, $properties, $content, $params);
     $this->setPostArray(array($formClassName => array('className' => $className, 'content' => $content, 'properties' => $properties, 'params' => $params, 'id' => $id), 'renderForCanvas' => $renderForCanvas));
     $content = $this->runControllerWithNoExceptionsAndGetContent('emailTemplates/default/renderElementEditable');
     // need to get rid of script from the content controller returned as we don't get that when using util
     static::sanitizeStringOfScript($content);
     $this->assertEquals($expectedContent, $content);
 }
 protected function actionRenderElement($editable = false)
 {
     Yii::app()->clientScript->setToAjaxMode();
     $editableForm = Yii::app()->request->getPost(BaseBuilderElement::getModelClassName());
     $className = ArrayUtil::getArrayValue($editableForm, 'className');
     $id = ArrayUtil::getArrayValue($editableForm, 'id');
     $properties = ArrayUtil::getArrayValue($editableForm, 'properties');
     $content = ArrayUtil::getArrayValue($editableForm, 'content');
     $params = ArrayUtil::getArrayValue($editableForm, 'params');
     $renderForCanvas = Yii::app()->request->getPost('renderForCanvas', !$editable);
     $wrapElementInRow = Yii::app()->request->getPost('wrapElementInRow', BuilderElementRenderUtil::DO_NOT_WRAP_IN_ROW);
     // at bare minimum we should have classname. Without it, it does not make sense.
     if (!Yii::app()->request->isPostRequest || !isset($className)) {
         Yii::app()->end(0, false);
     }
     if ($editable) {
         $content = BuilderElementRenderUtil::renderEditable($className, $renderForCanvas, $id, $properties, $content, $params);
     } else {
         $content = BuilderElementRenderUtil::renderNonEditable($className, $renderForCanvas, $wrapElementInRow, $id, $properties, $content, $params);
     }
     Yii::app()->clientScript->render($content);
     echo $content;
 }
 /**
  * Resolve amd return an element non-editable when provided with id, its data and additional params.
  * @param $id
  * @param array $elementData
  * @param array $elementParams
  * @return string
  */
 protected function resolveElementByIdAndDataNonEditable($id, array $elementData, array $elementParams)
 {
     $class = null;
     $properties = null;
     $content = null;
     extract($elementData);
     $elementContent = BuilderElementRenderUtil::renderNonEditable($class, $this->renderForCanvas, false, $id, $properties, $content, $elementParams);
     return $elementContent;
 }
 /**
  * Resolve html for provided unserialized data array
  * @param array $unserializedData
  * @param bool $renderForCanvas
  * @param OwnedSecurableItem $attachedMergeTagModel
  * @param null $type
  * @param null $language
  * @return bool|null|string
  */
 public static function resolveHtmlByUnserializedData(array $unserializedData, $renderForCanvas = false, OwnedSecurableItem $attachedMergeTagModel = null, $type = null, $language = null)
 {
     $resolvedHtml = null;
     $dom = ArrayUtil::getArrayValue($unserializedData, 'dom');
     if (empty($dom)) {
         return null;
     }
     $class = null;
     $properties = null;
     $content = null;
     $canvasData = reset($dom);
     if (!is_array($canvasData)) {
         return null;
     }
     extract($canvasData);
     $id = key($dom);
     $resolvedHtml = BuilderElementRenderUtil::renderNonEditable($class, $renderForCanvas, false, $id, $properties, $content);
     if (empty($resolvedHtml)) {
         return null;
     }
     if (isset($attachedMergeTagModel)) {
         $resolvedHtml = static::resolveMergeTagsByModel($resolvedHtml, $attachedMergeTagModel, $type, $language);
     }
     return $resolvedHtml;
 }
 /**
  * Resolve html for provided unserialized data array
  * @param array $unserializedData
  * @param bool $renderForCanvas
  * @return bool|null|string
  */
 public static function resolveHtmlByUnserializedData(array $unserializedData, $renderForCanvas = false)
 {
     $resolvedHtml = null;
     $dom = ArrayUtil::getArrayValue($unserializedData, 'dom');
     if (empty($dom)) {
         return null;
     }
     $class = null;
     $properties = null;
     $content = null;
     $canvasData = reset($dom);
     if (!is_array($canvasData)) {
         return null;
     }
     extract($canvasData);
     $id = key($dom);
     $resolvedHtml = BuilderElementRenderUtil::renderNonEditable($class, $renderForCanvas, false, $id, $properties, $content);
     if (empty($resolvedHtml)) {
         return null;
     }
     return $resolvedHtml;
 }