/** * @param string $moduleName * @param bool $forceEmptyResults * Return an empty listView * @return View */ public function getListView($moduleName, $forceEmptyResults = false) { assert('is_string($moduleName)'); $pageSize = $this->pageSize; $module = Yii::app()->findModule($moduleName); $searchFormClassName = $module::getGlobalSearchFormClassName(); $modelClassName = $module::getPrimaryModelName(); $model = new $modelClassName(false); $searchForm = new $searchFormClassName($model); $sanitizedSearchAttributes = MixedTermSearchUtil::getGlobalSearchAttributeByModuleAndPartialTerm($module, $this->term); $metadataAdapter = new SearchDataProviderMetadataAdapter($searchForm, $this->user->id, $sanitizedSearchAttributes); $listViewClassName = $module::getPluralCamelCasedName() . 'ForMixedModelsSearchListView'; $sortAttribute = SearchUtil::resolveSortAttributeFromGetArray($modelClassName); $sortDescending = SearchUtil::resolveSortDescendingFromGetArray($modelClassName); if ($forceEmptyResults) { $dataProviderClass = 'EmptyRedBeanModelDataProvider'; $emptyText = ''; } else { $dataProviderClass = 'RedBeanModelDataProvider'; $emptyText = null; } $dataProvider = RedBeanModelDataProviderUtil::makeDataProvider($metadataAdapter->getAdaptedMetadata(false), $modelClassName, $dataProviderClass, $sortAttribute, $sortDescending, $pageSize, $module->getStateMetadataAdapterClassName()); $listView = new $listViewClassName('default', $module->getId(), $modelClassName, $dataProvider, GetUtil::resolveSelectedIdsFromGet(), '-' . $moduleName, array('route' => '', 'class' => 'SimpleListLinkPager', 'firstPageLabel' => '<span>first</span>', 'prevPageLabel' => '<span>previous</span>', 'nextPageLabel' => '<span>next</span>', 'lastPageLabel' => '<span>last</span>')); $listView->setRowsAreSelectable(false); $listView->setEmptyText($emptyText); return $listView; }
/** * Utilizes information from the dataCollection object to * make a RedBeanDataProvider. Either looks at saved search information or params in the $_GET array. * variables: * modelName_sort * modelName * where modelName is Account for example. * Typically utilized by a listView action. */ public function makeRedBeanDataProviderByDataCollection($searchModel, $pageSize, $stateMetadataAdapterClassName = null, $dataCollection = null) { assert('is_int($pageSize)'); assert('$stateMetadataAdapterClassName == null || is_string($stateMetadataAdapterClassName)'); assert('$dataCollection instanceof SearchAttributesDataCollection || $dataCollection == null'); $listModelClassName = get_class($searchModel->getModel()); if ($dataCollection == null) { $dataCollection = new SearchAttributesDataCollection($searchModel); } $searchAttributes = $dataCollection->resolveSearchAttributesFromSourceData(); $dataCollection->resolveAnyMixedAttributesScopeForSearchModelFromSourceData(); $dataCollection->resolveSelectedListAttributesForSearchModelFromSourceData(); $sanitizedSearchAttributes = GetUtil::sanitizePostByDesignerTypeForSavingModel($searchModel, $searchAttributes); $sortAttribute = SearchUtil::resolveSortAttributeFromGetArray($listModelClassName); $sortDescending = SearchUtil::resolveSortDescendingFromGetArray($listModelClassName); $metadataAdapter = new SearchDataProviderMetadataAdapter($searchModel, Yii::app()->user->userModel->id, $sanitizedSearchAttributes); $metadata = static::resolveDynamicSearchMetadata($searchModel, $metadataAdapter->getAdaptedMetadata(), $dataCollection); return RedBeanModelDataProviderUtil::makeDataProvider($metadata, $listModelClassName, 'RedBeanModelDataProvider', $sortAttribute, $sortDescending, $pageSize, $stateMetadataAdapterClassName); }
public function testGetSorAttributeFromSortArray() { $sortAttribute = SearchUtil::getSortAttributeFromSortString('name.desc'); $this->assertEquals('name', $sortAttribute); $sortAttribute = SearchUtil::getSortAttributeFromSortString('name'); $this->assertEquals('name', $sortAttribute); $sortAttribute = SearchUtil::getSortAttributeFromSortString('name.asc'); $this->assertEquals('name', $sortAttribute); $sortAttribute = SearchUtil::getSortAttributeFromSortString(''); $this->assertEquals('', $sortAttribute); $_GET['testing_sort'] = 'name.desc'; $sortAttribute = SearchUtil::resolveSortAttributeFromGetArray('testing'); $this->assertEquals('name', $sortAttribute); $_GET['testing_sort'] = 'name'; $sortAttribute = SearchUtil::resolveSortAttributeFromGetArray('testing'); $this->assertEquals('name', $sortAttribute); $_GET['testing_sort'] = 'name.asc'; $sortAttribute = SearchUtil::resolveSortAttributeFromGetArray('testing'); $this->assertEquals('name', $sortAttribute); $_GET['testing_sort'] = ''; $sortAttribute = SearchUtil::resolveSortAttributeFromGetArray('testing'); $this->assertEquals('', $sortAttribute); }
public static function resolveSortAttributeFromSourceData($name) { assert('is_string($name)'); return SearchUtil::resolveSortAttributeFromGetArray($name); }
public function resolveSortAttributeFromSourceData($name) { assert('is_string($name)'); $sortAttribute = SearchUtil::resolveSortAttributeFromGetArray($name); if ($sortAttribute == null) { if (!empty($this->model->sortAttribute)) { $sortAttribute = $this->model->sortAttribute; } else { $sortAttribute = null; } } return $sortAttribute; }
protected function makeDataProviderBySearchAttributeData($searchAttributeData) { assert('is_array($searchAttributeData)'); $pageSize = Yii::app()->pagination->resolveActiveForCurrentUserByType('subListPageSize'); $sortAttribute = SearchUtil::resolveSortAttributeFromGetArray($this->modelClassName); $sortDescending = SearchUtil::resolveSortDescendingFromGetArray($this->modelClassName); return new RedBeanModelDataProvider($this->modelClassName, $sortAttribute, (bool) $sortDescending, $searchAttributeData, array('pagination' => array('pageSize' => $pageSize))); }