Page MenuHomestyx hydra

No OneTemporary

diff --git a/src/applications/phriction/controller/PhrictionHistoryController.php b/src/applications/phriction/controller/PhrictionHistoryController.php
index 68c570ba73..48cd70dafa 100644
--- a/src/applications/phriction/controller/PhrictionHistoryController.php
+++ b/src/applications/phriction/controller/PhrictionHistoryController.php
@@ -1,152 +1,159 @@
<?php
/**
* @group phriction
*/
final class PhrictionHistoryController
extends PhrictionController {
private $slug;
public function willProcessRequest(array $data) {
$this->slug = $data['slug'];
}
public function processRequest() {
$request = $this->getRequest();
$user = $request->getUser();
$document = id(new PhrictionDocument())->loadOneWhere(
'slug = %s',
PhabricatorSlug::normalize($this->slug));
if (!$document) {
return new Aphront404Response();
}
$current = id(new PhrictionContent())->load($document->getContentID());
$pager = new AphrontPagerView();
$pager->setOffset($request->getInt('page'));
$pager->setURI($request->getRequestURI(), 'page');
$history = id(new PhrictionContent())->loadAllWhere(
'documentID = %d ORDER BY version DESC LIMIT %d, %d',
$document->getID(),
$pager->getOffset(),
$pager->getPageSize() + 1);
$history = $pager->sliceResults($history);
$author_phids = mpull($history, 'getAuthorPHID');
$handles = $this->loadViewerHandles($author_phids);
- $rows = array();
+ $list = new PhabricatorObjectItemListView();
+
foreach ($history as $content) {
+ $author = $handles[$content->getAuthorPHID()]->renderLink();
$slug_uri = PhrictionDocument::getSlugURI($document->getSlug());
$version = $content->getVersion();
$diff_uri = new PhutilURI('/phriction/diff/'.$document->getID().'/');
- $vs_previous = phutil_tag('em', array(), pht('Created'));
+ $vs_previous = null;
if ($content->getVersion() != 1) {
- $uri = $diff_uri
+ $vs_previous = $diff_uri
->alter('l', $content->getVersion() - 1)
->alter('r', $content->getVersion());
- $vs_previous = phutil_tag(
- 'a',
- array(
- 'href' => $uri,
- ),
- pht('Show Change'));
}
- $vs_head = phutil_tag('em', array(), pht('Current'));
+ $vs_head = null;
if ($content->getID() != $document->getContentID()) {
- $uri = $diff_uri
+ $vs_head = $diff_uri
->alter('l', $content->getVersion())
->alter('r', $current->getVersion());
-
- $vs_head = phutil_tag(
- 'a',
- array(
- 'href' => $uri,
- ),
- pht('Show Later Changes'));
}
$change_type = PhrictionChangeType::getChangeTypeLabel(
$content->getChangeType());
+ switch ($content->getChangeType()) {
+ case PhrictionChangeType::CHANGE_DELETE:
+ $color = 'red';
+ break;
+ case PhrictionChangeType::CHANGE_EDIT:
+ $color = 'blue';
+ break;
+ case PhrictionChangeType::CHANGE_MOVE_HERE:
+ $color = 'yellow';
+ break;
+ case PhrictionChangeType::CHANGE_MOVE_AWAY:
+ $color = 'orange';
+ break;
+ case PhrictionChangeType::CHANGE_STUB:
+ $color = 'green';
+ break;
+ default:
+ throw new Exception("Unknown change type!");
+ break;
+ }
- $rows[] = array(
- phabricator_date($content->getDateCreated(), $user),
- phabricator_time($content->getDateCreated(), $user),
- phutil_tag(
- 'a',
- array(
- 'href' => $slug_uri.'?v='.$version,
- ),
- pht('Version %s', $version)),
- $handles[$content->getAuthorPHID()]->renderLink(),
- $change_type,
- $content->getDescription(),
- $vs_previous,
- $vs_head,
- );
- }
+ $item = id(new PhabricatorObjectItemView())
+ ->setHeader(pht('%s by %s', $change_type, $author))
+ ->setBarColor($color)
+ ->addAttribute(
+ phutil_tag(
+ 'a',
+ array(
+ 'href' => $slug_uri.'?v='.$version,
+ ),
+ pht('Version %s', $version)))
+ ->addAttribute(pht('%s %s',
+ phabricator_date($content->getDateCreated(), $user),
+ phabricator_time($content->getDateCreated(), $user)));
+
+ if ($content->getDescription()) {
+ $item->addAttribute($content->getDescription());
+ }
- $table = new AphrontTableView($rows);
- $table->setHeaders(
- array(
- pht('Date'),
- pht('Time'),
- pht('Version'),
- pht('Author'),
- pht('Type'),
- pht('Description'),
- pht('Against Previous'),
- pht('Against Current'),
- ));
- $table->setColumnClasses(
- array(
- '',
- 'right',
- 'pri',
- '',
- '',
- 'wide',
- '',
- '',
- ));
+ if ($vs_previous) {
+ $item->addIcon('arrow_left', pht('Show Change'), $vs_previous);
+ } else {
+ $item->addIcon('arrow_left-grey',
+ phutil_tag('em', array(), pht('No previous change')));
+ }
+
+ if ($vs_head) {
+ $item->addIcon('merge', pht('Show Later Changes'), $vs_head);
+ } else {
+ $item->addIcon('merge-grey',
+ phutil_tag('em', array(), pht('No later changes')));
+ }
+
+ $list->addItem($item);
+ }
$crumbs = $this->buildApplicationCrumbs();
$crumb_views = $this->renderBreadcrumbs($document->getSlug());
foreach ($crumb_views as $view) {
$crumbs->addCrumb($view);
}
$crumbs->addCrumb(
id(new PhabricatorCrumbView())
->setName(pht('History'))
->setHref(
PhrictionDocument::getSlugURI($document->getSlug(), 'history')));
- $panel = new AphrontPanelView();
- $panel->setHeader(pht('Document History'));
- $panel->setNoBackground();
- $panel->appendChild($table);
- $panel->appendChild($pager);
+ $header = new PhabricatorHeaderView();
+ $header->setHeader(pht('Document History for %s',
+ phutil_tag(
+ 'a',
+ array('href' => PhrictionDocument::getSlugURI($document->getSlug())),
+ head($history)->getTitle())));
return $this->buildApplicationPage(
array(
$crumbs,
- $panel,
+ $header,
+ $list,
+ $pager,
),
array(
'title' => pht('Document History'),
'device' => true,
+ 'dust' => true,
));
}
}

File Metadata

Mime Type
text/x-diff
Expires
Tue, Mar 17, 2:17 AM (3 h, 37 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
964253
Default Alt Text
(6 KB)

Event Timeline