public function processRequest() { $can_edit = $this->requireApplicationCapability(NuanceSourceManageCapability::CAPABILITY); $request = $this->getRequest(); $user = $request->getUser(); $source_id = $this->getSourceID(); $is_new = !$source_id; if ($is_new) { $source = NuanceSource::initializeNewSource($user); } else { $source = id(new NuanceSourceQuery())->setViewer($user)->withIDs(array($source_id))->requireCapabilities(array(PhabricatorPolicyCapability::CAN_VIEW, PhabricatorPolicyCapability::CAN_EDIT))->executeOne(); } if (!$source) { return new Aphront404Response(); } $definition = NuanceSourceDefinition::getDefinitionForSource($source); $definition->setActor($user); $response = $definition->buildEditLayout($request); if ($response instanceof AphrontResponse) { return $response; } $layout = $response; $crumbs = $this->buildApplicationCrumbs(); return $this->buildApplicationPage(array($crumbs, $layout), array('title' => $definition->getEditTitle())); }
private function buildPropertyView(NuanceSource $source, PhabricatorActionListView $actions) { $viewer = $this->getRequest()->getUser(); $properties = id(new PHUIPropertyListView())->setUser($viewer)->setObject($source)->setActionList($actions); $definition = NuanceSourceDefinition::getDefinitionForSource($source); $properties->addProperty(pht('Source Type'), $definition->getName()); $descriptions = PhabricatorPolicyQuery::renderPolicyDescriptions($viewer, $source); $properties->addProperty(pht('Editable By'), $descriptions[PhabricatorPolicyCapability::CAN_EDIT]); return $properties; }
public function handleRequest(AphrontRequest $request) { $viewer = $this->getViewer(); $source = id(new NuanceSourceQuery())->setViewer($viewer)->withIDs(array($request->getURIData('id')))->executeOne(); if (!$source) { return new Aphront404Response(); } $def = NuanceSourceDefinition::getDefinitionForSource($source); $def->setActor($viewer); $response = $def->handleActionRequest($request); if ($response instanceof AphrontResponse) { return $response; } $title = $source->getName(); $crumbs = $this->buildApplicationCrumbs(); $crumbs->addTextCrumb($title); return $this->buildApplicationPage(array($crumbs, $response), array('title' => $title)); }
public function handleRequest(AphrontRequest $request) { $can_edit = $this->requireApplicationCapability(NuanceSourceManageCapability::CAPABILITY); $viewer = $this->getViewer(); $sources_uri = $this->getApplicationURI('source/'); $source_id = $request->getURIData('id'); $is_new = !$source_id; if ($is_new) { $source = NuanceSource::initializeNewSource($viewer); $type = $request->getURIData('type'); $map = NuanceSourceDefinition::getAllDefinitions(); if (empty($map[$type])) { return new Aphront404Response(); } $source->setType($type); $cancel_uri = $sources_uri; } else { $source = id(new NuanceSourceQuery())->setViewer($viewer)->withIDs(array($source_id))->requireCapabilities(array(PhabricatorPolicyCapability::CAN_VIEW, PhabricatorPolicyCapability::CAN_EDIT))->executeOne(); if (!$source) { return new Aphront404Response(); } $cancel_uri = $source->getURI(); } $definition = NuanceSourceDefinition::getDefinitionForSource($source); $definition->setActor($viewer); $response = $definition->buildEditLayout($request); if ($response instanceof AphrontResponse) { return $response; } $layout = $response; $crumbs = $this->buildApplicationCrumbs(); $crumbs->addTextCrumb(pht('Sources'), $sources_uri); if ($is_new) { $crumbs->addTextCrumb(pht('New')); } else { $crumbs->addTextCrumb($source->getName(), $cancel_uri); $crumbs->addTextCrumb(pht('Edit')); } return $this->buildApplicationPage(array($crumbs, $layout), array('title' => $definition->getEditTitle())); }