/** * Render a toolbar above the form layout. This includes * a link to edit the dashboard as well as a link to add * portlets to the dashboard * @return A string containing the element's content. */ protected function renderActionElementBar($renderedInForm) { $content = parent::renderActionElementBar($renderedInForm); $deleteDashboardLinkActionElement = new DeleteDashboardMenuActionElement($this->controllerId, $this->moduleId, $this->modelId, array('htmlOptions' => array('confirm' => Zurmo::t('HomeModule', 'Are you sure want to delete this dashboard?')), 'iconClass' => 'icon-delete')); $pushDashboardLinkActionElement = new PushDashboardLinkActionElement($this->controllerId, $this->moduleId, $this->modelId, array('htmlOptions' => array('id' => 'PushDashboardLink'), 'iconClass' => 'icon-push-dashboard')); if (ActionSecurityUtil::canCurrentUserPerformAction($deleteDashboardLinkActionElement->getActionType(), $this->model) && !$this->isDefaultDashboard) { $content .= $deleteDashboardLinkActionElement->render(); } if (PushDashboardUtil::canCurrentUserPushDashboardOrLayout()) { $content .= $pushDashboardLinkActionElement->render(); } $content .= $this->renderChangeDashboardMenuActionContent(); return $content; }
protected function renderPushLayoutButton() { if (PushDashboardUtil::canCurrentUserPushDashboardOrLayout()) { $pushLayoutLinkActionElement = new PushLayoutLinkActionElement($this->controllerId, $this->moduleId, $this->modelId, array('htmlOptions' => array('id' => 'PushLayoutLink'), 'iconClass' => 'icon-change-dashboard')); return $pushLayoutLinkActionElement->render(); } }
public function actionPushDashboard($id) { $dashboard = Dashboard::getById(intval($id)); $modelClassName = get_class($dashboard); if (isset($_POST[$modelClassName])) { $groupsAndUsers = PushDashboardUtil::resolveGroupsAndUsersFromPost($_POST[$modelClassName]); PushDashboardUtil::pushDashboardToUsers($dashboard, $groupsAndUsers); Yii::app()->user->setFlash('notification', Zurmo::t('HomeModule', 'Dashboard pushed successfully')); $this->redirect(array('default/dashboardDetails', 'id' => $dashboard->id)); } $editView = new PushDashboardEditView($this->getId(), $this->getModule()->getId(), $dashboard, Zurmo::t('HomeModule', 'Push Dashboard')); $view = new HomePageView(ZurmoDefaultViewUtil::makeStandardViewForCurrentUser($this, $editView)); echo $view->render(); }
public function actionPushLayout($id) { $modelClassName = $this->getModelName(); $model = $modelClassName::getById(intval($id)); if (isset($_POST[$modelClassName])) { $groupsAndUsers = PushDashboardUtil::resolveGroupsAndUsersFromPost($_POST[$modelClassName]); PushDashboardUtil::pushLayoutToUsers($model, $groupsAndUsers); Yii::app()->user->setFlash('notification', Zurmo::t('ZurmoModule', 'Layout pushed successfully')); $this->redirect(array($this->getId() . '/details', 'id' => $id)); } $editView = new PushDashboardEditView($this->getId(), $this->getModule()->getId(), $model, Zurmo::t('ZurmoModule', 'Push Layout')); $view = new ZurmoPageView(ZurmoDefaultViewUtil::makeStandardViewForCurrentUser($this, $editView)); echo $view->render(); }
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)); } } }