Skip to content

Commit d0c09ef

Browse files
author
epriestley
committed
Add a way to get to the home dashboard on mobile
Summary: Fixes T5320. Adds a "Home" application at the top, for mobile-only. Test Plan: See screenshots. Reviewers: chad Reviewed By: chad Subscribers: epriestley Maniphest Tasks: T5320 Differential Revision: https://secure.phabricator.com/D9509
1 parent 0e1042d commit d0c09ef

File tree

5 files changed

+56
-36
lines changed

5 files changed

+56
-36
lines changed

src/applications/home/application/PhabricatorApplicationHome.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
final class PhabricatorApplicationHome extends PhabricatorApplication {
44

55
public function getBaseURI() {
6-
return '/';
6+
return '/home/';
77
}
88

99
public function getShortDescription() {
10-
return pht('Where the <3 is');
10+
return pht('Command Center');
1111
}
1212

1313
public function getIconName() {
@@ -16,7 +16,8 @@ public function getIconName() {
1616

1717
public function getRoutes() {
1818
return array(
19-
'/(?:(?P<filter>(?:jump))/)?' => 'PhabricatorHomeMainController',
19+
'/' => 'PhabricatorHomeMainController',
20+
'/(?P<only>home)/' => 'PhabricatorHomeMainController',
2021
'/home/' => array(
2122
'create/' => 'PhabricatorHomeQuickCreateController',
2223
),

src/applications/home/controller/PhabricatorHomeController.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,15 @@ public function buildNav() {
4040
$applications[$meta_app] = PhabricatorApplication::getByClass($meta_app);
4141

4242
$tiles = array();
43+
44+
$home_app = new PhabricatorApplicationHome();
45+
46+
$tiles[] = id(new PhabricatorApplicationLaunchView())
47+
->setApplication($home_app)
48+
->setApplicationStatus($home_app->loadStatus($user))
49+
->addClass('phabricator-application-launch-phone-only')
50+
->setUser($user);
51+
4352
foreach ($pinned as $pinned_application) {
4453
if (empty($applications[$pinned_application])) {
4554
continue;

src/applications/home/controller/PhabricatorHomeMainController.php

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,52 +3,57 @@
33
final class PhabricatorHomeMainController
44
extends PhabricatorHomeController {
55

6-
private $filter;
6+
private $only;
77
private $minipanels = array();
88

99
public function shouldAllowPublic() {
1010
return true;
1111
}
1212

1313
public function willProcessRequest(array $data) {
14-
$this->filter = idx($data, 'filter');
14+
$this->only = idx($data, 'only');
1515
}
1616

1717
public function processRequest() {
1818
$user = $this->getRequest()->getUser();
19-
$nav = $this->buildNav();
2019

2120
$dashboard = PhabricatorDashboardInstall::getDashboard(
2221
$user,
2322
$user->getPHID(),
2423
get_class($this->getCurrentApplication()));
2524
if ($dashboard) {
26-
$rendered_dashboard = id(new PhabricatorDashboardRenderingEngine())
25+
$content = id(new PhabricatorDashboardRenderingEngine())
2726
->setViewer($user)
2827
->setDashboard($dashboard)
2928
->renderDashboard();
30-
$nav->appendChild($rendered_dashboard);
3129
} else {
3230
$project_query = new PhabricatorProjectQuery();
3331
$project_query->setViewer($user);
3432
$project_query->withMemberPHIDs(array($user->getPHID()));
3533
$projects = $project_query->execute();
3634

37-
$nav = $this->buildMainResponse($nav, $projects);
35+
$content = $this->buildMainResponse($projects);
3836
}
3937

40-
$nav->appendChild(id(new PhabricatorGlobalUploadTargetView())
41-
->setUser($user));
38+
if (!$this->only) {
39+
$nav = $this->buildNav();
40+
$nav->appendChild(
41+
array(
42+
$content,
43+
id(new PhabricatorGlobalUploadTargetView())->setUser($user),
44+
));
45+
$content = $nav;
46+
}
4247

4348
return $this->buildApplicationPage(
44-
$nav,
49+
$content,
4550
array(
4651
'title' => 'Phabricator',
4752
'device' => true,
4853
));
4954
}
5055

51-
private function buildMainResponse($nav, array $projects) {
56+
private function buildMainResponse(array $projects) {
5257
assert_instances_of($projects, 'PhabricatorProject');
5358
$viewer = $this->getRequest()->getUser();
5459

@@ -94,7 +99,7 @@ private function buildMainResponse($nav, array $projects) {
9499
$revision_panel = null;
95100
}
96101

97-
$content = array(
102+
return array(
98103
$welcome_panel,
99104
$unbreak_panel,
100105
$triage_panel,
@@ -104,11 +109,6 @@ private function buildMainResponse($nav, array $projects) {
104109
$commit_panel,
105110
$this->minipanels,
106111
);
107-
108-
$nav->appendChild($content);
109-
110-
return $nav;
111-
112112
}
113113

114114
private function buildUnbreakNowPanel() {

src/applications/meta/view/PhabricatorApplicationLaunchView.php

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
final class PhabricatorApplicationLaunchView extends AphrontView {
3+
final class PhabricatorApplicationLaunchView extends AphrontTagView {
44

55
private $application;
66
private $status;
@@ -15,7 +15,19 @@ public function setApplicationStatus(array $status) {
1515
return $this;
1616
}
1717

18-
public function render() {
18+
protected function getTagName() {
19+
return $this->application ? 'a' : 'div';
20+
}
21+
22+
protected function getTagAttributes() {
23+
$application = $this->application;
24+
return array(
25+
'class' => array('phabricator-application-launch-container'),
26+
'href' => $application ? $application->getBaseURI() : null,
27+
);
28+
}
29+
30+
protected function getTagContent() {
1931
$application = $this->application;
2032

2133
require_celerity_resource('phabricator-application-launch-view-css');
@@ -124,20 +136,10 @@ public function render() {
124136
'');
125137
}
126138

127-
$classes = array();
128-
$classes[] = 'phabricator-application-launch-container';
129-
130-
$app_button = phutil_tag(
131-
$application ? 'a' : 'div',
132-
array(
133-
'class' => implode(' ', $classes),
134-
'href' => $application ? $application->getBaseURI() : null,
135-
),
136-
array(
137-
$icon,
138-
$content,
139-
));
140-
141-
return $app_button;
139+
return array(
140+
$icon,
141+
$content,
142+
);
142143
}
144+
143145
}

webroot/rsrc/css/application/base/phabricator-application-launch-view.css

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,3 +93,11 @@ div.phabricator-application-launch-container {
9393
.phabricator-application-attention-count {
9494
color: {$sky};
9595
}
96+
97+
a.phabricator-application-launch-phone-only {
98+
display: none;
99+
}
100+
101+
.device-phone a.phabricator-application-launch-phone-only {
102+
display: block;
103+
}

0 commit comments

Comments
 (0)