Skip to content

Commit aa5df5f

Browse files
author
epriestley
committed
Convert Nuance Sources to EditEngine
Summary: Ref T10537. Converts sources to EditEngine. Test Plan: - Created a new source. - Edited an existing source. - Submitted a complaint with the complaint form. Reviewers: chad Reviewed By: chad Maniphest Tasks: T10537 Differential Revision: https://secure.phabricator.com/D15434
1 parent 8a7c963 commit aa5df5f

14 files changed

+234
-378
lines changed

src/__phutil_library_map__.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1460,12 +1460,12 @@
14601460
'NuanceSource' => 'applications/nuance/storage/NuanceSource.php',
14611461
'NuanceSourceActionController' => 'applications/nuance/controller/NuanceSourceActionController.php',
14621462
'NuanceSourceController' => 'applications/nuance/controller/NuanceSourceController.php',
1463-
'NuanceSourceCreateController' => 'applications/nuance/controller/NuanceSourceCreateController.php',
14641463
'NuanceSourceDefaultEditCapability' => 'applications/nuance/capability/NuanceSourceDefaultEditCapability.php',
14651464
'NuanceSourceDefaultViewCapability' => 'applications/nuance/capability/NuanceSourceDefaultViewCapability.php',
14661465
'NuanceSourceDefinition' => 'applications/nuance/source/NuanceSourceDefinition.php',
14671466
'NuanceSourceDefinitionTestCase' => 'applications/nuance/source/__tests__/NuanceSourceDefinitionTestCase.php',
14681467
'NuanceSourceEditController' => 'applications/nuance/controller/NuanceSourceEditController.php',
1468+
'NuanceSourceEditEngine' => 'applications/nuance/editor/NuanceSourceEditEngine.php',
14691469
'NuanceSourceEditor' => 'applications/nuance/editor/NuanceSourceEditor.php',
14701470
'NuanceSourceListController' => 'applications/nuance/controller/NuanceSourceListController.php',
14711471
'NuanceSourceManageCapability' => 'applications/nuance/capability/NuanceSourceManageCapability.php',
@@ -5716,12 +5716,12 @@
57165716
),
57175717
'NuanceSourceActionController' => 'NuanceController',
57185718
'NuanceSourceController' => 'NuanceController',
5719-
'NuanceSourceCreateController' => 'NuanceSourceController',
57205719
'NuanceSourceDefaultEditCapability' => 'PhabricatorPolicyCapability',
57215720
'NuanceSourceDefaultViewCapability' => 'PhabricatorPolicyCapability',
57225721
'NuanceSourceDefinition' => 'Phobject',
57235722
'NuanceSourceDefinitionTestCase' => 'PhabricatorTestCase',
57245723
'NuanceSourceEditController' => 'NuanceSourceController',
5724+
'NuanceSourceEditEngine' => 'PhabricatorEditEngine',
57255725
'NuanceSourceEditor' => 'PhabricatorApplicationTransactionEditor',
57265726
'NuanceSourceListController' => 'NuanceSourceController',
57275727
'NuanceSourceManageCapability' => 'PhabricatorPolicyCapability',

