public function testNobodyUserHomePageView()
 {
     $nobody = $this->logoutCurrentUserLoginNewUserAndGetByUsername('nobody');
     $content = $this->runControllerWithNoExceptionsAndGetContent('home/default/welcome');
     $this->assertContains('Welcome to Zurmo', $content);
     //When hideWelcomeView is on nobody should see HomeView
     $form = UserConfigurationFormAdapter::makeFormFromUserConfigurationByUser($nobody);
     $form->hideWelcomeView = true;
     UserConfigurationFormAdapter::setConfigurationFromFormForCurrentUser($form);
     $content = $this->runControllerWithNoExceptionsAndGetContent('home/default/welcome');
     $this->assertContains('HomeView', $content);
 }
 public function testSuperUserWelcomeActions()
 {
     $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super');
     //test that the welcome screen appears
     $content = $this->runControllerWithNoExceptionsAndGetContent('home/default/welcome');
     $this->assertContains('Go to the dashboard', $content);
     //Change setting so user ignores welcome view.
     $form = UserConfigurationFormAdapter::makeFormFromUserConfigurationByUser($super);
     $form->hideWelcomeView = true;
     UserConfigurationFormAdapter::setConfigurationFromFormForCurrentUser($form);
     //Now the welcome screen should not appear
     $this->runControllerWithRedirectExceptionAndGetContent('home/default/welcome');
 }
 public function actionConfigurationEdit($id)
 {
     UserAccessUtil::resolveCanCurrentUserAccessAction(intval($id));
     $user = User::getById(intval($id));
     UserAccessUtil::resolveCanCurrentUserAccessRootUser($user);
     UserAccessUtil::resolveAccessingASystemUser($user);
     $title = Zurmo::t('ConfigurationModule', 'Configuration');
     $breadCrumbLinks = array(strval($user) => array('default/details', 'id' => $id), $title);
     $configurationForm = UserConfigurationFormAdapter::makeFormFromUserConfigurationByUser($user);
     $postVariableName = get_class($configurationForm);
     if (isset($_POST[$postVariableName])) {
         $configurationForm->setAttributes($_POST[$postVariableName]);
         if ($configurationForm->validate()) {
             if ($user->id != Yii::app()->user->userModel->id) {
                 UserConfigurationFormAdapter::setConfigurationFromForm($configurationForm, $user);
             } else {
                 UserConfigurationFormAdapter::setConfigurationFromFormForCurrentUser($configurationForm);
             }
             Yii::app()->user->setFlash('notification', Zurmo::t('UsersModule', 'User configuration saved successfully.'));
             $this->redirect(array($this->getId() . '/details', 'id' => $user->id));
         }
     }
     $titleBarAndEditView = new UserActionBarAndConfigurationEditView($this->getId(), $this->getModule()->getId(), $user, $configurationForm);
     $titleBarAndEditView->setCssClasses(array('AdministrativeArea'));
     $view = new UsersPageView($this->resolveZurmoDefaultOrAdminView($titleBarAndEditView, $breadCrumbLinks, 'UserBreadCrumbView'));
     echo $view->render();
 }
 public function testMakeFormAndSetConfigurationFromForm()
 {
     $billy = User::getByUsername('billy');
     $sally = User::getByUsername('sally');
     Yii::app()->pagination->setGlobalValueByType('listPageSize', 50);
     Yii::app()->pagination->setGlobalValueByType('subListPageSize', 51);
     Yii::app()->pagination->setGlobalValueByType('dashboardListPageSize', 52);
     //Confirm sally's configuration is the defaults.
     $form = UserConfigurationFormAdapter::makeFormFromUserConfigurationByUser($sally);
     $this->assertEquals(50, $form->listPageSize);
     $this->assertEquals(51, $form->subListPageSize);
     $this->assertEquals(52, $form->dashboardListPageSize);
     $this->assertEquals('blue', Yii::app()->themeManager->resolveAndGetThemeColorValue($sally));
     $this->assertEquals(null, Yii::app()->themeManager->resolveAndGetBackgroundTextureValue($sally));
     $this->assertFalse(UserConfigurationFormAdapter::resolveAndGetValue($sally, 'hideWelcomeView'));
     $this->assertFalse(UserConfigurationFormAdapter::resolveAndGetValue($sally, 'enableDesktopNotifications'));
     $this->assertNull(UserConfigurationFormAdapter::resolveAndGetValue($sally, 'defaultPermissionGroupSetting', false));
     $this->assertEquals(UserConfigurationFormAdapter::resolveAndGetDefaultPermissionSetting($sally), UserConfigurationForm::DEFAULT_PERMISSIONS_SETTING_EVERYONE);
     $this->assertFalse(UserConfigurationFormAdapter::resolveAndGetValue($sally, 'hideFromSelecting'));
     $this->assertFalse(UserConfigurationFormAdapter::resolveAndGetValue($sally, 'hideFromLeaderboard'));
     $sally->hideFromLeaderboard = true;
     $sally->hideFromSelecting = true;
     $this->assertTrue($sally->save());
     unset($sally);
     $sally = User::getByUsername('sally');
     $this->assertTrue((bool) $sally->hideFromLeaderboard);
     $this->assertTrue((bool) $sally->hideFromSelecting);
     //Confirm billy's configuration is the defaults.
     $form = UserConfigurationFormAdapter::makeFormFromUserConfigurationByUser($billy);
     $this->assertEquals(50, $form->listPageSize);
     $this->assertEquals(51, $form->subListPageSize);
     $this->assertEquals(52, $form->dashboardListPageSize);
     $this->assertEquals('blue', Yii::app()->themeManager->resolveAndGetThemeColorValue($billy));
     $this->assertEquals(null, Yii::app()->themeManager->resolveAndGetBackgroundTextureValue($billy));
     $this->assertFalse(UserConfigurationFormAdapter::resolveAndGetValue($billy, 'hideWelcomeView'));
     $this->assertFalse(UserConfigurationFormAdapter::resolveAndGetValue($billy, 'enableDesktopNotifications'));
     $this->assertNull(UserConfigurationFormAdapter::resolveAndGetValue($billy, 'defaultPermissionGroupSetting', false));
     $this->assertEquals(UserConfigurationFormAdapter::resolveAndGetDefaultPermissionSetting($billy), UserConfigurationForm::DEFAULT_PERMISSIONS_SETTING_EVERYONE);
     $this->assertFalse(UserConfigurationFormAdapter::resolveAndGetValue($sally, 'hideFromSelecting'));
     $this->assertFalse(UserConfigurationFormAdapter::resolveAndGetValue($sally, 'hideFromLeaderboard'));
     //Now change configuration for Billy.
     $form->listPageSize = 60;
     $form->subListPageSize = 61;
     $form->dashboardListPageSize = 62;
     $form->themeColor = 'lime';
     $form->backgroundTexture = 'paper';
     $form->hideWelcomeView = true;
     $form->enableDesktopNotifications = true;
     $form->defaultPermissionSetting = UserConfigurationForm::DEFAULT_PERMISSIONS_SETTING_OWNER_AND_USERS_IN_GROUP;
     $form->defaultPermissionGroupSetting = 6;
     $form->hideFromLeaderboard = true;
     $form->hideFromSelecting = true;
     UserConfigurationFormAdapter::setConfigurationFromForm($form, $billy);
     //Confirm billy's settings are changed correctly.
     $form = UserConfigurationFormAdapter::makeFormFromUserConfigurationByUser($billy);
     $this->assertEquals(60, $form->listPageSize);
     $this->assertEquals(61, $form->subListPageSize);
     $this->assertEquals(62, $form->dashboardListPageSize);
     $this->assertEquals('lime', Yii::app()->themeManager->resolveAndGetThemeColorValue($billy));
     $this->assertEquals('paper', Yii::app()->themeManager->resolveAndGetBackgroundTextureValue($billy));
     $this->assertTrue(UserConfigurationFormAdapter::resolveAndGetValue($billy, 'hideWelcomeView'));
     $this->assertTrue(UserConfigurationFormAdapter::resolveAndGetValue($billy, 'enableDesktopNotifications'));
     $this->assertFalse(UserConfigurationFormAdapter::resolveAndGetValue($sally, 'hideWelcomeView'));
     $this->assertFalse(UserConfigurationFormAdapter::resolveAndGetValue($sally, 'enableDesktopNotifications'));
     $this->assertEquals(UserConfigurationFormAdapter::resolveAndGetDefaultPermissionSetting($billy), UserConfigurationForm::DEFAULT_PERMISSIONS_SETTING_OWNER_AND_USERS_IN_GROUP);
     $this->assertEquals(UserConfigurationFormAdapter::resolveAndGetValue($billy, 'defaultPermissionGroupSetting', false), 6);
     $this->assertEquals(UserConfigurationFormAdapter::resolveAndGetDefaultPermissionSetting($sally), UserConfigurationForm::DEFAULT_PERMISSIONS_SETTING_EVERYONE);
     $this->assertNull(UserConfigurationFormAdapter::resolveAndGetValue($sally, 'defaultPermissionGroupSetting', false));
     $this->assertTrue((bool) $billy->hideFromLeaderboard);
     $this->assertTrue((bool) $billy->hideFromSelecting);
     //Now set configuration settings for sally and confirm they are correct.
     Yii::app()->user->userModel = $sally;
     UserConfigurationFormAdapter::setConfigurationFromFormForCurrentUser($form);
     $form = UserConfigurationFormAdapter::makeFormFromUserConfigurationByUser($sally);
     $this->assertEquals(60, $form->listPageSize);
     $this->assertEquals(61, $form->subListPageSize);
     $this->assertEquals(62, $form->dashboardListPageSize);
     $this->assertEquals('lime', Yii::app()->themeManager->resolveAndGetThemeColorValue($sally));
     $this->assertEquals('paper', Yii::app()->themeManager->resolveAndGetBackgroundTextureValue($sally));
     $this->assertTrue(UserConfigurationFormAdapter::resolveAndGetValue($sally, 'hideWelcomeView'));
     $this->assertTrue(UserConfigurationFormAdapter::resolveAndGetValue($sally, 'enableDesktopNotifications'));
     $this->assertEquals(UserConfigurationFormAdapter::resolveAndGetDefaultPermissionSetting($sally), UserConfigurationForm::DEFAULT_PERMISSIONS_SETTING_OWNER_AND_USERS_IN_GROUP);
     $this->assertEquals(UserConfigurationFormAdapter::resolveAndGetValue($sally, 'defaultPermissionGroupSetting', false), 6);
     $this->assertTrue((bool) $billy->hideFromLeaderboard);
     $this->assertTrue((bool) $billy->hideFromSelecting);
     //Now test that setting defaultPermissionSetting to owner makes the group settings null
     $form = UserConfigurationFormAdapter::makeFormFromUserConfigurationByUser($billy);
     $form->defaultPermissionSetting = UserConfigurationForm::DEFAULT_PERMISSIONS_SETTING_OWNER;
     $form->defaultPermissionGroupSetting = 4;
     UserConfigurationFormAdapter::setConfigurationFromForm($form, $billy);
     $form = UserConfigurationFormAdapter::makeFormFromUserConfigurationByUser($billy);
     $this->assertEquals(UserConfigurationFormAdapter::resolveAndGetDefaultPermissionSetting($billy), UserConfigurationForm::DEFAULT_PERMISSIONS_SETTING_OWNER);
     $this->assertNull(UserConfigurationFormAdapter::resolveAndGetValue($billy, 'defaultPermissionGroupSetting', false));
 }