Path: blob/master/src/applications/home/view/PHUIHomeView.php
12256 views
<?php12final class PHUIHomeView3extends AphrontTagView {45protected function getTagName() {6return null;7}89protected function getTagAttributes() {10return array();11}1213protected function getTagContent() {14require_celerity_resource('phabricator-dashboard-css');15$viewer = $this->getViewer();1617$has_maniphest = PhabricatorApplication::isClassInstalledForViewer(18'PhabricatorManiphestApplication',19$viewer);2021$has_diffusion = PhabricatorApplication::isClassInstalledForViewer(22'PhabricatorDiffusionApplication',23$viewer);2425$has_differential = PhabricatorApplication::isClassInstalledForViewer(26'PhabricatorDifferentialApplication',27$viewer);2829$revision_panel = null;30if ($has_differential) {31$revision_panel = $this->buildRevisionPanel();32}3334$tasks_panel = null;35if ($has_maniphest) {36$tasks_panel = $this->buildTasksPanel();37}3839$repository_panel = null;40if ($has_diffusion) {41$repository_panel = $this->buildRepositoryPanel();42}4344$feed_panel = $this->buildFeedPanel();4546$dashboard = id(new AphrontMultiColumnView())47->setFluidlayout(true)48->setGutter(AphrontMultiColumnView::GUTTER_LARGE);4950$main_panel = phutil_tag(51'div',52array(53'class' => 'homepage-panel',54),55array(56$revision_panel,57$tasks_panel,58$repository_panel,59));60$dashboard->addColumn($main_panel, 'thirds');6162$side_panel = phutil_tag(63'div',64array(65'class' => 'homepage-side-panel',66),67array(68$feed_panel,69));70$dashboard->addColumn($side_panel, 'third');7172$view = id(new PHUIBoxView())73->addClass('dashboard-view')74->appendChild($dashboard);7576return $view;77}7879private function buildRevisionPanel() {80$viewer = $this->getViewer();81if (!$viewer->isLoggedIn()) {82return null;83}8485$panel = $this->newQueryPanel()86->setName(pht('Active Revisions'))87->setProperty('class', 'DifferentialRevisionSearchEngine')88->setProperty('key', 'active');8990return $this->renderPanel($panel);91}9293private function buildTasksPanel() {94$viewer = $this->getViewer();9596if ($viewer->isLoggedIn()) {97$name = pht('Assigned Tasks');98$query = 'assigned';99} else {100$name = pht('Open Tasks');101$query = 'open';102}103104$panel = $this->newQueryPanel()105->setName($name)106->setProperty('class', 'ManiphestTaskSearchEngine')107->setProperty('key', $query)108->setProperty('limit', 15);109110return $this->renderPanel($panel);111}112113public function buildFeedPanel() {114$panel = $this->newQueryPanel()115->setName(pht('Recent Activity'))116->setProperty('class', 'PhabricatorFeedSearchEngine')117->setProperty('key', 'all')118->setProperty('limit', 40);119120return $this->renderPanel($panel);121}122123public function buildRepositoryPanel() {124$panel = $this->newQueryPanel()125->setName(pht('Active Repositories'))126->setProperty('class', 'PhabricatorRepositorySearchEngine')127->setProperty('key', 'active')128->setProperty('limit', 5);129130return $this->renderPanel($panel);131}132133private function newQueryPanel() {134$panel_type = id(new PhabricatorDashboardQueryPanelType())135->getPanelTypeKey();136137return id(new PhabricatorDashboardPanel())138->setPanelType($panel_type);139}140141private function renderPanel(PhabricatorDashboardPanel $panel) {142$viewer = $this->getViewer();143144return id(new PhabricatorDashboardPanelRenderingEngine())145->setViewer($viewer)146->setPanel($panel)147->setParentPanelPHIDs(array())148->renderPanel();149}150151}152153154