mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-24 22:40:55 +01:00
Link to attached objects in email when a Maniphest task has stuff attached
Summary: When files or revisions are attached to a Maniphest task, link to the new stuff in the email. See T116. Test Plan: Attached files and revisions to a task, got sensible-looking emails about it. Reviewed By: tomo Reviewers: tomo, jungejason, tuomaspelkonen, aran CC: aran, tomo Differential Revision: 286
This commit is contained in:
parent
01bb30f905
commit
20892b0bc2
2 changed files with 62 additions and 0 deletions
|
@ -70,10 +70,18 @@ class ManiphestTransactionDetailView extends AphrontView {
|
|||
}
|
||||
|
||||
$descs = implode("\n", $descs);
|
||||
|
||||
if ($comments) {
|
||||
$descs .= "\n".$comments;
|
||||
}
|
||||
|
||||
foreach ($this->transactions as $transaction) {
|
||||
$supplemental = $this->renderSupplementalLinksForEmail($transaction);
|
||||
if ($supplemental) {
|
||||
$descs .= "\n\n".$supplemental;
|
||||
}
|
||||
}
|
||||
|
||||
$this->forEmail = false;
|
||||
return array($action, $descs);
|
||||
}
|
||||
|
@ -149,6 +157,59 @@ class ManiphestTransactionDetailView extends AphrontView {
|
|||
'</div>');
|
||||
}
|
||||
|
||||
private function renderSupplementalLinksForEmail($transaction) {
|
||||
$handles = $this->handles;
|
||||
|
||||
$type = $transaction->getTransactionType();
|
||||
$new = $transaction->getNewValue();
|
||||
$old = $transaction->getOldValue();
|
||||
|
||||
switch ($type) {
|
||||
case ManiphestTransactionType::TYPE_ATTACH:
|
||||
$old_raw = nonempty($old, array());
|
||||
$new_raw = nonempty($new, array());
|
||||
|
||||
$attach_types = array(
|
||||
PhabricatorPHIDConstants::PHID_TYPE_DREV,
|
||||
PhabricatorPHIDConstants::PHID_TYPE_FILE,
|
||||
);
|
||||
|
||||
foreach ($attach_types as $type) {
|
||||
$old = array_keys(idx($old_raw, $type, array()));
|
||||
$new = array_keys(idx($new_raw, $type, array()));
|
||||
if ($old != $new) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$added = array_diff($new, $old);
|
||||
if (!$added) {
|
||||
break;
|
||||
}
|
||||
|
||||
$links = array();
|
||||
foreach (array_select_keys($handles, $added) as $handle) {
|
||||
$links[] = ' '.PhabricatorEnv::getProductionURI($handle->getURI());
|
||||
}
|
||||
$links = implode("\n", $links);
|
||||
|
||||
switch ($type) {
|
||||
case PhabricatorPHIDConstants::PHID_TYPE_DREV:
|
||||
$title = 'ATTACHED REVISIONS';
|
||||
break;
|
||||
case PhabricatorPHIDConstants::PHID_TYPE_FILE:
|
||||
$title = 'ATTACHED FILES';
|
||||
break;
|
||||
}
|
||||
|
||||
return $title."\n".$links;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private function describeAction($transaction) {
|
||||
$verb = null;
|
||||
$desc = null;
|
||||
|
|
|
@ -11,6 +11,7 @@ phutil_require_module('phabricator', 'applications/maniphest/constants/status');
|
|||
phutil_require_module('phabricator', 'applications/maniphest/constants/transactiontype');
|
||||
phutil_require_module('phabricator', 'applications/phid/constants');
|
||||
phutil_require_module('phabricator', 'infrastructure/celerity/api');
|
||||
phutil_require_module('phabricator', 'infrastructure/env');
|
||||
phutil_require_module('phabricator', 'view/base');
|
||||
phutil_require_module('phabricator', 'view/utils');
|
||||
|
||||
|
|
Loading…
Reference in a new issue