@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 PhabricatorPhameApplication extends PhabricatorApplication {
4
5 public function getName() {
6 return pht('Phame');
7 }
8
9 public function getBaseURI() {
10 return '/phame/';
11 }
12
13 public function getIcon() {
14 return 'fa-feed';
15 }
16
17 public function getShortDescription() {
18 return pht('Internal and External Blogs');
19 }
20
21 public function getTitleGlyph() {
22 return "\xe2\x9c\xa9";
23 }
24
25 public function getHelpDocumentationArticles(PhabricatorUser $viewer) {
26 return array(
27 array(
28 'name' => pht('Phame User Guide'),
29 'href' => PhabricatorEnv::getDoclink('Phame User Guide'),
30 ),
31 );
32 }
33
34 public function getMonograms() {
35 return array('J');
36 }
37
38 public function getRoutes() {
39 return array(
40 '/J(?P<id>[1-9]\d*)' => 'PhamePostViewController',
41 '/phame/' => array(
42 '' => 'PhameHomeController',
43
44 // NOTE: The live routes include an initial "/", so leave it off
45 // this route.
46 '(?P<live>live)/(?P<blogID>\d+)' => $this->getLiveRoutes(),
47 'post/' => array(
48 '(?:query/(?P<queryKey>[^/]+)/)?' => 'PhamePostListController',
49 'blogger/(?P<bloggername>[\w\.-_]+)/' => 'PhamePostListController',
50 $this->getEditRoutePattern('edit/')
51 => 'PhamePostEditController',
52 'history/(?P<id>\d+)/' => 'PhamePostHistoryController',
53 'view/(?P<id>\d+)/(?:(?P<slug>[^/]+)/)?' => 'PhamePostViewController',
54 '(?P<action>publish|unpublish)/(?P<id>\d+)/'
55 => 'PhamePostPublishController',
56 'preview/' => 'PhabricatorMarkupPreviewController',
57 'move/(?P<id>\d+)/' => 'PhamePostMoveController',
58 'archive/(?P<id>\d+)/' => 'PhamePostArchiveController',
59 'header/(?P<id>[1-9]\d*)/' => 'PhamePostHeaderPictureController',
60 ),
61 'blog/' => array(
62 '(?:query/(?P<queryKey>[^/]+)/)?' => 'PhameBlogListController',
63 'archive/(?P<id>[^/]+)/' => 'PhameBlogArchiveController',
64 $this->getEditRoutePattern('edit/')
65 => 'PhameBlogEditController',
66 'view/(?P<blogID>\d+)/' => 'PhameBlogViewController',
67 'manage/(?P<id>[^/]+)/' => 'PhameBlogManageController',
68 'feed/(?P<id>[^/]+)/' => 'PhameBlogFeedController',
69 'picture/(?P<id>[1-9]\d*)/' => 'PhameBlogProfilePictureController',
70 'header/(?P<id>[1-9]\d*)/' => 'PhameBlogHeaderPictureController',
71 ),
72 ),
73 );
74 }
75
76 public function getBlogRoutes() {
77 return $this->getLiveRoutes() + array(
78 '/status/' => 'PhabricatorStatusController',
79 '/favicon.ico' => 'PhabricatorFaviconController',
80 '/robots.txt' => 'PhabricatorRobotsBlogController',
81 );
82 }
83
84 private function getLiveRoutes() {
85 return array(
86 '/' => array(
87 '' => 'PhameBlogViewController',
88 'post/(?P<id>\d+)/(?:(?P<slug>[^/]+)/)?' => 'PhamePostViewController',
89 ),
90
91 );
92 }
93
94 public function getQuicksandURIPatternBlacklist() {
95 return array(
96 '/phame/live/.*',
97 );
98 }
99
100 public function getRemarkupRules() {
101 return array(
102 new PhamePostRemarkupRule(),
103 );
104 }
105
106
107 protected function getCustomCapabilities() {
108 return array(
109 PhameBlogCreateCapability::CAPABILITY => array(
110 'default' => PhabricatorPolicies::POLICY_USER,
111 'caption' => pht('Default create policy for blogs.'),
112 ),
113 );
114 }
115
116 public function getApplicationSearchDocumentTypes() {
117 return array(
118 PhabricatorPhameBlogPHIDType::TYPECONST,
119 PhabricatorPhamePostPHIDType::TYPECONST,
120 );
121 }
122
123}