diff --git a/src/applications/phriction/controller/document/PhrictionDocumentController.php b/src/applications/phriction/controller/document/PhrictionDocumentController.php
index 01e68e1568..69ddea339d 100644
--- a/src/applications/phriction/controller/document/PhrictionDocumentController.php
+++ b/src/applications/phriction/controller/document/PhrictionDocumentController.php
@@ -28,6 +28,7 @@ class PhrictionDocumentController
public function processRequest() {
$request = $this->getRequest();
+ $user = $request->getUser();
$slug = PhrictionDocument::normalizeSlug($this->slug);
if ($slug != $this->slug) {
@@ -43,6 +44,7 @@ class PhrictionDocumentController
$slug);
$breadcrumbs = $this->renderBreadcrumbs($slug);
+ $version_note = null;
if (!$document) {
$create_uri = '/phriction/edit/?slug='.$slug;
@@ -68,7 +70,28 @@ class PhrictionDocumentController
),
'Create Page');
} else {
- $content = id(new PhrictionContent())->load($document->getContentID());
+ $version = $request->getInt('v');
+ if ($version) {
+ $content = id(new PhrictionContent())->loadOneWhere(
+ 'documentID = %d AND version = %d',
+ $document->getID(),
+ $version);
+ if (!$content) {
+ return new Aphront404Response();
+ }
+
+ if ($content->getID() != $document->getContentID()) {
+ $version_note = new AphrontErrorView();
+ $version_note->setSeverity(AphrontErrorView::SEVERITY_NOTICE);
+ $version_note->setTitle('Older Version');
+ $version_note->appendChild(
+ 'You are viewing an older version of this document, as it '.
+ 'appeared on '.
+ phabricator_datetime($content->getDateCreated(), $user).'.');
+ }
+ } else {
+ $content = id(new PhrictionContent())->load($document->getContentID());
+ }
$page_title = $content->getTitle();
$phids = array($content->getAuthorPHID());
@@ -110,12 +133,17 @@ class PhrictionDocumentController
'Edit Page');
}
+ if ($version_note) {
+ $version_note = $version_note->render();
+ }
+
$page =
'
'.
+ $version_note.
$page_content;
return $this->buildStandardPageResponse(
diff --git a/src/applications/phriction/controller/document/__init__.php b/src/applications/phriction/controller/document/__init__.php
index 17fc281f88..79db304aa6 100644
--- a/src/applications/phriction/controller/document/__init__.php
+++ b/src/applications/phriction/controller/document/__init__.php
@@ -6,6 +6,7 @@
+phutil_require_module('phabricator', 'aphront/response/404');
phutil_require_module('phabricator', 'aphront/response/redirect');
phutil_require_module('phabricator', 'applications/markup/engine');
phutil_require_module('phabricator', 'applications/phid/handle');
@@ -14,6 +15,8 @@ phutil_require_module('phabricator', 'applications/phriction/controller/base');
phutil_require_module('phabricator', 'applications/phriction/storage/content');
phutil_require_module('phabricator', 'applications/phriction/storage/document');
phutil_require_module('phabricator', 'infrastructure/celerity/api');
+phutil_require_module('phabricator', 'view/form/error');
+phutil_require_module('phabricator', 'view/utils');
phutil_require_module('phutil', 'markup');
phutil_require_module('phutil', 'utils');
diff --git a/src/applications/phriction/controller/history/PhrictionHistoryController.php b/src/applications/phriction/controller/history/PhrictionHistoryController.php
index 0e1c42c140..4f90af1b9c 100644
--- a/src/applications/phriction/controller/history/PhrictionHistoryController.php
+++ b/src/applications/phriction/controller/history/PhrictionHistoryController.php
@@ -57,11 +57,17 @@ class PhrictionHistoryController
foreach ($history as $content) {
$uri = PhrictionDocument::getSlugURI($document->getSlug());
+ $version = $content->getVersion();
$rows[] = array(
phabricator_date($content->getDateCreated(), $user),
phabricator_time($content->getDateCreated(), $user),
- (int)$content->getVersion(),
+ phutil_render_tag(
+ 'a',
+ array(
+ 'href' => $uri.'?v='.$version,
+ ),
+ 'Version '.$version),
$handles[$content->getAuthorPHID()]->renderLink(),
);
}
diff --git a/src/applications/phriction/controller/history/__init__.php b/src/applications/phriction/controller/history/__init__.php
index d02b018a49..57a416ef6f 100644
--- a/src/applications/phriction/controller/history/__init__.php
+++ b/src/applications/phriction/controller/history/__init__.php
@@ -16,6 +16,7 @@ phutil_require_module('phabricator', 'view/control/table');
phutil_require_module('phabricator', 'view/layout/panel');
phutil_require_module('phabricator', 'view/utils');
+phutil_require_module('phutil', 'markup');
phutil_require_module('phutil', 'utils');