Added mulit image-type compatability to manager & app and added scaled image selection

This commit is contained in:
Dan Brown
2015-12-08 22:04:59 +00:00
parent 32d5b12d27
commit a3188d349c
9 changed files with 78 additions and 25 deletions

View File

@ -33,23 +33,24 @@ class ImageController extends Controller
/**
* Get all images, Paginated
* Get all gallery images, Paginated
* @param int $page
* @return \Illuminate\Http\JsonResponse
*/
public function getAllGallery($page = 0)
public function getAllByType($type, $page = 0)
{
$imgData = $this->imageRepo->getAllGallery($page);
$imgData = $this->imageRepo->getPaginatedByType($type, $page);
return response()->json($imgData);
}
/**
* Handles image uploads for use on pages.
* @param string $type
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function uploadGallery(Request $request)
public function uploadByType($type, Request $request)
{
$this->checkPermission('image-create');
$this->validate($request, [
@ -57,10 +58,25 @@ class ImageController extends Controller
]);
$imageUpload = $request->file('file');
$image = $this->imageRepo->saveNew($imageUpload, 'gallery');
$image = $this->imageRepo->saveNew($imageUpload, $type);
return response()->json($image);
}
/**
* Generate a sized thumbnail for an image.
* @param $id
* @param $width
* @param $height
* @param $crop
* @return \Illuminate\Http\JsonResponse
*/
public function getThumbnail($id, $width, $height, $crop)
{
$this->checkPermission('image-create');
$image = $this->imageRepo->getById($id);
$thumbnailUrl = $this->imageRepo->getThumbnail($image, $width, $height, $crop == 'false');
return response()->json(['url' => $thumbnailUrl]);
}
/**
* Update image details

View File

@ -18,7 +18,8 @@ class UserController extends Controller
/**
* UserController constructor.
* @param $user
* @param User $user
* @param UserRepo $userRepo
*/
public function __construct(User $user, UserRepo $userRepo)
{

View File

@ -57,10 +57,12 @@ Route::group(['middleware' => 'auth'], function () {
// Image routes
Route::group(['prefix' => 'images'], function() {
Route::get('/gallery/all', 'ImageController@getAllGallery');
Route::get('/gallery/all/{page}', 'ImageController@getAllGallery');
Route::post('/gallery/upload', 'ImageController@uploadGallery');
// Standard get, update and deletion for all types
Route::get('/thumb/{id}/{width}/{height}/{crop}', 'ImageController@getThumbnail');
Route::put('/update/{imageId}', 'ImageController@update');
Route::post('/{type}/upload', 'ImageController@uploadByType');
Route::get('/{type}/all', 'ImageController@getAllByType');
Route::get('/{type}/all/{page}', 'ImageController@getAllByType');
Route::delete('/{imageId}', 'ImageController@destroy');
});

View File

@ -52,15 +52,15 @@ class ImageRepo
/**
* Get all images for the standard gallery view that's used for
* adding images to shared content such as pages.
* @param int $page
* @param int $pageSize
* Gets a load images paginated, filtered by image type.
* @param string $type
* @param int $page
* @param int $pageSize
* @return array
*/
public function getAllGallery($page = 0, $pageSize = 24)
public function getPaginatedByType($type, $page = 0, $pageSize = 24)
{
$images = $this->image->where('type', '=', 'gallery')
$images = $this->image->where('type', '=', strtolower($type))
->orderBy('created_at', 'desc')->skip($pageSize * $page)->take($pageSize + 1)->get();
$hasMore = count($images) > $pageSize;
@ -191,7 +191,7 @@ class ImageRepo
* @param bool $keepRatio
* @return string
*/
private function getThumbnail(Image $image, $width = 220, $height = 220, $keepRatio = false)
public function getThumbnail(Image $image, $width = 220, $height = 220, $keepRatio = false)
{
$thumbDirName = '/' . ($keepRatio ? 'scaled-' : 'thumbs-') . $width . '-' . $height . '/';
$thumbFilePath = dirname($image->path) . $thumbDirName . basename($image->path);