public function testAdditionOfPortletsInEmptyRightPanel() { $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super'); $superLeadId = self::getModelIdByModelNameAndName('Contact', 'superLead superLeadson'); $marketingListId = self::getModelIdByModelNameAndName('MarketingList', 'MarketingListName'); $leads = Contact::getAll(); $this->assertEquals(1, count($leads)); //Load Model Detail Views $this->setGetArray(array('id' => $superLeadId, 'lockPortlets' => '0')); $this->resetPostArray(); $this->runControllerWithNoExceptionsAndGetContent('leads/default/details'); $portlets = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition('LeadDetailsAndRelationsView', $super->id, array()); $this->assertEquals(3, count($portlets[1])); $this->assertFalse(array_key_exists(3, $portlets)); $this->assertEquals(2, count($portlets[2])); foreach ($portlets[2] as $position => $portlet) { $portlet->delete(); } $this->setGetArray(array('modelId' => $superLeadId, 'uniqueLayoutId' => 'LeadDetailsAndRelationsView', 'portletType' => 'MarketingListsForContactRelatedList', 'redirect' => '0')); $this->resetPostArray(); $this->runControllerWithNoExceptionsAndGetContent('leads/defaultPortlet/add', true); $portlets = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition('LeadDetailsAndRelationsView', $super->id, array()); $this->assertEquals(1, count($portlets[2])); //Test subscribe to list link $portlet = $portlets[2][1]; $this->setGetArray(array('portletId' => $portlet->id, 'relationAttributeName' => 'lead', 'relationModelId' => $superLeadId, 'relationModuleId' => 'leads', 'uniqueLayoutId' => $portlet->getUniquePortletPageId(), 'relationModelClassName' => null)); $this->resetPostArray(); $this->runControllerWithNoExceptionsAndGetContent('marketingLists/default/selectFromRelatedList'); //Test subscribe a marketing list $this->setGetArray(array('modelId' => $marketingListId, 'portletId' => $portlet->id, 'relationAttributeName' => 'lead', 'relationModelId' => $superLeadId, 'relationModuleId' => 'leads', 'uniqueLayoutId' => $portlet->getUniquePortletPageId(), 'relationModelClassName' => null)); $this->resetPostArray(); $content = $this->runControllerWithRedirectExceptionAndGetContent('marketingLists/defaultPortlet/selectFromRelatedListSave'); }
/** * Override to allow for making a default set of portlets * via metadata optional. * */ protected function getPortlets($uniqueLayoutId, $metadata) { assert('is_string($uniqueLayoutId)'); assert('is_array($metadata)'); $portlets = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition($uniqueLayoutId, Yii::app()->user->userModel->id, $this->params); if (empty($portlets) && $this->isDefaultDashboard) { $portlets = Portlet::makePortletsUsingMetadataSortedByColumnIdAndPosition($uniqueLayoutId, $metadata, Yii::app()->user->userModel, $this->params); Portlet::savePortlets($portlets); } return PortletsSecurityUtil::resolvePortletsForCurrentUser($portlets); }
protected function getPortlets($uniqueLayoutId, $metadata) { assert('is_string($uniqueLayoutId)'); assert('is_array($metadata)'); $portlets = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition($uniqueLayoutId, Yii::app()->user->userModel->id, $this->params); if (empty($portlets)) { $portlets = Portlet::makePortletsUsingMetadataSortedByColumnIdAndPosition($uniqueLayoutId, $metadata, Yii::app()->user->userModel, $this->params); Portlet::savePortlets($portlets); } return $portlets; }
public function testSuperUserDefaultPortletControllerActions() { $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super'); $this->setGetArray(array('id' => self::$account->id)); $this->resetPostArray(); $this->runControllerWithNoExceptionsAndGetContent('accounts/default/details'); $portlets = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition('AccountDetailsAndRelationsView', $super->id, array()); $this->assertEquals(4, count($portlets[2])); $this->setGetArray(array('modelId' => self::$account->id, 'portletType' => 'AccountAccountAffiliationsRelatedList', 'uniqueLayoutId' => 'AccountDetailsAndRelationsView')); $this->resetPostArray(); $this->runControllerWithRedirectExceptionAndGetContent('accounts/defaultPortlet/add'); $portlets = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition('AccountDetailsAndRelationsView', $super->id, array()); $this->assertEquals(5, count($portlets[2])); //Load Details View again to make sure everything is ok after the layout change. $this->setGetArray(array('id' => self::$account->id)); $this->resetPostArray(); $this->runControllerWithNoExceptionsAndGetContent('accounts/default/details'); }
/** * Add portlet to first column, first position * and if there are other portlets in the first * column, shift their postion by 1 to accomodate * the new portlet * */ public function actionAdd() { assert('!empty($_GET["uniqueLayoutId"])'); assert('!empty($_GET["portletType"])'); $maximumColumns = $this->resolveMaximumColumnsByDashboardId(); $portletCollection = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition($_GET['uniqueLayoutId'], Yii::app()->user->userModel->id, array()); if (!empty($portletCollection)) { if (isset($portletCollection[$maximumColumns])) { foreach ($portletCollection[$maximumColumns] as $position => $portlet) { $portlet->position = $portlet->position + 1; $portlet->save(); } } } if (!empty($_GET['dashboardId'])) { $dashboardId = $_GET['dashboardId']; } else { $dashboardId = ''; } Portlet::makePortletUsingViewType($_GET['portletType'], $_GET['uniqueLayoutId'], Yii::app()->user->userModel, $maximumColumns); $this->redirect(array('default/dashboardDetails', 'id' => $dashboardId)); }
public function testAdditionOfPortletsInEmptyRightPanel() { $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super'); $superAccountId = self::getModelIdByModelNameAndName('Account', 'superAccount'); $accounts = Account::getAll(); $this->assertEquals(1, count($accounts)); //Load Model Detail Views $this->setGetArray(array('id' => $superAccountId, 'lockPortlets' => '0')); $this->resetPostArray(); $this->runControllerWithNoExceptionsAndGetContent('accounts/default/details'); $portlets = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition('AccountDetailsAndRelationsView', $super->id, array()); $this->assertEquals(3, count($portlets[1])); $this->assertFalse(array_key_exists(3, $portlets)); $this->assertEquals(4, count($portlets[2])); foreach ($portlets[2] as $position => $portlet) { $portlet->delete(); } $this->setGetArray(array('modelId' => $superAccountId, 'uniqueLayoutId' => 'AccountDetailsAndRelationsView', 'portletType' => 'ProductsForAccountRelatedList', 'redirect' => '0')); $this->resetPostArray(); $this->runControllerWithNoExceptionsAndGetContent('accounts/defaultPortlet/add', true); $portlets = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition('AccountDetailsAndRelationsView', $super->id, array()); $this->assertEquals(1, count($portlets[2])); }
/** * @depends testSuperUserAllDefaultControllerActions */ public function testSuperUserDefaultPortletControllerActions() { $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super'); //Save a layout change. Collapse all portlets in the GameReward Details View. //At this point portlets for this view should be created because we have already loaded the 'details' page in a request above. $portlets = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition('GameRewardDetailsAndRelationsView', $super->id, array()); $this->assertEquals(2, count($portlets[1])); $this->assertFalse(array_key_exists(2, $portlets)); $portletPostData = array(); $portletCount = 0; foreach ($portlets as $column => $columnPortlets) { foreach ($columnPortlets as $position => $portlet) { $this->assertEquals('0', $portlet->collapsed); $portletPostData['GameRewardDetailsAndRelationsView_' . $portlet->id] = array('collapsed' => 'true', 'column' => 0, 'id' => 'GameRewardDetailsAndRelationsView_' . $portlet->id, 'position' => $portletCount); $portletCount++; } } //There should have been a total of 2 portlets. $this->assertEquals(2, $portletCount); }
/** * @depends testSuperUserAllDefaultControllerActions */ public function testSuperUserDefaultPortletControllerActions() { $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super'); $superLeadId4 = self::getModelIdByModelNameAndName('Contact', 'superLead4 superLead4son'); //Save a layout change. Collapse all portlets in the Lead Details View. //At this point portlets for this view should be created because we have already loaded the 'details' page in a request above. $portlets = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition('LeadDetailsAndRelationsView', $super->id, array()); $this->assertEquals(3, count($portlets[1])); $this->assertFalse(array_key_exists(3, $portlets)); $portletPostData = array(); $portletCount = 0; foreach ($portlets as $column => $columnPortlets) { foreach ($columnPortlets as $position => $portlet) { $this->assertEquals('0', $portlet->collapsed); $portletPostData['LeadDetailsAndRelationsView_' . $portlet->id] = array('collapsed' => 'true', 'column' => 0, 'id' => 'LeadDetailsAndRelationsView_' . $portlet->id, 'position' => $portletCount); $portletCount++; } } //There should have been a total of 5 portlets. $this->assertEquals(5, $portletCount); $this->resetGetArray(); $this->setPostArray(array('portletLayoutConfiguration' => array('portlets' => $portletPostData, 'uniqueLayoutId' => 'LeadDetailsAndRelationsView'))); $this->runControllerWithNoExceptionsAndGetContent('home/defaultPortlet/saveLayout', true); //Now test that all the portlets are collapsed and moved to the first column. $portlets = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition('LeadDetailsAndRelationsView', $super->id, array()); $this->assertEquals(5, count($portlets[1])); $this->assertFalse(array_key_exists(2, $portlets)); foreach ($portlets as $column => $columns) { foreach ($columns as $position => $positionPortlets) { $this->assertEquals('1', $positionPortlets->collapsed); } } //Load Details View again to make sure everything is ok after the layout change. $this->setGetArray(array('id' => $superLeadId4)); $this->resetPostArray(); $this->runControllerWithNoExceptionsAndGetContent('leads/default/details'); }
/** * Reset portlet positions when a new portlet is added on the detail view * @param int $maximumColumns */ private function resetPortletsInColumnToAccomodateNewPortlet($maximumColumns) { $portletCollection = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition($_GET['uniqueLayoutId'], Yii::app()->user->userModel->id, array()); $maximumIndexFromCollection = max(array_keys($portletCollection)); $maximumIterativeIndex = min($maximumIndexFromCollection, $maximumColumns); if (!empty($portletCollection)) { if ($maximumIterativeIndex > 1) { foreach ($portletCollection[$maximumIterativeIndex] as $position => $portlet) { $portlet->position = $portlet->position + 1; $portlet->save(); } } } }
public function testShiftPositionsBasedOnColumnReduction() { $user = User::getByUserName('billy'); for ($i = 1; $i <= 3; $i++) { $portlet = new Portlet(); $portlet->column = 1; $portlet->position = $i; $portlet->layoutId = 'shiftTest'; $portlet->collapsed = true; $portlet->viewType = 'RssReader'; $portlet->user = $user; $this->assertTrue($portlet->save()); } for ($i = 1; $i <= 5; $i++) { $portlet = new Portlet(); $portlet->column = 2; $portlet->position = $i; $portlet->layoutId = 'shiftTest'; $portlet->collapsed = true; $portlet->viewType = 'RssReader'; $portlet->user = $user; $this->assertTrue($portlet->save()); } for ($i = 1; $i <= 4; $i++) { $portlet = new Portlet(); $portlet->column = 3; $portlet->position = $i; $portlet->layoutId = 'shiftTest'; $portlet->collapsed = true; $portlet->viewType = 'RssReader'; $portlet->user = $user; $this->assertTrue($portlet->save()); } $this->assertEquals(count(Portlet::getByLayoutIdAndUserSortedById('shiftTest', $user->id)), 12); $portletCollection = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition('shiftTest', $user->id, array()); Portlet::shiftPositionsBasedOnColumnReduction($portletCollection, 2); $portletCollection = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition('shiftTest', $user->id, array()); $this->assertEquals(count($portletCollection), 2); $this->assertEquals(count($portletCollection[1]), 7); Portlet::shiftPositionsBasedOnColumnReduction($portletCollection, 1); $portletCollection = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition('shiftTest', $user->id, array()); $this->assertEquals(count($portletCollection), 1); $this->assertEquals(count($portletCollection[1]), 12); }
public function testAddProductsMyListPortletToDashboard() { $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super'); $superDashboard1 = Dashboard::getByLayoutIdAndUser(Dashboard::DEFAULT_USER_LAYOUT_ID, $super); //load details view $this->setGetArray(array('id' => $superDashboard1->id)); $this->resetPostArray(); $this->runControllerWithNoExceptionsAndGetContent('home/default/dashboardDetails'); //Portlet Controller Actions $uniqueLayoutId = 'HomeDashboard' . $superDashboard1->layoutId; $this->setGetArray(array('dashboardId' => $superDashboard1->id, 'uniqueLayoutId' => $uniqueLayoutId)); $this->resetPostArray(); $this->runControllerWithNoExceptionsAndGetContent('home/defaultPortlet/addList'); //Add ProductsMyList Portlet to dashboard $this->setGetArray(array('dashboardId' => $superDashboard1->id, 'portletType' => 'ProductsMyList', 'uniqueLayoutId' => $uniqueLayoutId)); $this->resetPostArray(); $this->runControllerWithRedirectExceptionAndGetContent('home/defaultPortlet/add'); $portlets = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition($uniqueLayoutId, $super->id, array()); $this->assertEquals(9, count($portlets[1])); $this->assertEquals(2, count($portlets[2])); $portletPostData = array(); $portletCount = 0; foreach ($portlets as $column => $columnPortlets) { foreach ($columnPortlets as $position => $portlet) { $portletPostData['HomeDashboard1_' . $portlet->id] = array('collapsed' => 'true', 'column' => 0, 'id' => 'HomeDashboard1_' . $portlet->id, 'position' => $portletCount); $portletCount++; } } $this->assertEquals(11, $portletCount); $this->resetGetArray(); $this->setPostArray(array('portletLayoutConfiguration' => array('portlets' => $portletPostData, 'uniqueLayoutId' => $uniqueLayoutId))); $this->runControllerWithNoExceptionsAndGetContent('home/defaultPortlet/saveLayout', true); //load details view $this->setGetArray(array('id' => $superDashboard1->id)); $this->resetPostArray(); $this->runControllerWithNoExceptionsAndGetContent('home/default/dashboardDetails'); }
/** * Only supports saving 4 layoutTypes (max 2 column) * */ public function actionEditDashboard($id) { $id = intval($id); $dashboard = Dashboard::getById(intval($id)); ControllerSecurityUtil::resolveAccessCanCurrentUserWriteModel($dashboard); if (isset($_POST['Dashboard'])) { $oldLayoutType = $dashboard->layoutType; $_POST['Dashboard'] = PostUtil::sanitizePostByDesignerTypeForSavingModel($dashboard, $_POST['Dashboard']); $dashboard->setAttributes($_POST['Dashboard']); assert('in_array($dashboard->layoutType, array_keys(Dashboard::getLayoutTypesData()))'); if ($dashboard->save()) { if ($oldLayoutType != $dashboard->layoutType && $dashboard->layoutType == '100') { $uniqueLayoutId = 'HomeDashboard' . $dashboard->layoutId; $portletCollection = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition($uniqueLayoutId, Yii::app()->user->userModel->id, array()); Portlet::shiftPositionsBasedOnColumnReduction($portletCollection, 1); } GeneralCache::forgetAll(); //Ensure menu refreshes $this->redirect(array('default/dashboardDetails', 'id' => $dashboard->id)); } } $editView = new DashboardEditView($this->getId(), $this->getModule()->getId(), $dashboard, strval($dashboard)); $view = new AccountsPageView(ZurmoDefaultViewUtil::makeStandardViewForCurrentUser($this, $editView)); echo $view->render(); }
public function testAddingMapPortletToAccountsDetailView() { //Lougout previous use and log in as super user $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super'); //Retriving the super account id. $superAccountId = self::getModelIdByModelNameAndName('Account', 'superAccount'); //Create address array for the super account id. $address = array('street1' => '123 Knob Street', 'street2' => 'Apartment 4b', 'city' => 'Chicago', 'state' => 'Illinois', 'postalCode' => '60606', 'country' => 'USA'); //Assign Address to the super user account. AddressGeoCodeTestHelper::updateTestAccountsWithBillingAddress($superAccountId, $address, $super); //Fetch Latitute and Longitude values for address and save in Address. AddressMappingUtil::updateChangedAddresses(); $accounts = Account::getByName('superAccount'); $this->assertEquals(1, count($accounts)); $this->assertEquals(round('41.8817767', 4), round($accounts[0]->billingAddress->latitude, 4)); $this->assertEquals(round('-87.6371461', 4), round($accounts[0]->billingAddress->longitude, 4)); $this->assertEquals(0, $accounts[0]->billingAddress->invalid); $addressString = $accounts[0]->billingAddress->makeAddress(); $this->setGetArray(array('addressString' => $addressString, 'latitude' => $accounts[0]->billingAddress->latitude, 'longitude' => $accounts[0]->billingAddress->longitude)); $content = $this->runControllerWithNoExceptionsAndGetContent('maps/default/mapAndPoint'); $this->assertContains('plotMap', $content); $accounts = Account::getAll(); $this->assertEquals(1, count($accounts)); //Load Model Detail Views $this->setGetArray(array('id' => $superAccountId, 'lockPortlets' => '0')); $this->resetPostArray(); $this->runControllerWithNoExceptionsAndGetContent('accounts/default/details'); $portlets = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition('AccountDetailsAndRelationsView', $super->id, array()); $this->assertEquals(3, count($portlets[1])); $this->assertFalse(array_key_exists(3, $portlets)); $this->assertEquals(4, count($portlets[2])); foreach ($portlets[2] as $position => $portlet) { $portlet->delete(); } $portlets = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition('AccountDetailsAndRelationsView', $super->id, array()); $this->assertFalse(array_key_exists(2, $portlets)); $this->setGetArray(array('modelId' => $superAccountId, 'uniqueLayoutId' => 'AccountDetailsAndRelationsView', 'portletType' => 'MapForAccountAddress', 'redirect' => '0')); $this->resetPostArray(); $this->runControllerWithNoExceptionsAndGetContent('accounts/defaultPortlet/add', true); $portlets = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition('AccountDetailsAndRelationsView', $super->id, array()); $this->assertEquals(1, count($portlets[2])); //Load Model Detail Views $this->setGetArray(array('id' => $superAccountId, 'lockPortlets' => '0')); $this->resetPostArray(); $this->runControllerWithNoExceptionsAndGetContent('accounts/default/details'); }
public function testSuperUserAllDefaultControllerActions() { //Set the current user as the super user. $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super'); //Test all default controller actions that do not require any POST/GET variables to be passed. //This does not include portlet controller actions. $this->runControllerWithNoExceptionsAndGetContent('home/default'); $this->runControllerWithNoExceptionsAndGetContent('home/default/index'); $this->runControllerWithNoExceptionsAndGetContent('home/default/createDashboard'); //Default Controller actions requiring some sort of parameter via POST or GET //Load Model Edit Views $superDashboard = Dashboard::getByLayoutIdAndUser(Dashboard::DEFAULT_USER_LAYOUT_ID, $super); $this->setGetArray(array('id' => $superDashboard->id)); $this->runControllerWithNoExceptionsAndGetContent('home/default/editDashboard'); //Save dashboard. $superDashboard = Dashboard::getByLayoutIdAndUser(Dashboard::DEFAULT_USER_LAYOUT_ID, $super); $this->assertEquals('Dashboard', $superDashboard->name); $this->setPostArray(array('Dashboard' => array('name' => '456765421'))); $this->runControllerWithRedirectExceptionAndGetContent('home/default/editDashboard'); $superDashboard = Dashboard::getByLayoutIdAndUser(Dashboard::DEFAULT_USER_LAYOUT_ID, $super); $this->assertEquals('456765421', $superDashboard->name); //Test having a failed validation on the dashboard during save. $this->setGetArray(array('id' => $superDashboard->id)); $this->setPostArray(array('Dashboard' => array('name' => ''))); $content = $this->runControllerWithNoExceptionsAndGetContent('home/default/editDashboard'); $this->assertFalse(strpos($content, 'Name cannot be blank') === false); //Load Model Detail Views $this->setGetArray(array('id' => -1)); $this->resetPostArray(); $this->runControllerWithNoExceptionsAndGetContent('home/default/dashboardDetails'); $this->setGetArray(array('id' => $superDashboard->id)); $this->resetPostArray(); $this->runControllerWithNoExceptionsAndGetContent('home/default/dashboardDetails'); //Add second dashboard for use in deletion tests. $secondDashboard = DashboardTestHelper::createDashboardByNameForOwner('Dashboard2', $super); $this->assertTrue($secondDashboard->isDefault == 0); $this->assertFalse($secondDashboard->isDefault === 0); //Just to prove it does not evaluate to this. //Attempt to delete the default dashboard and have it through an exception. $dashboards = Dashboard::getRowsByUserId($super->id); $this->assertEquals(2, count($dashboards)); $this->setGetArray(array('dashboardId' => $superDashboard->id)); $this->resetPostArray(); $this->runControllerWithNotSupportedExceptionAndGetContent('home/default/deleteDashboard'); //Delete dashboard that you can delete. $dashboards = Dashboard::getRowsByUserId($super->id); $this->assertEquals(2, count($dashboards)); $this->setGetArray(array('dashboardId' => $secondDashboard->id)); $this->resetPostArray(); $this->runControllerWithRedirectExceptionAndGetContent('home/default/deleteDashboard'); $dashboards = Dashboard::getRowsByUserId($super->id); $this->assertEquals(1, count($dashboards)); //Add a dashboard via the create dashboard action. $this->assertEquals(1, count(Dashboard::getAll())); $this->resetGetArray(); $this->setPostArray(array('Dashboard' => array('name' => 'myTestDashboard', 'layoutType' => '50,50'))); // Not Coding Standard $this->runControllerWithRedirectExceptionAndGetContent('home/default/createDashboard'); $dashboards = Dashboard::getAll(); $this->assertEquals(2, count($dashboards)); $this->assertEquals('myTestDashboard', $dashboards[1]->name); $this->assertEquals($super, $dashboards[1]->owner); $this->assertEquals('50,50', $dashboards[1]->layoutType); // Not Coding Standard //Portlet Controller Actions $uniqueLayoutId = 'HomeDashboard' . $superDashboard->layoutId; $this->setGetArray(array('dashboardId' => $superDashboard->id, 'uniqueLayoutId' => $uniqueLayoutId)); $this->resetPostArray(); $this->runControllerWithNoExceptionsAndGetContent('home/defaultPortlet/addList'); //Add AccountsMyList Portlet to dashboard $this->setGetArray(array('dashboardId' => $superDashboard->id, 'portletType' => 'AccountsMyList', 'uniqueLayoutId' => $uniqueLayoutId)); $this->resetPostArray(); $this->runControllerWithRedirectExceptionAndGetContent('home/defaultPortlet/add'); //Save a layout change. Collapse all portlets //At this point portlets for this view should be created because we have already loaded the 'details' page in a request above. $portlets = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition($uniqueLayoutId, $super->id, array()); $this->assertEquals(4, count($portlets[1])); $this->assertEquals(4, count($portlets[2])); $portletPostData = array(); $portletCount = 0; foreach ($portlets as $column => $columnPortlets) { foreach ($columnPortlets as $position => $portlet) { $this->assertEquals('0', $portlet->collapsed); $portletPostData['HomeDashboard1_' . $portlet->id] = array('collapsed' => 'true', 'column' => 0, 'id' => 'HomeDashboard1_' . $portlet->id, 'position' => $portletCount); $portletCount++; } } //There should have been a total of 3 portlets. Checking positions as 4 will confirm this. $this->assertEquals(8, $portletCount); $this->resetGetArray(); $this->setPostArray(array('portletLayoutConfiguration' => array('portlets' => $portletPostData, 'uniqueLayoutId' => $uniqueLayoutId))); $this->runControllerWithNoExceptionsAndGetContent('home/defaultPortlet/saveLayout', true); //Now test that all the portlets are collapsed. $portlets = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition($uniqueLayoutId, $super->id, array()); $this->assertEquals(8, count($portlets[1])); $this->assertFalse(array_key_exists(8, $portlets)); foreach ($portlets as $column => $columns) { foreach ($columns as $position => $positionPortlets) { $this->assertEquals('1', $positionPortlets->collapsed); } } //Load up modal config edit view. $this->assertTrue($portlets[1][5]->id > 0); $this->assertEquals('AccountsMyList', $portlets[1][5]->viewType); $this->setGetArray(array('portletId' => $portlets[1][5]->id, 'uniqueLayoutId' => $uniqueLayoutId)); $this->resetPostArray(); $this->runControllerWithNoExceptionsAndGetContent('home/defaultPortlet/modalConfigEdit'); //Now validate the form. $this->setGetArray(array('portletId' => $portlets[1][5]->id, 'uniqueLayoutId' => $uniqueLayoutId)); $this->setPostArray(array('ajax' => 'modal-edit-form', 'AccountsSearchForm' => array())); $this->runControllerWithExitExceptionAndGetContent('home/defaultPortlet/modalConfigEdit'); //save changes to the portlet title $this->setGetArray(array('portletId' => $portlets[1][5]->id, 'uniqueLayoutId' => $uniqueLayoutId)); $this->setPostArray(array('MyListForm' => array('title' => 'something new'), 'AccountsSearchForm' => array())); $this->runControllerWithNoExceptionsAndGetContent('home/defaultPortlet/modalConfigSave'); //Now confirm the title change was successful. $portlet = Portlet::getById($portlets[1][5]->id); $this->assertEquals('something new', $portlet->getView()->getTitle()); //Refresh a portlet modally. $this->setGetArray(array('portletId' => $portlets[1][5]->id, 'uniqueLayoutId' => $uniqueLayoutId, 'redirectUrl' => 'home/default')); $this->resetPostArray(); $this->runControllerWithNoExceptionsAndGetContent('home/defaultPortlet/modalRefresh'); //Load Home Dashboard View again to make sure everything is ok after the layout change. $this->resetGetArray(); $this->resetPostArray(); $this->runControllerWithNoExceptionsAndGetContent('home/default'); //task sorting issue //check whether tasks portlet render or not $this->assertTrue($portlets[1][3]->id > 0); $this->assertEquals('TasksMyList', $portlets[1][3]->viewType); //to sort task list $this->setGetArray(array('Task_sort' => 'name', 'portletId' => $portlets[1][3]->id, 'uniqueLayoutId' => $uniqueLayoutId)); $this->resetPostArray(); $this->runControllerWithNoExceptionsAndGetContent('home/default'); //to sort task list after portlet has been edited $this->resetGetArray(); $this->setGetArray(array('Task_sort' => 'dueDateTime', 'portletId' => $portlets[1][3]->id, 'uniqueLayoutId' => $uniqueLayoutId, 'ajax' => 'list-view' . $uniqueLayoutId . '_' . $portlets[1][3]->id)); $this->runControllerWithNoExceptionsAndGetContent('home/default'); }