src/applications/nuance/application/PhabricatorNuanceApplication.php

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,16 +46,13 @@ public function getRoutes() {
4646
),
4747
'source/' => array(
4848
$this->getQueryRoutePattern() => 'NuanceSourceListController',
49+
$this->getEditRoutePattern('edit/') => 'NuanceSourceEditController',
4950
'view/(?P<id>[1-9]\d*)/' => 'NuanceSourceViewController',
50-
'edit/(?P<id>[1-9]\d*)/' => 'NuanceSourceEditController',
51-
'new/(?P<type>[^/]+)/' => 'NuanceSourceEditController',
52-
'create/' => 'NuanceSourceCreateController',
5351
),
5452
'queue/' => array(
5553
$this->getQueryRoutePattern() => 'NuanceQueueListController',
5654
$this->getEditRoutePattern('edit/') => 'NuanceQueueEditController',
5755
'view/(?P<id>[1-9]\d*)/' => 'NuanceQueueViewController',
58-
'new/' => 'NuanceQueueEditController',
5956
),
6057
'requestor/' => array(
6158
'view/(?P<id>[1-9]\d*)/' => 'NuanceRequestorViewController',

src/applications/nuance/controller/NuanceItemViewController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ private function buildPropertyView(NuanceItem $item) {
4949
phabricator_datetime($item->getDateCreated(), $viewer));
5050

5151
$source = $item->getSource();
52-
$definition = $source->requireDefinition();
52+
$definition = $source->getDefinition();
5353

5454
$definition->renderItemViewProperties(
5555
$viewer,

src/applications/nuance/controller/NuanceQueueListController.php

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,9 @@ public function handleRequest(AphrontRequest $request) {
1212
protected function buildApplicationCrumbs() {
1313
$crumbs = parent::buildApplicationCrumbs();
1414

15-
// TODO: Maybe use SourceManage capability?
16-
$can_create = true;
17-
18-
$crumbs->addAction(
19-
id(new PHUIListItemView())
20-
->setName(pht('Create Queue'))
21-
->setHref($this->getApplicationURI('queue/new/'))
22-
->setIcon('fa-plus-square')
23-
->setDisabled(!$can_create)
24-
->setWorkflow(!$can_create));
15+
id(new NuanceQueueEditEngine())
16+
->setViewer($this->getViewer())
17+
->addActionToCrumbs($crumbs);
2518

2619
return $crumbs;
2720
}

src/applications/nuance/controller/NuanceSourceActionController.php

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,11 @@ public function handleRequest(AphrontRequest $request) {
1313
return new Aphront404Response();
1414
}
1515

16-
$def = $source->requireDefinition();
17-
$def->setActor($viewer);
16+
$def = $source->getDefinition();
17+
18+
$def
19+
->setViewer($viewer)
20+
->setSource($source);
1821

1922
$response = $def->handleActionRequest($request);
2023
if ($response instanceof AphrontResponse) {
@@ -25,14 +28,10 @@ public function handleRequest(AphrontRequest $request) {
2528
$crumbs = $this->buildApplicationCrumbs();
2629
$crumbs->addTextCrumb($title);
2730

28-
return $this->buildApplicationPage(
29-
array(
30-
$crumbs,
31-
$response,
32-
),
33-
array(
34-
'title' => $title,
35-
));
31+
return $this->newPage()
32+
->setTitle($title)
33+
->setCrumbs($crumbs)
34+
->appendChild($response);
3635
}
3736

3837
}

src/applications/nuance/controller/NuanceSourceCreateController.php

Lines changed: 0 additions & 58 deletions
This file was deleted.

src/applications/nuance/controller/NuanceSourceEditController.php

Lines changed: 55 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -4,70 +4,73 @@ final class NuanceSourceEditController
44
extends NuanceSourceController {
55

66
public function handleRequest(AphrontRequest $request) {
7-
$can_edit = $this->requireApplicationCapability(
8-
NuanceSourceManageCapability::CAPABILITY);
7+
$engine = id(new NuanceSourceEditEngine())
8+
->setController($this);
99

10-
$viewer = $this->getViewer();
11-
12-
$sources_uri = $this->getApplicationURI('source/');
13-
14-
$source_id = $request->getURIData('id');
15-
$is_new = !$source_id;
16-
17-
if ($is_new) {
18-
$source = NuanceSource::initializeNewSource($viewer);
10+
$id = $request->getURIData('id');
11+
if (!$id) {
12+
$this->requireApplicationCapability(
13+
NuanceSourceManageCapability::CAPABILITY);
1914

20-
$type = $request->getURIData('type');
15+
$cancel_uri = $this->getApplicationURI('source/');
2116
$map = NuanceSourceDefinition::getAllDefinitions();
22-
23-
if (empty($map[$type])) {
24-
return new Aphront404Response();
17+
$source_type = $request->getStr('sourceType');
18+
if (!isset($map[$source_type])) {
19+
return $this->buildSourceTypeResponse($cancel_uri);
2520
}
2621

27-
$source->setType($type);
28-
$cancel_uri = $sources_uri;
29-
} else {
30-
$source = id(new NuanceSourceQuery())
31-
->setViewer($viewer)
32-
->withIDs(array($source_id))
33-
->requireCapabilities(
34-
array(
35-
PhabricatorPolicyCapability::CAN_VIEW,
36-
PhabricatorPolicyCapability::CAN_EDIT,
37-
))
38-
->executeOne();
39-
if (!$source) {
40-
return new Aphront404Response();
41-
}
42-
$cancel_uri = $source->getURI();
22+
$engine
23+
->setSourceDefinition($map[$source_type])
24+
->addContextParameter('sourceType', $source_type);
4325
}
4426

45-
$definition = $source->requireDefinition();
46-
$definition->setActor($viewer);
27+
return $engine->buildResponse();
28+
}
4729

48-
$response = $definition->buildEditLayout($request);
49-
if ($response instanceof AphrontResponse) {
50-
return $response;
30+
private function buildSourceTypeResponse($cancel_uri) {
31+
$viewer = $this->getViewer();
32+
$request = $this->getRequest();
33+
$map = NuanceSourceDefinition::getAllDefinitions();
34+
35+
$errors = array();
36+
$e_source = null;
37+
if ($request->isFormPost()) {
38+
$errors[] = pht('You must choose a source type.');
39+
$e_source = pht('Required');
5140
}
52-
$layout = $response;
5341

54-
$crumbs = $this->buildApplicationCrumbs();
55-
$crumbs->addTextCrumb(pht('Sources'), $sources_uri);
42+
$source_types = id(new AphrontFormRadioButtonControl())
43+
->setName('sourceType')
44+
->setLabel(pht('Source Type'));
5645

57-
if ($is_new) {
58-
$crumbs->addTextCrumb(pht('New'));
59-
} else {
60-
$crumbs->addTextCrumb($source->getName(), $cancel_uri);
61-
$crumbs->addTextCrumb(pht('Edit'));
46+
foreach ($map as $type => $definition) {
47+
$source_types->addButton(
48+
$type,
49+
$definition->getName(),
50+
$definition->getSourceDescription());
6251
}
6352

64-
return $this->buildApplicationPage(
65-
array(
66-
$crumbs,
67-
$layout,
68-
),
69-
array(
70-
'title' => $definition->getEditTitle(),
71-
));
53+
$form = id(new AphrontFormView())
54+
->setUser($viewer)
55+
->appendChild($source_types)
56+
->appendChild(
57+
id(new AphrontFormSubmitControl())
58+
->setValue(pht('Continue'))
59+
->addCancelButton($cancel_uri));
60+
61+
$box = id(new PHUIObjectBoxView())
62+
->setFormErrors($errors)
63+
->setHeaderText(pht('Choose Source Type'))
64+
->appendChild($form);
65+
66+
$crumbs = $this->buildApplicationCrumbs();
67+
$crumbs->addTextCrumb(pht('Sources'), $cancel_uri);
68+
$crumbs->addTextCrumb(pht('New'));
69+
70+
return $this->newPage()
71+
->setTitle(pht('Choose Source Type'))
72+
->setCrumbs($crumbs)
73+
->appendChild($box);
7274
}
75+
7376
}

src/applications/nuance/controller/NuanceSourceListController.php

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,9 @@ public function handleRequest(AphrontRequest $request) {
1212
protected function buildApplicationCrumbs() {
1313
$crumbs = parent::buildApplicationCrumbs();
1414

15-
$can_create = $this->hasApplicationCapability(
16-
NuanceSourceManageCapability::CAPABILITY);
17-
18-
$crumbs->addAction(
19-
id(new PHUIListItemView())
20-
->setName(pht('Create Source'))
21-
->setHref($this->getApplicationURI('source/create/'))
22-
->setIcon('fa-plus-square')
23-
->setDisabled(!$can_create)
24-
->setWorkflow(!$can_create));
15+
id(new NuanceSourceEditEngine())
16+
->setViewer($this->getViewer())
17+
->addActionToCrumbs($crumbs);
2518

2619
return $crumbs;
2720
}

src/applications/nuance/controller/NuanceSourceViewController.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,12 @@ private function buildCurtain(NuanceSource $source) {
8484
->setWorkflow(!$can_edit));
8585

8686
$request = $this->getRequest();
87-
$definition = $source->requireDefinition();
87+
$definition = $source->getDefinition();
88+
89+
$definition
90+
->setViewer($viewer)
91+
->setSource($source);
92+
8893
$source_actions = $definition->getSourceViewActions($request);
8994
foreach ($source_actions as $source_action) {
9095
$curtain->addAction($source_action);
@@ -100,7 +105,8 @@ private function buildPropertyView(
100105
$properties = id(new PHUIPropertyListView())
101106
->setViewer($viewer);
102107

103-
$definition = $source->requireDefinition();
108+
$definition = $source->getDefinition();
109+
104110
$properties->addProperty(
105111
pht('Source Type'),
106112
$definition->getName());

0 commit comments

Comments
 (0)