Beispiel #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);
     $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;
 }
Beispiel #2
0
 public function prepare(CM_Params $renderParams, CM_Frontend_Environment $environment, CM_Frontend_ViewResponse $viewResponse)
 {
     $text = $this->getParams()->has('text') ? $renderParams->getString('text') : null;
     $skipDropZone = $renderParams->getBoolean('skipDropZone', false);
     $viewResponse->set('text', $text);
     $viewResponse->set('skipDropZone', $skipDropZone);
 }
Beispiel #3
0
 public function prepare(CM_Params $renderParams, CM_Frontend_Environment $environment, CM_Frontend_ViewResponse $viewResponse)
 {
     $viewResponse->set('class', $renderParams->has('class') ? $renderParams->getString('class') : null);
     $viewResponse->set('optionList', $this->_getOptionList());
     $viewResponse->set('translate', $renderParams->getBoolean('translate', $this->_translate) || $renderParams->has('translatePrefix'));
     $viewResponse->set('translatePrefix', $renderParams->has('translatePrefix') ? $renderParams->getString('translatePrefix') : null);
 }
Beispiel #4
0
 public function prepare(CM_Frontend_Environment $environment, CM_Frontend_ViewResponse $viewResponse)
 {
     $level = $this->_params->has('level') ? $this->_params->getInt('level') : null;
     if (null !== $level && !CM_Log_Logger::hasLevel($level)) {
         throw new CM_Exception_InvalidParam('Invalid `level` param');
     }
     $levelList = $level ? [$level] : null;
     $type = $this->_params->has('type') ? $this->_params->getInt('type') : null;
     if (null !== $type && !CM_Paging_Log::isValidType($type)) {
         throw new CM_Exception_InvalidParam('Invalid `type` param');
     }
     $aggregate = $this->_params->has('aggregate') ? $this->_params->getInt('aggregate') : null;
     $urlPage = $this->_params->has('urlPage') ? $this->_params->getString('urlPage') : null;
     $urlParams = $this->_params->has('urlParams') ? $this->_params->getArray('urlParams') : null;
     $aggregationPeriod = $aggregate;
     if (0 === $aggregationPeriod) {
         $deployStamp = CM_App::getInstance()->getDeployVersion();
         $aggregationPeriod = time() - $deployStamp;
     }
     $logList = new CM_Paging_Log($levelList, $type, (bool) $aggregationPeriod, $aggregationPeriod);
     $logList->setPage($this->_params->getPage(), $this->_params->getInt('count', 50));
     $viewResponse->setData(['level' => $level, 'type' => $type, 'logList' => $logList, 'aggregate' => $aggregate, 'aggregationPeriod' => $aggregationPeriod, 'aggregationPeriodList' => array(3600, 86400, 7 * 86400, 31 * 86400), 'urlPage' => $urlPage, 'urlParams' => $urlParams, 'levelMap' => array_flip(CM_Log_Logger::getLevels())]);
     $viewResponse->getJs()->setProperty('level', $level);
     $viewResponse->getJs()->setProperty('type', $type);
 }
Beispiel #5
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;
 }
Beispiel #6
0
 public function prepare(CM_Frontend_Environment $environment, CM_Frontend_ViewResponse $viewResponse)
 {
     $foo = $this->_params->getString('foo', 'value1');
     $colorStyles = $this->_getColorStyles();
     $icons = $this->_getIcons();
     $viewResponse->setData(array('now' => time(), 'foo' => $foo, 'colorStyles' => $colorStyles, 'icons' => $icons));
     $viewResponse->getJs()->setProperty('uname', 'uname');
 }
Beispiel #7
0
 public function prepare(CM_Params $renderParams, CM_Frontend_Environment $environment, CM_Frontend_ViewResponse $viewResponse)
 {
     /** @var CM_Geometry_Vector2 $value */
     $value = $this->getValue();
     $x = $value ? $value->getX() : null;
     $y = $value ? $value->getY() : null;
     $viewResponse->set('x', $x);
     $viewResponse->set('y', $y);
 }
Beispiel #8
0
 public function prepare(CM_Params $renderParams, CM_Frontend_Environment $environment, CM_Frontend_ViewResponse $viewResponse)
 {
     /** @var CM_Geo_Point $value */
     $value = $this->getValue();
     $latitude = $value ? $value->getLatitude() : null;
     $longitude = $value ? $value->getLongitude() : null;
     $viewResponse->set('latitude', $latitude);
     $viewResponse->set('longitude', $longitude);
 }
