diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -1429,9 +1429,9 @@ 'NuanceImportCursorPHIDType' => 'applications/nuance/phid/NuanceImportCursorPHIDType.php', 'NuanceItem' => 'applications/nuance/storage/NuanceItem.php', 'NuanceItemController' => 'applications/nuance/controller/NuanceItemController.php', - 'NuanceItemEditController' => 'applications/nuance/controller/NuanceItemEditController.php', 'NuanceItemEditor' => 'applications/nuance/editor/NuanceItemEditor.php', 'NuanceItemListController' => 'applications/nuance/controller/NuanceItemListController.php', + 'NuanceItemManageController' => 'applications/nuance/controller/NuanceItemManageController.php', 'NuanceItemPHIDType' => 'applications/nuance/phid/NuanceItemPHIDType.php', 'NuanceItemQuery' => 'applications/nuance/query/NuanceItemQuery.php', 'NuanceItemSearchEngine' => 'applications/nuance/query/NuanceItemSearchEngine.php', @@ -5692,9 +5692,9 @@ 'PhabricatorApplicationTransactionInterface', ), 'NuanceItemController' => 'NuanceController', - 'NuanceItemEditController' => 'NuanceController', 'NuanceItemEditor' => 'PhabricatorApplicationTransactionEditor', 'NuanceItemListController' => 'NuanceItemController', + 'NuanceItemManageController' => 'NuanceController', 'NuanceItemPHIDType' => 'PhabricatorPHIDType', 'NuanceItemQuery' => 'NuanceQuery', 'NuanceItemSearchEngine' => 'PhabricatorApplicationSearchEngine', diff --git a/src/applications/nuance/application/PhabricatorNuanceApplication.php b/src/applications/nuance/application/PhabricatorNuanceApplication.php --- a/src/applications/nuance/application/PhabricatorNuanceApplication.php +++ b/src/applications/nuance/application/PhabricatorNuanceApplication.php @@ -42,8 +42,7 @@ 'item/' => array( $this->getQueryRoutePattern() => 'NuanceItemListController', 'view/(?P[1-9]\d*)/' => 'NuanceItemViewController', - 'edit/(?P[1-9]\d*)/' => 'NuanceItemEditController', - 'new/' => 'NuanceItemEditController', + 'manage/(?P[1-9]\d*)/' => 'NuanceItemManageController', ), 'source/' => array( $this->getQueryRoutePattern() => 'NuanceSourceListController', diff --git a/src/applications/nuance/controller/NuanceItemEditController.php b/src/applications/nuance/controller/NuanceItemEditController.php deleted file mode 100644 --- a/src/applications/nuance/controller/NuanceItemEditController.php +++ /dev/null @@ -1,104 +0,0 @@ -getViewer(); - $id = $request->getURIData('id'); - - $item = id(new NuanceItemQuery()) - ->setViewer($viewer) - ->withIDs(array($id)) - ->requireCapabilities( - array( - PhabricatorPolicyCapability::CAN_VIEW, - PhabricatorPolicyCapability::CAN_EDIT, - )) - ->executeOne(); - if (!$item) { - return new Aphront404Response(); - } - - $title = pht('Item %d', $item->getID()); - - $crumbs = $this->buildApplicationCrumbs(); - $crumbs->addTextCrumb($title); - $crumbs->addTextCrumb(pht('Edit')); - - $properties = $this->buildPropertyView($item); - $actions = $this->buildActionView($item); - $properties->setActionList($actions); - - $box = id(new PHUIObjectBoxView()) - ->setHeaderText($title) - ->addPropertyList($properties); - - $timeline = $this->buildTransactionTimeline( - $item, - new NuanceItemTransactionQuery()); - - $timeline->setShouldTerminate(true); - - return $this->buildApplicationPage( - array( - $crumbs, - $box, - $timeline, - ), - array( - 'title' => $title, - )); - } - - private function buildPropertyView(NuanceItem $item) { - $viewer = $this->getViewer(); - - $properties = id(new PHUIPropertyListView()) - ->setUser($viewer) - ->setObject($item); - - $properties->addProperty( - pht('Date Created'), - phabricator_datetime($item->getDateCreated(), $viewer)); - - $properties->addProperty( - pht('Requestor'), - $viewer->renderHandle($item->getRequestorPHID())); - - $properties->addProperty( - pht('Source'), - $viewer->renderHandle($item->getSourcePHID())); - - $properties->addProperty( - pht('Queue'), - $viewer->renderHandle($item->getQueuePHID())); - - $source = $item->getSource(); - $definition = $source->getDefinition(); - - $definition->renderItemEditProperties( - $viewer, - $item, - $properties); - - return $properties; - } - - private function buildActionView(NuanceItem $item) { - $viewer = $this->getViewer(); - $id = $item->getID(); - - $actions = id(new PhabricatorActionListView()) - ->setUser($viewer); - - $actions->addAction( - id(new PhabricatorActionView()) - ->setName(pht('View Item')) - ->setIcon('fa-eye') - ->setHref($this->getApplicationURI("item/view/{$id}/"))); - - return $actions; - } - - -} diff --git a/src/applications/nuance/controller/NuanceItemManageController.php b/src/applications/nuance/controller/NuanceItemManageController.php new file mode 100644 --- /dev/null +++ b/src/applications/nuance/controller/NuanceItemManageController.php @@ -0,0 +1,109 @@ +getViewer(); + $id = $request->getURIData('id'); + + $item = id(new NuanceItemQuery()) + ->setViewer($viewer) + ->withIDs(array($id)) + ->executeOne(); + if (!$item) { + return new Aphront404Response(); + } + + $title = pht('Item %d', $item->getID()); + + $crumbs = $this->buildApplicationCrumbs(); + $crumbs->addTextCrumb( + pht('Items'), + $this->getApplicationURI('item/')); + $crumbs->addTextCrumb( + $title, + $item->getURI()); + $crumbs->addTextCrumb(pht('Manage')); + $crumbs->setBorder(true); + + $properties = $this->buildPropertyView($item); + $curtain = $this->buildCurtain($item); + + $header = id(new PHUIHeaderView()) + ->setHeader($title); + + $timeline = $this->buildTransactionTimeline( + $item, + new NuanceItemTransactionQuery()); + $timeline->setShouldTerminate(true); + + $view = id(new PHUITwoColumnView()) + ->setHeader($header) + ->setCurtain($curtain) + ->addPropertySection(pht('DETAILS'), $properties) + ->setMainColumn($timeline); + + return $this->newPage() + ->setTitle($title) + ->setCrumbs($crumbs) + ->appendChild($view); + } + + private function buildPropertyView(NuanceItem $item) { + $viewer = $this->getViewer(); + + $properties = id(new PHUIPropertyListView()) + ->setUser($viewer); + + $properties->addProperty( + pht('Date Created'), + phabricator_datetime($item->getDateCreated(), $viewer)); + + $requestor_phid = $item->getRequestorPHID(); + if ($requestor_phid) { + $requestor_view = $viewer->renderHandle($requestor_phid); + } else { + $requestor_view = phutil_tag('em', array(), pht('None')); + } + $properties->addProperty(pht('Requestor'), $requestor_view); + + $properties->addProperty( + pht('Source'), + $viewer->renderHandle($item->getSourcePHID())); + + $queue_phid = $item->getQueuePHID(); + if ($queue_phid) { + $queue_view = $viewer->renderHandle($queue_phid); + } else { + $queue_view = phutil_tag('em', array(), pht('None')); + } + $properties->addProperty(pht('Queue'), $queue_view); + + $source = $item->getSource(); + $definition = $source->getDefinition(); + + $definition->renderItemEditProperties( + $viewer, + $item, + $properties); + + return $properties; + } + + private function buildCurtain(NuanceItem $item) { + $viewer = $this->getViewer(); + $id = $item->getID(); + + $curtain = $this->newCurtainView($item); + + $curtain->addAction( + id(new PhabricatorActionView()) + ->setName(pht('View Item')) + ->setIcon('fa-eye') + ->setHref($item->getURI())); + + return $curtain; + } + + +} diff --git a/src/applications/nuance/controller/NuanceItemViewController.php b/src/applications/nuance/controller/NuanceItemViewController.php --- a/src/applications/nuance/controller/NuanceItemViewController.php +++ b/src/applications/nuance/controller/NuanceItemViewController.php @@ -17,32 +17,34 @@ $title = pht('Item %d', $item->getID()); $crumbs = $this->buildApplicationCrumbs(); + $crumbs->addTextCrumb( + pht('Items'), + $this->getApplicationURI('item/')); $crumbs->addTextCrumb($title); + $crumbs->setBorder(true); $properties = $this->buildPropertyView($item); - $actions = $this->buildActionView($item); - $properties->setActionList($actions); - - $box = id(new PHUIObjectBoxView()) - ->setHeaderText($title) - ->addPropertyList($properties); - - return $this->buildApplicationPage( - array( - $crumbs, - $box, - ), - array( - 'title' => $title, - )); + $curtain = $this->buildCurtain($item); + + $header = id(new PHUIHeaderView()) + ->setHeader($title); + + $view = id(new PHUITwoColumnView()) + ->setHeader($header) + ->setCurtain($curtain) + ->addPropertySection(pht('DETAILS'), $properties); + + return $this->newPage() + ->setTitle($title) + ->setCrumbs($crumbs) + ->appendChild($view); } private function buildPropertyView(NuanceItem $item) { $viewer = $this->getViewer(); $properties = id(new PHUIPropertyListView()) - ->setUser($viewer) - ->setObject($item); + ->setUser($viewer); $properties->addProperty( pht('Date Created'), @@ -59,27 +61,24 @@ return $properties; } - private function buildActionView(NuanceItem $item) { + private function buildCurtain(NuanceItem $item) { $viewer = $this->getViewer(); $id = $item->getID(); - $actions = id(new PhabricatorActionListView()) - ->setUser($viewer); - $can_edit = PhabricatorPolicyFilter::hasCapability( $viewer, $item, PhabricatorPolicyCapability::CAN_EDIT); - $actions->addAction( + $curtain = $this->newCurtainView($item); + + $curtain->addAction( id(new PhabricatorActionView()) - ->setName(pht('Edit Item')) - ->setIcon('fa-pencil') - ->setHref($this->getApplicationURI("item/edit/{$id}/")) - ->setDisabled(!$can_edit) - ->setWorkflow(!$can_edit)); + ->setName(pht('Manage Item')) + ->setIcon('fa-cogs') + ->setHref($this->getApplicationURI("item/manage/{$id}/"))); - return $actions; + return $curtain; }