Differential D13088 Diff 31598 src/applications/calendar/controller/PhabricatorCalendarEventEditController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/calendar/controller/PhabricatorCalendarEventEditController.php
Show All 11 Lines | final class PhabricatorCalendarEventEditController | ||||
public function isCreate() { | public function isCreate() { | ||||
return !$this->id; | return !$this->id; | ||||
} | } | ||||
public function handleRequest(AphrontRequest $request) { | public function handleRequest(AphrontRequest $request) { | ||||
$viewer = $request->getViewer(); | $viewer = $request->getViewer(); | ||||
$user_phid = $viewer->getPHID(); | $user_phid = $viewer->getPHID(); | ||||
$error_name = true; | $error_name = true; | ||||
$error_recurrence_end_date = true; | |||||
$error_start_date = true; | $error_start_date = true; | ||||
$error_end_date = true; | $error_end_date = true; | ||||
$validation_exception = null; | $validation_exception = null; | ||||
$is_recurring_id = celerity_generate_unique_node_id(); | $is_recurring_id = celerity_generate_unique_node_id(); | ||||
$recurrence_end_date_id = celerity_generate_unique_node_id(); | |||||
$frequency_id = celerity_generate_unique_node_id(); | $frequency_id = celerity_generate_unique_node_id(); | ||||
$all_day_id = celerity_generate_unique_node_id(); | $all_day_id = celerity_generate_unique_node_id(); | ||||
$start_date_id = celerity_generate_unique_node_id(); | $start_date_id = celerity_generate_unique_node_id(); | ||||
$end_date_id = celerity_generate_unique_node_id(); | $end_date_id = celerity_generate_unique_node_id(); | ||||
$next_workflow = $request->getStr('next'); | $next_workflow = $request->getStr('next'); | ||||
$uri_query = $request->getStr('query'); | $uri_query = $request->getStr('query'); | ||||
Show All 27 Lines | if ($this->isCreate()) { | ||||
$end_value = AphrontFormDateControlValue::newFromEpoch( | $end_value = AphrontFormDateControlValue::newFromEpoch( | ||||
$viewer, | $viewer, | ||||
$end->format('U')); | $end->format('U')); | ||||
} else { | } else { | ||||
list($start_value, $end_value) = $this->getDefaultTimeValues($viewer); | list($start_value, $end_value) = $this->getDefaultTimeValues($viewer); | ||||
} | } | ||||
$recurrence_end_date_value = clone $end_value; | |||||
$submit_label = pht('Create'); | $submit_label = pht('Create'); | ||||
$page_title = pht('Create Event'); | $page_title = pht('Create Event'); | ||||
$redirect = 'created'; | $redirect = 'created'; | ||||
$subscribers = array(); | $subscribers = array(); | ||||
$invitees = array($user_phid); | $invitees = array($user_phid); | ||||
$cancel_uri = $this->getApplicationURI(); | $cancel_uri = $this->getApplicationURI(); | ||||
} else { | } else { | ||||
▲ Show 20 Lines • Show All 57 Lines • ▼ Show 20 Lines | if ($this->isCreate()) { | ||||
} | } | ||||
$end_value = AphrontFormDateControlValue::newFromEpoch( | $end_value = AphrontFormDateControlValue::newFromEpoch( | ||||
$viewer, | $viewer, | ||||
$event->getDateTo()); | $event->getDateTo()); | ||||
$start_value = AphrontFormDateControlValue::newFromEpoch( | $start_value = AphrontFormDateControlValue::newFromEpoch( | ||||
$viewer, | $viewer, | ||||
$event->getDateFrom()); | $event->getDateFrom()); | ||||
$recurrence_end_date_value = clone $start_value; | |||||
epriestley: Seems slightly weird that we clone `$start_value` here and `$end_value` above? | |||||
$submit_label = pht('Update'); | $submit_label = pht('Update'); | ||||
$page_title = pht('Update Event'); | $page_title = pht('Update Event'); | ||||
$subscribers = PhabricatorSubscribersQuery::loadSubscribersForPHID( | $subscribers = PhabricatorSubscribersQuery::loadSubscribersForPHID( | ||||
$event->getPHID()); | $event->getPHID()); | ||||
$invitees = array(); | $invitees = array(); | ||||
Show All 25 Lines | if ($request->isFormPost()) { | ||||
$name = $request->getStr('name'); | $name = $request->getStr('name'); | ||||
$start_value = AphrontFormDateControlValue::newFromRequest( | $start_value = AphrontFormDateControlValue::newFromRequest( | ||||
$request, | $request, | ||||
'start'); | 'start'); | ||||
$end_value = AphrontFormDateControlValue::newFromRequest( | $end_value = AphrontFormDateControlValue::newFromRequest( | ||||
$request, | $request, | ||||
'end'); | 'end'); | ||||
$recurrence_end_date_value = AphrontFormDateControlValue::newFromRequest( | |||||
$request, | |||||
'recurrenceEndDate'); | |||||
$description = $request->getStr('description'); | $description = $request->getStr('description'); | ||||
$subscribers = $request->getArr('subscribers'); | $subscribers = $request->getArr('subscribers'); | ||||
$edit_policy = $request->getStr('editPolicy'); | $edit_policy = $request->getStr('editPolicy'); | ||||
$view_policy = $request->getStr('viewPolicy'); | $view_policy = $request->getStr('viewPolicy'); | ||||
Done Inline Actionsdebugging code epriestley: debugging code
| |||||
$is_recurring = $request->getStr('isRecurring') ? 1 : 0; | $is_recurring = $request->getStr('isRecurring') ? 1 : 0; | ||||
$frequency = $request->getStr('frequency'); | $frequency = $request->getStr('frequency'); | ||||
$is_all_day = $request->getStr('isAllDay'); | $is_all_day = $request->getStr('isAllDay'); | ||||
$icon = $request->getStr('icon'); | $icon = $request->getStr('icon'); | ||||
$invitees = $request->getArr('invitees'); | $invitees = $request->getArr('invitees'); | ||||
$new_invitees = $this->getNewInviteeList($invitees, $event); | $new_invitees = $this->getNewInviteeList($invitees, $event); | ||||
$status_attending = PhabricatorCalendarEventInvitee::STATUS_ATTENDING; | $status_attending = PhabricatorCalendarEventInvitee::STATUS_ATTENDING; | ||||
Show All 14 Lines | if ($request->isFormPost()) { | ||||
->setTransactionType( | ->setTransactionType( | ||||
PhabricatorCalendarEventTransaction::TYPE_RECURRING) | PhabricatorCalendarEventTransaction::TYPE_RECURRING) | ||||
->setNewValue($is_recurring); | ->setNewValue($is_recurring); | ||||
$xactions[] = id(new PhabricatorCalendarEventTransaction()) | $xactions[] = id(new PhabricatorCalendarEventTransaction()) | ||||
->setTransactionType( | ->setTransactionType( | ||||
PhabricatorCalendarEventTransaction::TYPE_FREQUENCY) | PhabricatorCalendarEventTransaction::TYPE_FREQUENCY) | ||||
->setNewValue(array('rule' => $frequency)); | ->setNewValue(array('rule' => $frequency)); | ||||
$xactions[] = id(new PhabricatorCalendarEventTransaction()) | |||||
->setTransactionType( | |||||
PhabricatorCalendarEventTransaction::TYPE_RECURRENCE_END_DATE) | |||||
->setNewValue($recurrence_end_date_value); | |||||
} | } | ||||
$xactions[] = id(new PhabricatorCalendarEventTransaction()) | $xactions[] = id(new PhabricatorCalendarEventTransaction()) | ||||
->setTransactionType( | ->setTransactionType( | ||||
PhabricatorCalendarEventTransaction::TYPE_ALL_DAY) | PhabricatorCalendarEventTransaction::TYPE_ALL_DAY) | ||||
->setNewValue($is_all_day); | ->setNewValue($is_all_day); | ||||
$xactions[] = id(new PhabricatorCalendarEventTransaction()) | $xactions[] = id(new PhabricatorCalendarEventTransaction()) | ||||
▲ Show 20 Lines • Show All 61 Lines • ▼ Show 20 Lines | if ($request->isFormPost()) { | ||||
} catch (PhabricatorApplicationTransactionValidationException $ex) { | } catch (PhabricatorApplicationTransactionValidationException $ex) { | ||||
$validation_exception = $ex; | $validation_exception = $ex; | ||||
$error_name = $ex->getShortMessage( | $error_name = $ex->getShortMessage( | ||||
PhabricatorCalendarEventTransaction::TYPE_NAME); | PhabricatorCalendarEventTransaction::TYPE_NAME); | ||||
$error_start_date = $ex->getShortMessage( | $error_start_date = $ex->getShortMessage( | ||||
PhabricatorCalendarEventTransaction::TYPE_START_DATE); | PhabricatorCalendarEventTransaction::TYPE_START_DATE); | ||||
$error_end_date = $ex->getShortMessage( | $error_end_date = $ex->getShortMessage( | ||||
PhabricatorCalendarEventTransaction::TYPE_END_DATE); | PhabricatorCalendarEventTransaction::TYPE_END_DATE); | ||||
$error_recurrence_end_date = $ex->getShortMessage( | |||||
PhabricatorCalendarEventTransaction::TYPE_RECURRENCE_END_DATE); | |||||
$event->setViewPolicy($view_policy); | $event->setViewPolicy($view_policy); | ||||
$event->setEditPolicy($edit_policy); | $event->setEditPolicy($edit_policy); | ||||
} | } | ||||
} | } | ||||
$is_recurring_checkbox = null; | $is_recurring_checkbox = null; | ||||
$recurrence_frequency_select = null; | $recurrence_frequency_select = null; | ||||
$name = id(new AphrontFormTextControl()) | $name = id(new AphrontFormTextControl()) | ||||
->setLabel(pht('Name')) | ->setLabel(pht('Name')) | ||||
->setName('name') | ->setName('name') | ||||
->setValue($name) | ->setValue($name) | ||||
->setError($error_name); | ->setError($error_name); | ||||
if ($this->isCreate()) { | if ($this->isCreate()) { | ||||
Javelin::initBehavior('recurring-edit', array( | Javelin::initBehavior('recurring-edit', array( | ||||
'isRecurring' => $is_recurring_id, | 'isRecurring' => $is_recurring_id, | ||||
'frequency' => $frequency_id, | 'frequency' => $frequency_id, | ||||
'recurrenceEndDate' => $recurrence_end_date_id, | |||||
)); | )); | ||||
$is_recurring_checkbox = id(new AphrontFormCheckboxControl()) | $is_recurring_checkbox = id(new AphrontFormCheckboxControl()) | ||||
->addCheckbox( | ->addCheckbox( | ||||
'isRecurring', | 'isRecurring', | ||||
1, | 1, | ||||
pht('Recurring Event'), | pht('Recurring Event'), | ||||
$is_recurring, | $is_recurring, | ||||
$is_recurring_id); | $is_recurring_id); | ||||
$recurrence_end_date_control = id(new AphrontFormDateControl()) | |||||
->setUser($viewer) | |||||
->setName('recurrenceEndDate') | |||||
->setLabel(pht('Recurrence End Date')) | |||||
->setError($error_recurrence_end_date) | |||||
->setValue($recurrence_end_date_value) | |||||
->setID($recurrence_end_date_id) | |||||
->setIsTimeDisabled(true) | |||||
->setAllowNull(true) | |||||
->setIsDisabled(!$is_recurring); | |||||
$recurrence_frequency_select = id(new AphrontFormSelectControl()) | $recurrence_frequency_select = id(new AphrontFormSelectControl()) | ||||
->setName('frequency') | ->setName('frequency') | ||||
->setOptions(array( | ->setOptions(array( | ||||
'daily' => pht('Daily'), | 'daily' => pht('Daily'), | ||||
'weekly' => pht('Weekly'), | 'weekly' => pht('Weekly'), | ||||
'monthly' => pht('Monthly'), | 'monthly' => pht('Monthly'), | ||||
'yearly' => pht('Yearly'), | 'yearly' => pht('Yearly'), | ||||
)) | )) | ||||
▲ Show 20 Lines • Show All 86 Lines • ▼ Show 20 Lines | $form = id(new AphrontFormView()) | ||||
->addHiddenInput('next', $next_workflow) | ->addHiddenInput('next', $next_workflow) | ||||
->addHiddenInput('query', $uri_query) | ->addHiddenInput('query', $uri_query) | ||||
->setUser($viewer) | ->setUser($viewer) | ||||
->appendChild($name); | ->appendChild($name); | ||||
if ($is_recurring_checkbox) { | if ($is_recurring_checkbox) { | ||||
$form->appendChild($is_recurring_checkbox); | $form->appendChild($is_recurring_checkbox); | ||||
} | } | ||||
if ($recurrence_end_date_control) { | |||||
$form->appendChild($recurrence_end_date_control); | |||||
} | |||||
if ($recurrence_frequency_select) { | if ($recurrence_frequency_select) { | ||||
$form->appendControl($recurrence_frequency_select); | $form->appendControl($recurrence_frequency_select); | ||||
} | } | ||||
$form | $form | ||||
->appendChild($all_day_checkbox) | ->appendChild($all_day_checkbox) | ||||
->appendChild($start_control) | ->appendChild($start_control) | ||||
->appendChild($end_control) | ->appendChild($end_control) | ||||
▲ Show 20 Lines • Show All 96 Lines • Show Last 20 Lines |
Seems slightly weird that we clone $start_value here and $end_value above?