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
This commit is contained in:
committed by
epriestley
parent
e990488889
commit
5660c901ef
@@ -603,6 +603,7 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorApplicationConfigOptions' => 'applications/config/option/PhabricatorApplicationConfigOptions.php',
|
'PhabricatorApplicationConfigOptions' => 'applications/config/option/PhabricatorApplicationConfigOptions.php',
|
||||||
'PhabricatorApplicationCountdown' => 'applications/countdown/application/PhabricatorApplicationCountdown.php',
|
'PhabricatorApplicationCountdown' => 'applications/countdown/application/PhabricatorApplicationCountdown.php',
|
||||||
'PhabricatorApplicationDaemons' => 'applications/daemon/application/PhabricatorApplicationDaemons.php',
|
'PhabricatorApplicationDaemons' => 'applications/daemon/application/PhabricatorApplicationDaemons.php',
|
||||||
|
'PhabricatorApplicationDetailViewController' => 'applications/meta/controller/PhabricatorApplicationDetailViewController.php',
|
||||||
'PhabricatorApplicationDifferential' => 'applications/differential/application/PhabricatorApplicationDifferential.php',
|
'PhabricatorApplicationDifferential' => 'applications/differential/application/PhabricatorApplicationDifferential.php',
|
||||||
'PhabricatorApplicationDiffusion' => 'applications/diffusion/application/PhabricatorApplicationDiffusion.php',
|
'PhabricatorApplicationDiffusion' => 'applications/diffusion/application/PhabricatorApplicationDiffusion.php',
|
||||||
'PhabricatorApplicationDiviner' => 'applications/diviner/application/PhabricatorApplicationDiviner.php',
|
'PhabricatorApplicationDiviner' => 'applications/diviner/application/PhabricatorApplicationDiviner.php',
|
||||||
@@ -1997,6 +1998,7 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorApplicationConfigOptions' => 'Phobject',
|
'PhabricatorApplicationConfigOptions' => 'Phobject',
|
||||||
'PhabricatorApplicationCountdown' => 'PhabricatorApplication',
|
'PhabricatorApplicationCountdown' => 'PhabricatorApplication',
|
||||||
'PhabricatorApplicationDaemons' => 'PhabricatorApplication',
|
'PhabricatorApplicationDaemons' => 'PhabricatorApplication',
|
||||||
|
'PhabricatorApplicationDetailViewController' => 'PhabricatorApplicationsController',
|
||||||
'PhabricatorApplicationDifferential' => 'PhabricatorApplication',
|
'PhabricatorApplicationDifferential' => 'PhabricatorApplication',
|
||||||
'PhabricatorApplicationDiffusion' => 'PhabricatorApplication',
|
'PhabricatorApplicationDiffusion' => 'PhabricatorApplication',
|
||||||
'PhabricatorApplicationDiviner' => 'PhabricatorApplication',
|
'PhabricatorApplicationDiviner' => 'PhabricatorApplication',
|
||||||
|
|||||||
@@ -26,6 +26,8 @@ final class PhabricatorApplicationApplications extends PhabricatorApplication {
|
|||||||
return array(
|
return array(
|
||||||
'/applications/' => array(
|
'/applications/' => array(
|
||||||
'' => 'PhabricatorApplicationsListController',
|
'' => 'PhabricatorApplicationsListController',
|
||||||
|
'view/(?P<application>\w+)/' =>
|
||||||
|
'PhabricatorApplicationDetailViewController',
|
||||||
|
|
||||||
),
|
),
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,77 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhabricatorApplicationDetailViewController
|
||||||
|
extends PhabricatorApplicationsController{
|
||||||
|
|
||||||
|
private $application;
|
||||||
|
|
||||||
|
public function willProcessRequest(array $data) {
|
||||||
|
$this->application = $data['application'];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function processRequest() {
|
||||||
|
$request = $this->getRequest();
|
||||||
|
$user = $request->getUser();
|
||||||
|
|
||||||
|
$selected = null;
|
||||||
|
$applications = PhabricatorApplication::getAllInstalledApplications();
|
||||||
|
|
||||||
|
foreach ($applications as $application) {
|
||||||
|
if (get_class($application) == $this->application) {
|
||||||
|
$selected = $application;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$selected) {
|
||||||
|
return new Aphront404Response();
|
||||||
|
}
|
||||||
|
|
||||||
|
$title = $selected->getName();
|
||||||
|
|
||||||
|
$crumbs = $this->buildApplicationCrumbs();
|
||||||
|
$crumbs->addCrumb(
|
||||||
|
id(new PhabricatorCrumbView())
|
||||||
|
->setName(pht('Applications'))
|
||||||
|
->setHref($this->getApplicationURI()));
|
||||||
|
|
||||||
|
$properties = $this->buildPropertyView($selected);
|
||||||
|
$actions = $this->buildActionView($user);
|
||||||
|
|
||||||
|
return $this->buildApplicationPage(
|
||||||
|
array(
|
||||||
|
$crumbs,
|
||||||
|
id(new PhabricatorHeaderView())->setHeader($title),
|
||||||
|
$actions,
|
||||||
|
$properties,
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'title' => $title,
|
||||||
|
'device' => true,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
private function buildPropertyView(PhabricatorApplication $selected) {
|
||||||
|
$properties = new PhabricatorPropertyListView();
|
||||||
|
|
||||||
|
$properties->addProperty(
|
||||||
|
pht('Status'), pht('Installed'));
|
||||||
|
|
||||||
|
$properties->addProperty(
|
||||||
|
pht('Description'), $selected->getShortDescription());
|
||||||
|
|
||||||
|
return $properties;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function buildActionView(PhabricatorUser $user) {
|
||||||
|
|
||||||
|
return id(new PhabricatorActionListView())
|
||||||
|
->setUser($user)
|
||||||
|
->addAction(
|
||||||
|
id(new PhabricatorActionView())
|
||||||
|
->setName(pht('Uninstall'))
|
||||||
|
->setIcon('delete')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -45,16 +45,16 @@ final class PhabricatorApplicationsListController
|
|||||||
|
|
||||||
|
|
||||||
private function buildInstalledApplicationsList(array $applications) {
|
private function buildInstalledApplicationsList(array $applications) {
|
||||||
|
$list = new PhabricatorObjectItemListView();
|
||||||
|
|
||||||
$list = new PhabricatorObjectItemListView();
|
foreach ($applications as $application) {
|
||||||
foreach ($applications as $applications) {
|
|
||||||
$item = id(new PhabricatorObjectItemView())
|
$item = id(new PhabricatorObjectItemView())
|
||||||
->setHeader($applications->getName())
|
->setHeader($application->getName())
|
||||||
|
->setHref('/applications/view/'.get_class($application).'/')
|
||||||
->addAttribute(
|
->addAttribute(
|
||||||
phutil_escape_html($applications->getShortDescription()));
|
phutil_escape_html($application->getShortDescription()));
|
||||||
$list->addItem($item);
|
$list->addItem($item);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $list;
|
return $list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user