Changeset View
Changeset View
Standalone View
Standalone View
src/applications/nuance/controller/NuanceSourceViewController.php
Show All 10 Lines | $source = id(new NuanceSourceQuery()) | ||||
->withIDs(array($request->getURIData('id'))) | ->withIDs(array($request->getURIData('id'))) | ||||
->executeOne(); | ->executeOne(); | ||||
if (!$source) { | if (!$source) { | ||||
return new Aphront404Response(); | return new Aphront404Response(); | ||||
} | } | ||||
$source_id = $source->getID(); | $source_id = $source->getID(); | ||||
$timeline = $this->buildTransactionTimeline( | |||||
$source, | |||||
new NuanceSourceTransactionQuery()); | |||||
$timeline->setShouldTerminate(true); | |||||
$header = $this->buildHeaderView($source); | $header = $this->buildHeaderView($source); | ||||
$actions = $this->buildActionView($source); | $curtain = $this->buildCurtain($source); | ||||
$properties = $this->buildPropertyView($source, $actions); | $properties = $this->buildPropertyView($source); | ||||
$box = id(new PHUIObjectBoxView()) | |||||
->setHeader($header) | |||||
->addPropertyList($properties); | |||||
$title = $source->getName(); | $title = $source->getName(); | ||||
$crumbs = $this->buildApplicationCrumbs(); | |||||
$crumbs->addTextCrumb(pht('Sources'), $this->getApplicationURI('source/')); | |||||
$crumbs->addTextCrumb($title); | |||||
$can_edit = PhabricatorPolicyFilter::hasCapability( | |||||
$viewer, | |||||
$source, | |||||
PhabricatorPolicyCapability::CAN_EDIT); | |||||
$routing_list = id(new PHUIPropertyListView()) | $routing_list = id(new PHUIPropertyListView()) | ||||
->addProperty( | ->addProperty( | ||||
pht('Default Queue'), | pht('Default Queue'), | ||||
$viewer->renderHandle($source->getDefaultQueuePHID())); | $viewer->renderHandle($source->getDefaultQueuePHID())); | ||||
$routing_header = id(new PHUIHeaderView()) | $crumbs = $this->buildApplicationCrumbs(); | ||||
->setHeader(pht('Routing Rules')); | $crumbs->addTextCrumb(pht('Sources'), $this->getApplicationURI('source/')); | ||||
$crumbs->addTextCrumb($title); | |||||
$crumbs->setBorder(true); | |||||
$timeline = $this->buildTransactionTimeline( | |||||
$source, | |||||
new NuanceSourceTransactionQuery()); | |||||
$timeline->setShouldTerminate(true); | |||||
$routing = id(new PHUIObjectBoxView()) | $view = id(new PHUITwoColumnView()) | ||||
->setHeader($routing_header) | ->setHeader($header) | ||||
->addPropertyList($routing_list); | ->setCurtain($curtain) | ||||
->addPropertySection(pht('DETAILS'), $properties) | |||||
return $this->buildApplicationPage( | ->addPropertySection(pht('ROUTING'), $routing_list) | ||||
array( | ->setMainColumn($timeline); | ||||
$crumbs, | |||||
$box, | return $this->newPage() | ||||
$routing, | ->setTitle($title) | ||||
$timeline, | ->setCrumbs($crumbs) | ||||
), | ->appendChild($view); | ||||
array( | |||||
'title' => $title, | |||||
)); | |||||
} | } | ||||
private function buildHeaderView(NuanceSource $source) { | private function buildHeaderView(NuanceSource $source) { | ||||
$viewer = $this->getViewer(); | $viewer = $this->getViewer(); | ||||
$header = id(new PHUIHeaderView()) | $header = id(new PHUIHeaderView()) | ||||
->setUser($viewer) | ->setUser($viewer) | ||||
->setHeader($source->getName()) | ->setHeader($source->getName()) | ||||
->setPolicyObject($source); | ->setPolicyObject($source); | ||||
return $header; | return $header; | ||||
} | } | ||||
private function buildActionView(NuanceSource $source) { | private function buildCurtain(NuanceSource $source) { | ||||
$viewer = $this->getViewer(); | $viewer = $this->getViewer(); | ||||
$id = $source->getID(); | $id = $source->getID(); | ||||
$actions = id(new PhabricatorActionListView()) | $actions = id(new PhabricatorActionListView()) | ||||
->setUser($viewer); | ->setUser($viewer); | ||||
$can_edit = PhabricatorPolicyFilter::hasCapability( | $can_edit = PhabricatorPolicyFilter::hasCapability( | ||||
$viewer, | $viewer, | ||||
$source, | $source, | ||||
PhabricatorPolicyCapability::CAN_EDIT); | PhabricatorPolicyCapability::CAN_EDIT); | ||||
$actions->addAction( | $curtain = $this->newCurtainView($source); | ||||
$curtain->addAction( | |||||
id(new PhabricatorActionView()) | id(new PhabricatorActionView()) | ||||
->setName(pht('Edit Source')) | ->setName(pht('Edit Source')) | ||||
->setIcon('fa-pencil') | ->setIcon('fa-pencil') | ||||
->setHref($this->getApplicationURI("source/edit/{$id}/")) | ->setHref($this->getApplicationURI("source/edit/{$id}/")) | ||||
->setDisabled(!$can_edit) | ->setDisabled(!$can_edit) | ||||
->setWorkflow(!$can_edit)); | ->setWorkflow(!$can_edit)); | ||||
$request = $this->getRequest(); | $request = $this->getRequest(); | ||||
$definition = $source->requireDefinition(); | $definition = $source->requireDefinition(); | ||||
$source_actions = $definition->getSourceViewActions($request); | $source_actions = $definition->getSourceViewActions($request); | ||||
foreach ($source_actions as $source_action) { | foreach ($source_actions as $source_action) { | ||||
$actions->addAction($source_action); | $curtain->addAction($source_action); | ||||
} | } | ||||
return $actions; | return $curtain; | ||||
} | } | ||||
private function buildPropertyView( | private function buildPropertyView( | ||||
NuanceSource $source, | NuanceSource $source) { | ||||
PhabricatorActionListView $actions) { | $viewer = $this->getViewer(); | ||||
$viewer = $this->getRequest()->getUser(); | |||||
$properties = id(new PHUIPropertyListView()) | $properties = id(new PHUIPropertyListView()) | ||||
->setUser($viewer) | ->setViewer($viewer); | ||||
->setObject($source) | |||||
->setActionList($actions); | |||||
$definition = $source->requireDefinition(); | $definition = $source->requireDefinition(); | ||||
$properties->addProperty( | $properties->addProperty( | ||||
pht('Source Type'), | pht('Source Type'), | ||||
$definition->getName()); | $definition->getName()); | ||||
$descriptions = PhabricatorPolicyQuery::renderPolicyDescriptions( | |||||
$viewer, | |||||
$source); | |||||
$properties->addProperty( | |||||
pht('Editable By'), | |||||
$descriptions[PhabricatorPolicyCapability::CAN_EDIT]); | |||||
return $properties; | return $properties; | ||||
} | } | ||||
} | } |