Changeset View
Changeset View
Standalone View
Standalone View
src/applications/home/view/PHUIHomeView.php
Show First 20 Lines • Show All 71 Lines • ▼ Show 20 Lines | $dashboard->addColumn($side_panel, 'third'); | ||||
$view = id(new PHUIBoxView()) | $view = id(new PHUIBoxView()) | ||||
->addClass('dashboard-view') | ->addClass('dashboard-view') | ||||
->appendChild($dashboard); | ->appendChild($dashboard); | ||||
return $view; | return $view; | ||||
} | } | ||||
private function buildHomepagePanel($title, $href, $view) { | |||||
$title = phutil_tag( | |||||
'a', | |||||
array( | |||||
'href' => $href, | |||||
), | |||||
$title); | |||||
$icon = id(new PHUIIconView()) | |||||
->setIcon('fa-search') | |||||
->setHref($href); | |||||
$header = id(new PHUIHeaderView()) | |||||
->setHeader($title) | |||||
->addActionItem($icon); | |||||
$box = id(new PHUIObjectBoxView()) | |||||
->setHeader($header); | |||||
if ($view->getObjectList()) { | |||||
$box->setObjectList($view->getObjectList()); | |||||
} | |||||
if ($view->getContent()) { | |||||
$box->appendChild($view->getContent()); | |||||
} | |||||
return $box; | |||||
} | |||||
private function buildRevisionPanel() { | private function buildRevisionPanel() { | ||||
$viewer = $this->getViewer(); | $viewer = $this->getViewer(); | ||||
if (!$viewer->isLoggedIn()) { | if (!$viewer->isLoggedIn()) { | ||||
return null; | return null; | ||||
} | } | ||||
$engine = new DifferentialRevisionSearchEngine(); | $panel = $this->newQueryPanel() | ||||
$engine->setViewer($viewer); | ->setName(pht('Active Revisions')) | ||||
$saved = $engine->buildSavedQueryFromBuiltin('active'); | ->setProperty('class', 'DifferentialRevisionSearchEngine') | ||||
$query = $engine->buildQueryFromSavedQuery($saved); | ->setProperty('key', 'active'); | ||||
$pager = $engine->newPagerForSavedQuery($saved); | |||||
$pager->setPageSize(15); | |||||
$results = $engine->executeQuery($query, $pager); | |||||
$view = $engine->renderResults($results, $saved); | |||||
$title = pht('Active Revisions'); | |||||
$href = '/differential/query/active/'; | |||||
return $this->buildHomepagePanel($title, $href, $view); | return $this->renderPanel($panel); | ||||
} | } | ||||
private function buildTasksPanel() { | private function buildTasksPanel() { | ||||
$viewer = $this->getViewer(); | $viewer = $this->getViewer(); | ||||
if ($viewer->isLoggedIn()) { | |||||
$name = pht('Assigned Tasks'); | |||||
$query = 'assigned'; | $query = 'assigned'; | ||||
$title = pht('Assigned Tasks'); | } else { | ||||
$href = '/maniphest/query/assigned/'; | $name = pht('Open Tasks'); | ||||
if (!$viewer->isLoggedIn()) { | |||||
$query = 'open'; | $query = 'open'; | ||||
$title = pht('Open Tasks'); | |||||
$href = '/maniphest/query/open/'; | |||||
} | } | ||||
$engine = new ManiphestTaskSearchEngine(); | $panel = $this->newQueryPanel() | ||||
$engine->setViewer($viewer); | ->setName($name) | ||||
$saved = $engine->buildSavedQueryFromBuiltin($query); | ->setProperty('class', 'ManiphestTaskSearchEngine') | ||||
$query = $engine->buildQueryFromSavedQuery($saved); | ->setProperty('key', $query) | ||||
$pager = $engine->newPagerForSavedQuery($saved); | ->setProperty('limit', 15); | ||||
$pager->setPageSize(15); | |||||
$results = $engine->executeQuery($query, $pager); | |||||
$view = $engine->renderResults($results, $saved); | |||||
return $this->buildHomepagePanel($title, $href, $view); | return $this->renderPanel($panel); | ||||
} | } | ||||
public function buildFeedPanel() { | public function buildFeedPanel() { | ||||
$viewer = $this->getViewer(); | $panel = $this->newQueryPanel() | ||||
->setName(pht('Recent Activity')) | |||||
->setProperty('class', 'PhabricatorFeedSearchEngine') | |||||
->setProperty('key', 'all') | |||||
->setProperty('limit', 40); | |||||
$engine = new PhabricatorFeedSearchEngine(); | return $this->renderPanel($panel); | ||||
$engine->setViewer($viewer); | |||||
$saved = $engine->buildSavedQueryFromBuiltin('all'); | |||||
$query = $engine->buildQueryFromSavedQuery($saved); | |||||
$pager = $engine->newPagerForSavedQuery($saved); | |||||
$pager->setPageSize(40); | |||||
$results = $engine->executeQuery($query, $pager); | |||||
$view = $engine->renderResults($results, $saved); | |||||
// Low tech NUX. | |||||
if (!$results && ($viewer->getIsAdmin() == 1)) { | |||||
$instance = PhabricatorEnv::getEnvConfig('cluster.instance'); | |||||
if (!$instance) { | |||||
$content = pht(<<<EOT | |||||
Welcome to Phabricator, here are some links to get you started: | |||||
- [[ /config/ | Configure Phabricator ]] | |||||
- [[ /guides/ | Quick Start Guide ]] | |||||
- [[ /diffusion/ | Create a Repository ]] | |||||
- [[ /people/invite/send/ | Invite People ]] | |||||
- [[ https://twitter.com/phabricator/ | Follow us on Twitter ]] | |||||
EOT | |||||
); | |||||
} else { | |||||
$content = pht(<<<EOT | |||||
Welcome to Phabricator, here are some links to get you started: | |||||
- [[ /guides/ | Quick Start Guide ]] | |||||
- [[ /diffusion/ | Create a Repository ]] | |||||
- [[ https://twitter.com/phabricator/ | Follow us on Twitter ]] | |||||
EOT | |||||
); | |||||
} | } | ||||
if ($results) { | public function buildRepositoryPanel() { | ||||
$list = new PHUIObjectItemListView(); | $panel = $this->newQueryPanel() | ||||
$view = new PhabricatorApplicationSearchResultView(); | ->setName(pht('Active Repositories')) | ||||
$view->setObjectList($list); | ->setProperty('class', 'PhabricatorRepositorySearchEngine') | ||||
} else { | ->setProperty('key', 'active') | ||||
$content = id(new PHUIBoxView()) | ->setProperty('limit', 5); | ||||
->appendChild(new PHUIRemarkupView($viewer, $content)) | |||||
->addClass('mlt mlb msr msl'); | return $this->renderPanel($panel); | ||||
$view = new PhabricatorApplicationSearchResultView(); | |||||
$view->setContent($content); | |||||
} | |||||
} | } | ||||
$title = pht('Recent Activity'); | private function newQueryPanel() { | ||||
$href = '/feed/'; | $panel_type = id(new PhabricatorDashboardQueryPanelType()) | ||||
->getPanelTypeKey(); | |||||
return $this->buildHomepagePanel($title, $href, $view); | return id(new PhabricatorDashboardPanel()) | ||||
->setPanelType($panel_type); | |||||
} | } | ||||
public function buildRepositoryPanel() { | private function renderPanel(PhabricatorDashboardPanel $panel) { | ||||
$viewer = $this->getViewer(); | $viewer = $this->getViewer(); | ||||
$engine = new PhabricatorRepositorySearchEngine(); | return id(new PhabricatorDashboardPanelRenderingEngine()) | ||||
$engine->setViewer($viewer); | ->setViewer($viewer) | ||||
$saved = $engine->buildSavedQueryFromBuiltin('active'); | ->setPanel($panel) | ||||
$query = $engine->buildQueryFromSavedQuery($saved); | ->setParentPanelPHIDs(array()) | ||||
$pager = $engine->newPagerForSavedQuery($saved); | ->renderPanel(); | ||||
$pager->setPageSize(5); | |||||
$results = $engine->executeQuery($query, $pager); | |||||
$view = $engine->renderResults($results, $saved); | |||||
$title = pht('Active Repositories'); | |||||
$href = '/diffusion/'; | |||||
return $this->buildHomepagePanel($title, $href, $view); | |||||
} | } | ||||
} | } |