@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
fork

Configure Feed

Select the types of activity you want to include in your feed.

Move Nuance Items to two-column views

Summary: Ref T10537.

Test Plan:
{F1164796}

{F1164797}

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T10537

Differential Revision: https://secure.phabricator.com/D15444

+137 -134
+2 -2
src/__phutil_library_map__.php
··· 1429 1429 'NuanceImportCursorPHIDType' => 'applications/nuance/phid/NuanceImportCursorPHIDType.php', 1430 1430 'NuanceItem' => 'applications/nuance/storage/NuanceItem.php', 1431 1431 'NuanceItemController' => 'applications/nuance/controller/NuanceItemController.php', 1432 - 'NuanceItemEditController' => 'applications/nuance/controller/NuanceItemEditController.php', 1433 1432 'NuanceItemEditor' => 'applications/nuance/editor/NuanceItemEditor.php', 1434 1433 'NuanceItemListController' => 'applications/nuance/controller/NuanceItemListController.php', 1434 + 'NuanceItemManageController' => 'applications/nuance/controller/NuanceItemManageController.php', 1435 1435 'NuanceItemPHIDType' => 'applications/nuance/phid/NuanceItemPHIDType.php', 1436 1436 'NuanceItemQuery' => 'applications/nuance/query/NuanceItemQuery.php', 1437 1437 'NuanceItemSearchEngine' => 'applications/nuance/query/NuanceItemSearchEngine.php', ··· 5692 5692 'PhabricatorApplicationTransactionInterface', 5693 5693 ), 5694 5694 'NuanceItemController' => 'NuanceController', 5695 - 'NuanceItemEditController' => 'NuanceController', 5696 5695 'NuanceItemEditor' => 'PhabricatorApplicationTransactionEditor', 5697 5696 'NuanceItemListController' => 'NuanceItemController', 5697 + 'NuanceItemManageController' => 'NuanceController', 5698 5698 'NuanceItemPHIDType' => 'PhabricatorPHIDType', 5699 5699 'NuanceItemQuery' => 'NuanceQuery', 5700 5700 'NuanceItemSearchEngine' => 'PhabricatorApplicationSearchEngine',
+1 -2
src/applications/nuance/application/PhabricatorNuanceApplication.php
··· 42 42 'item/' => array( 43 43 $this->getQueryRoutePattern() => 'NuanceItemListController', 44 44 'view/(?P<id>[1-9]\d*)/' => 'NuanceItemViewController', 45 - 'edit/(?P<id>[1-9]\d*)/' => 'NuanceItemEditController', 46 - 'new/' => 'NuanceItemEditController', 45 + 'manage/(?P<id>[1-9]\d*)/' => 'NuanceItemManageController', 47 46 ), 48 47 'source/' => array( 49 48 $this->getQueryRoutePattern() => 'NuanceSourceListController',
-104
src/applications/nuance/controller/NuanceItemEditController.php
··· 1 - <?php 2 - 3 - final class NuanceItemEditController extends NuanceController { 4 - 5 - public function handleRequest(AphrontRequest $request) { 6 - $viewer = $this->getViewer(); 7 - $id = $request->getURIData('id'); 8 - 9 - $item = id(new NuanceItemQuery()) 10 - ->setViewer($viewer) 11 - ->withIDs(array($id)) 12 - ->requireCapabilities( 13 - array( 14 - PhabricatorPolicyCapability::CAN_VIEW, 15 - PhabricatorPolicyCapability::CAN_EDIT, 16 - )) 17 - ->executeOne(); 18 - if (!$item) { 19 - return new Aphront404Response(); 20 - } 21 - 22 - $title = pht('Item %d', $item->getID()); 23 - 24 - $crumbs = $this->buildApplicationCrumbs(); 25 - $crumbs->addTextCrumb($title); 26 - $crumbs->addTextCrumb(pht('Edit')); 27 - 28 - $properties = $this->buildPropertyView($item); 29 - $actions = $this->buildActionView($item); 30 - $properties->setActionList($actions); 31 - 32 - $box = id(new PHUIObjectBoxView()) 33 - ->setHeaderText($title) 34 - ->addPropertyList($properties); 35 - 36 - $timeline = $this->buildTransactionTimeline( 37 - $item, 38 - new NuanceItemTransactionQuery()); 39 - 40 - $timeline->setShouldTerminate(true); 41 - 42 - return $this->buildApplicationPage( 43 - array( 44 - $crumbs, 45 - $box, 46 - $timeline, 47 - ), 48 - array( 49 - 'title' => $title, 50 - )); 51 - } 52 - 53 - private function buildPropertyView(NuanceItem $item) { 54 - $viewer = $this->getViewer(); 55 - 56 - $properties = id(new PHUIPropertyListView()) 57 - ->setUser($viewer) 58 - ->setObject($item); 59 - 60 - $properties->addProperty( 61 - pht('Date Created'), 62 - phabricator_datetime($item->getDateCreated(), $viewer)); 63 - 64 - $properties->addProperty( 65 - pht('Requestor'), 66 - $viewer->renderHandle($item->getRequestorPHID())); 67 - 68 - $properties->addProperty( 69 - pht('Source'), 70 - $viewer->renderHandle($item->getSourcePHID())); 71 - 72 - $properties->addProperty( 73 - pht('Queue'), 74 - $viewer->renderHandle($item->getQueuePHID())); 75 - 76 - $source = $item->getSource(); 77 - $definition = $source->getDefinition(); 78 - 79 - $definition->renderItemEditProperties( 80 - $viewer, 81 - $item, 82 - $properties); 83 - 84 - return $properties; 85 - } 86 - 87 - private function buildActionView(NuanceItem $item) { 88 - $viewer = $this->getViewer(); 89 - $id = $item->getID(); 90 - 91 - $actions = id(new PhabricatorActionListView()) 92 - ->setUser($viewer); 93 - 94 - $actions->addAction( 95 - id(new PhabricatorActionView()) 96 - ->setName(pht('View Item')) 97 - ->setIcon('fa-eye') 98 - ->setHref($this->getApplicationURI("item/view/{$id}/"))); 99 - 100 - return $actions; 101 - } 102 - 103 - 104 - }
+109
src/applications/nuance/controller/NuanceItemManageController.php
··· 1 + <?php 2 + 3 + final class NuanceItemManageController extends NuanceController { 4 + 5 + public function handleRequest(AphrontRequest $request) { 6 + $viewer = $this->getViewer(); 7 + $id = $request->getURIData('id'); 8 + 9 + $item = id(new NuanceItemQuery()) 10 + ->setViewer($viewer) 11 + ->withIDs(array($id)) 12 + ->executeOne(); 13 + if (!$item) { 14 + return new Aphront404Response(); 15 + } 16 + 17 + $title = pht('Item %d', $item->getID()); 18 + 19 + $crumbs = $this->buildApplicationCrumbs(); 20 + $crumbs->addTextCrumb( 21 + pht('Items'), 22 + $this->getApplicationURI('item/')); 23 + $crumbs->addTextCrumb( 24 + $title, 25 + $item->getURI()); 26 + $crumbs->addTextCrumb(pht('Manage')); 27 + $crumbs->setBorder(true); 28 + 29 + $properties = $this->buildPropertyView($item); 30 + $curtain = $this->buildCurtain($item); 31 + 32 + $header = id(new PHUIHeaderView()) 33 + ->setHeader($title); 34 + 35 + $timeline = $this->buildTransactionTimeline( 36 + $item, 37 + new NuanceItemTransactionQuery()); 38 + $timeline->setShouldTerminate(true); 39 + 40 + $view = id(new PHUITwoColumnView()) 41 + ->setHeader($header) 42 + ->setCurtain($curtain) 43 + ->addPropertySection(pht('DETAILS'), $properties) 44 + ->setMainColumn($timeline); 45 + 46 + return $this->newPage() 47 + ->setTitle($title) 48 + ->setCrumbs($crumbs) 49 + ->appendChild($view); 50 + } 51 + 52 + private function buildPropertyView(NuanceItem $item) { 53 + $viewer = $this->getViewer(); 54 + 55 + $properties = id(new PHUIPropertyListView()) 56 + ->setUser($viewer); 57 + 58 + $properties->addProperty( 59 + pht('Date Created'), 60 + phabricator_datetime($item->getDateCreated(), $viewer)); 61 + 62 + $requestor_phid = $item->getRequestorPHID(); 63 + if ($requestor_phid) { 64 + $requestor_view = $viewer->renderHandle($requestor_phid); 65 + } else { 66 + $requestor_view = phutil_tag('em', array(), pht('None')); 67 + } 68 + $properties->addProperty(pht('Requestor'), $requestor_view); 69 + 70 + $properties->addProperty( 71 + pht('Source'), 72 + $viewer->renderHandle($item->getSourcePHID())); 73 + 74 + $queue_phid = $item->getQueuePHID(); 75 + if ($queue_phid) { 76 + $queue_view = $viewer->renderHandle($queue_phid); 77 + } else { 78 + $queue_view = phutil_tag('em', array(), pht('None')); 79 + } 80 + $properties->addProperty(pht('Queue'), $queue_view); 81 + 82 + $source = $item->getSource(); 83 + $definition = $source->getDefinition(); 84 + 85 + $definition->renderItemEditProperties( 86 + $viewer, 87 + $item, 88 + $properties); 89 + 90 + return $properties; 91 + } 92 + 93 + private function buildCurtain(NuanceItem $item) { 94 + $viewer = $this->getViewer(); 95 + $id = $item->getID(); 96 + 97 + $curtain = $this->newCurtainView($item); 98 + 99 + $curtain->addAction( 100 + id(new PhabricatorActionView()) 101 + ->setName(pht('View Item')) 102 + ->setIcon('fa-eye') 103 + ->setHref($item->getURI())); 104 + 105 + return $curtain; 106 + } 107 + 108 + 109 + }
+25 -26
src/applications/nuance/controller/NuanceItemViewController.php
··· 17 17 $title = pht('Item %d', $item->getID()); 18 18 19 19 $crumbs = $this->buildApplicationCrumbs(); 20 + $crumbs->addTextCrumb( 21 + pht('Items'), 22 + $this->getApplicationURI('item/')); 20 23 $crumbs->addTextCrumb($title); 24 + $crumbs->setBorder(true); 21 25 22 26 $properties = $this->buildPropertyView($item); 23 - $actions = $this->buildActionView($item); 24 - $properties->setActionList($actions); 27 + $curtain = $this->buildCurtain($item); 25 28 26 - $box = id(new PHUIObjectBoxView()) 27 - ->setHeaderText($title) 28 - ->addPropertyList($properties); 29 + $header = id(new PHUIHeaderView()) 30 + ->setHeader($title); 29 31 30 - return $this->buildApplicationPage( 31 - array( 32 - $crumbs, 33 - $box, 34 - ), 35 - array( 36 - 'title' => $title, 37 - )); 32 + $view = id(new PHUITwoColumnView()) 33 + ->setHeader($header) 34 + ->setCurtain($curtain) 35 + ->addPropertySection(pht('DETAILS'), $properties); 36 + 37 + return $this->newPage() 38 + ->setTitle($title) 39 + ->setCrumbs($crumbs) 40 + ->appendChild($view); 38 41 } 39 42 40 43 private function buildPropertyView(NuanceItem $item) { 41 44 $viewer = $this->getViewer(); 42 45 43 46 $properties = id(new PHUIPropertyListView()) 44 - ->setUser($viewer) 45 - ->setObject($item); 47 + ->setUser($viewer); 46 48 47 49 $properties->addProperty( 48 50 pht('Date Created'), ··· 59 61 return $properties; 60 62 } 61 63 62 - private function buildActionView(NuanceItem $item) { 64 + private function buildCurtain(NuanceItem $item) { 63 65 $viewer = $this->getViewer(); 64 66 $id = $item->getID(); 65 67 66 - $actions = id(new PhabricatorActionListView()) 67 - ->setUser($viewer); 68 - 69 68 $can_edit = PhabricatorPolicyFilter::hasCapability( 70 69 $viewer, 71 70 $item, 72 71 PhabricatorPolicyCapability::CAN_EDIT); 73 72 74 - $actions->addAction( 73 + $curtain = $this->newCurtainView($item); 74 + 75 + $curtain->addAction( 75 76 id(new PhabricatorActionView()) 76 - ->setName(pht('Edit Item')) 77 - ->setIcon('fa-pencil') 78 - ->setHref($this->getApplicationURI("item/edit/{$id}/")) 79 - ->setDisabled(!$can_edit) 80 - ->setWorkflow(!$can_edit)); 77 + ->setName(pht('Manage Item')) 78 + ->setIcon('fa-cogs') 79 + ->setHref($this->getApplicationURI("item/manage/{$id}/"))); 81 80 82 - return $actions; 81 + return $curtain; 83 82 } 84 83 85 84