$this->getInboundEmailSupportLink(), ), pht('Learn More'))); } protected function getCustomCapabilities() { return array( FilesDefaultViewCapability::CAPABILITY => array( 'caption' => pht('Default view policy for newly created files.'), 'template' => PhabricatorFileFilePHIDType::TYPECONST, 'capability' => PhabricatorPolicyCapability::CAN_VIEW, ), ); } public function getMonograms() { return array('F'); } public function getRoutes() { return array( '/F(?P[1-9]\d*)(?:\$(?P\d+(?:-\d+)?))?' => 'PhabricatorFileViewController', '/file/' => array( '(query/(?P[^/]+)/)?' => 'PhabricatorFileListController', 'view/(?P[1-9]\d*)/'. '(?:(?P[^/]+)/)?'. '(?:\$(?P\d+(?:-\d+)?))?' => 'PhabricatorFileViewController', 'info/(?P[^/]+)/' => 'PhabricatorFileViewController', 'upload/' => 'PhabricatorFileUploadController', 'dropupload/' => 'PhabricatorFileDropUploadController', 'compose/' => 'PhabricatorFileComposeController', 'thread/(?P[^/]+)/' => 'PhabricatorFileLightboxController', 'delete/(?P[1-9]\d*)/' => 'PhabricatorFileDeleteController', $this->getEditRoutePattern('edit/') => 'PhabricatorFileEditController', 'imageproxy/' => 'PhabricatorFileImageProxyController', 'transforms/(?P[1-9]\d*)/' => 'PhabricatorFileTransformListController', 'uploaddialog/(?Psingle/)?' => 'PhabricatorFileUploadDialogController', 'iconset/(?P[^/]+)/' => array( 'select/' => 'PhabricatorFileIconSetSelectController', ), 'document/(?P[^/]+)/(?P[^/]+)/' => 'PhabricatorFileDocumentController', 'ui/' => array( 'detach/(?P[^/]+)/(?P[^/]+)/' => 'PhabricatorFileDetachController', 'curtain/' => array( 'list/(?P[^/]+)/' => 'PhabricatorFileUICurtainListController', 'attach/(?P[^/]+)/(?P[^/]+)/' => 'PhabricatorFileUICurtainAttachController', ), ), ) + $this->getResourceSubroutes(), ); } public function getResourceRoutes() { return array( '/file/' => $this->getResourceSubroutes(), ); } private function getResourceSubroutes() { return array( '(?Pdata|download)/'. '(?:@(?P[^/]+)/)?'. '(?P[^/]+)/'. '(?P[^/]+)/'. '(?:(?P[^/]+)/)?'. '.*' => 'PhabricatorFileDataController', 'xform/'. '(?:@(?P[^/]+)/)?'. '(?P[^/]+)/'. '(?P[^/]+)/'. '(?P[^/]+)/' => 'PhabricatorFileTransformController', ); } public function getMailCommandObjects() { return array( 'file' => array( 'name' => pht('Email Commands: Files'), 'header' => pht('Interacting with Files'), 'object' => new PhabricatorFile(), 'summary' => pht( 'This page documents the commands you can use to interact with '. 'files.'), ), ); } public function getQuicksandURIPatternBlacklist() { return array( '/file/(data|download)/.*', ); } }