@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 NuanceSourceEditEngine
4 extends PhabricatorEditEngine {
5
6 const ENGINECONST = 'nuance.source';
7
8 private $sourceDefinition;
9
10 public function setSourceDefinition(
11 NuanceSourceDefinition $source_definition) {
12 $this->sourceDefinition = $source_definition;
13 return $this;
14 }
15
16 public function getSourceDefinition() {
17 return $this->sourceDefinition;
18 }
19
20 public function isEngineConfigurable() {
21 return false;
22 }
23
24 public function getEngineName() {
25 return pht('Nuance Sources');
26 }
27
28 public function getSummaryHeader() {
29 return pht('Edit Nuance Source Configurations');
30 }
31
32 public function getSummaryText() {
33 return pht('This engine is used to edit Nuance sources.');
34 }
35
36 public function getEngineApplicationClass() {
37 return PhabricatorNuanceApplication::class;
38 }
39
40 protected function newEditableObject() {
41 $viewer = $this->getViewer();
42
43 $definition = $this->getSourceDefinition();
44 if (!$definition) {
45 throw new PhutilInvalidStateException('setSourceDefinition');
46 }
47
48 return NuanceSource::initializeNewSource(
49 $viewer,
50 $definition);
51 }
52
53 protected function newObjectQuery() {
54 return new NuanceSourceQuery();
55 }
56
57 protected function getObjectCreateTitleText($object) {
58 return pht('Create Source');
59 }
60
61 protected function getObjectCreateButtonText($object) {
62 return pht('Create Source');
63 }
64
65 protected function getObjectEditTitleText($object) {
66 return pht('Edit Source: %s', $object->getName());
67 }
68
69 protected function getObjectEditShortText($object) {
70 return pht('Edit Source');
71 }
72
73 protected function getObjectCreateShortText() {
74 return pht('Create Source');
75 }
76
77 protected function getObjectName() {
78 return pht('Source');
79 }
80
81 protected function getEditorURI() {
82 return '/nuance/source/edit/';
83 }
84
85 protected function getObjectCreateCancelURI($object) {
86 return '/nuance/source/';
87 }
88
89 protected function getObjectViewURI($object) {
90 return $object->getURI();
91 }
92
93 protected function buildCustomEditFields($object) {
94 return array(
95 id(new PhabricatorTextEditField())
96 ->setKey('name')
97 ->setLabel(pht('Name'))
98 ->setDescription(pht('Name of the source.'))
99 ->setTransactionType(NuanceSourceNameTransaction::TRANSACTIONTYPE)
100 ->setIsRequired(true)
101 ->setValue($object->getName()),
102 id(new PhabricatorDatasourceEditField())
103 ->setKey('defaultQueue')
104 ->setLabel(pht('Default Queue'))
105 ->setDescription(pht('Default queue.'))
106 ->setTransactionType(
107 NuanceSourceDefaultQueueTransaction::TRANSACTIONTYPE)
108 ->setDatasource(new NuanceQueueDatasource())
109 ->setSingleValue($object->getDefaultQueuePHID()),
110 );
111 }
112
113}