Beispiel #9
0
 public function prepare(CM_Frontend_Environment $environment, CM_Frontend_ViewResponse $viewResponse)
 {
     $debug = CM_Service_Manager::getInstance()->getDebug();
     $stats = $debug->getStats();
     ksort($stats);
     $viewResponse->set('stats', $stats);
     $cacheNames = array('CM_Cache_Storage_Memcache', 'CM_Cache_Storage_Apc', 'CM_Cache_Storage_File');
     $viewResponse->getJs()->setProperty('cacheNames', $cacheNames);
     $viewResponse->set('cacheNames', $cacheNames);
 }
Beispiel #10
0
 public function prepare(CM_Frontend_Environment $environment, CM_Frontend_ViewResponse $viewResponse)
 {
     $email = $this->_params->get('email');
     if (!$email instanceof CM_Mail_Mailable) {
         throw new CM_Exception_InvalidParam('Invalid `email` param');
     }
     list($subject, $html, $plainText) = $email->render();
     $viewResponse->set('plainText', $plainText);
     $viewResponse->getJs()->setProperty('html', $html);
 }
Beispiel #11
0
/**
 * @param CM_Frontend_Render       $render
 * @param string|null              $urlPage
 * @param array                    $urlParams
 * @param CM_Frontend_ViewResponse $component
 * @param int                      $page
 * @param string[]                 $linkParams
 * @param Smarty_Internal_Template $template
 * @return string
 */
function _smarty_function_paging_link(CM_Frontend_Render $render, $urlPage, array $urlParams, CM_Frontend_ViewResponse $component, $page, array $linkParams, Smarty_Internal_Template $template)
{
    if (empty($urlPage)) {
        $javascript = 'cm.views["' . $component->getAutoId() . '"].reload(' . json_encode(array('page' => $page)) . ')';
        $linkParams['onclick'] = $javascript . ';return false;';
    } else {
        $linkParams['href'] = $render->getUrlPage($urlPage, array_merge($urlParams, array('page' => $page)));
    }
    return smarty_function_link($linkParams, $template);
}
Beispiel #12
0
 public function prepare(CM_Params $renderParams, CM_Frontend_Environment $environment, CM_Frontend_ViewResponse $viewResponse)
 {
     $text = $renderParams->has('text') ? $renderParams->getString('text') : null;
     $buttonTheme = $this->_params->getString('buttonTheme', 'default');
     $skipPreviews = $this->_params->getBoolean('skipPreviews', false);
     $viewResponse->set('text', $text);
     $viewResponse->set('buttonTheme', $buttonTheme);
     if ($skipPreviews) {
         $viewResponse->setDataAttributes(['skip-previews' => '']);
     }
 }
