mirror of
https://github.com/BookStackApp/BookStack.git
synced 2025-03-24 06:57:26 +08:00
parent
fff5bbcee4
commit
f15cc5bdfa
@ -336,13 +336,36 @@ class PageController extends Controller
|
||||
$book = $this->bookRepo->getBySlug($bookSlug);
|
||||
$page = $this->pageRepo->getBySlug($pageSlug, $book->id);
|
||||
$revision = $this->pageRepo->getRevisionById($revisionId);
|
||||
|
||||
$next = $revision->getNext() ?: $page;
|
||||
$diff = (new Htmldiff)->diff($revision->html, $next->html);
|
||||
|
||||
$page->fill($revision->toArray());
|
||||
$this->setPageTitle('Page Revision For ' . $page->getShortName());
|
||||
|
||||
return view('pages/revision', [
|
||||
'page' => $page,
|
||||
'book' => $book,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Shows the changes of a single revision
|
||||
* @param string $bookSlug
|
||||
* @param string $pageSlug
|
||||
* @param int $revisionId
|
||||
* @return \Illuminate\View\View
|
||||
*/
|
||||
public function showRevisionChanges($bookSlug, $pageSlug, $revisionId)
|
||||
{
|
||||
$book = $this->bookRepo->getBySlug($bookSlug);
|
||||
$page = $this->pageRepo->getBySlug($pageSlug, $book->id);
|
||||
$revision = $this->pageRepo->getRevisionById($revisionId);
|
||||
|
||||
$prev = $revision->getPrevious();
|
||||
$prevContent = ($prev === null) ? '' : $prev->html;
|
||||
$diff = (new Htmldiff)->diff($prevContent, $revision->html);
|
||||
|
||||
$page->fill($revision->toArray());
|
||||
$this->setPageTitle('Page Revision For ' . $page->getShortName());
|
||||
|
||||
return view('pages/revision', [
|
||||
'page' => $page,
|
||||
'book' => $book,
|
||||
|
@ -25,32 +25,26 @@ class PageRevision extends Model
|
||||
|
||||
/**
|
||||
* Get the url for this revision.
|
||||
* @param null|string $path
|
||||
* @return string
|
||||
*/
|
||||
public function getUrl()
|
||||
public function getUrl($path = null)
|
||||
{
|
||||
return $this->page->getUrl() . '/revisions/' . $this->id;
|
||||
$url = $this->page->getUrl() . '/revisions/' . $this->id;
|
||||
if ($path) return $url . '/' . trim($path, '/');
|
||||
return $url;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get previous revision
|
||||
* @return \BookStack\PageRevision
|
||||
* Get the previous revision for the same page if existing
|
||||
* @return \BookStack\PageRevision|null
|
||||
*/
|
||||
public function getPrevious()
|
||||
{
|
||||
if ($id = PageRevision::where('id', '<', $this->id)->max('id')) {
|
||||
return PageRevision::find($id);
|
||||
if ($id = static::where('page_id', '=', $this->page_id)->where('id', '<', $this->id)->max('id')) {
|
||||
return static::find($id);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get next revision
|
||||
* @return \BookStack\PageRevision
|
||||
*/
|
||||
public function getNext()
|
||||
{
|
||||
if ($id = PageRevision::where('id', '>', $this->id)->min('id')) {
|
||||
return PageRevision::find($id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -548,7 +548,7 @@ class PageRepo extends EntityRepo
|
||||
/**
|
||||
* Gets a single revision via it's id.
|
||||
* @param $id
|
||||
* @return mixed
|
||||
* @return PageRevision
|
||||
*/
|
||||
public function getRevisionById($id)
|
||||
{
|
||||
|
@ -32,11 +32,11 @@
|
||||
|
||||
<table class="table">
|
||||
<tr>
|
||||
<th width="25%">Name</th>
|
||||
<th colspan="2" width="10%">Created By</th>
|
||||
<th width="23%">Name</th>
|
||||
<th colspan="2" width="8%">Created By</th>
|
||||
<th width="15%">Revision Date</th>
|
||||
<th width="25%">Changelog</th>
|
||||
<th width="15%">Actions</th>
|
||||
<th width="20%">Actions</th>
|
||||
</tr>
|
||||
@foreach($page->revisions as $index => $revision)
|
||||
<tr>
|
||||
@ -49,15 +49,18 @@
|
||||
<td> @if($revision->createdBy) {{ $revision->createdBy->name }} @else Deleted User @endif</td>
|
||||
<td><small>{{ $revision->created_at->format('jS F, Y H:i:s') }} <br> ({{ $revision->created_at->diffForHumans() }})</small></td>
|
||||
<td>{{ $revision->summary }}</td>
|
||||
@if ($index !== 0)
|
||||
<td>
|
||||
<td>
|
||||
<a href="{{ $revision->getUrl('changes') }}" target="_blank">Changes</a>
|
||||
<span class="text-muted"> | </span>
|
||||
|
||||
@if ($index === 0)
|
||||
<a target="_blank" href="{{ $page->getUrl() }}"><i>Current Version</i></a>
|
||||
@else
|
||||
<a href="{{ $revision->getUrl() }}" target="_blank">Preview</a>
|
||||
<span class="text-muted"> | </span>
|
||||
<a href="{{ $revision->getUrl() }}/restore">Restore</a>
|
||||
</td>
|
||||
@else
|
||||
<td><a target="_blank" href="{{ $page->getUrl() }}"><i>Current Version</i></a></td>
|
||||
@endif
|
||||
<a href="{{ $revision->getUrl('restore') }}" target="_blank">Restore</a>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
|
@ -47,6 +47,7 @@ Route::group(['middleware' => 'auth'], function () {
|
||||
// Revisions
|
||||
Route::get('/{bookSlug}/page/{pageSlug}/revisions', 'PageController@showRevisions');
|
||||
Route::get('/{bookSlug}/page/{pageSlug}/revisions/{revId}', 'PageController@showRevision');
|
||||
Route::get('/{bookSlug}/page/{pageSlug}/revisions/{revId}/changes', 'PageController@showRevisionChanges');
|
||||
Route::get('/{bookSlug}/page/{pageSlug}/revisions/{revId}/restore', 'PageController@restoreRevision');
|
||||
|
||||
// Chapters
|
||||
|
Loading…
x
Reference in New Issue
Block a user