diff --git a/app/Book.php b/app/Book.php index 67bd4f5b2..a489acf8b 100644 --- a/app/Book.php +++ b/app/Book.php @@ -18,6 +18,24 @@ class Book extends Entity return baseUrl('/books/' . urlencode($this->slug)); } +public function getBookCover($size = 120) + { + $default = baseUrl('/default.png'); + $image = $this->image; + if ($image === 0 || $image === '0' || $image === null) + return $default; + try { + $cover = $this->cover ? baseUrl($this->cover->getThumb(120, 192, false)) : $default; + } catch (\Exception $err) { + $cover = $default; + } + return $cover; + } + +public function cover() + { + return $this->belongsTo(Image::class, 'image'); + } /* * Get the edit url for this book. * @return string diff --git a/app/Http/Controllers/BookController.php b/app/Http/Controllers/BookController.php index b64841220..eecb7839f 100644 --- a/app/Http/Controllers/BookController.php +++ b/app/Http/Controllers/BookController.php @@ -8,7 +8,6 @@ use BookStack\Services\ExportService; use Illuminate\Http\Request; use Illuminate\Http\Response; use Views; -use File; class BookController extends Controller { @@ -69,11 +68,7 @@ class BookController extends Controller 'name' => 'required|string|max:255', 'description' => 'string|max:1000' ]); - $image = $request->file('image'); - $path = $this->getBookCoverURL($image); $book = $this->entityRepo->createFromInput('book', $request->all()); - $book->image = $path; - $book->save(); Activity::add($book, 'book_create', $book->id); return redirect($book->getUrl()); } @@ -120,36 +115,11 @@ class BookController extends Controller 'name' => 'required|string|max:255', 'description' => 'string|max:1000' ]); - $image = $request->file('image'); - $path = $this->getBookCoverURL($image); $book = $this->entityRepo->updateFromInput('book', $book, $request->all()); - $book->image = $path; - $book->save(); Activity::add($book, 'book_update', $book->id); return redirect($book->getUrl()); } - /** - * Generate URL for book cover image - * @param $image - * @return $path - */ - private function getBookCoverURL($image) - { - if(is_null($image)) - { - return; - } - else - { - $input = time().'-'.$image->getClientOriginalName(); - $destinationPath = public_path('uploads/book/'); - $image->move($destinationPath, $input); - $path = baseUrl('/uploads/book/').'/'.$input; - return $path; - } - } - /** * Shows the page to confirm deletion * @param $bookSlug @@ -258,8 +228,6 @@ class BookController extends Controller $book = $this->entityRepo->getBySlug('book', $bookSlug); $this->checkOwnablePermission('book-delete', $book); Activity::addMessage('book_delete', 0, $book->name); - $file = basename($book->image); - File::delete('uploads/book/'.$file); $this->entityRepo->destroyBook($book); return redirect('/books'); } diff --git a/database/migrations/2017_07_05_102650_add_cover_image_display.php b/database/migrations/2017_07_05_102650_add_cover_image_display.php index d9a7f94ee..396112744 100644 --- a/database/migrations/2017_07_05_102650_add_cover_image_display.php +++ b/database/migrations/2017_07_05_102650_add_cover_image_display.php @@ -18,7 +18,7 @@ class AddCoverImageDisplay extends Migration }); Schema::table('books', function (Blueprint $table) { - $table->string('image'); + $table->integer('image'); }); } diff --git a/public/default.png b/public/default.png new file mode 100644 index 000000000..1d7b737e7 Binary files /dev/null and b/public/default.png differ diff --git a/resources/assets/sass/styles.scss b/resources/assets/sass/styles.scss index e15b14d96..aa3ac1069 100644 --- a/resources/assets/sass/styles.scss +++ b/resources/assets/sass/styles.scss @@ -63,6 +63,11 @@ body.dragging, body.dragging * { &.square { border-radius: 3px; } + &.cover { + height: 192px; + width: 120px; + border-radius: 3px; + } } // System wide notifications diff --git a/resources/views/books/create.blade.php b/resources/views/books/create.blade.php index 36c94af62..4d1edf78b 100644 --- a/resources/views/books/create.blade.php +++ b/resources/views/books/create.blade.php @@ -8,5 +8,6 @@ @include('books/form') - +
{{ trans('common.cover_image_description') }}
-{!! $book->searchSnippet !!}
- @else +{!! $book->searchSnippet !!}
+ @else{{ $book->getExcerpt() }}
- @endif -