Page MenuHomePhabricator

D16287.id39176.diff
No OneTemporary

D16287.id39176.diff

diff --git a/src/applications/people/storage/PhabricatorUser.php b/src/applications/people/storage/PhabricatorUser.php
--- a/src/applications/people/storage/PhabricatorUser.php
+++ b/src/applications/people/storage/PhabricatorUser.php
@@ -832,6 +832,14 @@
return $offset;
}
+ public function getTimeZoneOffsetInHours() {
+ $offset = $this->getTimeZoneOffset();
+ $offset = (int)round($offset / 60);
+ $offset = -$offset;
+
+ return $offset;
+ }
+
public function formatShortDateTime($when, $now = null) {
if ($now === null) {
$now = PhabricatorTime::getNow();
diff --git a/src/applications/transactions/storage/PhabricatorModularTransactionType.php b/src/applications/transactions/storage/PhabricatorModularTransactionType.php
--- a/src/applications/transactions/storage/PhabricatorModularTransactionType.php
+++ b/src/applications/transactions/storage/PhabricatorModularTransactionType.php
@@ -141,8 +141,7 @@
$viewer = $this->getViewer();
$display = $viewer->renderHandle($phid);
- $rendering_target = $this->getStorage()->getRenderingTarget();
- if ($rendering_target == PhabricatorApplicationTransaction::TARGET_TEXT) {
+ if ($this->isTextMode()) {
$display->setAsText(true);
}
@@ -154,8 +153,7 @@
$display = $viewer->renderHandleList($phids)
->setAsInline(true);
- $rendering_target = $this->getStorage()->getRenderingTarget();
- if ($rendering_target == PhabricatorApplicationTransaction::TARGET_TEXT) {
+ if ($this->isTextMode()) {
$display->setAsText(true);
}
@@ -163,8 +161,7 @@
}
final protected function renderValue($value) {
- $rendering_target = $this->getStorage()->getRenderingTarget();
- if ($rendering_target == PhabricatorApplicationTransaction::TARGET_TEXT) {
+ if ($this->isTextMode()) {
return sprintf('"%s"', $value);
}
@@ -189,7 +186,19 @@
$display = phabricator_datetime($epoch, $viewer);
- // TODO: When rendering for email, include the UTC offset. See T10633.
+ // When rendering to text, we explicitly render the offset from UTC to
+ // provide context to the date: the mail may be generating with the
+ // server's settings, or the user may later refer back to it after changing
+ // timezones.
+
+ if ($this->isTextMode()) {
+ $offset = $viewer->getTimeZoneOffsetInHours();
+ if ($offset >= 0) {
+ $display = pht('%s (UTC+%d)', $display, $offset);
+ } else {
+ $display = pht('%s (UTC-%d)', $display, abs($offset));
+ }
+ }
return $this->renderValue($display);
}
@@ -231,5 +240,9 @@
return !strlen($value);
}
+ private function isTextMode() {
+ $target = $this->getStorage()->getRenderingTarget();
+ return ($target == PhabricatorApplicationTransaction::TARGET_TEXT);
+ }
}

File Metadata

Mime Type
text/plain
Expires
Fri, Jan 31, 10:12 PM (19 h, 53 m)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7079906
Default Alt Text
D16287.id39176.diff (2 KB)

Event Timeline