/**
  * @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;
 }
示例#2
0
 public function testIsSortDescending()
 {
     $sortDescending = SearchUtil::isSortDescending('name.desc');
     $this->assertTrue($sortDescending);
     $sortDescending = SearchUtil::isSortDescending('name');
     $this->assertFalse($sortDescending);
     $sortDescending = SearchUtil::isSortDescending('name.asc');
     $this->assertFalse($sortDescending);
     $_GET['testing_sort'] = 'name.desc';
     $sortDescending = SearchUtil::resolveSortDescendingFromGetArray('testing');
     $this->assertTrue($sortDescending);
     $_GET['testing_sort'] = 'name';
     $sortDescending = SearchUtil::resolveSortDescendingFromGetArray('testing');
     $this->assertFalse($sortDescending);
     $_GET['testing_sort'] = 'name.asc';
     $sortDescending = SearchUtil::resolveSortDescendingFromGetArray('testing');
     $this->assertFalse($sortDescending);
 }
示例#3
0
 /**
  * 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 static function resolveSortDescendingFromSourceData($name)
 {
     assert('is_string($name)');
     return SearchUtil::resolveSortDescendingFromGetArray(${$name});
 }
 public function resolveSortDescendingFromSourceData($name)
 {
     assert('is_string($name)');
     $sortDescending = SearchUtil::resolveSortDescendingFromGetArray($name);
     if (!isset($sortDescending)) {
         if (!empty($this->model->sortDescending)) {
             $sortDescending = true;
         } else {
             $sortDescending = false;
         }
     }
     return $sortDescending;
 }
示例#6
0
 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)));
 }