@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<?php
2
3final class PhabricatorDashboardApplication extends PhabricatorApplication {
4
5 public function getName() {
6 return pht('Dashboards');
7 }
8
9 public function getBaseURI() {
10 return '/dashboard/';
11 }
12
13 public function getTypeaheadURI() {
14 return '/dashboard/console/';
15 }
16
17 public function getShortDescription() {
18 return pht('Create Custom Pages');
19 }
20
21 public function getIcon() {
22 return 'fa-tachometer';
23 }
24
25 public function isPinnedByDefault(PhabricatorUser $viewer) {
26 return true;
27 }
28
29 public function getApplicationOrder() {
30 return 0.160;
31 }
32
33 public function getMonograms() {
34 return array('W');
35 }
36
37 public function getRoutes() {
38 $menu_rules = $this->getProfileMenuRouting(
39 'PhabricatorDashboardPortalViewController');
40
41 return array(
42 '/W(?P<id>\d+)' => 'PhabricatorDashboardPanelViewController',
43 '/dashboard/' => array(
44 '(?:query/(?P<queryKey>[^/]+)/)?'
45 => 'PhabricatorDashboardListController',
46 'view/(?P<id>\d+)/' => 'PhabricatorDashboardViewController',
47 'archive/(?P<id>\d+)/' => 'PhabricatorDashboardArchiveController',
48 $this->getEditRoutePattern('edit/') =>
49 'PhabricatorDashboardEditController',
50 'install/(?P<id>\d+)/'.
51 '(?:(?P<workflowKey>[^/]+)/'.
52 '(?:(?P<modeKey>[^/]+)/)?)?' =>
53 'PhabricatorDashboardInstallController',
54 'console/' => 'PhabricatorDashboardConsoleController',
55 'adjust/(?P<op>remove|add|move)/'
56 => 'PhabricatorDashboardAdjustController',
57 'panel/' => array(
58 'install/(?P<engineKey>[^/]+)/(?:(?P<queryKey>[^/]+)/)?' =>
59 'PhabricatorDashboardQueryPanelInstallController',
60 '(?:query/(?P<queryKey>[^/]+)/)?'
61 => 'PhabricatorDashboardPanelListController',
62 $this->getEditRoutePattern('edit/')
63 => 'PhabricatorDashboardPanelEditController',
64 'render/(?P<id>\d+)/' => 'PhabricatorDashboardPanelRenderController',
65 'archive/(?P<id>\d+)/'
66 => 'PhabricatorDashboardPanelArchiveController',
67 'tabs/(?P<id>\d+)/(?P<op>add|move|remove|rename)/'
68 => 'PhabricatorDashboardPanelTabsController',
69 ),
70 ),
71 '/portal/' => array(
72 $this->getQueryRoutePattern() =>
73 'PhabricatorDashboardPortalListController',
74 $this->getEditRoutePattern('edit/') =>
75 'PhabricatorDashboardPortalEditController',
76 'view/(?P<portalID>\d+)/' => array(
77 '' => 'PhabricatorDashboardPortalViewController',
78 ) + $menu_rules,
79
80 ),
81 );
82 }
83
84 public function getRemarkupRules() {
85 return array(
86 new PhabricatorDashboardRemarkupRule(),
87 );
88 }
89
90 protected function getCustomCapabilities() {
91 return array(
92 PhabricatorDashboardCreateCapability::CAPABILITY => array(
93 'default' => PhabricatorPolicies::POLICY_USER,
94 'caption' => pht('Default create policy for Dashboards.'),
95 ),
96 );
97 }
98
99 public function getApplicationSearchDocumentTypes() {
100 return array(
101 PhabricatorDashboardDashboardPHIDType::TYPECONST,
102 PhabricatorDashboardPanelPHIDType::TYPECONST,
103 PhabricatorDashboardPortalPHIDType::TYPECONST,
104 );
105 }
106
107}