Ejemplo n.º 1
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();
}
Ejemplo n.º 2
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;
 }
Ejemplo n.º 3
0
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();
}
Ejemplo n.º 4
0
 /**
  * @param CM_Component_Abstract $cmp
  * @param CM_Model_User|null    $viewer
  * @param string|null           $expectedExceptionClass
  */
 public static function assertComponentNotAccessible(CM_Component_Abstract $cmp, CM_Model_User $viewer = null, $expectedExceptionClass = null)
 {
     $environment = new CM_Frontend_Environment(null, $viewer);
     $expectedExceptionClassList = array('CM_Exception_AuthRequired', 'CM_Exception_Nonexistent', 'CM_Exception_NotAllowed');
     if (null !== $expectedExceptionClass) {
         $expectedExceptionClassList = array($expectedExceptionClass);
     }
     try {
         $cmp->checkAccessible($environment);
         self::fail('checkAccessible should throw exception');
     } catch (Exception $e) {
         self::assertTrue(in_array(get_class($e), $expectedExceptionClassList));
     }
 }
Ejemplo n.º 5
0
 /**
  * @param string    $className
  * @param CM_Params $params
  * @return array
  */
 public function loadComponent($className, CM_Params $params)
 {
     $component = CM_Component_Abstract::factory($className, $params);
     return $this->_getComponentRendering($component);
 }