Пример #1
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);
 }
Пример #2
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('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);
 }
Пример #3
0
 protected function _execute(CM_Params $params)
 {
     $indexClassName = $params->getString('indexClassName');
     $id = $params->getString('id');
     /** @var CM_Elasticsearch_Type_Abstract $index */
     $index = new $indexClassName();
     $index->update(array($id));
     $index->getIndex()->refresh();
 }
Пример #4
0
 protected function _execute(CM_Params $params)
 {
     $code = $params->getString('code');
     $identityList = $params->getArray('identityList');
     $eventName = $params->getString('eventName');
     $propertyList = $params->getArray('propertyList');
     $kissMetrics = new CMService_KissMetrics_Client($code);
     $kissMetrics->setIdentityList($identityList);
     $kissMetrics->trackEvent($eventName, $propertyList);
 }
Пример #5
0
 protected function _execute(CM_Params $params)
 {
     $indexClassName = $params->getString('indexClassName');
     $id = $params->getString('id');
     $client = CM_Service_Manager::getInstance()->getElasticsearch()->getClient();
     /** @var CM_Elasticsearch_Type_Abstract $index */
     $index = new $indexClassName($client);
     $index->updateDocuments(array($id));
     $index->refreshIndex();
 }
Пример #6
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);
 }
Пример #7
0
 /**
  * @param CM_Params                  $params
  * @param CM_Http_Response_View_Ajax $response
  * @throws CM_Exception_Invalid
  * @return array
  */
 public function loadPage(CM_Params $params, CM_Http_Response_View_Ajax $response)
 {
     $path = $params->getString('path');
     $currentLayoutClass = $params->getString('currentLayout');
     $request = $this->_createGetRequestWithUrl($path);
     $responseFactory = new CM_Http_ResponseFactory($this->getServiceManager());
     $count = 0;
     $fragments = [];
     do {
         $fragment = CM_Util::link($request->getPath(), $request->getQuery());
         $fragments[] = $fragment;
         $url = $this->getRender()->getSite()->getUrlBase() . $fragment;
         if ($count++ > 10) {
             throw new CM_Exception_Invalid('Page redirect loop detected (' . implode(' -> ', $fragments) . ').');
         }
         $responsePage = $responseFactory->getResponse($request);
         if (!$responsePage->getSite()->equals($this->getSite())) {
             $redirectExternalFragment = CM_Util::link($responsePage->getRequest()->getPath(), $responsePage->getRequest()->getQuery());
             return array('redirectExternal' => $responsePage->getRender()->getUrl($redirectExternalFragment));
         }
         $responseEmbed = new CM_Http_Response_Page_Embed($responsePage->getRequest(), $responsePage->getSite(), $this->getServiceManager());
         $responseEmbed->process();
         $request = $responseEmbed->getRequest();
         if ($redirectUrl = $responseEmbed->getRedirectUrl()) {
             if (!$this->_isPageOnSameSite($redirectUrl)) {
                 return array('redirectExternal' => $redirectUrl);
             }
         }
     } while ($redirectUrl);
     foreach ($responseEmbed->getCookies() as $name => $cookieParameters) {
         $response->setCookie($name, $cookieParameters['value'], $cookieParameters['expire'], $cookieParameters['path']);
     }
     $page = $responseEmbed->getPage();
     $this->_setStringRepresentation(get_class($page));
     $frontend = $responseEmbed->getRender()->getGlobalResponse();
     $html = $responseEmbed->getContent();
     $js = $frontend->getJs();
     $autoId = $frontend->getTreeRoot()->getValue()->getAutoId();
     $frontend->clear();
     $layoutRendering = null;
     $layoutClass = $page->getLayout($this->getRender()->getEnvironment());
     if ($layoutClass !== $currentLayoutClass) {
         $layout = new $layoutClass();
         $layoutRendering = $this->_getComponentRendering($layout);
     }
     $title = $responseEmbed->getTitle();
     $menuList = array_merge($this->getSite()->getMenus($this->getRender()->getEnvironment()), $responseEmbed->getRender()->getMenuList());
     $menuEntryHashList = $this->_getMenuEntryHashList($menuList, get_class($page), $page->getParams());
     $jsTracking = $responseEmbed->getRender()->getServiceManager()->getTrackings()->getJs();
     return ['pageRendering' => ['js' => $js, 'html' => $html, 'autoId' => $autoId], 'layoutRendering' => $layoutRendering, 'title' => $title, 'url' => $url, 'menuEntryHashList' => $menuEntryHashList, 'jsTracking' => $jsTracking];
 }
Пример #8
0
 public function testProcessInvalidCharsRequired()
 {
     $invalidChars = array(chr(192), chr(214), chr(255), chr(140));
     foreach ($invalidChars as $inputChar) {
         $form = new CM_Form_MockForm();
         $formAction = new CM_FormAction_MockForm_TestExampleAction($form);
         $data = array('must_check' => 'checked', 'text' => $inputChar);
         $response = $this->getResponseFormAction($formAction, $data);
         try {
             $this->assertFormResponseError($response, null, 'text');
         } catch (PHPUnit_Framework_AssertionFailedError $e) {
             $this->assertNotSame($inputChar, self::$formActionData->getString('text'));
         }
     }
 }
