protected function renderSearchView() { $moduleNamesAndLabels = GlobalSearchUtil::getGlobalSearchScopingModuleNamesAndLabelsDataByUser(Yii::app()->user->userModel); $sourceUrl = Yii::app()->createUrl('zurmo/default/globallist'); GlobalSearchUtil::resolveModuleNamesAndLabelsDataWithAllOption($moduleNamesAndLabels); $searchView = new MixedModelsSearchView($moduleNamesAndLabels, $sourceUrl, $this->term, $this->scopeData); return $searchView->render(); }
protected static function findGlobalSearchScopingModuleNamesAndLabelsDataByUser(User $user) { assert('$user->id > 0'); $moduleNamesAndLabels = array(); $modules = Module::getModuleObjects(); foreach ($modules as $module) { $globalSearchFormClassName = $module::getGlobalSearchFormClassName(); if (GlobalSearchUtil::resolveIfModuleShouldBeGloballySearched($module) && $globalSearchFormClassName != null && RightsUtil::canUserAccessModule(get_class($module), $user)) { $moduleNamesAndLabels[$module->getName()] = $module::getModuleLabelByTypeAndLanguage('Plural'); } } return $moduleNamesAndLabels; }
protected static function resolveItemsAsItemsForMobile(&$items, &$useMinimalDynamicLabelMbMenu, $controller = null) { $useMinimalDynamicLabelMbMenu = true; static::$showRecentlyViewed = false; $controller = $controller ? $controller : Yii::app()->request->controller; $shortcutsCreateMenuItems = MenuUtil::getAccessibleShortcutsCreateMenuByCurrentUser(); static::resolveShortcutsCreateMenuItemsForMobile($shortcutsCreateMenuItems); $shortcutsCreateMenuView = new MobileShortcutsCreateMenuView($controller->getId(), $controller->getModule()->getId(), $shortcutsCreateMenuItems); $moduleNamesAndLabels = GlobalSearchUtil::getGlobalSearchScopingModuleNamesAndLabelsDataByUser(Yii::app()->user->userModel); $sourceUrl = Yii::app()->createUrl('zurmo/default/globalSearchAutoComplete'); $globalSearchView = new MobileGlobalSearchView($moduleNamesAndLabels, $sourceUrl); $recentlyViewed = static::makeRecentlyViewedView(); $recentlyViewedMenu = $recentlyViewed->renderMenu(); $searchItem = array(array('label' => '', 'dynamicLabelContent' => $globalSearchView->render(), 'itemOptions' => array('id' => 'search'))); $shortcutsItems = array(array('label' => '', 'dynamicLabelContent' => $shortcutsCreateMenuView->render(), 'itemOptions' => array('id' => 'shortcuts'))); $recentlyViewedItems = array(array('label' => '', 'dynamicLabelContent' => MobileHtml::renderFlyoutTrigger('Recently Viewed'), 'itemOptions' => array('id' => 'recently-viewed'), 'items' => $recentlyViewedMenu ? $recentlyViewedMenu : null)); $items = CMap::mergeArray($searchItem, $items, $shortcutsItems, $recentlyViewedItems); }
/** * makeViews * @return array moduleName => listView */ private function makeViews() { $globalSearchModuleNamesAndLabelsData = GlobalSearchUtil::getGlobalSearchScopingModuleNamesAndLabelsDataByUser($this->user); foreach ($globalSearchModuleNamesAndLabelsData as $moduleName => $label) { $titleView = new TitleBarView($label, null, 1); $iconClassName = Yii::app()->findModule($moduleName)->getSingularCamelCasedName(); $titleView->setCssClasses(array($iconClassName)); $this->views['titleBar-' . $moduleName] = $titleView; $this->views[$moduleName] = $this->getListView($moduleName, true); } }
/** * @depends testGetGlobalSearchScopingModuleNamesAndLabelsDataByUser */ public function testGetGlobalSearchScopingModuleNamesAndLabelsDataByUserForRegularUser() { Yii::app()->user->userModel = User::getByUsername('super'); $billy = UserTestHelper::createBasicUser('Billy'); $scopeModulesAndLabels = GlobalSearchUtil::getGlobalSearchScopingModuleNamesAndLabelsDataByUser($billy); $compareData = array(); $this->assertEquals($compareData, $scopeModulesAndLabels); $scopeModulesAndLabels = GlobalSearchUtil::getGlobalSearchScopingModuleNamesAndLabelsDataByUser($billy); //Now add rights for billy to the AccountsModule. $billy->setRight('AccountsModule', AccountsModule::RIGHT_ACCESS_ACCOUNTS); $this->assertTrue($billy->save()); //At this point because the data is was cleared after billy saved, it should show Accounts. $scopeModulesAndLabels = GlobalSearchUtil::getGlobalSearchScopingModuleNamesAndLabelsDataByUser($billy); $compareData = array('accounts' => 'Accounts'); $this->assertEquals($compareData, $scopeModulesAndLabels); }
public function actionInQueuesAutoComplete($term, $formClassName) { $scopeData = GlobalSearchUtil::resolveGlobalSearchScopeFromGetData($_GET[$formClassName], 'anyMixedAttributesScope'); $pageSize = Yii::app()->pagination->resolveActiveForCurrentUserByType('autoCompleteListPageSize', get_class($this->getModule())); $autoCompleteResults = WorkflowInQueuesModelAutoCompleteUtil::getGlobalSearchResultsByPartialTerm($term, $pageSize, Yii::app()->user->userModel, $scopeData); echo CJSON::encode($autoCompleteResults); }
protected static function makeHeaderView(CController $controller) { $headerView = null; $settingsMenuItems = MenuUtil::getOrderedAccessibleHeaderMenuForCurrentUser(); $settingsMenuItems = static::resolveHeaderMenuItemsForMobile($settingsMenuItems); $userMenuItems = static::getAndResolveUserMenuItemsForHeader(); $applicationName = ZurmoConfigurationUtil::getByModuleName('ZurmoModule', 'applicationName'); $shortcutsCreateMenuItems = MenuUtil::getAccessibleShortcutsCreateMenuByCurrentUser(); $moduleNamesAndLabels = GlobalSearchUtil::getGlobalSearchScopingModuleNamesAndLabelsDataByUser(Yii::app()->user->userModel); $sourceUrl = Yii::app()->createUrl('zurmo/default/globalSearchAutoComplete'); GlobalSearchUtil::resolveModuleNamesAndLabelsDataWithAllOption($moduleNamesAndLabels); $headerView = new HeaderView($settingsMenuItems, $userMenuItems, $shortcutsCreateMenuItems, $moduleNamesAndLabels, $sourceUrl, $applicationName); $headerView->setCssClasses(array('HeaderView')); return $headerView; }
public function actionGlobalSearchAutoComplete($term) { $scopeData = GlobalSearchUtil::resolveGlobalSearchScopeFromGetData($_GET); $pageSize = Yii::app()->pagination->resolveActiveForCurrentUserByType('autoCompleteListPageSize', get_class($this->getModule())); $autoCompleteResults = ModelAutoCompleteUtil::getGlobalSearchResultsByPartialTerm($term, $pageSize, Yii::app()->user->userModel, $scopeData); $autoCompleteResults = array_merge($autoCompleteResults, array(array('href' => Yii::app()->createUrl('/zurmo/default/globallist', array('MixedModelsSearchForm' => array('term' => $_GET['term'], 'anyMixedAttributesScope' => ArrayUtil::getArrayValue(GetUtil::getData(), 'globalSearchScope')))), 'label' => 'All results', 'iconClass' => 'autocomplete-icon-AllResults'))); echo CJSON::encode($autoCompleteResults); }
protected static function makeModelClassNamesAndSearchAttributeData($partialTerm, User $user, $scopeData) { assert('is_string($partialTerm)'); assert('$user->id > 0'); assert('$scopeData == null || is_array($scopeData)'); $modelClassNamesAndSearchAttributeData = array(); $modules = Module::getModuleObjects(); foreach ($modules as $module) { $globalSearchFormClassName = $module::getGlobalSearchFormClassName(); if (GlobalSearchUtil::resolveIfModuleShouldBeGloballySearched($module) && $globalSearchFormClassName != null && RightsUtil::canUserAccessModule(get_class($module), $user) && ($scopeData == null || in_array($module->getName(), $scopeData))) { $modelClassName = $module::getPrimaryModelName(); $searchAttributes = MixedTermSearchUtil::getGlobalSearchAttributeByModuleAndPartialTerm($module, $partialTerm); if (!empty($searchAttributes)) { $model = new $modelClassName(false); assert('$model instanceof RedBeanModel'); $searchForm = new $globalSearchFormClassName($model); assert('$searchForm instanceof SearchForm'); $metadataAdapter = new SearchDataProviderMetadataAdapter($searchForm, $user->id, $searchAttributes); $metadata = $metadataAdapter->getAdaptedMetadata(false); $stateMetadataAdapterClassName = $module::getStateMetadataAdapterClassName(); if ($stateMetadataAdapterClassName != null) { $stateMetadataAdapter = new $stateMetadataAdapterClassName($metadata); $metadata = $stateMetadataAdapter->getAdaptedDataProviderMetadata(); } $modelClassNamesAndSearchAttributeData[$globalSearchFormClassName] = array($modelClassName => $metadata); } } } return $modelClassNamesAndSearchAttributeData; }