Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15198347
D20333.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
6 KB
Referenced Files
None
Subscribers
None
D20333.diff
View Options
diff --git a/src/applications/home/view/PHUIHomeView.php b/src/applications/home/view/PHUIHomeView.php
--- a/src/applications/home/view/PHUIHomeView.php
+++ b/src/applications/home/view/PHUIHomeView.php
@@ -77,149 +77,76 @@
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() {
$viewer = $this->getViewer();
if (!$viewer->isLoggedIn()) {
return null;
}
- $engine = new DifferentialRevisionSearchEngine();
- $engine->setViewer($viewer);
- $saved = $engine->buildSavedQueryFromBuiltin('active');
- $query = $engine->buildQueryFromSavedQuery($saved);
- $pager = $engine->newPagerForSavedQuery($saved);
- $pager->setPageSize(15);
- $results = $engine->executeQuery($query, $pager);
- $view = $engine->renderResults($results, $saved);
+ $panel = $this->newQueryPanel()
+ ->setName(pht('Active Revisions'))
+ ->setProperty('class', 'DifferentialRevisionSearchEngine')
+ ->setProperty('key', 'active');
- $title = pht('Active Revisions');
- $href = '/differential/query/active/';
-
- return $this->buildHomepagePanel($title, $href, $view);
+ return $this->renderPanel($panel);
}
private function buildTasksPanel() {
$viewer = $this->getViewer();
- $query = 'assigned';
- $title = pht('Assigned Tasks');
- $href = '/maniphest/query/assigned/';
- if (!$viewer->isLoggedIn()) {
+ if ($viewer->isLoggedIn()) {
+ $name = pht('Assigned Tasks');
+ $query = 'assigned';
+ } else {
+ $name = pht('Open Tasks');
$query = 'open';
- $title = pht('Open Tasks');
- $href = '/maniphest/query/open/';
}
- $engine = new ManiphestTaskSearchEngine();
- $engine->setViewer($viewer);
- $saved = $engine->buildSavedQueryFromBuiltin($query);
- $query = $engine->buildQueryFromSavedQuery($saved);
- $pager = $engine->newPagerForSavedQuery($saved);
- $pager->setPageSize(15);
- $results = $engine->executeQuery($query, $pager);
- $view = $engine->renderResults($results, $saved);
+ $panel = $this->newQueryPanel()
+ ->setName($name)
+ ->setProperty('class', 'ManiphestTaskSearchEngine')
+ ->setProperty('key', $query)
+ ->setProperty('limit', 15);
- return $this->buildHomepagePanel($title, $href, $view);
+ return $this->renderPanel($panel);
}
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();
- $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) {
- $list = new PHUIObjectItemListView();
- $view = new PhabricatorApplicationSearchResultView();
- $view->setObjectList($list);
- } else {
- $content = id(new PHUIBoxView())
- ->appendChild(new PHUIRemarkupView($viewer, $content))
- ->addClass('mlt mlb msr msl');
- $view = new PhabricatorApplicationSearchResultView();
- $view->setContent($content);
- }
- }
+ return $this->renderPanel($panel);
+ }
- $title = pht('Recent Activity');
- $href = '/feed/';
+ public function buildRepositoryPanel() {
+ $panel = $this->newQueryPanel()
+ ->setName(pht('Active Repositories'))
+ ->setProperty('class', 'PhabricatorRepositorySearchEngine')
+ ->setProperty('key', 'active')
+ ->setProperty('limit', 5);
- return $this->buildHomepagePanel($title, $href, $view);
+ return $this->renderPanel($panel);
}
- public function buildRepositoryPanel() {
- $viewer = $this->getViewer();
+ private function newQueryPanel() {
+ $panel_type = id(new PhabricatorDashboardQueryPanelType())
+ ->getPanelTypeKey();
- $engine = new PhabricatorRepositorySearchEngine();
- $engine->setViewer($viewer);
- $saved = $engine->buildSavedQueryFromBuiltin('active');
- $query = $engine->buildQueryFromSavedQuery($saved);
- $pager = $engine->newPagerForSavedQuery($saved);
- $pager->setPageSize(5);
- $results = $engine->executeQuery($query, $pager);
- $view = $engine->renderResults($results, $saved);
+ return id(new PhabricatorDashboardPanel())
+ ->setPanelType($panel_type);
+ }
- $title = pht('Active Repositories');
- $href = '/diffusion/';
+ private function renderPanel(PhabricatorDashboardPanel $panel) {
+ $viewer = $this->getViewer();
- return $this->buildHomepagePanel($title, $href, $view);
+ return id(new PhabricatorDashboardPanelRenderingEngine())
+ ->setViewer($viewer)
+ ->setPanel($panel)
+ ->setParentPanelPHIDs(array())
+ ->renderPanel();
}
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Feb 24, 2:25 AM (14 h, 14 m)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7188487
Default Alt Text
D20333.diff (6 KB)
Attached To
Mode
D20333: Use real Dashboard Panels to render the default hard-coded homepage, not hacky fake panels
Attached
Detach File
Event Timeline
Log In to Comment