Пример #9
0
 public function testGetString()
 {
     $text = "Foo Bar, Bar Foo";
     $notText = new stdClass();
     $params = new CM_Params(array('text1' => CM_Params::encode($text), 'text2' => $text, 'text3' => $notText));
     $this->assertEquals($text, $params->getString('text1'));
     $this->assertEquals($text, $params->getString('text2'));
     try {
         $params->getString('text3');
         $this->fail('invalid param. should not exist');
     } catch (CM_Exception_InvalidParam $e) {
         $this->assertTrue(true);
     }
     $this->assertEquals('foo', $params->getString('text4', 'foo'));
 }
Пример #10
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);
 }
Пример #11
0
 public function ajax_error(CM_Params $params, CM_Frontend_JavascriptContainer_View $handler, CM_Http_Response_View_Ajax $response)
 {
     $status = $params->getInt('status', 200);
     $message = $params->has('text') ? $params->getString('text') : null;
     $messagePublic = $params->getBoolean('public', false) ? $message : null;
     if (in_array($status, array(500, 599), true)) {
         $response->addHeaderRaw('HTTP/1.1 ' . $status . ' Internal Server Error');
         $response->sendHeaders();
         exit($message);
     }
     $exception = $params->getString('exception');
     if (!in_array($exception, array('CM_Exception', 'CM_Exception_AuthRequired'), true)) {
         $exception = 'CM_Exception';
     }
     throw new $exception($message, $messagePublic);
 }
Пример #12
0
 protected function _execute(CM_Params $params)
 {
     $propertyId = $params->getString('propertyId');
     $parameterList = $params->getArray('parameterList');
     $client = new CMService_GoogleAnalytics_MeasurementProtocol_Client($propertyId);
     $client->_submitHit($parameterList);
 }
Пример #13
0
 public function ajax_loadComponent(CM_Params $params, CM_Frontend_JavascriptContainer_View $handler, CM_Http_Response_View_Ajax $response)
 {
     $className = $params->getString('className');
     $params->remove('className');
     if (!class_exists($className)) {
         throw new CM_Exception_Invalid('Class not found', CM_Exception::WARN, ['className' => $className]);
     }
     return $response->loadComponent($className, $params);
 }
Пример #14
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' => '']);
     }
 }
Пример #15
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);
 }
Пример #16
0
 /**
  * @param CM_Params                  $params
  * @param CM_Http_Response_View_Ajax $response
  * @throws CM_Exception_Invalid
  * @return array
  */
 public function loadPage(CM_Params $params, CM_Http_Response_View_Ajax $response)
 {
     $request = new CM_Http_Request_Get($params->getString('path'), $this->getRequest()->getHeaders(), $this->getRequest()->getServer(), $this->getRequest()->getViewer());
     $count = 0;
     $paths = array($request->getPath());
     do {
         $url = $this->getRender()->getUrl(CM_Util::link($request->getPath(), $request->getQuery()));
         if ($count++ > 10) {
             throw new CM_Exception_Invalid('Page redirect loop detected (' . implode(' -> ', $paths) . ').');
         }
         $responsePage = new CM_Http_Response_Page_Embed($request, $this->getServiceManager());
         $responsePage->process();
         $request = $responsePage->getRequest();
         $paths[] = $request->getPath();
         if ($redirectUrl = $responsePage->getRedirectUrl()) {
             $redirectExternal = 0 !== mb_stripos($redirectUrl, $this->getRender()->getUrl());
             if ($redirectExternal) {
                 return array('redirectExternal' => $redirectUrl);
             }
         }
     } while ($redirectUrl);
     foreach ($responsePage->getCookies() as $name => $cookieParameters) {
         $response->setCookie($name, $cookieParameters['value'], $cookieParameters['expire'], $cookieParameters['path']);
     }
     $page = $responsePage->getPage();
     $this->_setStringRepresentation(get_class($page));
     $frontend = $responsePage->getRender()->getGlobalResponse();
     $html = $responsePage->getContent();
     $js = $frontend->getJs();
     $autoId = $frontend->getTreeRoot()->getValue()->getAutoId();
     $frontend->clear();
     $title = $responsePage->getTitle();
     $layoutClass = get_class($page->getLayout($this->getRender()->getEnvironment()));
     $menuList = array_merge($this->getSite()->getMenus(), $responsePage->getRender()->getMenuList());
     $menuEntryHashList = $this->_getMenuEntryHashList($menuList, get_class($page), $page->getParams());
     $jsTracking = $responsePage->getRender()->getServiceManager()->getTrackings()->getJs();
     return array('autoId' => $autoId, 'html' => $html, 'js' => $js, 'title' => $title, 'url' => $url, 'layoutClass' => $layoutClass, 'menuEntryHashList' => $menuEntryHashList, 'jsTracking' => $jsTracking);
 }
Пример #17
0
 public function ajax_getSuggestions(CM_Params $params, CM_Frontend_JavascriptContainer_View $handler, CM_Http_Response_View_Ajax $response)
 {
     return $this->_getSuggestions($params->getString('term'), $params->getArray('options'), $response->getRender());
 }
Пример #18
0
 protected function _execute(CM_Params $params)
 {
     CM_EventHandler_EventHandlerTest::$_foo .= $params->getString('text');
 }
Пример #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);
 }