protected function getPlacedViewTypes() { $portlets = Portlet::getByLayoutIdAndUserSortedById($this->uniqueLayoutId, Yii::app()->user->userModel->id); $placedViewTypes = array(); foreach ($portlets as $portlet) { $placedViewTypes[] = $portlet->viewType; } return $placedViewTypes; }
/** * Save layout changes including: * collapse/show * position change * removed portlets * */ public function actionSaveLayout() { $portlets = Portlet::getByLayoutIdAndUserSortedById($_POST['portletLayoutConfiguration']['uniqueLayoutId'], Yii::app()->user->userModel->id); $portletsStillOnLayout = array(); if (!empty($_POST['portletLayoutConfiguration']['portlets'])) { foreach ($_POST['portletLayoutConfiguration']['portlets'] as $key => $portletPostData) { $idParts = explode("_", $portletPostData['id']); $portlets[$idParts[1]]->column = $portletPostData['column'] + 1; $portlets[$idParts[1]]->position = $portletPostData['position'] + 1; $portlets[$idParts[1]]->collapsed = BooleanUtil::boolVal($portletPostData['collapsed']); $portlets[$idParts[1]]->save(); $portletsStillOnLayout[$idParts[1]] = $idParts[1]; } } foreach ($portlets as $portletId => $portlet) { if (!isset($portletsStillOnLayout[$portletId])) { $portlet->delete(); } } }
public static function pushDetailsAndRelationsViewPortlets(User $user, $model) { $layoutIdPrefix = get_class($model); $layoutId = $layoutIdPrefix . self::DETAILS_AND_RELATIONS_VIEW; $userLayoutPortlets = Portlet::getByLayoutIdAndUserSortedById($layoutId, $user->id); $pushedLayoutPortlets = Portlet::getByLayoutIdAndUserSortedById($layoutId, Yii::app()->user->userModel->id); foreach ($userLayoutPortlets as $portlet) { $portlet->delete(); unset($portlet); } foreach ($pushedLayoutPortlets as $pushedLayoutPortlet) { $portlet = new Portlet(); $portlet->column = $pushedLayoutPortlet->column; $portlet->position = $pushedLayoutPortlet->position; $portlet->layoutId = $layoutId; $portlet->collapsed = $pushedLayoutPortlet->collapsed; $portlet->viewType = $pushedLayoutPortlet->viewType; $portlet->serializedViewData = $pushedLayoutPortlet->serializedViewData; $portlet->user = $user; $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); }
/** * testGetRowsByUserId */ public function testDeleteDashboardAndRelatedPortlets() { Yii::app()->user->userModel = User::getByUsername('billy'); $dashboardCount = Dashboard::getCount(); $this->assertTrue($dashboardCount > 0); $user = User::getByUserName('billy'); Yii::app()->user->userModel = $user; $dashboard = new Dashboard(); $dashboard->name = "Dashboard TESTING"; $dashboard->layoutId = 3; $dashboard->owner = $user; $dashboard->layoutType = '100'; $dashboard->isDefault = false; $this->assertTrue($dashboard->save()); $this->assertEquals(Portlet::getCount(), 0); $this->assertEquals(Dashboard::getCount(), $dashboardCount + 1); for ($i = 1; $i <= 3; $i++) { $portlet = new Portlet(); $portlet->column = 1; $portlet->position = 1 + $i; $portlet->layoutId = 'TEST' . $dashboard->layoutId; $portlet->collapsed = false; $portlet->viewType = 'TasksMyList'; $portlet->user = $user; $this->assertTrue($portlet->save()); } $this->assertEquals(Portlet::getCount(), 3); $portlets = Portlet::getByLayoutIdAndUserSortedById('TEST' . $dashboard->layoutId, $user->id); foreach ($portlets as $portlet) { $portlet->delete(); } $dashboard->delete(); $this->assertEquals(Portlet::getCount(), 0); $this->assertEquals(Dashboard::getCount(), $dashboardCount); }
/** * Removes dashboard and related portlets * */ public function actionDeleteDashboard() { $id = intval($_GET['dashboardId']); $dashboard = Dashboard::getById($id); ControllerSecurityUtil::resolveAccessCanCurrentUserDeleteModel($dashboard); if ($dashboard->isDefault) { //todo: make a specific exception or view for this situation. throw new NotSupportedException(); } $portlets = Portlet::getByLayoutIdAndUserSortedById('HomeDashboard' . $id, Yii::app()->user->userModel->id); foreach ($portlets as $portlet) { $portlet->delete(); unset($portlet); } $dashboard->delete(); unset($dashboard); $this->redirect(array('default/index')); }
public function testPushLayoutToUsers() { $super = Yii::app()->user->userModel; //Make and Get Five Users $users = UserTestHelper::generateBasicUsers(5); $this->assertEquals(5, count($users)); //Remove first portlet from Super's ContactDetailsAndRelationsView $defaultLayoutId = 'Contact' . PushDashboardUtil::DETAILS_AND_RELATIONS_VIEW; $defaultPortlets = Portlet::getByLayoutIdAndUserSortedById($defaultLayoutId, $super->id); if (empty($defaultPortlets)) { $metadata = ContactDetailsAndRelationsView::getDefaultMetadata(); $portletCollection = Portlet::makePortletsUsingMetadataSortedByColumnIdAndPosition($defaultLayoutId, $metadata, $super, null); $this->assertNotEmpty($portletCollection); Portlet::savePortlets($portletCollection); $defaultPortlets = Portlet::getByLayoutIdAndUserSortedById($defaultLayoutId, $super->id); } $this->assertTrue(count($defaultPortlets) > 0); foreach ($defaultPortlets as $portlet) { $portlet->delete(); break; } $defaultPortlets = Portlet::getByLayoutIdAndUserSortedById($defaultLayoutId, $super->id); $deafultPortletViews = array(); foreach ($defaultPortlets as $portlet) { $deafultPortletViews[] = $portlet->viewType; } //Push super's default ContactDetailsAndRelationsView to five users $userIds = array(); foreach ($users as $user) { $userIds[] = $user->id; } $groupsAndUsers = array(); $groupsAndUsers['groups'] = array(); $groupsAndUsers['users'] = $userIds; PushDashboardUtil::pushLayoutToUsers(new Contact(false), $groupsAndUsers); //Validate portlets of five user's ContactDetailsAndRelationsView with super's ContactDetailsAndRelationsView foreach ($users as $user) { $userPortlets = Portlet::getByLayoutIdAndUserSortedById($defaultLayoutId, $user->id); $this->assertEquals(count($defaultPortlets), count($userPortlets)); foreach ($userPortlets as $portlet) { $this->assertTrue(in_array($portlet->viewType, $deafultPortletViews)); } } }