/** * Ensure the rendering of the dashboard works properly */ public function testRender() { /** @var modManagerController $controller Fake running the welcome controller */ $controller = new WelcomeManagerController($this->modx, array('namespace' => 'core', 'namespace_name' => 'core', 'namespace_path' => MODX_MANAGER_PATH, 'lang_topics' => 'dashboards', 'controller' => 'system/dashboards')); /** @var modDashboard $dashboard */ $dashboard = modDashboard::getDefaultDashboard($this->modx); $output = $dashboard->render($controller); $this->assertNotEmpty($output); }
/** * Get the active Dashboard for the User * @return modDashboard|null */ public function getDashboard() { $this->modx->loadClass('modDashboard'); /** @var modUserGroup $userGroup */ $userGroup = $this->modx->user->getOne('PrimaryGroup'); if ($userGroup) { /** @var modDashboard $dashboard */ $dashboard = $userGroup->getOne('Dashboard'); if (empty($dashboard)) { $dashboard = modDashboard::getDefaultDashboard($this->modx); } } else { $dashboard = modDashboard::getDefaultDashboard($this->modx); } return $dashboard; }
/** * Override xPDOObject::remove() to revert to the default dashboard any user groups using this Dashboard * * @see xPDOObject::remove() * @param array $ancestors * @return boolean */ public function remove(array $ancestors = array()) { $dashboardId = $this->get('id'); $removed = parent::remove($ancestors); if ($removed) { $defaultDashboard = modDashboard::getDefaultDashboard($this->xpdo); if (empty($defaultDashboard)) { /** @var modDashboard $defaultDashboard */ $defaultDashboard = $this->xpdo->newObject('modDashboard'); $defaultDashboard->set('id', 0); } $userGroups = $this->xpdo->getCollection('modUserGroup', array('dashboard' => $dashboardId)); /** @var modUserGroup $userGroup */ foreach ($userGroups as $userGroup) { $userGroup->set('dashboard', $defaultDashboard->get('id')); $userGroup->save(); } } return $removed; }