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); }
/** * 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(); }