Differential D7908 Diff 17903 src/applications/drydock/controller/DrydockBlueprintEditController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/drydock/controller/DrydockBlueprintEditController.php
Show All 19 Lines | if ($this->id) { | ||||
array( | array( | ||||
PhabricatorPolicyCapability::CAN_VIEW, | PhabricatorPolicyCapability::CAN_VIEW, | ||||
PhabricatorPolicyCapability::CAN_EDIT, | PhabricatorPolicyCapability::CAN_EDIT, | ||||
)) | )) | ||||
->executeOne(); | ->executeOne(); | ||||
if (!$blueprint) { | if (!$blueprint) { | ||||
return new Aphront404Response(); | return new Aphront404Response(); | ||||
} | } | ||||
$impl = $blueprint->getImplementation(); | |||||
$cancel_uri = $this->getApplicationURI('blueprint/'.$this->id.'/'); | |||||
} else { | } else { | ||||
$class = $request->getStr('class'); | |||||
$impl = DrydockBlueprintImplementation::getNamedImplementation($class); | |||||
if (!$impl || !$impl->isEnabled()) { | |||||
return new Aphront400Response(); | |||||
} | |||||
$blueprint = new DrydockBlueprint(); | $blueprint = new DrydockBlueprint(); | ||||
$blueprint->setClassName($class); | |||||
$cancel_uri = $this->getApplicationURI('blueprint/'); | |||||
} | } | ||||
if ($request->isFormPost()) { | if ($request->isFormPost()) { | ||||
$v_view_policy = $request->getStr('viewPolicy'); | $v_view_policy = $request->getStr('viewPolicy'); | ||||
$v_edit_policy = $request->getStr('editPolicy'); | $v_edit_policy = $request->getStr('editPolicy'); | ||||
// TODO: Should we use transactions here? | // TODO: Should we use transactions here? | ||||
$blueprint->setViewPolicy($v_view_policy); | $blueprint->setViewPolicy($v_view_policy); | ||||
$blueprint->setEditPolicy($v_edit_policy); | $blueprint->setEditPolicy($v_edit_policy); | ||||
$blueprint->save(); | $blueprint->save(); | ||||
return id(new AphrontRedirectResponse()) | $id = $blueprint->getID(); | ||||
->setURI('/drydock/blueprint/'); | $save_uri = $this->getApplicationURI("blueprint/{$id}/"); | ||||
return id(new AphrontRedirectResponse())->setURI($save_uri); | |||||
} | } | ||||
$policies = id(new PhabricatorPolicyQuery()) | $policies = id(new PhabricatorPolicyQuery()) | ||||
->setViewer($viewer) | ->setViewer($viewer) | ||||
->setObject($blueprint) | ->setObject($blueprint) | ||||
->execute(); | ->execute(); | ||||
if ($request->isAjax()) { | |||||
$form = id(new PHUIFormLayoutView()) | |||||
->setUser($viewer); | |||||
} else { | |||||
$form = id(new AphrontFormView()) | $form = id(new AphrontFormView()) | ||||
->setUser($viewer); | ->setUser($viewer) | ||||
} | ->addHiddenInput('class', $request->getStr('class')) | ||||
$form | |||||
->appendChild( | ->appendChild( | ||||
id(new AphrontFormTextControl()) | id(new AphrontFormStaticControl()) | ||||
->setName('className') | ->setLabel(pht('Blueprint Type')) | ||||
->setLabel(pht('Implementation')) | ->setValue($impl->getBlueprintName())) | ||||
->setValue($blueprint->getClassName()) | |||||
->setDisabled(true)) | |||||
->appendChild( | ->appendChild( | ||||
id(new AphrontFormPolicyControl()) | id(new AphrontFormPolicyControl()) | ||||
->setName('viewPolicy') | ->setName('viewPolicy') | ||||
->setPolicyObject($blueprint) | ->setPolicyObject($blueprint) | ||||
->setCapability(PhabricatorPolicyCapability::CAN_VIEW) | ->setCapability(PhabricatorPolicyCapability::CAN_VIEW) | ||||
->setPolicies($policies)) | ->setPolicies($policies)) | ||||
->appendChild( | ->appendChild( | ||||
id(new AphrontFormPolicyControl()) | id(new AphrontFormPolicyControl()) | ||||
->setName('editPolicy') | ->setName('editPolicy') | ||||
->setPolicyObject($blueprint) | ->setPolicyObject($blueprint) | ||||
->setCapability(PhabricatorPolicyCapability::CAN_EDIT) | ->setCapability(PhabricatorPolicyCapability::CAN_EDIT) | ||||
->setPolicies($policies)); | ->setPolicies($policies)); | ||||
$crumbs = $this->buildApplicationCrumbs(); | $crumbs = $this->buildApplicationCrumbs(); | ||||
if ($blueprint->getID()) { | |||||
$title = pht('Edit Blueprint'); | $title = pht('Edit Blueprint'); | ||||
$header = pht('Edit Blueprint %d', $blueprint->getID()); | $header = pht('Edit Blueprint %d', $blueprint->getID()); | ||||
$crumbs->addTextCrumb(pht('Blueprint %d', $blueprint->getID())); | $crumbs->addTextCrumb(pht('Blueprint %d', $blueprint->getID())); | ||||
$crumbs->addTextCrumb(pht('Edit')); | $crumbs->addTextCrumb(pht('Edit')); | ||||
$submit = pht('Save Blueprint'); | |||||
if ($request->isAjax()) { | } else { | ||||
$dialog = id(new AphrontDialogView()) | $title = pht('New Blueprint'); | ||||
->setUser($viewer) | $header = pht('New Blueprint'); | ||||
->setWidth(AphrontDialogView::WIDTH_FORM) | $crumbs->addTextCrumb(pht('New Blueprint')); | ||||
->setTitle($title) | $submit = pht('Create Blueprint'); | ||||
->appendChild($form) | |||||
->addSubmitButton(pht('Edit Blueprint')) | |||||
->addCancelButton($this->getApplicationURI()); | |||||
return id(new AphrontDialogResponse())->setDialog($dialog); | |||||
} | } | ||||
$form->appendChild( | $form->appendChild( | ||||
id(new AphrontFormSubmitControl()) | id(new AphrontFormSubmitControl()) | ||||
->setValue(pht('Save')) | ->setValue($submit) | ||||
->addCancelButton($this->getApplicationURI())); | ->addCancelButton($cancel_uri)); | ||||
$box = id(new PHUIObjectBoxView()) | $box = id(new PHUIObjectBoxView()) | ||||
->setHeaderText($header) | ->setHeaderText($header) | ||||
->setForm($form); | ->setForm($form); | ||||
return $this->buildApplicationPage( | return $this->buildApplicationPage( | ||||
array( | array( | ||||
$crumbs, | $crumbs, | ||||
Show All 9 Lines |