@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 PhabricatorMacroEditEngine
4 extends PhabricatorEditEngine {
5
6 const ENGINECONST = 'macro.image';
7
8 public function getEngineName() {
9 return pht('Macro Image');
10 }
11
12 public function getSummaryHeader() {
13 return pht('Configure Macro Image Forms');
14 }
15
16 public function getSummaryText() {
17 return pht('Configure creation and editing of Macro images.');
18 }
19
20 public function getEngineApplicationClass() {
21 return PhabricatorMacroApplication::class;
22 }
23
24 public function isEngineConfigurable() {
25 return false;
26 }
27
28 protected function newEditableObject() {
29 $viewer = $this->getViewer();
30 return PhabricatorFileImageMacro::initializeNewFileImageMacro($viewer);
31 }
32
33 protected function newObjectQuery() {
34 return new PhabricatorMacroQuery();
35 }
36
37 protected function getObjectCreateTitleText($object) {
38 return pht('Create New Macro');
39 }
40
41 protected function getObjectEditTitleText($object) {
42 return pht('Edit Macro %s', $object->getName());
43 }
44
45 protected function getObjectEditShortText($object) {
46 return $object->getName();
47 }
48
49 protected function getObjectCreateShortText() {
50 return pht('Create Macro');
51 }
52
53 protected function getObjectName() {
54 return pht('Macro');
55 }
56
57 protected function getObjectViewURI($object) {
58 return $object->getViewURI();
59 }
60
61 protected function getEditorURI() {
62 return $this->getApplication()->getApplicationURI('edit/');
63 }
64
65 protected function getCreateNewObjectPolicy() {
66 return $this->getApplication()->getPolicy(
67 PhabricatorMacroManageCapability::CAPABILITY);
68 }
69
70 protected function willConfigureFields($object, array $fields) {
71 if ($this->getIsCreate()) {
72 $subscribers_field = idx($fields,
73 PhabricatorSubscriptionsEditEngineExtension::FIELDKEY);
74 if ($subscribers_field) {
75 // By default, hide the subscribers field when creating a macro
76 // because it makes the workflow SO HARD and wastes SO MUCH TIME.
77 $subscribers_field->setIsHidden(true);
78 }
79 }
80 return $fields;
81 }
82
83 protected function buildCustomEditFields($object) {
84
85 return array(
86 id(new PhabricatorTextEditField())
87 ->setKey('name')
88 ->setLabel(pht('Name'))
89 ->setDescription(pht('Macro name.'))
90 ->setConduitDescription(pht('Name of the macro.'))
91 ->setConduitTypeDescription(pht('New macro name.'))
92 ->setTransactionType(PhabricatorMacroNameTransaction::TRANSACTIONTYPE)
93 ->setIsRequired(true)
94 ->setValue($object->getName()),
95 id(new PhabricatorFileEditField())
96 ->setKey('filePHID')
97 ->setLabel(pht('Image File'))
98 ->setDescription(pht('Image file to import.'))
99 ->setTransactionType(PhabricatorMacroFileTransaction::TRANSACTIONTYPE)
100 ->setConduitDescription(pht('File PHID to import.'))
101 ->setConduitTypeDescription(pht('File PHID.'))
102 ->setValue($object->getFilePHID()),
103 );
104
105 }
106
107}