@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 PhabricatorSpacesListController
4 extends PhabricatorSpacesController {
5
6 public function shouldAllowPublic() {
7 return true;
8 }
9
10 public function handleRequest(AphrontRequest $request) {
11 $request = $this->getRequest();
12 $controller = id(new PhabricatorApplicationSearchController())
13 ->setQueryKey($request->getURIData('queryKey'))
14 ->setSearchEngine(new PhabricatorSpacesNamespaceSearchEngine())
15 ->setNavigation($this->buildSideNavView());
16
17 return $this->delegateToController($controller);
18 }
19
20 public function buildSideNavView($for_app = false) {
21 $user = $this->getRequest()->getUser();
22
23 $nav = new AphrontSideNavFilterView();
24 $nav->setBaseURI(new PhutilURI($this->getApplicationURI()));
25
26 id(new PhabricatorSpacesNamespaceSearchEngine())
27 ->setViewer($user)
28 ->addNavigationItems($nav->getMenu());
29
30 $nav->selectFilter(null);
31
32 return $nav;
33 }
34
35 protected function buildApplicationCrumbs() {
36 $crumbs = parent::buildApplicationCrumbs();
37
38 $can_create = $this->hasApplicationCapability(
39 PhabricatorSpacesCapabilityCreateSpaces::CAPABILITY);
40
41 $crumbs->addAction(
42 id(new PHUIListItemView())
43 ->setName(pht('Create Space'))
44 ->setHref($this->getApplicationURI('create/'))
45 ->setIcon('fa-plus-square')
46 ->setDisabled(!$can_create)
47 ->setWorkflow(!$can_create));
48
49 return $crumbs;
50 }
51
52}