@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 DiffusionRepositorySymbolsManagementPanel
4 extends DiffusionRepositoryManagementPanel {
5
6 const PANELKEY = 'symbols';
7
8 public function getManagementPanelLabel() {
9 return pht('Symbols');
10 }
11
12 public function getManagementPanelOrder() {
13 return 900;
14 }
15
16 public function getManagementPanelGroupKey() {
17 return DiffusionRepositoryManagementIntegrationsPanelGroup::PANELGROUPKEY;
18 }
19
20 public function getManagementPanelIcon() {
21 $repository = $this->getRepository();
22
23 $has_any =
24 $repository->getSymbolLanguages() ||
25 $repository->getSymbolSources();
26
27 if ($has_any) {
28 return 'fa-link';
29 } else {
30 return 'fa-link grey';
31 }
32 }
33
34 protected function getEditEngineFieldKeys() {
35 return array(
36 'symbolLanguages',
37 'symbolRepositoryPHIDs',
38 );
39 }
40
41 public function buildManagementPanelCurtain() {
42 $repository = $this->getRepository();
43 $viewer = $this->getViewer();
44 $action_list = $this->newActionList();
45
46 $can_edit = PhabricatorPolicyFilter::hasCapability(
47 $viewer,
48 $repository,
49 PhabricatorPolicyCapability::CAN_EDIT);
50
51 $symbols_uri = $this->getEditPageURI();
52
53 $action_list->addAction(
54 id(new PhabricatorActionView())
55 ->setIcon('fa-pencil')
56 ->setName(pht('Edit Symbols'))
57 ->setHref($symbols_uri)
58 ->setDisabled(!$can_edit)
59 ->setWorkflow(!$can_edit));
60
61 return $this->newCurtainView()
62 ->setActionList($action_list);
63 }
64
65 public function buildManagementPanelContent() {
66 $repository = $this->getRepository();
67 $viewer = $this->getViewer();
68
69 $view = id(new PHUIPropertyListView())
70 ->setViewer($viewer);
71
72 $languages = $repository->getSymbolLanguages();
73 if ($languages) {
74 $languages = implode(', ', $languages);
75 } else {
76 $languages = phutil_tag('em', array(), pht('Any'));
77 }
78 $view->addProperty(pht('Languages'), $languages);
79
80 $sources = $repository->getSymbolSources();
81 if ($sources) {
82 $sources = $viewer->renderHandleList($sources);
83 } else {
84 $sources = phutil_tag('em', array(), pht('This Repository Only'));
85 }
86 $view->addProperty(pht('Uses Symbols From'), $sources);
87
88 return $this->newBox(pht('Symbols'), $view);
89 }
90
91}