Example #1
0
 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();
 }