1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-23 05:50:55 +01:00

Smooth over a few more transaction compatibility/structure issues with Calendar events

Summary: Ref T9275. This gets things roughly into shape for a cutover to EditEngine, mostly by fixing some problems with "recurrence end date" not being nullable while editing events.

Test Plan: Edited events with EditPro controller, nothing was obviously broken.

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T9275

Differential Revision: https://secure.phabricator.com/D16282
This commit is contained in:
epriestley 2016-07-12 11:58:56 -07:00
parent bac6acb3d1
commit a46a4362db
7 changed files with 49 additions and 18 deletions

View file

@ -6633,7 +6633,7 @@ phutil_register_library_map(array(
'PhabricatorCalendarEventCancelController' => 'PhabricatorCalendarController', 'PhabricatorCalendarEventCancelController' => 'PhabricatorCalendarController',
'PhabricatorCalendarEventDragController' => 'PhabricatorCalendarController', 'PhabricatorCalendarEventDragController' => 'PhabricatorCalendarController',
'PhabricatorCalendarEventEditController' => 'PhabricatorCalendarController', 'PhabricatorCalendarEventEditController' => 'PhabricatorCalendarController',
'PhabricatorCalendarEventEditProController' => 'ManiphestController', 'PhabricatorCalendarEventEditProController' => 'PhabricatorCalendarController',
'PhabricatorCalendarEventEditor' => 'PhabricatorApplicationTransactionEditor', 'PhabricatorCalendarEventEditor' => 'PhabricatorApplicationTransactionEditor',
'PhabricatorCalendarEventEmailCommand' => 'MetaMTAEmailTransactionCommand', 'PhabricatorCalendarEventEmailCommand' => 'MetaMTAEmailTransactionCommand',
'PhabricatorCalendarEventFulltextEngine' => 'PhabricatorFulltextEngine', 'PhabricatorCalendarEventFulltextEngine' => 'PhabricatorFulltextEngine',

View file

@ -3,13 +3,30 @@
final class AphrontEpochHTTPParameterType final class AphrontEpochHTTPParameterType
extends AphrontHTTPParameterType { extends AphrontHTTPParameterType {
private $allowNull;
public function setAllowNull($allow_null) {
$this->allowNull = $allow_null;
return $this;
}
public function getAllowNull() {
return $this->allowNull;
}
protected function getParameterExists(AphrontRequest $request, $key) { protected function getParameterExists(AphrontRequest $request, $key) {
return $request->getExists($key) || return $request->getExists($key) ||
$request->getExists($key.'_d'); $request->getExists($key.'_d');
} }
protected function getParameterValue(AphrontRequest $request, $key) { protected function getParameterValue(AphrontRequest $request, $key) {
return AphrontFormDateControlValue::newFromRequest($request, $key); $value = AphrontFormDateControlValue::newFromRequest($request, $key);
if ($this->getAllowNull()) {
$value->setOptional(true);
}
return $value;
} }
protected function getParameterTypeName() { protected function getParameterTypeName() {

View file

@ -185,7 +185,7 @@ final class PhabricatorCalendarEventEditController
$xactions[] = id(new PhabricatorCalendarEventTransaction()) $xactions[] = id(new PhabricatorCalendarEventTransaction())
->setTransactionType( ->setTransactionType(
PhabricatorCalendarEventTransaction::TYPE_RECURRENCE_END_DATE) PhabricatorCalendarEventTransaction::TYPE_RECURRENCE_END_DATE)
->setNewValue($recurrence_end_date_value->getEpoch()); ->setNewValue($recurrence_end_date_value);
} }
} }
@ -203,12 +203,12 @@ final class PhabricatorCalendarEventEditController
$xactions[] = id(new PhabricatorCalendarEventTransaction()) $xactions[] = id(new PhabricatorCalendarEventTransaction())
->setTransactionType( ->setTransactionType(
PhabricatorCalendarEventTransaction::TYPE_START_DATE) PhabricatorCalendarEventTransaction::TYPE_START_DATE)
->setNewValue($start_value->getEpoch()); ->setNewValue($start_value);
$xactions[] = id(new PhabricatorCalendarEventTransaction()) $xactions[] = id(new PhabricatorCalendarEventTransaction())
->setTransactionType( ->setTransactionType(
PhabricatorCalendarEventTransaction::TYPE_END_DATE) PhabricatorCalendarEventTransaction::TYPE_END_DATE)
->setNewValue($end_value->getEpoch()); ->setNewValue($end_value);
} }

