mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-08-26 04:05:57 +00:00
parent
4a2a539c08
commit
387047f262
@ -369,7 +369,10 @@ class PageController extends Controller
|
|||||||
public function showRevision($bookSlug, $pageSlug, $revisionId)
|
public function showRevision($bookSlug, $pageSlug, $revisionId)
|
||||||
{
|
{
|
||||||
$page = $this->entityRepo->getBySlug('page', $pageSlug, $bookSlug);
|
$page = $this->entityRepo->getBySlug('page', $pageSlug, $bookSlug);
|
||||||
$revision = $this->entityRepo->getById('page_revision', $revisionId, false);
|
$revision = $page->revisions()->where('id', '=', $revisionId)->first();
|
||||||
|
if ($revision === null) {
|
||||||
|
abort(404);
|
||||||
|
}
|
||||||
|
|
||||||
$page->fill($revision->toArray());
|
$page->fill($revision->toArray());
|
||||||
$this->setPageTitle(trans('entities.pages_revision_named', ['pageName' => $page->getShortName()]));
|
$this->setPageTitle(trans('entities.pages_revision_named', ['pageName' => $page->getShortName()]));
|
||||||
@ -390,7 +393,10 @@ class PageController extends Controller
|
|||||||
public function showRevisionChanges($bookSlug, $pageSlug, $revisionId)
|
public function showRevisionChanges($bookSlug, $pageSlug, $revisionId)
|
||||||
{
|
{
|
||||||
$page = $this->entityRepo->getBySlug('page', $pageSlug, $bookSlug);
|
$page = $this->entityRepo->getBySlug('page', $pageSlug, $bookSlug);
|
||||||
$revision = $this->entityRepo->getById('page_revision', $revisionId);
|
$revision = $page->revisions()->where('id', '=', $revisionId)->first();
|
||||||
|
if ($revision === null) {
|
||||||
|
abort(404);
|
||||||
|
}
|
||||||
|
|
||||||
$prev = $revision->getPrevious();
|
$prev = $revision->getPrevious();
|
||||||
$prevContent = ($prev === null) ? '' : $prev->html;
|
$prevContent = ($prev === null) ? '' : $prev->html;
|
||||||
|
@ -86,8 +86,7 @@ class EntityRepo
|
|||||||
$this->entities = [
|
$this->entities = [
|
||||||
'page' => $this->page,
|
'page' => $this->page,
|
||||||
'chapter' => $this->chapter,
|
'chapter' => $this->chapter,
|
||||||
'book' => $this->book,
|
'book' => $this->book
|
||||||
'page_revision' => $this->pageRevision
|
|
||||||
];
|
];
|
||||||
$this->viewService = $viewService;
|
$this->viewService = $viewService;
|
||||||
$this->permissionService = $permissionService;
|
$this->permissionService = $permissionService;
|
||||||
|
@ -1,33 +1,56 @@
|
|||||||
<?php namespace Tests;
|
<?php namespace Tests;
|
||||||
|
|
||||||
class PageContentTest extends BrowserKitTest
|
use BookStack\Page;
|
||||||
|
use BookStack\Repos\EntityRepo;
|
||||||
|
|
||||||
|
class PageContentTest extends TestCase
|
||||||
{
|
{
|
||||||
|
|
||||||
public function test_page_includes()
|
public function test_page_includes()
|
||||||
{
|
{
|
||||||
$page = \BookStack\Page::first();
|
$page = Page::first();
|
||||||
$secondPage = \BookStack\Page::all()->get(2);
|
$secondPage = Page::all()->get(2);
|
||||||
|
|
||||||
$secondPage->html = "<p id='section1'>Hello, This is a test</p><p id='section2'>This is a second block of content</p>";
|
$secondPage->html = "<p id='section1'>Hello, This is a test</p><p id='section2'>This is a second block of content</p>";
|
||||||
$secondPage->save();
|
$secondPage->save();
|
||||||
|
|
||||||
$this->asAdmin()->visit($page->getUrl())
|
$this->asEditor();
|
||||||
->dontSee('Hello, This is a test');
|
|
||||||
|
$pageContent = $this->get($page->getUrl());
|
||||||
|
$pageContent->assertDontSee('Hello, This is a test');
|
||||||
|
|
||||||
$originalHtml = $page->html;
|
$originalHtml = $page->html;
|
||||||
$page->html .= "{{@{$secondPage->id}}}";
|
$page->html .= "{{@{$secondPage->id}}}";
|
||||||
$page->save();
|
$page->save();
|
||||||
|
|
||||||
$this->asAdmin()->visit($page->getUrl())
|
$pageContent = $this->get($page->getUrl());
|
||||||
->see('Hello, This is a test')
|
$pageContent->assertSee('Hello, This is a test');
|
||||||
->see('This is a second block of content');
|
$pageContent->assertSee('This is a second block of content');
|
||||||
|
|
||||||
$page->html = $originalHtml . " Well {{@{$secondPage->id}#section2}}";
|
$page->html = $originalHtml . " Well {{@{$secondPage->id}#section2}}";
|
||||||
$page->save();
|
$page->save();
|
||||||
|
|
||||||
$this->asAdmin()->visit($page->getUrl())
|
$pageContent = $this->get($page->getUrl());
|
||||||
->dontSee('Hello, This is a test')
|
$pageContent->assertDontSee('Hello, This is a test');
|
||||||
->see('Well This is a second block of content');
|
$pageContent->assertSee('Well This is a second block of content');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_page_revision_views_viewable()
|
||||||
|
{
|
||||||
|
$this->asEditor();
|
||||||
|
|
||||||
|
$entityRepo = $this->app[EntityRepo::class];
|
||||||
|
$page = Page::first();
|
||||||
|
$entityRepo->updatePage($page, $page->book_id, ['name' => 'updated page', 'html' => '<p>new content</p>', 'summary' => 'page revision testing']);
|
||||||
|
$pageRevision = $page->revisions->last();
|
||||||
|
|
||||||
|
$revisionView = $this->get($page->getUrl() . '/revisions/' . $pageRevision->id);
|
||||||
|
$revisionView->assertStatus(200);
|
||||||
|
$revisionView->assertSee('new content');
|
||||||
|
|
||||||
|
$revisionView = $this->get($page->getUrl() . '/revisions/' . $pageRevision->id . '/changes');
|
||||||
|
$revisionView->assertStatus(200);
|
||||||
|
$revisionView->assertSee('new content');
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -84,7 +84,7 @@ class PublicActionTest extends BrowserKitTest
|
|||||||
{
|
{
|
||||||
$page = \BookStack\Page::first();
|
$page = \BookStack\Page::first();
|
||||||
$this->asAdmin()->visit($page->getUrl());
|
$this->asAdmin()->visit($page->getUrl());
|
||||||
Auth::logout();
|
\Auth::logout();
|
||||||
view()->share('pageTitle', '');
|
view()->share('pageTitle', '');
|
||||||
$this->forceVisit('/cats/dogs/hippos');
|
$this->forceVisit('/cats/dogs/hippos');
|
||||||
$this->dontSee($page->name);
|
$this->dontSee($page->name);
|
||||||
|
@ -13,6 +13,7 @@ abstract class TestCase extends BaseTestCase
|
|||||||
use DatabaseTransactions;
|
use DatabaseTransactions;
|
||||||
|
|
||||||
protected $admin;
|
protected $admin;
|
||||||
|
protected $editor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the current user context to be an admin.
|
* Set the current user context to be an admin.
|
||||||
@ -35,6 +36,28 @@ abstract class TestCase extends BaseTestCase
|
|||||||
return $this->admin;
|
return $this->admin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the current user context to be an editor.
|
||||||
|
* @return $this
|
||||||
|
*/
|
||||||
|
public function asEditor()
|
||||||
|
{
|
||||||
|
return $this->actingAs($this->getEditor());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a editor user.
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function getEditor() {
|
||||||
|
if($this->editor === null) {
|
||||||
|
$editorRole = Role::getRole('editor');
|
||||||
|
$this->editor = $editorRole->users->first();
|
||||||
|
}
|
||||||
|
return $this->editor;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create and return a new book.
|
* Create and return a new book.
|
||||||
* @param array $input
|
* @param array $input
|
||||||
|
Loading…
Reference in New Issue
Block a user