Differential D16782 Diff 40420 src/applications/calendar/controller/PhabricatorCalendarEventEditController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/calendar/controller/PhabricatorCalendarEventEditController.php
<?php | <?php | ||||
final class PhabricatorCalendarEventEditController | final class PhabricatorCalendarEventEditController | ||||
extends PhabricatorCalendarController { | extends PhabricatorCalendarController { | ||||
public function handleRequest(AphrontRequest $request) { | public function handleRequest(AphrontRequest $request) { | ||||
$viewer = $this->getViewer(); | $viewer = $this->getViewer(); | ||||
$engine = id(new PhabricatorCalendarEventEditEngine()) | |||||
->setController($this); | |||||
$id = $request->getURIData('id'); | $id = $request->getURIData('id'); | ||||
if ($id) { | if ($id) { | ||||
$event = id(new PhabricatorCalendarEventQuery()) | $event = id(new PhabricatorCalendarEventQuery()) | ||||
->setViewer($viewer) | ->setViewer($viewer) | ||||
->withIDs(array($id)) | ->withIDs(array($id)) | ||||
->executeOne(); | ->executeOne(); | ||||
$response = $this->newImportedEventResponse($event); | $response = $this->newImportedEventResponse($event); | ||||
if ($response) { | if ($response) { | ||||
return $response; | return $response; | ||||
} | } | ||||
$cancel_uri = $event->getURI(); | |||||
$page = $request->getURIData('pageKey'); | |||||
if ($page == 'recurring') { | |||||
if ($event->isChildEvent()) { | |||||
return $this->newDialog() | |||||
->setTitle(pht('Series Event')) | |||||
->appendParagraph( | |||||
pht( | |||||
'This event is an instance in an event series. To change '. | |||||
'the behavior for the series, edit the parent event.')) | |||||
->addCancelButton($cancel_uri); | |||||
} | |||||
} else if ($event->getIsRecurring()) { | |||||
$mode = $request->getStr('mode'); | |||||
if (!$mode) { | |||||
$form = id(new AphrontFormView()) | |||||
->setViewer($viewer) | |||||
->appendControl( | |||||
id(new AphrontFormSelectControl()) | |||||
->setLabel(pht('Edit Events')) | |||||
->setName('mode') | |||||
->setOptions( | |||||
array( | |||||
PhabricatorCalendarEventEditEngine::MODE_THIS | |||||
=> pht('Edit Only This Event'), | |||||
PhabricatorCalendarEventEditEngine::MODE_FUTURE | |||||
=> pht('Edit All Future Events'), | |||||
))); | |||||
return $this->newDialog() | |||||
->setTitle(pht('Edit Event')) | |||||
->appendParagraph( | |||||
pht( | |||||
'This event is part of a series. Which events do you '. | |||||
'want to edit?')) | |||||
->appendForm($form) | |||||
->addSubmitButton(pht('Continue')) | |||||
->addCancelButton($cancel_uri) | |||||
->setDisableWorkflowOnSubmit(true); | |||||
} | |||||
$engine | |||||
->addContextParameter('mode', $mode) | |||||
->setSeriesEditMode($mode); | |||||
} | |||||
} | } | ||||
return id(new PhabricatorCalendarEventEditEngine()) | return $engine->buildResponse(); | ||||
->setController($this) | |||||
->buildResponse(); | |||||
} | } | ||||
} | } |