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); $html = '<div class="' . implode(' ', $viewResponse->getCssClasses()) . '" id="' . $viewResponse->getAutoId() . '">'; $html .= trim($this->getRender()->fetchViewResponse($viewResponse)); if (!$field instanceof CM_FormField_Hidden) { $html .= '<span class="messages"></span>'; } $html .= '</div>'; $formViewResponse = $frontend->getClosestViewResponse('CM_Form_Abstract'); if ($formViewResponse) { $formViewResponse->getJs()->append("this.registerField(cm.views['{$viewResponse->getAutoId()}']);"); } $frontend->treeCollapse(); return $html; }
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; }
/** * @return CM_Frontend_ViewResponse */ protected function _getViewResponse() { if (null === $this->_viewResponse) { $component = $this->_getComponent(); $environment = $this->getRender()->getEnvironment(); $viewResponse = new CM_Frontend_ViewResponse($component); $templateName = $component->getParams()->getString('template', 'default'); $viewResponse->setTemplateName($templateName); $component->prepare($environment, $viewResponse); $viewResponse->set('viewObj', $component); $this->_viewResponse = $viewResponse; } return $this->_viewResponse; }
public function testGetCssClasses() { $view = $this->getMock('CM_View_Abstract', ['getClassHierarchy']); $classNames = ['foo', 'bar']; $view->expects($this->any())->method('getClassHierarchy')->will($this->returnValue($classNames)); /** @var CM_View_Abstract $view */ $viewResponse = new CM_Frontend_ViewResponse($view); $this->assertSame($classNames, $viewResponse->getCssClasses()); $viewResponse->addCssClass('jar'); $classNames[] = 'jar'; $this->assertSame($classNames, $viewResponse->getCssClasses()); $viewResponse->setTemplateName('zoo'); $classNames[] = 'zoo'; $this->assertSame($classNames, $viewResponse->getCssClasses()); $viewResponse->addCssClass('zoo'); $this->assertSame($classNames, $viewResponse->getCssClasses()); }
/** * @return string */ public function fetch() { $page = $this->_getPage(); $layout = $this->_getLayout(); $page->checkAccessible($this->getRender()->getEnvironment()); $frontend = $this->getRender()->getGlobalResponse(); $viewResponse = new CM_Frontend_ViewResponse($layout); $viewResponse->setTemplateName('default'); $layout->prepare($this->getRender()->getEnvironment(), $viewResponse); $viewResponse->set('viewResponse', $viewResponse); $viewResponse->set('page', $page); $viewResponse->set('pageTitle', $this->fetchTitle()); $viewResponse->set('pageDescription', $this->fetchDescription()); $viewResponse->set('pageKeywords', $this->fetchKeywords()); $viewResponse->set('renderAdapter', $this); $environmentDefault = new CM_Frontend_Environment($this->getRender()->getEnvironment()->getSite()); $renderDefault = new CM_Frontend_Render($environmentDefault); $viewResponse->set('renderDefault', $renderDefault); $viewResponse->set('languageList', new CM_Paging_Language_Enabled()); $serviceManager = CM_Service_Manager::getInstance(); $options = array(); $options['deployVersion'] = CM_App::getInstance()->getDeployVersion(); $options['renderStamp'] = floor(microtime(true) * 1000); $options['site'] = CM_Params::encode($this->getRender()->getSite()); $options['url'] = $this->getRender()->getSite()->getUrl(); $options['urlCdn'] = $this->getRender()->getSite()->getUrlCdn(); $options['urlUserContentList'] = $serviceManager->getUserContent()->getUrlList(); $options['language'] = $this->getRender()->getLanguage(); $options['debug'] = CM_Bootloader::getInstance()->isDebug(); $options['stream'] = $serviceManager->getStreamMessage()->getClientOptions(); if ($viewer = $this->getRender()->getViewer()) { $options['stream']['channel']['key'] = CM_Model_StreamChannel_Message_User::getKeyByUser($viewer); $options['stream']['channel']['type'] = CM_Model_StreamChannel_Message_User::getTypeStatic(); } $frontend->getOnloadHeaderJs()->append('cm.options = ' . CM_Params::encode($options, true)); if ($viewer = $this->getRender()->getViewer()) { $frontend->getOnloadHeaderJs()->append('cm.viewer = ' . CM_Params::encode($viewer, true)); } $frontend->treeExpand($viewResponse); $frontend->getOnloadReadyJs()->append('cm.getLayout()._ready();'); $frontend->getOnloadHeaderJs()->append('cm.ready();'); $html = $this->getRender()->fetchViewResponse($viewResponse); $frontend->treeCollapse(); return $html; }