@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.)
hq.recaptime.dev/wiki/Phorge
phorge
phabricator
1<?php
2
3final class PonderAnswerHistoryController extends PonderController {
4
5 public function shouldAllowPublic() {
6 return true;
7 }
8
9 public function handleRequest(AphrontRequest $request) {
10 $viewer = $request->getViewer();
11 $id = $request->getURIData('id');
12
13 $answer = id(new PonderAnswerQuery())
14 ->setViewer($viewer)
15 ->withIDs(array($id))
16 ->executeOne();
17 if (!$answer) {
18 return new Aphront404Response();
19 }
20
21 $timeline = $this->buildTransactionTimeline(
22 $answer,
23 new PonderAnswerTransactionQuery());
24 $timeline->setShouldTerminate(true);
25
26 $qid = $answer->getQuestion()->getID();
27 $aid = $answer->getID();
28
29 $crumbs = $this->buildApplicationCrumbs();
30 $crumbs->setBorder(true);
31 $crumbs->addTextCrumb("Q{$qid}", "/Q{$qid}");
32 $crumbs->addTextCrumb("A{$aid}", "/Q{$qid}#{$aid}");
33 $crumbs->addTextCrumb(pht('History'));
34 $crumbs->setBorder(true);
35
36 $header = id(new PHUIHeaderView())
37 ->setHeader(pht('Answer History'))
38 ->setHeaderIcon('fa-history');
39
40 $view = id(new PHUITwoColumnView())
41 ->setHeader($header)
42 ->setFooter($timeline);
43
44 return $this->newPage()
45 ->setTitle(pht('Answer History'))
46 ->setCrumbs($crumbs)
47 ->appendChild($view);
48 }
49
50}