@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.

Make Portals reachable without knowing the URI

Summary:
Depends on D20360. Ref T13275. This makes the "Dashboards" application start on a Drydock-like console page where you pick portals, dashboards, or panels.

Probably the "Dashboards" application should either be renamed to "IntelliknowledgePro" or Portals should be split off into a separate application eventually, but let's see how things go like this for now, since restructuring probably breaks some URIs at least a little bit so I'd like more confidence that we're headed in the right direction before we do it.

Test Plan:
- Visited Dashboards via typeahead, got options for Dashboards/Portals/Panels.
- Visited Portals pages, got simplified crumbs.

Reviewers: amckinley

Reviewed By: amckinley

Maniphest Tasks: T13275

Differential Revision: https://secure.phabricator.com/D20361

+89 -6
+2
src/__phutil_library_map__.php
··· 2907 2907 'PhabricatorDashboardApplication' => 'applications/dashboard/application/PhabricatorDashboardApplication.php', 2908 2908 'PhabricatorDashboardArchiveController' => 'applications/dashboard/controller/PhabricatorDashboardArchiveController.php', 2909 2909 'PhabricatorDashboardArrangeController' => 'applications/dashboard/controller/PhabricatorDashboardArrangeController.php', 2910 + 'PhabricatorDashboardConsoleController' => 'applications/dashboard/controller/PhabricatorDashboardConsoleController.php', 2910 2911 'PhabricatorDashboardController' => 'applications/dashboard/controller/PhabricatorDashboardController.php', 2911 2912 'PhabricatorDashboardDAO' => 'applications/dashboard/storage/PhabricatorDashboardDAO.php', 2912 2913 'PhabricatorDashboardDashboardHasPanelEdgeType' => 'applications/dashboard/edge/PhabricatorDashboardDashboardHasPanelEdgeType.php', ··· 8867 8868 'PhabricatorDashboardApplication' => 'PhabricatorApplication', 8868 8869 'PhabricatorDashboardArchiveController' => 'PhabricatorDashboardController', 8869 8870 'PhabricatorDashboardArrangeController' => 'PhabricatorDashboardProfileController', 8871 + 'PhabricatorDashboardConsoleController' => 'PhabricatorDashboardController', 8870 8872 'PhabricatorDashboardController' => 'PhabricatorController', 8871 8873 'PhabricatorDashboardDAO' => 'PhabricatorLiskDAO', 8872 8874 'PhabricatorDashboardDashboardHasPanelEdgeType' => 'PhabricatorEdgeType',
+5
src/applications/dashboard/application/PhabricatorDashboardApplication.php
··· 10 10 return '/dashboard/'; 11 11 } 12 12 13 + public function getTypeaheadURI() { 14 + return '/dashboard/console/'; 15 + } 16 + 13 17 public function getShortDescription() { 14 18 return pht('Create Custom Pages'); 15 19 } ··· 42 46 'create/' => 'PhabricatorDashboardEditController', 43 47 'edit/(?:(?P<id>\d+)/)?' => 'PhabricatorDashboardEditController', 44 48 'install/(?:(?P<id>\d+)/)?' => 'PhabricatorDashboardInstallController', 49 + 'console/' => 'PhabricatorDashboardConsoleController', 45 50 'addpanel/(?P<id>\d+)/' => 'PhabricatorDashboardAddPanelController', 46 51 'movepanel/(?P<id>\d+)/' => 'PhabricatorDashboardMovePanelController', 47 52 'removepanel/(?P<id>\d+)/'
+72
src/applications/dashboard/controller/PhabricatorDashboardConsoleController.php
··· 1 + <?php 2 + 3 + final class PhabricatorDashboardConsoleController 4 + extends PhabricatorDashboardController { 5 + 6 + public function shouldAllowPublic() { 7 + return true; 8 + } 9 + 10 + public function handleRequest(AphrontRequest $request) { 11 + $viewer = $request->getViewer(); 12 + 13 + $menu = id(new PHUIObjectItemListView()) 14 + ->setUser($viewer) 15 + ->setBig(true); 16 + 17 + $menu->addItem( 18 + id(new PHUIObjectItemView()) 19 + ->setHeader(pht('Portals')) 20 + ->setImageIcon('fa-compass') 21 + ->setHref('/portal/') 22 + ->setClickable(true) 23 + ->addAttribute( 24 + pht( 25 + 'Portals are collections of dashboards, links, and other '. 26 + 'resources that can provide a high-level overview of a '. 27 + 'project.'))); 28 + 29 + $menu->addItem( 30 + id(new PHUIObjectItemView()) 31 + ->setHeader(pht('Dashboards')) 32 + ->setImageIcon('fa-dashboard') 33 + ->setHref($this->getApplicationURI('/')) 34 + ->setClickable(true) 35 + ->addAttribute( 36 + pht( 37 + 'Dashboards organize panels, creating a cohesive page for '. 38 + 'analysis or action.'))); 39 + 40 + $menu->addItem( 41 + id(new PHUIObjectItemView()) 42 + ->setHeader(pht('Panels')) 43 + ->setImageIcon('fa-line-chart') 44 + ->setHref($this->getApplicationURI('panel/')) 45 + ->setClickable(true) 46 + ->addAttribute( 47 + pht( 48 + 'Panels show queries, charts, and other information to provide '. 49 + 'insight on a particular topic.'))); 50 + 51 + $crumbs = $this->buildApplicationCrumbs(); 52 + $crumbs->addTextCrumb(pht('Console')); 53 + $crumbs->setBorder(true); 54 + 55 + $title = pht('Dashboard Console'); 56 + 57 + $box = id(new PHUIObjectBoxView()) 58 + ->setHeaderText($title) 59 + ->setBackground(PHUIObjectBoxView::WHITE_CONFIG) 60 + ->setObjectList($menu); 61 + 62 + $view = id(new PHUITwoColumnView()) 63 + ->setFixed(true) 64 + ->setFooter($box); 65 + 66 + return $this->newPage() 67 + ->setTitle($title) 68 + ->setCrumbs($crumbs) 69 + ->appendChild($view); 70 + } 71 + 72 + }
-3
src/applications/dashboard/controller/PhabricatorDashboardListController.php
··· 28 28 ->setViewer($user) 29 29 ->addNavigationItems($nav->getMenu()); 30 30 31 - $nav->addLabel(pht('Panels')); 32 - $nav->addFilter('panel/', pht('Manage Panels')); 33 - 34 31 $nav->selectFilter(null); 35 32 36 33 return $nav;
+6 -2
src/applications/dashboard/controller/portal/PhabricatorDashboardPortalController.php
··· 4 4 extends PhabricatorDashboardController { 5 5 6 6 protected function buildApplicationCrumbs() { 7 - $crumbs = parent::buildApplicationCrumbs(); 7 + $crumbs = new PHUICrumbsView(); 8 8 9 - $crumbs->addTextCrumb(pht('Portals'), '/portal/'); 9 + $crumbs->addCrumb( 10 + id(new PHUICrumbView()) 11 + ->setHref('/portal/') 12 + ->setName(pht('Portals')) 13 + ->setIcon('fa-compass')); 10 14 11 15 return $crumbs; 12 16 }
+4 -1
src/view/page/PhabricatorStandardPageView.php
··· 872 872 // mobile navigation menu from. 873 873 $application_menu = $controller->buildApplicationMenu(); 874 874 if (!$application_menu) { 875 - $application_menu = $this->getNavigation()->getMenu(); 875 + $navigation = $this->getNavigation(); 876 + if ($navigation) { 877 + $application_menu = $navigation->getMenu(); 878 + } 876 879 } 877 880 $this->applicationMenu = $application_menu; 878 881