Exemple #1
0
 /**
  * @param CM_Params $params
  * @return array
  */
 public function loadComponent(CM_Params $params)
 {
     $component = CM_Component_Abstract::factory($params->getString('className'), $params);
     $renderAdapter = new CM_RenderAdapter_Component($this->getRender(), $component);
     $html = $renderAdapter->fetch();
     $frontend = $this->getRender()->getGlobalResponse();
     $data = array('autoId' => $frontend->getTreeRoot()->getValue()->getAutoId(), 'html' => $html, 'js' => $frontend->getJs());
     $frontend->clear();
     return $data;
 }
Exemple #2
0
function smarty_function_component(array $params, Smarty_Internal_Template $template)
{
    /** @var CM_Frontend_Render $render */
    $render = $template->smarty->getTemplateVars('render');
    $component = null;
    if (isset($params['name'])) {
        $name = $params['name'];
        unset($params['name']);
        if (0 === strpos($name, '*_')) {
            $name = $render->getClassnameByPartialClassname(mb_substr($name, 2));
        }
        $component = CM_Component_Abstract::factory($name, $params);
    }
    if (isset($params['view'])) {
        $view = $params['view'];
        unset($params['view']);
        if (!$view instanceof CM_Component_Abstract) {
            throw new CM_Exception('Unexpected component instance');
        }
        $component = $view;
    }
    if (!$component) {
        throw new CM_Exception('Missing component, either pass `name` or `view`.');
    }
    $renderAdapter = CM_RenderAdapter_Component::factory($render, $component);
    return $renderAdapter->fetch();
}
function smarty_function_component(array $params, Smarty_Internal_Template $template)
{
    /** @var CM_Frontend_Render $render */
    $render = $template->smarty->getTemplateVars('render');
    if (empty($params['name'])) {
        trigger_error('Param `name` missing.');
    }
    $classname = null;
    $name = $params['name'];
    unset($params['name']);
    if (0 === strpos($name, '*_')) {
        $name = $render->getClassnameByPartialClassname(mb_substr($name, 2));
    }
    $component = CM_Component_Abstract::factory($name, $params);
    $renderAdapter = CM_RenderAdapter_Component::factory($render, $component);
    return $renderAdapter->fetch();
}
Exemple #4
0
 /**
  * @param CM_Component_Abstract $component
  * @param CM_Model_User|null    $viewer
  * @param CM_Site_Abstract|null $site
  * @return CM_Dom_NodeList
  */
 protected function _renderComponent(CM_Component_Abstract $component, CM_Model_User $viewer = null, CM_Site_Abstract $site = null)
 {
     $render = new CM_Frontend_Render(new CM_Frontend_Environment($site, $viewer));
     $renderAdapter = new CM_RenderAdapter_Component($render, $component);
     $componentHtml = $renderAdapter->fetch();
     return new CM_Dom_NodeList($componentHtml, true);
 }
Exemple #5
0
 /**
  * @param CM_Component_Abstract $component
  * @return array
  */
 protected function _getComponentRendering(CM_Component_Abstract $component)
 {
     $render = $this->createRender();
     $renderAdapter = CM_RenderAdapter_Component::factory($render, $component);
     $html = $renderAdapter->fetch();
     $globalResponse = $render->getGlobalResponse();
     return ['js' => $globalResponse->getJs(), 'html' => $html, 'autoId' => $globalResponse->getTreeRoot()->getValue()->getAutoId()];
 }