@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 PhabricatorEditEngineConfigurationListController
4 extends PhabricatorEditEngineController {
5
6 public function shouldAllowPublic() {
7 return true;
8 }
9
10 public function handleRequest(AphrontRequest $request) {
11 $viewer = $this->getViewer();
12
13 $engine_key = $request->getURIData('engineKey');
14 $this->setEngineKey($engine_key);
15
16 $engine = PhabricatorEditEngine::getByKey($viewer, $engine_key);
17 if (!$engine || !$engine->isEngineConfigurable()) {
18 return new Aphront404Response();
19 }
20 $engine->setViewer($viewer);
21
22 $items = array();
23 $items[] = id(new PHUIListItemView())
24 ->setType(PHUIListItemView::TYPE_LABEL)
25 ->setName(pht('Form Order'));
26
27 $sort_create_uri = "/transactions/editengine/{$engine_key}/sort/create/";
28 $sort_edit_uri = "/transactions/editengine/{$engine_key}/sort/edit/";
29
30 $builtins = $engine->getBuiltinEngineConfigurations();
31 $builtin = head($builtins);
32
33 $can_sort = PhabricatorPolicyFilter::hasCapability(
34 $viewer,
35 $builtin,
36 PhabricatorPolicyCapability::CAN_EDIT);
37
38 $items[] = id(new PHUIListItemView())
39 ->setType(PHUIListItemView::TYPE_LINK)
40 ->setName(pht('Reorder Create Forms'))
41 ->setHref($sort_create_uri)
42 ->setWorkflow(true)
43 ->setDisabled(!$can_sort);
44
45 $items[] = id(new PHUIListItemView())
46 ->setType(PHUIListItemView::TYPE_LINK)
47 ->setName(pht('Reorder Edit Forms'))
48 ->setHref($sort_edit_uri)
49 ->setWorkflow(true)
50 ->setDisabled(!$can_sort);
51
52 return id(new PhabricatorEditEngineConfigurationSearchEngine())
53 ->setController($this)
54 ->setEngineKey($this->getEngineKey())
55 ->setNavigationItems($items)
56 ->buildResponse();
57 }
58
59 protected function buildApplicationCrumbs() {
60 $viewer = $this->getViewer();
61 $crumbs = parent::buildApplicationCrumbs();
62
63 $target_key = $this->getEngineKey();
64 $target_engine = PhabricatorEditEngine::getByKey($viewer, $target_key);
65
66 id(new PhabricatorEditEngineConfigurationEditEngine())
67 ->setTargetEngine($target_engine)
68 ->setViewer($viewer)
69 ->addActionToCrumbs($crumbs);
70
71 return $crumbs;
72 }
73
74}