3
final class PhabricatorDiffusionApplication extends PhabricatorApplication {
5
public function getName() {
6
return pht('Diffusion');
9
public function getShortDescription() {
10
return pht('Host and Browse Repositories');
13
public function getBaseURI() {
17
public function getIconName() {
21
public function isPinnedByDefault(PhabricatorUser $viewer) {
25
public function getHelpURI() {
26
return PhabricatorEnv::getDoclink('Diffusion User Guide');
29
public function getFactObjectsForAnalysis() {
31
new PhabricatorRepositoryCommit(),
35
public function getEventListeners() {
37
new DiffusionHovercardEventListener(),
41
public function getRemarkupRules() {
43
new DiffusionRepositoryRemarkupRule(),
44
new DiffusionCommitRemarkupRule(),
48
public function getRoutes() {
50
'/r(?P<callsign>[A-Z]+)(?P<commit>[a-z0-9]+)'
51
=> 'DiffusionCommitController',
52
'/diffusion/' => array(
53
'(?:query/(?P<queryKey>[^/]+)/)?'
54
=> 'DiffusionRepositoryListController',
55
'new/' => 'DiffusionRepositoryNewController',
56
'(?P<edit>create)/' => 'DiffusionRepositoryCreateController',
57
'(?P<edit>import)/' => 'DiffusionRepositoryCreateController',
59
'(?:query/(?P<queryKey>[^/]+)/)?' => 'DiffusionPushLogListController',
60
'view/(?P<id>\d+)/' => 'DiffusionPushEventViewController',
62
'(?P<callsign>[A-Z]+)/' => array(
63
'' => 'DiffusionRepositoryController',
65
'repository/(?P<dblob>.*)' => 'DiffusionRepositoryController',
66
'change/(?P<dblob>.*)' => 'DiffusionChangeController',
67
'history/(?P<dblob>.*)' => 'DiffusionHistoryController',
68
'browse/(?P<dblob>.*)' => 'DiffusionBrowseMainController',
69
'lastmodified/(?P<dblob>.*)' => 'DiffusionLastModifiedController',
70
'diff/' => 'DiffusionDiffController',
71
'tags/(?P<dblob>.*)' => 'DiffusionTagListController',
72
'branches/(?P<dblob>.*)' => 'DiffusionBranchTableController',
73
'lint/(?P<dblob>.*)' => 'DiffusionLintController',
74
'commit/(?P<commit>[a-z0-9]+)/branches/'
75
=> 'DiffusionCommitBranchesController',
76
'commit/(?P<commit>[a-z0-9]+)/tags/'
77
=> 'DiffusionCommitTagsController',
78
'commit/(?P<commit>[a-z0-9]+)/edit/'
79
=> 'DiffusionCommitEditController',
81
'' => 'DiffusionRepositoryEditMainController',
82
'basic/' => 'DiffusionRepositoryEditBasicController',
83
'encoding/' => 'DiffusionRepositoryEditEncodingController',
84
'activate/' => 'DiffusionRepositoryEditActivateController',
85
'dangerous/' => 'DiffusionRepositoryEditDangerousController',
86
'branches/' => 'DiffusionRepositoryEditBranchesController',
87
'subversion/' => 'DiffusionRepositoryEditSubversionController',
88
'actions/' => 'DiffusionRepositoryEditActionsController',
89
'(?P<edit>remote)/' => 'DiffusionRepositoryCreateController',
90
'(?P<edit>policy)/' => 'DiffusionRepositoryCreateController',
91
'local/' => 'DiffusionRepositoryEditLocalController',
92
'delete/' => 'DiffusionRepositoryEditDeleteController',
93
'hosting/' => 'DiffusionRepositoryEditHostingController',
94
'(?P<serve>serve)/' => 'DiffusionRepositoryEditHostingController',
95
'update/' => 'DiffusionRepositoryEditUpdateController',
97
'pathtree/(?P<dblob>.*)' => 'DiffusionPathTreeController',
99
'edit/(?:(?P<id>\d+)/)?' => 'DiffusionMirrorEditController',
100
'delete/(?P<id>\d+)/' => 'DiffusionMirrorDeleteController',
104
// NOTE: This must come after the rule above; it just gives us a
105
// catch-all for serving repositories over HTTP. We must accept
106
// requests without the trailing "/" because SVN commands don't
107
// necessarily include it.
108
'(?P<callsign>[A-Z]+)(/|$).*' => 'DiffusionRepositoryDefaultController',
111
'edit/(?P<phid>[^/]+)/' => 'DiffusionInlineCommentController',
112
'preview/(?P<phid>[^/]+)/'
113
=> 'DiffusionInlineCommentPreviewController',
115
'services/' => array(
117
'complete/' => 'DiffusionPathCompleteController',
118
'validate/' => 'DiffusionPathValidateController',
121
'symbol/(?P<name>[^/]+)/' => 'DiffusionSymbolController',
122
'external/' => 'DiffusionExternalController',
123
'lint/' => 'DiffusionLintController',
128
public function getApplicationOrder() {
132
protected function getCustomCapabilities() {
134
DiffusionDefaultViewCapability::CAPABILITY => array(),
135
DiffusionDefaultEditCapability::CAPABILITY => array(
136
'default' => PhabricatorPolicies::POLICY_ADMIN,
138
DiffusionDefaultPushCapability::CAPABILITY => array(),
139
DiffusionCreateRepositoriesCapability::CAPABILITY => array(
140
'default' => PhabricatorPolicies::POLICY_ADMIN,