Example #1
0
 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;
 }
Example #2
0
 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());
 }
Example #3
0
 /**
  * @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;
 }
Example #4
0
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);
}