Ejemplo n.º 1
0
 /**
  * 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));
         }
     }
 }