View file

@ -1,7 +1,7 @@
<?php <?php
final class PhabricatorCalendarEventEditProController final class PhabricatorCalendarEventEditProController
extends ManiphestController { extends PhabricatorCalendarController {
public function handleRequest(AphrontRequest $request) { public function handleRequest(AphrontRequest $request) {
return id(new PhabricatorCalendarEditEngine()) return id(new PhabricatorCalendarEditEngine())

View file

@ -85,9 +85,9 @@ final class PhabricatorCalendarEventEditor
PhabricatorApplicationTransaction $xaction) { PhabricatorApplicationTransaction $xaction) {
switch ($xaction->getTransactionType()) { switch ($xaction->getTransactionType()) {
case PhabricatorCalendarEventTransaction::TYPE_RECURRING: case PhabricatorCalendarEventTransaction::TYPE_RECURRING:
return $object->getIsRecurring(); return (int)$object->getIsRecurring();
case PhabricatorCalendarEventTransaction::TYPE_FREQUENCY: case PhabricatorCalendarEventTransaction::TYPE_FREQUENCY:
return $object->getRecurrenceFrequency(); return $object->getFrequencyUnit();
case PhabricatorCalendarEventTransaction::TYPE_RECURRENCE_END_DATE: case PhabricatorCalendarEventTransaction::TYPE_RECURRENCE_END_DATE:
return $object->getRecurrenceEndDate(); return $object->getRecurrenceEndDate();
case PhabricatorCalendarEventTransaction::TYPE_NAME: case PhabricatorCalendarEventTransaction::TYPE_NAME:
@ -120,7 +120,6 @@ final class PhabricatorCalendarEventEditor
PhabricatorLiskDAO $object, PhabricatorLiskDAO $object,
PhabricatorApplicationTransaction $xaction) { PhabricatorApplicationTransaction $xaction) {
switch ($xaction->getTransactionType()) { switch ($xaction->getTransactionType()) {
case PhabricatorCalendarEventTransaction::TYPE_RECURRING:
case PhabricatorCalendarEventTransaction::TYPE_FREQUENCY: case PhabricatorCalendarEventTransaction::TYPE_FREQUENCY:
case PhabricatorCalendarEventTransaction::TYPE_NAME: case PhabricatorCalendarEventTransaction::TYPE_NAME:
case PhabricatorCalendarEventTransaction::TYPE_DESCRIPTION: case PhabricatorCalendarEventTransaction::TYPE_DESCRIPTION:
@ -132,11 +131,12 @@ final class PhabricatorCalendarEventEditor
case PhabricatorCalendarEventTransaction::TYPE_DECLINE: case PhabricatorCalendarEventTransaction::TYPE_DECLINE:
return PhabricatorCalendarEventInvitee::STATUS_DECLINED; return PhabricatorCalendarEventInvitee::STATUS_DECLINED;
case PhabricatorCalendarEventTransaction::TYPE_ALL_DAY: case PhabricatorCalendarEventTransaction::TYPE_ALL_DAY:
case PhabricatorCalendarEventTransaction::TYPE_RECURRING:
return (int)$xaction->getNewValue(); return (int)$xaction->getNewValue();
case PhabricatorCalendarEventTransaction::TYPE_RECURRENCE_END_DATE: case PhabricatorCalendarEventTransaction::TYPE_RECURRENCE_END_DATE:
case PhabricatorCalendarEventTransaction::TYPE_START_DATE: case PhabricatorCalendarEventTransaction::TYPE_START_DATE:
case PhabricatorCalendarEventTransaction::TYPE_END_DATE: case PhabricatorCalendarEventTransaction::TYPE_END_DATE:
return $xaction->getNewValue(); return $xaction->getNewValue()->getEpoch();
case PhabricatorCalendarEventTransaction::TYPE_INVITE: case PhabricatorCalendarEventTransaction::TYPE_INVITE:
$status_invited = PhabricatorCalendarEventInvitee::STATUS_INVITED; $status_invited = PhabricatorCalendarEventInvitee::STATUS_INVITED;
$status_uninvited = PhabricatorCalendarEventInvitee::STATUS_UNINVITED; $status_uninvited = PhabricatorCalendarEventInvitee::STATUS_UNINVITED;
@ -187,9 +187,12 @@ final class PhabricatorCalendarEventEditor
switch ($xaction->getTransactionType()) { switch ($xaction->getTransactionType()) {
case PhabricatorCalendarEventTransaction::TYPE_RECURRING: case PhabricatorCalendarEventTransaction::TYPE_RECURRING:
return $object->setIsRecurring($xaction->getNewValue()); return $object->setIsRecurring((int)$xaction->getNewValue());
case PhabricatorCalendarEventTransaction::TYPE_FREQUENCY: case PhabricatorCalendarEventTransaction::TYPE_FREQUENCY:
return $object->setRecurrenceFrequency($xaction->getNewValue()); return $object->setRecurrenceFrequency(
array(
'rule' => $xaction->getNewValue(),
));
case PhabricatorCalendarEventTransaction::TYPE_NAME: case PhabricatorCalendarEventTransaction::TYPE_NAME:
$object->setName($xaction->getNewValue()); $object->setName($xaction->getNewValue());
return; return;
@ -370,11 +373,11 @@ final class PhabricatorCalendarEventEditor
foreach ($xactions as $xaction) { foreach ($xactions as $xaction) {
if ($xaction->getTransactionType() == $start_date_xaction) { if ($xaction->getTransactionType() == $start_date_xaction) {
$start_date = $xaction->getNewValue(); $start_date = $xaction->getNewValue()->getEpoch();
} else if ($xaction->getTransactionType() == $end_date_xaction) { } else if ($xaction->getTransactionType() == $end_date_xaction) {
$end_date = $xaction->getNewValue(); $end_date = $xaction->getNewValue()->getEpoch();
} else if ($xaction->getTransactionType() == $recurrence_end_xaction) { } else if ($xaction->getTransactionType() == $recurrence_end_xaction) {
$recurrence_end = $xaction->getNewValue(); $recurrence_end = $xaction->getNewValue()->getEpoch();
} else if ($xaction->getTransactionType() == $is_recurrence_xaction) { } else if ($xaction->getTransactionType() == $is_recurrence_xaction) {
$is_recurring = $xaction->getNewValue(); $is_recurring = $xaction->getNewValue();
} }

View file

@ -265,8 +265,13 @@ final class PhabricatorCalendarEventTransaction
$this->renderHandleLink($author_phid)); $this->renderHandleLink($author_phid));
return $text; return $text;
case self::TYPE_FREQUENCY: case self::TYPE_FREQUENCY:
$rule = $new;
if (is_array($rule)) {
$rule = idx($rule, 'rule');
}
$text = ''; $text = '';
switch ($new['rule']) { switch ($rule) {
case PhabricatorCalendarEvent::FREQUENCY_DAILY: case PhabricatorCalendarEvent::FREQUENCY_DAILY:
$text = pht('%s set this event to repeat daily.', $text = pht('%s set this event to repeat daily.',
$this->renderHandleLink($author_phid)); $this->renderHandleLink($author_phid));
@ -487,8 +492,13 @@ final class PhabricatorCalendarEventTransaction
$this->renderHandleLink($object_phid)); $this->renderHandleLink($object_phid));
return $text; return $text;
case self::TYPE_FREQUENCY: case self::TYPE_FREQUENCY:
$rule = $new;
if (is_array($rule)) {
$rule = idx($rule, 'rule');
}
$text = ''; $text = '';
switch ($new['rule']) { switch ($rule) {
case PhabricatorCalendarEvent::FREQUENCY_DAILY: case PhabricatorCalendarEvent::FREQUENCY_DAILY:
$text = pht('%s set %s to repeat daily.', $text = pht('%s set %s to repeat daily.',
$this->renderHandleLink($author_phid), $this->renderHandleLink($author_phid),

View file

@ -21,7 +21,8 @@ final class PhabricatorEpochEditField
} }
protected function newHTTPParameterType() { protected function newHTTPParameterType() {
return new AphrontEpochHTTPParameterType(); return id(new AphrontEpochHTTPParameterType())
->setAllowNull($this->getAllowNull());
} }
protected function newConduitParameterType() { protected function newConduitParameterType() {