1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-09-20 01:08:50 +02:00

Commenting on instances of a recurring event should create a new event with its own comments

Summary: Closes T8696, Commenting on instances of a recurring event should create a new event with its own comments

Test Plan: Open recurring event instance (not exception), should see no timeline, leave a comment, an exception to event should be created.

Reviewers: #blessed_reviewers, epriestley

Reviewed By: #blessed_reviewers, epriestley

Subscribers: epriestley, Korvin

Maniphest Tasks: T8696

Differential Revision: https://secure.phabricator.com/D13481
This commit is contained in:
lkassianik 2015-06-30 11:47:53 -07:00
parent 1bb306348c
commit 28e0af5a62
3 changed files with 37 additions and 11 deletions

View file

@ -61,7 +61,7 @@ final class PhabricatorCalendarApplication extends PhabricatorApplication {
=> 'PhabricatorCalendarEventCancelController',
'(?P<action>join|decline|accept)/(?P<id>[1-9]\d*)/'
=> 'PhabricatorCalendarEventJoinController',
'comment/(?P<id>[1-9]\d*)/'
'comment/(?P<id>[1-9]\d*)/(?:(?P<sequence>\d+)/)?'
=> 'PhabricatorCalendarEventCommentController',
),
),

View file

@ -11,12 +11,14 @@ final class PhabricatorCalendarEventCommentController
}
public function handleRequest(AphrontRequest $request) {
$user = $request->getUser();
if (!$request->isFormPost()) {
return new Aphront400Response();
}
$user = $request->getUser();
$is_preview = $request->isPreviewRequest();
$draft = PhabricatorDraft::buildFromRequest($request);
$event = id(new PhabricatorCalendarEventQuery())
->setViewer($user)
->withIDs(array($this->id))
@ -25,8 +27,23 @@ final class PhabricatorCalendarEventCommentController
return new Aphront404Response();
}
$is_preview = $request->isPreviewRequest();
$draft = PhabricatorDraft::buildFromRequest($request);
$index = $request->getURIData('sequence');
if ($index && !$is_preview) {
$result = $this->getEventAtIndexForGhostPHID(
$user,
$event->getPHID(),
$index);
if ($result) {
$event = $result;
} else {
$event = $this->createEventFromGhost(
$user,
$event,
$index);
$event->applyViewerTimezone($user);
}
}
$view_uri = '/'.$event->getMonogram();

View file

@ -16,9 +16,10 @@ final class PhabricatorCalendarEventViewController
public function processRequest() {
$request = $this->getRequest();
$viewer = $request->getUser();
$sequence = $request->getURIData('sequence');
$timeline = null;
$event = id(new PhabricatorCalendarEventQuery())
->setViewer($viewer)
->withIDs(array($this->id))
@ -60,9 +61,11 @@ final class PhabricatorCalendarEventViewController
$crumbs->addTextCrumb($title, '/E'.$event->getID());
}
$timeline = $this->buildTransactionTimeline(
$event,
new PhabricatorCalendarEventTransactionQuery());
if (!$event->getIsGhostEvent()) {
$timeline = $this->buildTransactionTimeline(
$event,
new PhabricatorCalendarEventTransactionQuery());
}
$header = $this->buildHeaderView($event);
$actions = $this->buildActionView($event);
@ -78,13 +81,19 @@ final class PhabricatorCalendarEventViewController
? pht('Add Comment')
: pht('Add To Plate');
$draft = PhabricatorDraft::newFromUserAndKey($viewer, $event->getPHID());
if ($sequence) {
$comment_uri = $this->getApplicationURI(
'/event/comment/'.$event->getID().'/'.$sequence.'/');
} else {
$comment_uri = $this->getApplicationURI(
'/event/comment/'.$event->getID().'/');
}
$add_comment_form = id(new PhabricatorApplicationTransactionCommentView())
->setUser($viewer)
->setObjectPHID($event->getPHID())
->setDraft($draft)
->setHeaderText($add_comment_header)
->setAction(
$this->getApplicationURI('/event/comment/'.$event->getID().'/'))
->setAction($comment_uri)
->setSubmitButtonName(pht('Add Comment'));
return $this->buildApplicationPage(