@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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

authored by

Afaque Hussain and committed by
epriestley
5815c7e5 06fa7242

+100 -5
+4
src/__phutil_library_map__.php
··· 648 648 'PhabricatorApplicationTransactionView' => 'applications/transactions/view/PhabricatorApplicationTransactionView.php', 649 649 'PhabricatorApplicationTransactions' => 'applications/transactions/application/PhabricatorApplicationTransactions.php', 650 650 'PhabricatorApplicationUIExamples' => 'applications/uiexample/application/PhabricatorApplicationUIExamples.php', 651 + 'PhabricatorApplicationsController' => 'applications/meta/controller/PhabricatorApplicationsController.php', 652 + 'PhabricatorApplicationsListController' => 'applications/meta/controller/PhabricatorApplicationsListController.php', 651 653 'PhabricatorAuditActionConstants' => 'applications/audit/constants/PhabricatorAuditActionConstants.php', 652 654 'PhabricatorAuditAddCommentController' => 'applications/audit/controller/PhabricatorAuditAddCommentController.php', 653 655 'PhabricatorAuditComment' => 'applications/audit/storage/PhabricatorAuditComment.php', ··· 2037 2039 'PhabricatorApplicationTransactionView' => 'AphrontView', 2038 2040 'PhabricatorApplicationTransactions' => 'PhabricatorApplication', 2039 2041 'PhabricatorApplicationUIExamples' => 'PhabricatorApplication', 2042 + 'PhabricatorApplicationsController' => 'PhabricatorController', 2043 + 'PhabricatorApplicationsListController' => 'PhabricatorApplicationsController', 2040 2044 'PhabricatorAuditAddCommentController' => 'PhabricatorAuditController', 2041 2045 'PhabricatorAuditComment' => 2042 2046 array(
+11 -5
src/applications/meta/application/PhabricatorApplicationApplications.php
··· 7 7 } 8 8 9 9 public function getShortDescription() { 10 - return 'Manage Applications'; 10 + return 'Installed Applications'; 11 11 } 12 12 13 13 public function getIconName() { 14 14 return 'applications'; 15 15 } 16 16 17 - public function getRoutes() { 18 - return array(); 19 - } 20 - 21 17 public function getTitleGlyph() { 22 18 return "\xE0\xBC\x84"; 23 19 } 24 20 25 21 public function shouldAppearInLaunchView() { 26 22 return false; 23 + } 24 + 25 + public function getRoutes() { 26 + return array( 27 + '/applications/' => array( 28 + '' => 'PhabricatorApplicationsListController', 29 + 30 + ), 31 + 32 + ); 27 33 } 28 34 29 35 }
+24
src/applications/meta/controller/PhabricatorApplicationsController.php
··· 1 + <?php 2 + 3 + abstract class PhabricatorApplicationsController extends PhabricatorController { 4 + 5 + public function shouldRequireAdmin() { 6 + return true; 7 + } 8 + 9 + public function buildSideNavView($filter = null, $for_app = false) { 10 + $user = $this->getRequest()->getUser(); 11 + 12 + $nav = new AphrontSideNavFilterView(); 13 + $nav->setBaseURI(new PhutilURI($this->getApplicationURI())); 14 + $nav->addLabel(pht('Installed Applications')); 15 + $nav->addFilter('/', pht('Applications')); 16 + 17 + return $nav; 18 + } 19 + 20 + public function buildApplicationMenu() { 21 + return $this->buildSideNavView(null, true)->getMenu(); 22 + } 23 + 24 + }
+61
src/applications/meta/controller/PhabricatorApplicationsListController.php
··· 1 + <?php 2 + 3 + final class PhabricatorApplicationsListController 4 + extends PhabricatorApplicationsController { 5 + 6 + public function processRequest() { 7 + $request = $this->getRequest(); 8 + $user = $request->getUser(); 9 + 10 + $nav = $this->buildSideNavView(); 11 + $nav->selectFilter('/'); 12 + 13 + $applications = PhabricatorApplication::getAllInstalledApplications(); 14 + 15 + $list = $this->buildInstalledApplicationsList($applications); 16 + 17 + $title = pht('Installed Applications'); 18 + 19 + $header = id(new PhabricatorHeaderView()) 20 + ->setHeader($title); 21 + 22 + $nav->appendChild( 23 + array( 24 + $header, 25 + $list 26 + )); 27 + 28 + $crumbs = $this 29 + ->buildApplicationCrumbs() 30 + ->addCrumb( 31 + id(new PhabricatorCrumbView()) 32 + ->setName(pht('Applications')) 33 + ->setHref($this->getApplicationURI())); 34 + 35 + $nav->setCrumbs($crumbs); 36 + 37 + return $this->buildApplicationPage( 38 + $nav, 39 + array( 40 + 'title' => $title, 41 + 'device' => true, 42 + ) 43 + ); 44 + } 45 + 46 + 47 + private function buildInstalledApplicationsList(array $applications) { 48 + 49 + $list = new PhabricatorObjectItemListView(); 50 + foreach ($applications as $applications) { 51 + $item = id(new PhabricatorObjectItemView()) 52 + ->setHeader($applications->getName()) 53 + ->addAttribute( 54 + phutil_escape_html($applications->getShortDescription())); 55 + $list->addItem($item); 56 + } 57 + 58 + return $list; 59 + } 60 + 61 + }