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 = '
'. $button. '

'.phutil_escape_html($page_title).'

'. $breadcrumbs. '
'. + $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');