From 5815c7e51b4f9a22e95ad94f82069da30aabf267 Mon Sep 17 00:00:00 2001 From: Afaque Hussain Date: Sat, 19 Jan 2013 13:46:48 -0800 Subject: [PATCH] Initial Commint Summary: Created "Applications" application which lists all the installed applications in phabricator. Test Plan: Navigated to localphabricatorinstall.com/applications and check whether it actually shows the list of all installed applications. Reviewers: epriestley Reviewed By: epriestley CC: aran, Korvin Maniphest Tasks: T2352 Differential Revision: https://secure.phabricator.com/D4548 --- src/__phutil_library_map__.php | 4 ++ .../PhabricatorApplicationApplications.php | 16 +++-- .../PhabricatorApplicationsController.php | 24 ++++++++ .../PhabricatorApplicationsListController.php | 61 +++++++++++++++++++ 4 files changed, 100 insertions(+), 5 deletions(-) create mode 100644 src/applications/meta/controller/PhabricatorApplicationsController.php create mode 100644 src/applications/meta/controller/PhabricatorApplicationsListController.php diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index f0b3834bef..74a03f6d51 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -648,6 +648,8 @@ phutil_register_library_map(array( 'PhabricatorApplicationTransactionView' => 'applications/transactions/view/PhabricatorApplicationTransactionView.php', 'PhabricatorApplicationTransactions' => 'applications/transactions/application/PhabricatorApplicationTransactions.php', 'PhabricatorApplicationUIExamples' => 'applications/uiexample/application/PhabricatorApplicationUIExamples.php', + 'PhabricatorApplicationsController' => 'applications/meta/controller/PhabricatorApplicationsController.php', + 'PhabricatorApplicationsListController' => 'applications/meta/controller/PhabricatorApplicationsListController.php', 'PhabricatorAuditActionConstants' => 'applications/audit/constants/PhabricatorAuditActionConstants.php', 'PhabricatorAuditAddCommentController' => 'applications/audit/controller/PhabricatorAuditAddCommentController.php', 'PhabricatorAuditComment' => 'applications/audit/storage/PhabricatorAuditComment.php', @@ -2037,6 +2039,8 @@ phutil_register_library_map(array( 'PhabricatorApplicationTransactionView' => 'AphrontView', 'PhabricatorApplicationTransactions' => 'PhabricatorApplication', 'PhabricatorApplicationUIExamples' => 'PhabricatorApplication', + 'PhabricatorApplicationsController' => 'PhabricatorController', + 'PhabricatorApplicationsListController' => 'PhabricatorApplicationsController', 'PhabricatorAuditAddCommentController' => 'PhabricatorAuditController', 'PhabricatorAuditComment' => array( diff --git a/src/applications/meta/application/PhabricatorApplicationApplications.php b/src/applications/meta/application/PhabricatorApplicationApplications.php index 5a85d55283..488b385b88 100644 --- a/src/applications/meta/application/PhabricatorApplicationApplications.php +++ b/src/applications/meta/application/PhabricatorApplicationApplications.php @@ -7,17 +7,13 @@ final class PhabricatorApplicationApplications extends PhabricatorApplication { } public function getShortDescription() { - return 'Manage Applications'; + return 'Installed Applications'; } public function getIconName() { return 'applications'; } - public function getRoutes() { - return array(); - } - public function getTitleGlyph() { return "\xE0\xBC\x84"; } @@ -26,5 +22,15 @@ final class PhabricatorApplicationApplications extends PhabricatorApplication { return false; } + public function getRoutes() { + return array( + '/applications/' => array( + '' => 'PhabricatorApplicationsListController', + + ), + + ); + } + } diff --git a/src/applications/meta/controller/PhabricatorApplicationsController.php b/src/applications/meta/controller/PhabricatorApplicationsController.php new file mode 100644 index 0000000000..c64700bae8 --- /dev/null +++ b/src/applications/meta/controller/PhabricatorApplicationsController.php @@ -0,0 +1,24 @@ +getRequest()->getUser(); + + $nav = new AphrontSideNavFilterView(); + $nav->setBaseURI(new PhutilURI($this->getApplicationURI())); + $nav->addLabel(pht('Installed Applications')); + $nav->addFilter('/', pht('Applications')); + + return $nav; + } + + public function buildApplicationMenu() { + return $this->buildSideNavView(null, true)->getMenu(); + } + +} diff --git a/src/applications/meta/controller/PhabricatorApplicationsListController.php b/src/applications/meta/controller/PhabricatorApplicationsListController.php new file mode 100644 index 0000000000..36809159e6 --- /dev/null +++ b/src/applications/meta/controller/PhabricatorApplicationsListController.php @@ -0,0 +1,61 @@ +getRequest(); + $user = $request->getUser(); + + $nav = $this->buildSideNavView(); + $nav->selectFilter('/'); + + $applications = PhabricatorApplication::getAllInstalledApplications(); + + $list = $this->buildInstalledApplicationsList($applications); + + $title = pht('Installed Applications'); + + $header = id(new PhabricatorHeaderView()) + ->setHeader($title); + + $nav->appendChild( + array( + $header, + $list + )); + + $crumbs = $this + ->buildApplicationCrumbs() + ->addCrumb( + id(new PhabricatorCrumbView()) + ->setName(pht('Applications')) + ->setHref($this->getApplicationURI())); + + $nav->setCrumbs($crumbs); + + return $this->buildApplicationPage( + $nav, + array( + 'title' => $title, + 'device' => true, + ) + ); + } + + + private function buildInstalledApplicationsList(array $applications) { + + $list = new PhabricatorObjectItemListView(); + foreach ($applications as $applications) { + $item = id(new PhabricatorObjectItemView()) + ->setHeader($applications->getName()) + ->addAttribute( + phutil_escape_html($applications->getShortDescription())); + $list->addItem($item); + } + + return $list; + } + +}