public function beforeAction($action)
 {
     if (!$this->owner instanceof MobileController && !in_array($this->owner->action->getId(), array_keys($this->actions()))) {
         return true;
     }
     Yii::app()->user->loginUrl = array('/mobile/login');
     Yii::app()->params->isMobileApp = true;
     // fix profile linkable behavior since model was instantiated before action
     if (!preg_match('/\\/mobileView$/', Yii::app()->params->profile->asa('X2LinkableBehavior')->viewRoute)) {
         Yii::app()->params->profile->asa('X2LinkableBehavior')->viewRoute .= '/mobileView';
     }
     $this->dataUrl = $this->owner->createAbsoluteUrl($action->getId());
     $this->pageId = lcfirst(preg_replace('/Controller$/', '', get_class($this->owner))) . '-' . $action->getId();
     $cookie = new CHttpCookie('isMobileApp', 'true');
     // create cookie
     $cookie->expire = 2147483647;
     // max expiration time
     Yii::app()->request->cookies['isMobileApp'] = $cookie;
     // save cookie
     if (!$this->owner instanceof MobileController) {
         $this->owner->layout = $this->pathAliasBase . 'views.layouts.main';
         if ($this->owner->module) {
             $this->owner->setAssetsUrl(Yii::app()->getAssetManager()->publish(Yii::getPathOfAlias($this->pathAliasBase . 'assets'), false, -1, true));
             $this->owner->module->assetsUrl = $this->owner->assetsUrl;
             Yii::app()->clientScript->packages = MobileModule::getPackages($this->owner->module->assetsUrl);
         } else {
             Yii::app()->clientScript->packages = MobileModule::getPackages($this->owner->assetsUrl);
         }
     }
     return true;
 }
Пример #2
0
 public function validateModelName($attr)
 {
     $value = $this->{$attr};
     $modules = MobileModule::supportedModules(new CDbCriteria(array('condition' => 'editable')));
     $validNames = array_map(function ($module) {
         return X2Model::getModelName($module->name);
     }, $modules);
     if (!in_array($value, $validNames)) {
         $this->addError($attr, Yii::t('app', 'Invalid model name'));
     }
 }
Пример #3
0
 public function getModuleItems()
 {
     $modules = MobileModule::supportedModules();
     $modules = array_filter($modules, function ($module) {
         if ($module->name === 'users') {
             $action = 'ProfileMobileIndex';
         } else {
             $action = ucfirst($module->name) . 'Index';
         }
         $authItem = Yii::app()->authManager->getAuthItem($action);
         return Yii::app()->params->isAdmin || is_null($authItem) || Yii::app()->user->checkAccess($action);
     });
     return array_map(function ($module) {
         $item = new ModulePanelItem();
         $item->module = $module;
         return $item;
     }, $modules);
 }
Пример #4
0
 public function actionEditMobileForms()
 {
     Yii::import('application.modules.mobile.models.*');
     Yii::import('application.modules.mobile.*');
     Yii::import('application.models.formModels.*');
     $model = new EditMobileFormsFormModel();
     if (isset($_POST['EditMobileFormsFormModel'])) {
         $model->setAttributes($_POST['EditMobileFormsFormModel']);
         if ($model->validate()) {
             Yii::app()->db->createCommand()->delete('x2_mobile_layouts', 'modelName=:modelName', array(':modelName' => $model->modelName));
             foreach (array('defaultView', 'defaultForm') as $layoutName) {
                 $layout = new MobileLayouts();
                 $layout->modelName = $model->modelName;
                 $layout->layout = $model->{$layoutName};
                 $layout->defaultView = $layoutName === 'defaultView';
                 $layout->defaultForm = $layoutName === 'defaultForm';
                 $layout->save();
             }
             Yii::app()->user->setFlash('success', Yii::t('app', 'Layout updated'));
         }
     }
     $modules = MobileModule::supportedModules(new CDbCriteria(array('condition' => 'editable')));
     $modelList = array('' => '---');
     foreach ($modules as $module) {
         if ($module->name == 'marketing') {
             $modelList['Campaign'] = Yii::t('marketing', 'Campaign');
         } elseif ($module->name == 'opportunities') {
             $modelList['Opportunity'] = Yii::t('opportunities', 'Opportunity');
         } elseif ($module->name == 'products') {
             $modelList['Product'] = Yii::t('products', 'Product');
         } elseif ($module->name == 'quotes') {
             $modelList['Quote'] = Yii::t('quotes', 'Quote');
         } else {
             $modelList[ucfirst($module->name)] = Yii::t('app', $module->title);
         }
     }
     $this->render('editMobileForms', array('model' => $model, 'recordTypes' => $modelList));
 }