Beispiel #13
0
 /**
  * @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;
 }
Beispiel #14
0
 public function prepare(CM_Frontend_Environment $environment, CM_Frontend_ViewResponse $viewResponse)
 {
     $type = $this->_params->getInt('type');
     $aggregate = $this->_params->has('aggregate') ? $this->_params->getInt('aggregate') : null;
     $urlPage = $this->_params->has('urlPage') ? $this->_params->getString('urlPage') : null;
     $urlParams = $this->_params->has('urlParams') ? $this->_params->getArray('urlParams') : null;
     $aggregationPeriod = $aggregate;
     if (0 === $aggregationPeriod) {
         $deployStamp = CM_App::getInstance()->getDeployVersion();
         $aggregationPeriod = time() - $deployStamp;
     }
     $logList = CM_Paging_Log_Abstract::factory($type, (bool) $aggregationPeriod, $aggregationPeriod);
     $logList->setPage($this->_params->getPage(), $this->_params->getInt('count', 50));
     $viewResponse->setData(['type' => $type, 'logList' => $logList, 'aggregate' => $aggregate, 'aggregationPeriod' => $aggregationPeriod, 'aggregationPeriodList' => array(3600, 86400, 7 * 86400, 31 * 86400), 'urlPage' => $urlPage, 'urlParams' => $urlParams]);
     $viewResponse->getJs()->setProperty('type', $type);
 }
Beispiel #15
0
 /**
  * @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;
 }
Beispiel #16
0
 public function prepare(CM_Params $renderParams, CM_Frontend_Environment $environment, CM_Frontend_ViewResponse $viewResponse)
 {
     $viewResponse->set('autocorrect', $renderParams->has('autocorrect') ? $renderParams->getString('autocorrect') : null);
     $viewResponse->set('autocapitalize', $renderParams->has('autocapitalize') ? $renderParams->getString('autocapitalize') : null);
     $viewResponse->set('autocomplete', $renderParams->has('autocomplete') ? $renderParams->getString('autocomplete') : null);
     $viewResponse->set('tabindex', $renderParams->has('tabindex') ? $renderParams->getInt('tabindex') : null);
     $viewResponse->set('class', $renderParams->has('class') ? $renderParams->getString('class') : null);
     $viewResponse->set('placeholder', $renderParams->has('placeholder') ? $renderParams->getString('placeholder') : null);
 }
Beispiel #17
0
 public function prepare(CM_Frontend_Environment $environment, CM_Frontend_ViewResponse $viewResponse)
 {
     $xmode = $this->_params->has('xmode') ? $this->_params->get('xmode') : 'time';
     $stack = $this->_params->has('stack') ? $this->_params->get('stack') : false;
     $legend = $this->_params->has('legend') ? $this->_params->get('legend') : true;
     $series = $this->_params->get('series');
     $numPoints = 0;
     $valueMin = 0;
     foreach ($series as &$serie) {
         $serie['label'] = (string) $serie['label'];
         foreach ($serie['data'] as $key => &$value) {
             $value = (double) $value;
             $valueMin = min($valueMin, $value);
         }
         $numPoints = max($numPoints, count($serie['data']));
     }
     $flotOptions = array();
     $flotOptions['series'] = array();
     $flotOptions['xaxis'] = array();
     $flotOptions['yaxis'] = array('min' => $valueMin);
     $flotOptions['points'] = array('show' => true, 'radius' => 1.5);
     $flotOptions['series']['lines'] = array('show' => true);
     $flotOptions['legend'] = array('position' => 'nw', 'show' => $legend);
     if ($stack) {
         $flotOptions['series']['lines']['fill'] = 0.7;
         $flotOptions['series']['stack'] = 'stack';
     }
     if ($xmode == 'time') {
         $flotOptions['xaxis']['mode'] = 'time';
     }
     if ($numPoints > 0 && 700 / $numPoints < 10) {
         $flotOptions['points']['show'] = false;
     }
     $viewResponse->getJs()->setProperty('series', $series);
     $viewResponse->getJs()->setProperty('flotOptions', $flotOptions);
 }
Beispiel #18
0
 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());
 }
Beispiel #19
0
 public function prepare(CM_Params $renderParams, CM_Frontend_Environment $environment, CM_Frontend_ViewResponse $viewResponse)
 {
     $viewResponse->set('class', $renderParams->has('class') ? $renderParams->getString('class') : null);
     $years = range($this->_yearFirst, $this->_yearLast);
     $months = range(1, 12);
     $days = range(1, 31);
     $viewResponse->set('years', array_combine($years, $years));
     $viewResponse->set('months', array_combine($months, $months));
     $viewResponse->set('days', array_combine($days, $days));
     /** @var DateTime|null $value */
     $value = $this->getValue();
     $year = $month = $day = null;
     if (null !== $value) {
         $value->setTimezone($this->_getTimeZone($environment));
         $year = $value->format('Y');
         $month = $value->format('n');
         $day = $value->format('j');
     }
     $viewResponse->set('yy', $year);
     $viewResponse->set('mm', $month);
     $viewResponse->set('dd', $day);
     $viewResponse->set('placeholderStart', $renderParams->has('placeholderStart') ? $renderParams->getString('placeholderStart') : null);
     $viewResponse->set('placeholderEnd', $renderParams->has('placeholderEnd') ? $renderParams->getString('placeholderEnd') : null);
 }
Beispiel #20
0
 public function testAddGetSetDataAttributes()
 {
     /** @var CM_View_Abstract $viewMock */
     $viewMock = $this->getMockBuilder('CM_View_Abstract')->getMock();
     $viewResponse = new CM_Frontend_ViewResponse($viewMock);
     $this->assertSame([], $viewResponse->getDataAttributes());
     $viewResponse->setDataAttributes(['foo' => 'bar', 'baz' => 'quux']);
     $this->assertSame(['foo' => 'bar', 'baz' => 'quux'], $viewResponse->getDataAttributes());
     $viewResponse->addDataAttribute('fooBar', 'barFoo');
     $this->assertSame(['foo' => 'bar', 'baz' => 'quux', 'fooBar' => 'barFoo'], $viewResponse->getDataAttributes());
 }
