1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-09-22 10:18:48 +02:00
phorge-phorge/src/applications/pholio/view/PholioTransactionView.php
Gareth Evans 38778a8b84 Parse inline comments via remarkup engine
Summary: Inline comments weren't haven't remarkup applied. Fixes T3137

Test Plan: Added some inline comments, checked that they had remarkup applied. Also checked in the real time preview.

Reviewers: epriestley

Reviewed By: epriestley

CC: aran, Korvin

Maniphest Tasks: T3137

Differential Revision: https://secure.phabricator.com/D6024
2013-05-24 05:14:32 -07:00

107 lines
2.5 KiB
PHP

<?php
final class PholioTransactionView
extends PhabricatorApplicationTransactionView {
protected function shouldGroupTransactions(
PhabricatorApplicationTransaction $u,
PhabricatorApplicationTransaction $v) {
if ($u->getAuthorPHID() != $v->getAuthorPHID()) {
// Don't group transactions by different authors.
return false;
}
if (($v->getDateCreated() - $u->getDateCreated()) > 60) {
// Don't group if transactions happend more than 60s apart.
return false;
}
switch ($u->getTransactionType()) {
case PhabricatorTransactions::TYPE_COMMENT:
case PholioTransactionType::TYPE_INLINE:
break;
default:
return false;
}
switch ($v->getTransactionType()) {
case PholioTransactionType::TYPE_INLINE:
return true;
}
return parent::shouldGroupTransactions($u, $v);
}
protected function renderTransactionContent(
PhabricatorApplicationTransaction $xaction) {
$out = array();
$group = $xaction->getTransactionGroup();
if ($xaction->getTransactionType() == PholioTransactionType::TYPE_INLINE) {
array_unshift($group, $xaction);
} else {
$out[] = parent::renderTransactionContent($xaction);
}
if (!$group) {
return $out;
}
$inlines = array();
foreach ($group as $xaction) {
switch ($xaction->getTransactionType()) {
case PholioTransactionType::TYPE_INLINE:
$inlines[] = $xaction;
break;
default:
throw new Exception("Unknown grouped transaction type!");
}
}
if ($inlines) {
$header = phutil_tag(
'div',
array(
'class' => 'phabricator-transaction-subheader',
),
pht('Inline Comments'));
$out[] = $header;
foreach ($inlines as $inline) {
if (!$inline->getComment()) {
continue;
}
$out[] = $this->renderInlineContent($inline);
}
}
return $out;
}
private function renderInlineContent(PholioTransaction $inline) {
$comment = $inline->getComment();
$thumb = phutil_tag(
'img',
array(
'src' => '/pholio/inline/thumb/'.$comment->getImageID(),
));
$link = phutil_tag(
'a',
array(
'href' => '#'
),
$thumb);
$inline_comment = parent::renderTransactionContent($inline);
return phutil_tag(
'div',
array('class' => 'pholio-transaction-inline-comment'),
array($link, $inline_comment));
}
}