public function testResolveMetadata() { $selector = new ListAttributesSelector('AListView', 'TestModule'); $selectedData = $selector->getSelectedListAttributesNamesAndLabelsAndAll(); $compareSelectedData = array('name' => 'Name'); $this->assertEquals($compareSelectedData, $selectedData); $metadata = $selector->getResolvedMetadata(); $compareMetadata = array('panels' => array(array('rows' => array(array('cells' => array(array('elements' => array(array('attributeName' => 'name', 'type' => 'Text', 'isLink' => true))))))))); $this->assertEquals($compareMetadata, $metadata['global']); $selector->setSelected(array('name', 'a')); $metadata = $selector->getResolvedMetadata(); $compareMetadata = array('panels' => array(array('rows' => array(array('cells' => array(array('elements' => array(array('attributeName' => 'name', 'type' => 'Text', 'isLink' => true))))), array('cells' => array(array('elements' => array(array('attributeName' => 'a', 'type' => 'CheckBox'))))))))); $this->assertEquals($compareMetadata, $metadata['global']); }
public function actionValidateDynamicSearch($viewClassName, $modelClassName, $formModelClassName) { if (isset($_POST['ajax']) && $_POST['ajax'] === 'search-form' && isset($_POST[$formModelClassName])) { $model = new $modelClassName(false); $model->setScenario('searchModel'); $searchForm = new $formModelClassName($model); $sourceData = $_POST; if (isset($_POST[$formModelClassName][SearchForm::ANY_MIXED_ATTRIBUTES_SCOPE_NAME])) { $searchForm->setAnyMixedAttributesScope($_POST[$formModelClassName][SearchForm::ANY_MIXED_ATTRIBUTES_SCOPE_NAME]); unset($_POST[$formModelClassName][SearchForm::ANY_MIXED_ATTRIBUTES_SCOPE_NAME]); } if (isset($_POST[$formModelClassName][SearchForm::SELECTED_LIST_ATTRIBUTES])) { $listAttributesSelector = new ListAttributesSelector($viewClassName, $model->getModuleClassName(), $modelClassName); $listAttributesSelector->setSelected($_POST[$formModelClassName][SearchForm::SELECTED_LIST_ATTRIBUTES]); $searchForm->setListAttributesSelector($listAttributesSelector); unset($_POST[$formModelClassName][SearchForm::SELECTED_LIST_ATTRIBUTES]); } if (isset($_POST[$formModelClassName]['filterByStarred'])) { $searchForm->filterByStarred = $_POST[$formModelClassName]['filterByStarred']; unset($_POST[$formModelClassName]['filterByStarred']); } if (isset($_POST[$formModelClassName][KanbanBoard::GROUP_BY_ATTRIBUTE_VISIBLE_VALUES])) { unset($_POST[$formModelClassName][KanbanBoard::GROUP_BY_ATTRIBUTE_VISIBLE_VALUES]); } if (isset($_POST[$formModelClassName][KanbanBoard::SELECTED_THEME])) { unset($_POST[$formModelClassName][KanbanBoard::SELECTED_THEME]); } if (isset($_POST[$formModelClassName]['filteredBy'])) { $searchForm->filterByStarred = $_POST[$formModelClassName]['filteredBy']; unset($_POST[$formModelClassName]['filteredBy']); } $sanitizedSearchData = $this->resolveAndSanitizeDynamicSearchAttributesByPostData($_POST[$formModelClassName], $searchForm); $searchForm->setAttributes($sanitizedSearchData); if (isset($_POST['save']) && $_POST['save'] == 'saveSearch') { $searchForm->setScenario('validateSaveSearch'); if ($searchForm->validate()) { $savedSearch = $this->processSaveSearch($searchForm, $viewClassName); echo CJSON::encode(array('id' => $savedSearch->id, 'name' => $savedSearch->name, 'sortAttribute' => $this->getSortAttributeFromSavedSearchData($savedSearch), 'sortDescending' => $this->getSortDescendingFromSavedSearchData($savedSearch))); Yii::app()->end(0, false); } } else { $searchForm->setScenario('validateDynamic'); } if (!$searchForm->validate()) { $errorData = array(); foreach ($searchForm->getErrors() as $attribute => $errors) { $errorData[ZurmoHtml::activeId($searchForm, $attribute)] = $errors; } echo CJSON::encode($errorData); Yii::app()->end(0, false); } $this->setStickyData($searchForm, $viewClassName, true, $sourceData); } }