/** * @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; }
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(); }
/** * @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); }
/** * @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()]; }