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:
Dan Brown 2017-07-22 14:21:56 +01:00
parent bc067e9ad4
commit b12e2ceada
No known key found for this signature in database
GPG Key ID: 46D9F943C24A2EF9
3 changed files with 19 additions and 8 deletions

View File

@ -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;

View File

@ -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>

View File

@ -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>