/**
  * Render page, query string 's' indicates that get page record regardless of published status
  */
 public function actionPage($id = '')
 {
     $isPreview = \Yii::$app->request->get('s', 0);
     if (!empty($id)) {
         $id = new \MongoId($id);
         $page = Page::getPage($id, !!$isPreview);
         if (empty($page) || empty($page->url)) {
             $this->redirect(self::NOT_FOUND_PAGE_PATH);
         }
         if (empty($page['color'])) {
             $page['color'] = \Yii::$app->params['micrositeDefaultColor'];
         }
         if (empty($page->cpts) || $isPreview) {
             $cpts = PageComponent::getAllComponents($id);
             $page->cpts = ArrayHelper::toArray($cpts);
         }
         $sdk = Yii::$app->wechatSdk;
         $sdk->refererUrl = $sdk->refererDomain . 'msite/page/' . $id;
         $signPackage = $sdk->getSignPackage();
         $actionView = $this->getView();
         $actionView->registerJsFile('https://res.wx.qq.com/open/js/jweixin-1.0.0.js');
         $this->view->params['page'] = $page;
         $this->view->params['pageRGBColor'] = join(',', StringUtil::hex2rgb($page['color']));
         $this->layout = self::PAGE_PATH;
         $this->registerPageResource($isPreview);
         $params = ['signPackage' => $signPackage, 'components' => $page->cpts, 'page' => ['title' => $page->title, 'desc' => $page->description, 'url' => $page->url, 'isCover' => $page->type === Page::TYPE_COVER]];
         if (BrowserUtil::isWeiboBrower() || BrowserUtil::isWeixinBrowser()) {
             $params['hideTitle'] = true;
         }
         return $this->render(self::PAGE_PATH, $params);
     } else {
         return $this->render(self::NOT_FOUND_PAGE_PATH);
     }
 }
Example #2
0
 public function actionIndex()
 {
     $accountId = Yii::$app->request->get('accountId');
     $category = Yii::$app->request->get('category');
     if (BrowserUtil::isMobileBrowser()) {
         return $this->redirect('/mobile/helpdesk/FAQ?accountId=' . $accountId . '&category=' . $category);
     }
     $this->layout = 'faq';
     $this->getView()->registerJsFile("/vendor/bower/jquery/dist/jquery.min.js");
     $this->getView()->registerJsFile("/vendor/bower/angular/angular.min.js");
     $this->getView()->registerJsFile("/vendor/bower/angular-bindonce/bindonce.min.js");
     $this->getView()->registerJsFile("/build/modules/helpdesk/controllers/faq.js");
     return $this->render('faq', ['category' => $category, 'accountId' => $accountId]);
 }
 /**
  * Check browser is suit with origin
  */
 private function checkBrowserIsRight($origin)
 {
     switch ($origin) {
         case Channel::WECHAT:
             $isBrowerRight = BrowserUtil::isWeixinBrowser() ? true : false;
             break;
         case Channel::WEIBO:
             $isBrowerRight = BrowserUtil::isWeiboBrower() ? true : false;
             break;
         case Channel::ALIPAY:
             $isBrowerRight = BrowserUtil::isAliBrower() ? true : false;
             break;
         default:
             $isBrowerRight = false;
             break;
     }
     return $isBrowerRight;
 }
 private function renderPage($page, $useRiot = false, $injectWechatJS = true, $socialWebviewOnly = true)
 {
     $actionName = $this->action->id;
     $params = Yii::$app->request->get();
     $this->registerCommonResource($page, $useRiot);
     if ($injectWechatJS) {
         $sdk = Yii::$app->wechatSdk;
         $sdk->refererUrl = $sdk->refererDomain . substr(Yii::$app->request->getUrl(), 1);
         $signPackage = json_encode($sdk->getSignPackage());
         $logObj = json_encode(['url' => Yii::$app->params['frontendTrackUrl'], 'env' => Yii::$app->params['currentEnv']]);
         $js = "var options={$signPackage}, page='{$page}';window.trackerLog={$logObj};";
         $this->view->registerJs($js, View::POS_HEAD);
         if (empty($params['debug'])) {
             $this->registerBodyJsFile(self::BUILD_PATH . 'handlewechat.js?v=' . Yii::$app->params['buildVersion']);
         }
     }
     $socialWebviewOnly = $socialWebviewOnly && empty($params['debug']);
     if ($socialWebviewOnly && !BrowserUtil::isWeixinBrowser() && !BrowserUtil::isWeiboBrower() && !BrowserUtil::isAliBrower()) {
         $this->view->js = null;
         $this->view->jsFiles = null;
         $this->view->cssFiles = null;
         $this->view->registerCssFile(self::BUILD_PATH . 'common/app.css');
         return $this->render('common/error');
     } else {
         //Member active record
         $accessToken = $this->getAccessToken();
         if (!empty($params['memberId']) && !empty($accessToken)) {
             $memberId = new \MongoId($params['memberId']);
             $accountId = Token::getAccountId($accessToken);
             MemberLogs::record($memberId, $accountId, MemberLogs::OPERATION_VIEWED);
         }
         return $this->render($actionName . '/' . $page);
     }
 }