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