public function fetch(CM_Params $renderParams, CM_Frontend_ViewResponse &$viewResponse = null) { $field = $this->_getFormField(); $frontend = $this->getRender()->getGlobalResponse(); $viewResponse = new CM_Frontend_ViewResponse($field); $viewResponse->setTemplateName('default'); $field->prepare($renderParams, $this->getRender()->getEnvironment(), $viewResponse); $viewResponse->set('field', $field); $viewResponse->set('inputId', $viewResponse->getAutoIdTagged('input')); $viewResponse->set('name', $field->getName()); $viewResponse->set('value', $field->getValue()); $viewResponse->set('options', $field->getOptions()); $viewResponse->getJs()->setProperty('fieldOptions', $field->getOptions()); $frontend->treeExpand($viewResponse); $content = trim($this->getRender()->fetchViewResponse($viewResponse)); if (!$field instanceof CM_FormField_Hidden) { $content .= '<span class="messages"></span>'; } $tagAttributes = ['id' => $viewResponse->getAutoId(), 'class' => join(' ', $viewResponse->getCssClasses())]; $tagRenderer = new CM_Frontend_HtmlTagRenderer(); $html = $tagRenderer->renderTag('div', $content, $tagAttributes, $viewResponse->getDataAttributes()); $formViewResponse = $frontend->getClosestViewResponse('CM_Form_Abstract'); if ($formViewResponse) { $formViewResponse->getJs()->append("this.registerField(cm.views['{$viewResponse->getAutoId()}']);"); } $frontend->treeCollapse(); return $html; }
public function testRenderTag() { $tagRenderer = new CM_Frontend_HtmlTagRenderer(); $tag = $tagRenderer->renderTag('div', 'foo bar', ['id' => '123321', 'class' => 'baz quux'], ['foo' => 'bar', 'baz' => 'quux']); $this->assertSame('<div id="123321" class="baz quux" data-foo="bar" data-baz="quux">foo bar</div>', $tag); $tag = $tagRenderer->renderTag('span'); $this->assertSame('<span></span>', $tag); $exception = $this->catchException(function () use($tagRenderer) { $tagRenderer->renderTag(''); }); $this->assertInstanceOf('CM_Exception_Invalid', $exception); $this->assertSame('Empty element name', $exception->getMessage()); }
/** * @return string */ public function fetch() { $component = $this->_getComponent(); $render = $this->getRender(); $component->checkAccessible($render->getEnvironment()); $viewResponse = $this->_getViewResponse(); $frontend = $render->getGlobalResponse(); $frontend->treeExpand($viewResponse); $this->_prepareViewResponse($viewResponse); $tagRenderer = new CM_Frontend_HtmlTagRenderer(); $tagAttributes = ['id' => $viewResponse->getAutoId(), 'class' => join(' ', $viewResponse->getCssClasses())]; $html = $tagRenderer->renderTag('div', $this->getRender()->fetchViewResponse($viewResponse), $tagAttributes, $viewResponse->getDataAttributes()); $frontend->treeCollapse(); return $html; }
function smarty_function_tag(array $params, Smarty_Internal_Template $template) { if (!isset($params['el'])) { trigger_error('Param `el` missing.'); } $elementName = $params['el']; unset($params['el']); $content = ''; if (isset($params['content'])) { $content = (string) $params['content']; unset($params['content']); } $dataAttributes = []; if (isset($params['data'])) { if (!is_array($params['data'])) { trigger_error('Param `data` should be an array.'); } $dataAttributes = $params['data']; unset($params['data']); } $tagRenderer = new CM_Frontend_HtmlTagRenderer(); return $tagRenderer->renderTag($elementName, $content, $params, $dataAttributes); }