Differential D20302 Diff 48500 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 49 Lines • ▼ Show 20 Lines | public function handleRequest(AphrontRequest $request) { | ||||
| } else if ($trigger->getID()) { | } else if ($trigger->getID()) { | ||||
| $cancel_uri = $trigger->getURI(); | $cancel_uri = $trigger->getURI(); | ||||
| } else { | } else { | ||||
| $cancel_uri = $this->getApplicationURI('trigger/'); | $cancel_uri = $this->getApplicationURI('trigger/'); | ||||
| } | } | ||||
| $v_name = $trigger->getName(); | $v_name = $trigger->getName(); | ||||
| $v_edit = $trigger->getEditPolicy(); | $v_edit = $trigger->getEditPolicy(); | ||||
| $v_rules = $trigger->getTriggerRules(); | |||||
| $e_name = null; | $e_name = null; | ||||
| $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'); | // Read the JSON rules from the request and convert them back into | ||||
| $v_rules = phutil_json_decode($v_rules); | // "TriggerRule" objects so we can render the correct form state | ||||
| // if the user is modifying the rules | |||||
| $raw_rules = $request->getStr('rules'); | |||||
| $raw_rules = phutil_json_decode($raw_rules); | |||||
| $copy = clone $trigger; | |||||
| $copy->setRuleset($raw_rules); | |||||
| $v_rules = $copy->getTriggerRules(); | |||||
| $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. | $xactions[] = $trigger->getApplicationTransactionTemplate() | ||||
| ->setTransactionType( | |||||
| PhabricatorProjectTriggerRulesetTransaction::TRANSACTIONTYPE) | |||||
| ->setNewValue($raw_rules); | |||||
| $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); | ||||
| ▲ Show 20 Lines • Show All 106 Lines • ▼ Show 20 Lines | $form->appendChild( | ||||
| 'table', | 'table', | ||||
| array( | array( | ||||
| 'id' => $table_id, | 'id' => $table_id, | ||||
| 'class' => 'trigger-rules-table', | 'class' => 'trigger-rules-table', | ||||
| )))); | )))); | ||||
| $this->setupEditorBehavior( | $this->setupEditorBehavior( | ||||
| $trigger, | $trigger, | ||||
| $v_rules, | |||||
| $form_id, | $form_id, | ||||
| $table_id, | $table_id, | ||||
| $create_id, | $create_id, | ||||
| $input_id); | $input_id); | ||||
| $form->appendControl( | $form->appendControl( | ||||
| id(new AphrontFormSubmitControl()) | id(new AphrontFormSubmitControl()) | ||||
| ->setValue($submit) | ->setValue($submit) | ||||
| Show All 27 Lines | public function handleRequest(AphrontRequest $request) { | ||||
| return $this->newPage() | return $this->newPage() | ||||
| ->setTitle($title) | ->setTitle($title) | ||||
| ->setCrumbs($crumbs) | ->setCrumbs($crumbs) | ||||
| ->appendChild($column_view); | ->appendChild($column_view); | ||||
| } | } | ||||
| private function setupEditorBehavior( | private function setupEditorBehavior( | ||||
| PhabricatorProjectTrigger $trigger, | PhabricatorProjectTrigger $trigger, | ||||
| array $rule_list, | |||||
| $form_id, | $form_id, | ||||
| $table_id, | $table_id, | ||||
| $create_id, | $create_id, | ||||
| $input_id) { | $input_id) { | ||||
| $rule_list = $trigger->getTriggerRules(); | |||||
| $rule_list = mpull($rule_list, 'toDictionary'); | $rule_list = mpull($rule_list, 'toDictionary'); | ||||
| $rule_list = array_values($rule_list); | $rule_list = array_values($rule_list); | ||||
| $type_list = PhabricatorProjectTriggerRule::getAllTriggerRules(); | $type_list = PhabricatorProjectTriggerRule::getAllTriggerRules(); | ||||
| $type_list = mpull($type_list, 'newTemplate'); | $type_list = mpull($type_list, 'newTemplate'); | ||||
| $type_list = array_values($type_list); | $type_list = array_values($type_list); | ||||
| require_celerity_resource('project-triggers-css'); | require_celerity_resource('project-triggers-css'); | ||||
| Show All 15 Lines | |||||