mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-09-17 23:05:47 +00:00
Added included content into page's text view
Allows rendered content to be shown in listings and used in searches. Also prevented angular tags in content being parsed in listings. Fixes #442
This commit is contained in:
parent
bc067e9ad4
commit
b12e2ceada
@ -571,7 +571,7 @@ class EntityRepo
|
|||||||
|
|
||||||
$draftPage->slug = $this->findSuitableSlug('page', $draftPage->name, false, $draftPage->book->id);
|
$draftPage->slug = $this->findSuitableSlug('page', $draftPage->name, false, $draftPage->book->id);
|
||||||
$draftPage->html = $this->formatHtml($input['html']);
|
$draftPage->html = $this->formatHtml($input['html']);
|
||||||
$draftPage->text = strip_tags($draftPage->html);
|
$draftPage->text = $this->pageToPlainText($draftPage->html);
|
||||||
$draftPage->draft = false;
|
$draftPage->draft = false;
|
||||||
$draftPage->revision_count = 1;
|
$draftPage->revision_count = 1;
|
||||||
|
|
||||||
@ -713,6 +713,17 @@ class EntityRepo
|
|||||||
return $content;
|
return $content;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the plain text version of a page's content.
|
||||||
|
* @param Page $page
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function pageToPlainText(Page $page)
|
||||||
|
{
|
||||||
|
$html = $this->renderPage($page);
|
||||||
|
return strip_tags($html);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a new draft page instance.
|
* Get a new draft page instance.
|
||||||
* @param Book $book
|
* @param Book $book
|
||||||
@ -816,7 +827,7 @@ class EntityRepo
|
|||||||
$userId = user()->id;
|
$userId = user()->id;
|
||||||
$page->fill($input);
|
$page->fill($input);
|
||||||
$page->html = $this->formatHtml($input['html']);
|
$page->html = $this->formatHtml($input['html']);
|
||||||
$page->text = strip_tags($page->html);
|
$page->text = $this->pageToPlainText($page);
|
||||||
if (setting('app-editor') !== 'markdown') $page->markdown = '';
|
if (setting('app-editor') !== 'markdown') $page->markdown = '';
|
||||||
$page->updated_by = $userId;
|
$page->updated_by = $userId;
|
||||||
$page->revision_count++;
|
$page->revision_count++;
|
||||||
@ -933,7 +944,7 @@ class EntityRepo
|
|||||||
$revision = $page->revisions()->where('id', '=', $revisionId)->first();
|
$revision = $page->revisions()->where('id', '=', $revisionId)->first();
|
||||||
$page->fill($revision->toArray());
|
$page->fill($revision->toArray());
|
||||||
$page->slug = $this->findSuitableSlug('page', $page->name, $page->id, $book->id);
|
$page->slug = $this->findSuitableSlug('page', $page->name, $page->id, $book->id);
|
||||||
$page->text = strip_tags($page->html);
|
$page->text = $this->pageToPlainText($page->html);
|
||||||
$page->updated_by = user()->id;
|
$page->updated_by = user()->id;
|
||||||
$page->save();
|
$page->save();
|
||||||
$this->searchService->indexEntity($page);
|
$this->searchService->indexEntity($page);
|
||||||
@ -953,7 +964,7 @@ class EntityRepo
|
|||||||
if ($page->draft) {
|
if ($page->draft) {
|
||||||
$page->fill($data);
|
$page->fill($data);
|
||||||
if (isset($data['html'])) {
|
if (isset($data['html'])) {
|
||||||
$page->text = strip_tags($data['html']);
|
$page->text = $this->pageToPlainText($data['html']);
|
||||||
}
|
}
|
||||||
$page->save();
|
$page->save();
|
||||||
return $page;
|
return $page;
|
||||||
|
@ -50,7 +50,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="container" id="entity-dashboard" entity-id="{{ $book->id }}" entity-type="book">
|
<div ng-non-bindable class="container" id="entity-dashboard" entity-id="{{ $book->id }}" entity-type="book">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-7">
|
<div class="col-md-7">
|
||||||
|
|
||||||
@ -112,7 +112,7 @@
|
|||||||
@endif
|
@endif
|
||||||
|
|
||||||
<div class="search-box">
|
<div class="search-box">
|
||||||
<form v-on:submit="searchBook">
|
<form v-on:submit.prevent="searchBook">
|
||||||
<input v-model="searchTerm" v-on:change="checkSearchForm()" type="text" name="term" placeholder="{{ trans('entities.books_search_this') }}">
|
<input v-model="searchTerm" v-on:change="checkSearchForm()" type="text" name="term" placeholder="{{ trans('entities.books_search_this') }}">
|
||||||
<button type="submit"><i class="zmdi zmdi-search"></i></button>
|
<button type="submit"><i class="zmdi zmdi-search"></i></button>
|
||||||
<button v-if="searching" v-cloak class="text-neg" v-on:click="clearSearch()" type="button"><i class="zmdi zmdi-close"></i></button>
|
<button v-if="searching" v-cloak class="text-neg" v-on:click="clearSearch()" type="button"><i class="zmdi zmdi-close"></i></button>
|
||||||
|
@ -47,7 +47,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="container" id="entity-dashboard" entity-id="{{ $chapter->id }}" entity-type="chapter">
|
<div class="container" id="entity-dashboard" ng-non-bindable entity-id="{{ $chapter->id }}" entity-type="chapter">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-7">
|
<div class="col-md-7">
|
||||||
<h1>{{ $chapter->name }}</h1>
|
<h1>{{ $chapter->name }}</h1>
|
||||||
@ -116,7 +116,7 @@
|
|||||||
@endif
|
@endif
|
||||||
|
|
||||||
<div class="search-box">
|
<div class="search-box">
|
||||||
<form v-on:submit="searchBook">
|
<form v-on:submit.prevent="searchBook">
|
||||||
<input v-model="searchTerm" v-on:change="checkSearchForm()" type="text" name="term" placeholder="{{ trans('entities.chapters_search_this') }}">
|
<input v-model="searchTerm" v-on:change="checkSearchForm()" type="text" name="term" placeholder="{{ trans('entities.chapters_search_this') }}">
|
||||||
<button type="submit"><i class="zmdi zmdi-search"></i></button>
|
<button type="submit"><i class="zmdi zmdi-search"></i></button>
|
||||||
<button v-if="searching" v-cloak class="text-neg" v-on:click="clearSearch()" type="button"><i class="zmdi zmdi-close"></i></button>
|
<button v-if="searching" v-cloak class="text-neg" v-on:click="clearSearch()" type="button"><i class="zmdi zmdi-close"></i></button>
|
||||||
|
Loading…
Reference in New Issue
Block a user