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
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Views;
-use File;
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());
}
'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
$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');
}
});
Schema::table('books', function (Blueprint $table) {
- $table->string('image');
+ $table->integer('image');
});
}
&.square {
border-radius: 3px;
}
+ &.cover {
+ height: 192px;
+ width: 120px;
+ border-radius: 3px;
+ }
}
// System wide notifications
@include('books/form')
</form>
</div>
-
+<p class="margin-top large"><br></p>
+ @include('components.image-manager', ['imageType' => 'cover'])
@stop
\ No newline at end of file
<div class="container small" ng-non-bindable>
<h1>{{ trans('entities.books_edit') }}</h1>
- <form action="{{ $book->getUrl() }}" method="POST" enctype="multipart/form-data">
+ <form action="{{ $book->getUrl() }}" method="POST">
<input type="hidden" name="_method" value="PUT">
@include('books/form', ['model' => $book])
</form>
</div>
-
+@include('components.image-manager', ['imageType' => 'cover'])
@stop
\ No newline at end of file
<label for="description">{{ trans('common.description') }}</label>
@include('form/textarea', ['name' => 'description'])
</div>
+<div class="form-group" id="logo-control">
+ <label for="user-avatar">{{ trans('common.cover_image') }}</label>
+ <p class="small">{{ trans('common.cover_image_description') }}</p>
-<div class="form-group">
- <label for="image">{{ trans('common.cover_image') }}</label>
- <input type="file" name="image">
-</div>
+ @include('components.image-picker', [
+ 'resizeHeight' => '192',
+ 'resizeWidth' => '120',
+ 'showRemove' => true,
+ 'defaultImage' => baseUrl('/default.png'),
+ 'currentImage' => @isset($model) ? $model->getBookCover(80) : baseUrl('/default.png') ,
+ 'currentId' => @isset($model) ? $model->image : 0,
+ 'name' => 'image',
+ 'imageClass' => 'avatar cover'
+ ])
+ </div>
<div class="form-group">
<a href="{{ isset($book) ? $book->getUrl() : baseUrl('/books') }}" class="button muted">{{ trans('common.cancel') }}</a>
<button type="submit" class="button pos">{{ trans('entities.books_save') }}</button>
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-3" data-entity-type="book" data-entity-id="{{$book->id}}">
<div class="galleryItem">
- <h3>
- <a class="text-book entity-list-item-link" href="{{$book->getUrl()}}"><i class="zmdi zmdi-book"></i><span class="entity-list-item-name">{{$book->name}}</span>
- <br>
- <img @if($book->image === NULL) src="{{baseUrl('/default.jpg')}}" @else src="{{$book->image}}" @endif alt="{{$book->name}}">
- </a>
- </h3>
- @if(isset($book->searchSnippet))
- <p class="text-muted">{!! $book->searchSnippet !!}</p>
- @else
+ <h3>
+ <a class="text-book entity-list-item-link" href="{{$book->getUrl()}}"><i class="zmdi zmdi-book"></i><span class="entity-list-item-name">{{$book->name}}</span>
+ <br>
+ <img src="{{$book->getBookCover(192)}}" alt="{{$book->name}}">
+ </a>
+ </h3>
+ @if(isset($book->searchSnippet))
+ <p class="text-muted">{!! $book->searchSnippet !!}</p>
+ @else
<p class="text-muted">{{ $book->getExcerpt() }}</p>
- @endif
- </div>
+ @endif
+</div>
</div>
\ No newline at end of file