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