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; }
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')); } }
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); }
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)); }