Beispiel #21
0
 public function prepare(CM_Params $renderParams, CM_Frontend_Environment $environment, CM_Frontend_ViewResponse $viewResponse)
 {
     $display = $renderParams->get('display', self::DISPLAY_CHECKBOX);
     if (!in_array($display, array(self::DISPLAY_CHECKBOX, self::DISPLAY_SWITCH))) {
         throw new CM_Exception_InvalidParam('Display needs to be either `checkbox` or `switch`');
     }
     $viewResponse->set('display', $display);
     $viewResponse->set('tabindex', $renderParams->has('tabindex') ? $renderParams->getInt('tabindex') : null);
     $viewResponse->set('class', $renderParams->has('class') ? $renderParams->getString('class') : null);
     $viewResponse->set('checked', $this->getValue() ? 'checked' : null);
     $viewResponse->set('text', $renderParams->has('text') ? $renderParams->getString('text') : null);
 }
Beispiel #22
0
 public function prepare(CM_Params $renderParams, CM_Frontend_Environment $environment, CM_Frontend_ViewResponse $viewResponse)
 {
     $viewResponse->set('class', $renderParams->has('class') ? $renderParams->getString('class') : null);
     $viewResponse->set('placeholder', $renderParams->has('placeholder') ? $renderParams->getString('placeholder') : null);
 }
Beispiel #23
0
 /**
  * @param CM_View_Abstract              $view
  * @param string                        $methodName
  * @param array|null                    $params
  * @param CM_Frontend_ViewResponse|null $viewResponse
  * @param CM_Frontend_ViewResponse|null $componentResponse
  * @throws CM_Exception_Invalid
  * @return CM_Http_Request_Post|\Mocka\AbstractClassTrait
  */
 public function createRequestAjax(CM_View_Abstract $view, $methodName, array $params = null, CM_Frontend_ViewResponse $viewResponse = null, CM_Frontend_ViewResponse $componentResponse = null)
 {
     if (null === $viewResponse) {
         $viewResponse = new CM_Frontend_ViewResponse($view);
     } else {
         if ($viewResponse->getView() !== $view) {
             throw new CM_Exception_Invalid("View doesn't match value from scopeView");
         }
     }
     if (null === $componentResponse) {
         if ($viewResponse->getView() instanceof CM_Component_Abstract) {
             $componentResponse = $viewResponse;
         } else {
             /** @var CM_Component_Abstract $component */
             $component = $this->mockClass('CM_Component_Abstract')->newInstance();
             $componentResponse = new CM_Frontend_ViewResponse($component);
         }
     } else {
         if (!$componentResponse->getView() instanceof CM_Component_Abstract) {
             throw new CM_Exception_Invalid("ScopeComponent's view is not a component");
         }
     }
     $query = array('method' => (string) $methodName, 'params' => (array) $params);
     return $this->createRequest('/ajax/null', $query, null, $viewResponse, $componentResponse);
 }
Beispiel #24
0
 /**
  * @param CM_Frontend_ViewResponse $viewResponse
  * @return string
  */
 public function fetchViewResponse(CM_Frontend_ViewResponse $viewResponse)
 {
     return $this->fetchViewTemplate($viewResponse->getView(), $viewResponse->getTemplateName(), $viewResponse->getData());
 }
Beispiel #25
0
 public function prepare(CM_Params $renderParams, CM_Frontend_Environment $environment, CM_Frontend_ViewResponse $viewResponse)
 {
     $viewResponse->set('tree', $this->_tree);
 }
Beispiel #26
0
 public function prepare(CM_Params $renderParams, CM_Frontend_Environment $environment, CM_Frontend_ViewResponse $viewResponse)
 {
     $viewResponse->set('itemValue', $renderParams->get('item'));
 }
Beispiel #27
0
 public function prepare(CM_Frontend_Environment $environment, CM_Frontend_ViewResponse $viewResponse)
 {
     /** @var CM_Page_Abstract $page */
     $page = $this->_params->has('page') ? $this->_params->getObject('page', CM_Page_Abstract::class) : null;
     $viewResponse->set('page', $page);
 }
Beispiel #28
0
 protected function _prepareViewResponse(CM_Frontend_ViewResponse $viewResponse)
 {
     $viewResponse->set('pageTitle', $this->fetchTitle());
 }
Beispiel #29
0
 public function prepare(CM_Frontend_Environment $environment, CM_Frontend_ViewResponse $viewResponse)
 {
     if ($this->_params->has('entity')) {
         $entity = $this->_params->getEntity('entity');
         $viewResponse->set('entity', $entity);
     }
 }
Beispiel #30
0
 public function prepare(CM_Params $renderParams, CM_Frontend_Environment $environment, CM_Frontend_ViewResponse $viewResponse)
 {
     $viewResponse->set('imageId', CM_Captcha::create()->getId());
 }