Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/diffusion/application/PhabricatorDiffusionApplication.php
12242 views
1
<?php
2
3
final class PhabricatorDiffusionApplication extends PhabricatorApplication {
4
5
public function getName() {
6
return pht('Diffusion');
7
}
8
9
public function getShortDescription() {
10
return pht('Host and Browse Repositories');
11
}
12
13
public function getBaseURI() {
14
return '/diffusion/';
15
}
16
17
public function getIcon() {
18
return 'fa-code';
19
}
20
21
public function isPinnedByDefault(PhabricatorUser $viewer) {
22
return true;
23
}
24
25
public function getHelpDocumentationArticles(PhabricatorUser $viewer) {
26
return array(
27
array(
28
'name' => pht('Diffusion User Guide'),
29
'href' => PhabricatorEnv::getDoclink('Diffusion User Guide'),
30
),
31
array(
32
'name' => pht('Audit User Guide'),
33
'href' => PhabricatorEnv::getDoclink('Audit User Guide'),
34
),
35
);
36
}
37
38
public function getRemarkupRules() {
39
return array(
40
new DiffusionCommitRemarkupRule(),
41
new DiffusionRepositoryRemarkupRule(),
42
new DiffusionRepositoryByIDRemarkupRule(),
43
new DiffusionSourceLinkRemarkupRule(),
44
);
45
}
46
47
public function getRoutes() {
48
$repository_routes = array(
49
'/' => array(
50
'' => 'DiffusionRepositoryController',
51
'repository/(?P<dblob>.*)' => 'DiffusionRepositoryController',
52
'change/(?P<dblob>.*)' => 'DiffusionChangeController',
53
'clone/' => 'DiffusionCloneController',
54
'history/(?P<dblob>.*)' => 'DiffusionHistoryController',
55
'browse/(?P<dblob>.*)' => 'DiffusionBrowseController',
56
'document/(?P<dblob>.*)'
57
=> 'DiffusionDocumentController',
58
'blame/(?P<dblob>.*)'
59
=> 'DiffusionBlameController',
60
'lastmodified/(?P<dblob>.*)' => 'DiffusionLastModifiedController',
61
'diff/' => 'DiffusionDiffController',
62
'tags/(?P<dblob>.*)' => 'DiffusionTagListController',
63
'branches/(?P<dblob>.*)' => 'DiffusionBranchTableController',
64
'refs/(?P<dblob>.*)' => 'DiffusionRefTableController',
65
'lint/(?P<dblob>.*)' => 'DiffusionLintController',
66
'commit/(?P<commit>[a-z0-9]+)' => array(
67
'/?' => 'DiffusionCommitController',
68
'/branches/' => 'DiffusionCommitBranchesController',
69
'/tags/' => 'DiffusionCommitTagsController',
70
),
71
'compare/' => 'DiffusionCompareController',
72
'manage/(?:(?P<panel>[^/]+)/)?'
73
=> 'DiffusionRepositoryManagePanelsController',
74
'uri/' => array(
75
'view/(?P<id>[0-9]\d*)/' => 'DiffusionRepositoryURIViewController',
76
'disable/(?P<id>[0-9]\d*)/'
77
=> 'DiffusionRepositoryURIDisableController',
78
$this->getEditRoutePattern('edit/')
79
=> 'DiffusionRepositoryURIEditController',
80
'credential/(?P<id>[0-9]\d*)/(?P<action>edit|remove)/'
81
=> 'DiffusionRepositoryURICredentialController',
82
),
83
'edit/' => array(
84
'activate/' => 'DiffusionRepositoryEditActivateController',
85
'dangerous/' => 'DiffusionRepositoryEditDangerousController',
86
'enormous/' => 'DiffusionRepositoryEditEnormousController',
87
'delete/' => 'DiffusionRepositoryEditDeleteController',
88
'update/' => 'DiffusionRepositoryEditUpdateController',
89
'publish/' => 'DiffusionRepositoryEditPublishingController',
90
'testautomation/' => 'DiffusionRepositoryTestAutomationController',
91
),
92
'pathtree/(?P<dblob>.*)' => 'DiffusionPathTreeController',
93
),
94
95
// NOTE: This must come after the rules above; it just gives us a
96
// catch-all for serving repositories over HTTP. We must accept requests
97
// without the trailing "/" because SVN commands don't necessarily
98
// include it.
99
'(?:/.*)?' => 'DiffusionRepositoryDefaultController',
100
);
101
102
return array(
103
'/(?:'.
104
'r(?P<repositoryCallsign>[A-Z]+)'.
105
'|'.
106
'R(?P<repositoryID>[1-9]\d*):'.
107
')(?P<commit>[a-f0-9]+)'
108
=> 'DiffusionCommitController',
109
110
'/source/(?P<repositoryShortName>[^/]+)'
111
=> $repository_routes,
112
113
'/diffusion/' => array(
114
$this->getQueryRoutePattern()
115
=> 'DiffusionRepositoryListController',
116
$this->getEditRoutePattern('edit/') =>
117
'DiffusionRepositoryEditController',
118
'pushlog/' => array(
119
$this->getQueryRoutePattern() => 'DiffusionPushLogListController',
120
'view/(?P<id>\d+)/' => 'DiffusionPushEventViewController',
121
),
122
'synclog/' => array(
123
$this->getQueryRoutePattern() => 'DiffusionSyncLogListController',
124
),
125
'pulllog/' => array(
126
$this->getQueryRoutePattern() => 'DiffusionPullLogListController',
127
),
128
'(?P<repositoryCallsign>[A-Z]+)' => $repository_routes,
129
'(?P<repositoryID>[1-9]\d*)' => $repository_routes,
130
131
'identity/' => array(
132
$this->getQueryRoutePattern() =>
133
'DiffusionIdentityListController',
134
$this->getEditRoutePattern('edit/') =>
135
'DiffusionIdentityEditController',
136
'view/(?P<id>[^/]+)/' =>
137
'DiffusionIdentityViewController',
138
),
139
140
'inline/' => array(
141
'edit/(?P<phid>[^/]+)/' => 'DiffusionInlineCommentController',
142
),
143
'services/' => array(
144
'path/' => array(
145
'complete/' => 'DiffusionPathCompleteController',
146
'validate/' => 'DiffusionPathValidateController',
147
),
148
),
149
'symbol/(?P<name>[^/]+)/' => 'DiffusionSymbolController',
150
'external/' => 'DiffusionExternalController',
151
'lint/' => 'DiffusionLintController',
152
153
'commit/' => array(
154
$this->getQueryRoutePattern() =>
155
'DiffusionCommitListController',
156
$this->getEditRoutePattern('edit/') =>
157
'DiffusionCommitEditController',
158
),
159
'picture/(?P<id>[0-9]\d*)/'
160
=> 'DiffusionRepositoryProfilePictureController',
161
),
162
);
163
}
164
165
public function getApplicationOrder() {
166
return 0.120;
167
}
168
169
protected function getCustomCapabilities() {
170
return array(
171
DiffusionDefaultViewCapability::CAPABILITY => array(
172
'template' => PhabricatorRepositoryRepositoryPHIDType::TYPECONST,
173
'capability' => PhabricatorPolicyCapability::CAN_VIEW,
174
),
175
DiffusionDefaultEditCapability::CAPABILITY => array(
176
'default' => PhabricatorPolicies::POLICY_ADMIN,
177
'template' => PhabricatorRepositoryRepositoryPHIDType::TYPECONST,
178
'capability' => PhabricatorPolicyCapability::CAN_EDIT,
179
),
180
DiffusionDefaultPushCapability::CAPABILITY => array(
181
'template' => PhabricatorRepositoryRepositoryPHIDType::TYPECONST,
182
),
183
DiffusionCreateRepositoriesCapability::CAPABILITY => array(
184
'default' => PhabricatorPolicies::POLICY_ADMIN,
185
),
186
);
187
}
188
189
public function getMailCommandObjects() {
190
return array(
191
'commit' => array(
192
'name' => pht('Email Commands: Commits'),
193
'header' => pht('Interacting with Commits'),
194
'object' => new PhabricatorRepositoryCommit(),
195
'summary' => pht(
196
'This page documents the commands you can use to interact with '.
197
'commits and audits in Diffusion.'),
198
),
199
);
200
}
201
202
public function getApplicationSearchDocumentTypes() {
203
return array(
204
PhabricatorRepositoryCommitPHIDType::TYPECONST,
205
);
206
}
207
208
}
209
210