Differential D20301 Diff 48499 src/applications/project/controller/trigger/PhabricatorProjectTriggerEditController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/project/controller/trigger/PhabricatorProjectTriggerEditController.php
| Show First 20 Lines • Show All 59 Lines • ▼ Show 20 Lines | public function handleRequest(AphrontRequest $request) { | ||||
| $e_edit = null; | $e_edit = null; | ||||
| $validation_exception = null; | $validation_exception = null; | ||||
| if ($request->isFormPost()) { | if ($request->isFormPost()) { | ||||
| try { | try { | ||||
| $v_name = $request->getStr('name'); | $v_name = $request->getStr('name'); | ||||
| $v_edit = $request->getStr('editPolicy'); | $v_edit = $request->getStr('editPolicy'); | ||||
| $v_rules = $request->getStr('rules'); | |||||
| $v_rules = phutil_json_decode($v_rules); | |||||
amckinley: These are unused, I'm assuming because we aren't yet writing anything to the DB. | |||||
| $xactions = array(); | $xactions = array(); | ||||
| if (!$trigger->getID()) { | if (!$trigger->getID()) { | ||||
| $xactions[] = $trigger->getApplicationTransactionTemplate() | $xactions[] = $trigger->getApplicationTransactionTemplate() | ||||
| ->setTransactionType(PhabricatorTransactions::TYPE_CREATE) | ->setTransactionType(PhabricatorTransactions::TYPE_CREATE) | ||||
| ->setNewValue(true); | ->setNewValue(true); | ||||
| } | } | ||||
| $xactions[] = $trigger->getApplicationTransactionTemplate() | $xactions[] = $trigger->getApplicationTransactionTemplate() | ||||
| ->setTransactionType( | ->setTransactionType( | ||||
| PhabricatorProjectTriggerNameTransaction::TRANSACTIONTYPE) | PhabricatorProjectTriggerNameTransaction::TRANSACTIONTYPE) | ||||
| ->setNewValue($v_name); | ->setNewValue($v_name); | ||||
| $xactions[] = $trigger->getApplicationTransactionTemplate() | $xactions[] = $trigger->getApplicationTransactionTemplate() | ||||
| ->setTransactionType(PhabricatorTransactions::TYPE_EDIT_POLICY) | ->setTransactionType(PhabricatorTransactions::TYPE_EDIT_POLICY) | ||||
| ->setNewValue($v_edit); | ->setNewValue($v_edit); | ||||
| // TODO: Actually write the new rules to the database. | |||||
| $editor = $trigger->getApplicationTransactionEditor() | $editor = $trigger->getApplicationTransactionEditor() | ||||
| ->setActor($viewer) | ->setActor($viewer) | ||||
| ->setContentSourceFromRequest($request) | ->setContentSourceFromRequest($request) | ||||
| ->setContinueOnNoEffect(true); | ->setContinueOnNoEffect(true); | ||||
| $editor->applyTransactions($trigger, $xactions); | $editor->applyTransactions($trigger, $xactions); | ||||
| $next_uri = $trigger->getURI(); | $next_uri = $trigger->getURI(); | ||||
| Show All 36 Lines | if ($trigger->getID()) { | ||||
| $submit = pht('Save Trigger'); | $submit = pht('Save Trigger'); | ||||
| $header = pht('Edit Trigger: %s', $trigger->getObjectName()); | $header = pht('Edit Trigger: %s', $trigger->getObjectName()); | ||||
| } else { | } else { | ||||
| $title = pht('New Trigger'); | $title = pht('New Trigger'); | ||||
| $submit = pht('Create Trigger'); | $submit = pht('Create Trigger'); | ||||
| $header = pht('New Trigger'); | $header = pht('New Trigger'); | ||||
| } | } | ||||
| $form_id = celerity_generate_unique_node_id(); | |||||
| $table_id = celerity_generate_unique_node_id(); | |||||
| $create_id = celerity_generate_unique_node_id(); | |||||
| $input_id = celerity_generate_unique_node_id(); | |||||
| $form = id(new AphrontFormView()) | $form = id(new AphrontFormView()) | ||||
| ->setViewer($viewer); | ->setViewer($viewer) | ||||
| ->setID($form_id); | |||||
| if ($column) { | if ($column) { | ||||
| $form->addHiddenInput('columnPHID', $column->getPHID()); | $form->addHiddenInput('columnPHID', $column->getPHID()); | ||||
| } | } | ||||
| $form->appendControl( | $form->appendControl( | ||||
| id(new AphrontFormTextControl()) | id(new AphrontFormTextControl()) | ||||
| ->setLabel(pht('Name')) | ->setLabel(pht('Name')) | ||||
| Show All 10 Lines | public function handleRequest(AphrontRequest $request) { | ||||
| $form->appendControl( | $form->appendControl( | ||||
| id(new AphrontFormPolicyControl()) | id(new AphrontFormPolicyControl()) | ||||
| ->setName('editPolicy') | ->setName('editPolicy') | ||||
| ->setPolicyObject($trigger) | ->setPolicyObject($trigger) | ||||
| ->setCapability(PhabricatorPolicyCapability::CAN_EDIT) | ->setCapability(PhabricatorPolicyCapability::CAN_EDIT) | ||||
| ->setPolicies($policies) | ->setPolicies($policies) | ||||
| ->setError($e_edit)); | ->setError($e_edit)); | ||||
| $form->appendChild( | |||||
| phutil_tag( | |||||
| 'input', | |||||
| array( | |||||
| 'type' => 'hidden', | |||||
| 'name' => 'rules', | |||||
| 'id' => $input_id, | |||||
| ))); | |||||
| $form->appendChild( | |||||
| id(new PHUIFormInsetView()) | |||||
| ->setTitle(pht('Rules')) | |||||
| ->setDescription( | |||||
| pht( | |||||
| 'When a card is dropped into a column which uses this trigger:')) | |||||
| ->setRightButton( | |||||
| javelin_tag( | |||||
| 'a', | |||||
| array( | |||||
| 'href' => '#', | |||||
| 'class' => 'button button-green', | |||||
| 'id' => $create_id, | |||||
| 'mustcapture' => true, | |||||
| ), | |||||
| pht('New Rule'))) | |||||
| ->setContent( | |||||
| javelin_tag( | |||||
| 'table', | |||||
| array( | |||||
| 'id' => $table_id, | |||||
| 'class' => 'trigger-rules-table', | |||||
| )))); | |||||
| $this->setupEditorBehavior( | |||||
| $trigger, | |||||
| $form_id, | |||||
| $table_id, | |||||
| $create_id, | |||||
| $input_id); | |||||
| $form->appendControl( | $form->appendControl( | ||||
| id(new AphrontFormSubmitControl()) | id(new AphrontFormSubmitControl()) | ||||
| ->setValue($submit) | ->setValue($submit) | ||||
| ->addCancelButton($cancel_uri)); | ->addCancelButton($cancel_uri)); | ||||
| $header = id(new PHUIHeaderView()) | $header = id(new PHUIHeaderView()) | ||||
| ->setHeader($header); | ->setHeader($header); | ||||
| Show All 20 Lines | public function handleRequest(AphrontRequest $request) { | ||||
| $crumbs->addTextCrumb($title); | $crumbs->addTextCrumb($title); | ||||
| return $this->newPage() | return $this->newPage() | ||||
| ->setTitle($title) | ->setTitle($title) | ||||
| ->setCrumbs($crumbs) | ->setCrumbs($crumbs) | ||||
| ->appendChild($column_view); | ->appendChild($column_view); | ||||
| } | } | ||||
| private function setupEditorBehavior( | |||||
| PhabricatorProjectTrigger $trigger, | |||||
| $form_id, | |||||
| $table_id, | |||||
| $create_id, | |||||
| $input_id) { | |||||
| $rule_list = $trigger->getTriggerRules(); | |||||
| $rule_list = mpull($rule_list, 'toDictionary'); | |||||
| $rule_list = array_values($rule_list); | |||||
| $type_list = PhabricatorProjectTriggerRule::getAllTriggerRules(); | |||||
| $type_list = mpull($type_list, 'newTemplate'); | |||||
| $type_list = array_values($type_list); | |||||
| require_celerity_resource('project-triggers-css'); | |||||
| Javelin::initBehavior( | |||||
| 'trigger-rule-editor', | |||||
| array( | |||||
| 'formNodeID' => $form_id, | |||||
| 'tableNodeID' => $table_id, | |||||
| 'createNodeID' => $create_id, | |||||
| 'inputNodeID' => $input_id, | |||||
| 'rules' => $rule_list, | |||||
| 'types' => $type_list, | |||||
| )); | |||||
| } | |||||
| } | } | ||||
These are unused, I'm assuming because we aren't yet writing anything to the DB.