Skip to content

Commit 5660c90

Browse files
Afaque Hussainepriestley
authored andcommitted
Application Detail View
Summary: Added Applications Details View Applications Detail View Test Plan: In "Applications" application, clicked on each application to check whether the each application detail view is displayed. Reviewers: epriestley Reviewed By: epriestley CC: aran, Korvin Differential Revision: https://secure.phabricator.com/D4615
1 parent e990488 commit 5660c90

File tree

4 files changed

+86
-5
lines changed

4 files changed

+86
-5
lines changed

src/__phutil_library_map__.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -603,6 +603,7 @@
603603
'PhabricatorApplicationConfigOptions' => 'applications/config/option/PhabricatorApplicationConfigOptions.php',
604604
'PhabricatorApplicationCountdown' => 'applications/countdown/application/PhabricatorApplicationCountdown.php',
605605
'PhabricatorApplicationDaemons' => 'applications/daemon/application/PhabricatorApplicationDaemons.php',
606+
'PhabricatorApplicationDetailViewController' => 'applications/meta/controller/PhabricatorApplicationDetailViewController.php',
606607
'PhabricatorApplicationDifferential' => 'applications/differential/application/PhabricatorApplicationDifferential.php',
607608
'PhabricatorApplicationDiffusion' => 'applications/diffusion/application/PhabricatorApplicationDiffusion.php',
608609
'PhabricatorApplicationDiviner' => 'applications/diviner/application/PhabricatorApplicationDiviner.php',
@@ -1997,6 +1998,7 @@
19971998
'PhabricatorApplicationConfigOptions' => 'Phobject',
19981999
'PhabricatorApplicationCountdown' => 'PhabricatorApplication',
19992000
'PhabricatorApplicationDaemons' => 'PhabricatorApplication',
2001+
'PhabricatorApplicationDetailViewController' => 'PhabricatorApplicationsController',
20002002
'PhabricatorApplicationDifferential' => 'PhabricatorApplication',
20012003
'PhabricatorApplicationDiffusion' => 'PhabricatorApplication',
20022004
'PhabricatorApplicationDiviner' => 'PhabricatorApplication',

src/applications/meta/application/PhabricatorApplicationApplications.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ public function getRoutes() {
2626
return array(
2727
'/applications/' => array(
2828
'' => 'PhabricatorApplicationsListController',
29+
'view/(?P<application>\w+)/' =>
30+
'PhabricatorApplicationDetailViewController',
2931

3032
),
3133

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
<?php
2+
3+
final class PhabricatorApplicationDetailViewController
4+
extends PhabricatorApplicationsController{
5+
6+
private $application;
7+
8+
public function willProcessRequest(array $data) {
9+
$this->application = $data['application'];
10+
}
11+
12+
public function processRequest() {
13+
$request = $this->getRequest();
14+
$user = $request->getUser();
15+
16+
$selected = null;
17+
$applications = PhabricatorApplication::getAllInstalledApplications();
18+
19+
foreach ($applications as $application) {
20+
if (get_class($application) == $this->application) {
21+
$selected = $application;
22+
break;
23+
}
24+
}
25+
26+
if (!$selected) {
27+
return new Aphront404Response();
28+
}
29+
30+
$title = $selected->getName();
31+
32+
$crumbs = $this->buildApplicationCrumbs();
33+
$crumbs->addCrumb(
34+
id(new PhabricatorCrumbView())
35+
->setName(pht('Applications'))
36+
->setHref($this->getApplicationURI()));
37+
38+
$properties = $this->buildPropertyView($selected);
39+
$actions = $this->buildActionView($user);
40+
41+
return $this->buildApplicationPage(
42+
array(
43+
$crumbs,
44+
id(new PhabricatorHeaderView())->setHeader($title),
45+
$actions,
46+
$properties,
47+
),
48+
array(
49+
'title' => $title,
50+
'device' => true,
51+
));
52+
}
53+
54+
private function buildPropertyView(PhabricatorApplication $selected) {
55+
$properties = new PhabricatorPropertyListView();
56+
57+
$properties->addProperty(
58+
pht('Status'), pht('Installed'));
59+
60+
$properties->addProperty(
61+
pht('Description'), $selected->getShortDescription());
62+
63+
return $properties;
64+
}
65+
66+
private function buildActionView(PhabricatorUser $user) {
67+
68+
return id(new PhabricatorActionListView())
69+
->setUser($user)
70+
->addAction(
71+
id(new PhabricatorActionView())
72+
->setName(pht('Uninstall'))
73+
->setIcon('delete')
74+
);
75+
}
76+
77+
}

src/applications/meta/controller/PhabricatorApplicationsListController.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,16 +45,16 @@ public function processRequest() {
4545

4646

4747
private function buildInstalledApplicationsList(array $applications) {
48+
$list = new PhabricatorObjectItemListView();
4849

49-
$list = new PhabricatorObjectItemListView();
50-
foreach ($applications as $applications) {
50+
foreach ($applications as $application) {
5151
$item = id(new PhabricatorObjectItemView())
52-
->setHeader($applications->getName())
52+
->setHeader($application->getName())
53+
->setHref('/applications/view/'.get_class($application).'/')
5354
->addAttribute(
54-
phutil_escape_html($applications->getShortDescription()));
55+
phutil_escape_html($application->getShortDescription()));
5556
$list->addItem($item);
5657
}
57-
5858
return $list;
5959
}
6060

0 commit comments

Comments
 (0)