mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-26 00:32:42 +01:00
Show transaction types in Maniphest previews
Summary: When rendering a Maniphest comment preview, also render a preview of the transaction. Test Plan: tested previews for all transaction types, got reasonable renders
This commit is contained in:
parent
3b8ff34f9b
commit
47895afbd1
4 changed files with 72 additions and 12 deletions
|
@ -284,16 +284,18 @@ class ManiphestTaskDetailController extends ManiphestController {
|
|||
id(new AphrontFormSubmitControl())
|
||||
->setValue('Avast!'));
|
||||
|
||||
$control_map = array(
|
||||
ManiphestTransactionType::TYPE_STATUS => 'resolution',
|
||||
ManiphestTransactionType::TYPE_OWNER => 'assign_to',
|
||||
ManiphestTransactionType::TYPE_CCS => 'ccs',
|
||||
ManiphestTransactionType::TYPE_PRIORITY => 'priority',
|
||||
ManiphestTransactionType::TYPE_PROJECTS => 'projects',
|
||||
ManiphestTransactionType::TYPE_ATTACH => 'file',
|
||||
);
|
||||
|
||||
Javelin::initBehavior('maniphest-transaction-controls', array(
|
||||
'select' => 'transaction-action',
|
||||
'controlMap' => array(
|
||||
ManiphestTransactionType::TYPE_STATUS => 'resolution',
|
||||
ManiphestTransactionType::TYPE_OWNER => 'assign_to',
|
||||
ManiphestTransactionType::TYPE_CCS => 'ccs',
|
||||
ManiphestTransactionType::TYPE_PRIORITY => 'priority',
|
||||
ManiphestTransactionType::TYPE_PROJECTS => 'projects',
|
||||
ManiphestTransactionType::TYPE_ATTACH => 'file',
|
||||
),
|
||||
'controlMap' => $control_map,
|
||||
'tokenizers' => array(
|
||||
ManiphestTransactionType::TYPE_PROJECTS => array(
|
||||
'id' => 'projects-tokenizer',
|
||||
|
@ -317,6 +319,8 @@ class ManiphestTaskDetailController extends ManiphestController {
|
|||
'uri' => '/maniphest/transaction/preview/'.$task->getID().'/',
|
||||
'preview' => 'transaction-preview',
|
||||
'comments' => 'transaction-comments',
|
||||
'action' => 'transaction-action',
|
||||
'map' => $control_map,
|
||||
));
|
||||
|
||||
|
||||
|
|
|
@ -48,13 +48,31 @@ class ManiphestTransactionPreviewController extends ManiphestController {
|
|||
$draft->setDraft($comments);
|
||||
$draft->save();
|
||||
|
||||
$handles = id(new PhabricatorObjectHandleData(array($user->getPHID())))
|
||||
->loadHandles();
|
||||
$phids = array($user->getPHID());
|
||||
|
||||
$action = $request->getStr('action');
|
||||
|
||||
$transaction = new ManiphestTransaction();
|
||||
$transaction->setAuthorPHID($user->getPHID());
|
||||
$transaction->setComments($comments);
|
||||
$transaction->setTransactionType(ManiphestTransactionType::TYPE_NONE);
|
||||
$transaction->setTransactionType($action);
|
||||
|
||||
$value = $request->getStr('value');
|
||||
switch ($action) {
|
||||
case ManiphestTransactionType::TYPE_OWNER:
|
||||
if (!$value) {
|
||||
$value = $user->getPHID();
|
||||
}
|
||||
$phids[] = $value;
|
||||
break;
|
||||
case ManiphestTransactionType::TYPE_PRIORITY:
|
||||
$transaction->setOldValue($task->getPriority());
|
||||
break;
|
||||
}
|
||||
$transaction->setNewValue($value);
|
||||
|
||||
$handles = id(new PhabricatorObjectHandleData($phids))
|
||||
->loadHandles();
|
||||
|
||||
$transactions = array();
|
||||
$transactions[] = $transaction;
|
||||
|
|
|
@ -198,6 +198,11 @@ class ManiphestTransactionDetailView extends AphrontView {
|
|||
}
|
||||
break;
|
||||
case ManiphestTransactionType::TYPE_CCS:
|
||||
if ($this->preview) {
|
||||
$verb = 'Changed CC';
|
||||
$desc = 'changed CCs..';
|
||||
break;
|
||||
}
|
||||
$added = array_diff($new, $old);
|
||||
$removed = array_diff($old, $new);
|
||||
if ($added && !$removed) {
|
||||
|
@ -221,6 +226,11 @@ class ManiphestTransactionDetailView extends AphrontView {
|
|||
}
|
||||
break;
|
||||
case ManiphestTransactionType::TYPE_PROJECTS:
|
||||
if ($this->preview) {
|
||||
$verb = 'Changed Projects';
|
||||
$desc = 'changed projects..';
|
||||
break;
|
||||
}
|
||||
$added = array_diff($new, $old);
|
||||
$removed = array_diff($old, $new);
|
||||
if ($added && !$removed) {
|
||||
|
@ -286,6 +296,12 @@ class ManiphestTransactionDetailView extends AphrontView {
|
|||
}
|
||||
break;
|
||||
case ManiphestTransactionType::TYPE_ATTACH:
|
||||
if ($this->preview) {
|
||||
$verb = 'Changed Attached';
|
||||
$desc = 'changed attachments..';
|
||||
break;
|
||||
}
|
||||
|
||||
$old_raw = nonempty($old, array());
|
||||
$new_raw = nonempty($new, array());
|
||||
|
||||
|
@ -330,6 +346,7 @@ class ManiphestTransactionDetailView extends AphrontView {
|
|||
$desc = 'detached '.$plural.': '.$rem_desc;
|
||||
}
|
||||
} else {
|
||||
$verb = 'Changed Attached';
|
||||
$desc = 'changed attached '.$plural.', added: '.$add_desc.
|
||||
'removed: '.$rem_desc;
|
||||
}
|
||||
|
|
|
@ -9,14 +9,34 @@
|
|||
JX.behavior('maniphest-transaction-preview', function(config) {
|
||||
|
||||
var comments = JX.$(config.comments);
|
||||
var action = JX.$(config.action);
|
||||
|
||||
var callback = function(r) {
|
||||
JX.DOM.setContent(JX.$(config.preview), JX.$H(r));
|
||||
};
|
||||
|
||||
var getdata = function() {
|
||||
var selected = action.value;
|
||||
|
||||
var value = null;
|
||||
try {
|
||||
var control = JX.$(config.map[selected]);
|
||||
var input = ([]
|
||||
.concat(JX.DOM.scry(control, 'select'))
|
||||
.concat(JX.DOM.scry(control, 'input')))[0];
|
||||
value = input.value;
|
||||
if (JX.DOM.isType(input, 'input') && input.type != 'hidden') {
|
||||
// Avoid reading 'value' out of the tokenizer free text input.
|
||||
value = null;
|
||||
}
|
||||
} catch (_ignored_) {
|
||||
// Ignored.
|
||||
}
|
||||
|
||||
return {
|
||||
comments : comments.value
|
||||
comments : comments.value,
|
||||
action : selected,
|
||||
value : value || ''
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -24,6 +44,7 @@ JX.behavior('maniphest-transaction-preview', function(config) {
|
|||
var trigger = JX.bind(request, request.trigger);
|
||||
|
||||
JX.DOM.listen(comments, 'keydown', null, trigger);
|
||||
JX.DOM.listen(action, 'change', null, trigger);
|
||||
|
||||
request.start();
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue