]> BookStack Code Mirror - bookstack/commitdiff
Fixed revision issues caused by page fillable changes
authorDan Brown <redacted>
Sat, 23 May 2020 11:28:14 +0000 (12:28 +0100)
committerDan Brown <redacted>
Sat, 23 May 2020 11:28:14 +0000 (12:28 +0100)
app/Entities/Repos/PageRepo.php
app/Http/Controllers/PageRevisionController.php
tests/Entity/PageRevisionTest.php

index fc585b4dff9921f89e890b54a88350690228464d..e5f13463c388f781dd215338afb4af37cefaa7c5 100644 (file)
@@ -278,7 +278,7 @@ class PageRepo
         $revision = $page->revisions()->where('id', '=', $revisionId)->first();
         $page->fill($revision->toArray());
         $content = new PageContent($page);
-        $content->setNewHTML($page->html);
+        $content->setNewHTML($revision->html);
         $page->updated_by = user()->id;
         $page->refreshSlug();
         $page->save();
index 3c65b50ac5ae6e2d9c9769ba2f4a4ace572ea51f..797f5db8f43ff1ca9f8f561e029b888cec7a662d 100644 (file)
@@ -1,5 +1,6 @@
 <?php namespace BookStack\Http\Controllers;
 
+use BookStack\Entities\Managers\PageContent;
 use BookStack\Entities\Repos\PageRepo;
 use BookStack\Exceptions\NotFoundException;
 use BookStack\Facades\Activity;
@@ -46,6 +47,9 @@ class PageRevisionController extends Controller
         }
 
         $page->fill($revision->toArray());
+        // TODO - Refactor PageContent so we don't need to juggle this
+        $page->html = $revision->html;
+        $page->html = (new PageContent($page))->render();
 
         $this->setPageTitle(trans('entities.pages_revision_named', ['pageName' => $page->getShortName()]));
         return view('pages.revision', [
@@ -73,6 +77,9 @@ class PageRevisionController extends Controller
         $diff = (new Htmldiff)->diff($prevContent, $revision->html);
 
         $page->fill($revision->toArray());
+        // TODO - Refactor PageContent so we don't need to juggle this
+        $page->html = $revision->html;
+        $page->html = (new PageContent($page))->render();
         $this->setPageTitle(trans('entities.pages_revision_named', ['pageName'=>$page->getShortName()]));
 
         return view('pages.revision', [
index f8baccc5493f84e7ac0ce388bc81d837a8cdacf0..1e9dbd626b78fd011184e3549cbf239578365b6a 100644 (file)
@@ -24,6 +24,21 @@ class PageRevisionTest extends TestCase
         $revisionView->assertSee('new content');
     }
 
+    public function test_page_revision_preview_shows_content_of_revision()
+    {
+        $this->asEditor();
+
+        $pageRepo = app(PageRepo::class);
+        $page = Page::first();
+        $pageRepo->update($page, ['name' => 'updated page', 'html' => '<p>new revision content</p>', 'summary' => 'page revision testing']);
+        $pageRevision = $page->revisions->last();
+        $pageRepo->update($page, ['name' => 'updated page', 'html' => '<p>Updated content</p>', 'summary' => 'page revision testing 2']);
+
+        $revisionView = $this->get($page->getUrl() . '/revisions/' . $pageRevision->id);
+        $revisionView->assertStatus(200);
+        $revisionView->assertSee('new revision content');
+    }
+
     public function test_page_revision_restore_updates_content()
     {
         $this->asEditor();