From a9090e991c60e54db90c314dca4d6e6f0003fa74 Mon Sep 17 00:00:00 2001 From: rahul shukla Date: Thu, 27 Jun 2019 14:38:24 +0530 Subject: [PATCH] download for image & file type --- packages/Webkul/Admin/src/Http/routes.php | 4 +++ .../products/field-types/file.blade.php | 2 +- .../products/field-types/image.blade.php | 2 +- packages/Webkul/Product/src/Helpers/View.php | 1 + .../Http/Controllers/ProductController.php | 17 ++++++++++ .../Http/Controllers/ProductController.php | 32 +++++++++++++++++-- packages/Webkul/Shop/src/Http/routes.php | 5 +++ .../views/products/view/attributes.blade.php | 5 ++- 8 files changed, 61 insertions(+), 7 deletions(-) diff --git a/packages/Webkul/Admin/src/Http/routes.php b/packages/Webkul/Admin/src/Http/routes.php index 3c31b7304..0331e1d5a 100755 --- a/packages/Webkul/Admin/src/Http/routes.php +++ b/packages/Webkul/Admin/src/Http/routes.php @@ -244,6 +244,10 @@ Route::group(['middleware' => ['web']], function () { 'view' => 'admin::catalog.products.edit' ])->name('admin.catalog.products.productlinksearch'); + Route::get('/products/{id}/{attribute_id}', 'Webkul\Product\Http\Controllers\ProductController@download')->defaults('_config', [ + 'view' => 'admin.catalog.products.edit' + ])->name('admin.catalog.products.file.download'); + // Catalog Category Routes Route::get('/categories', 'Webkul\Category\Http\Controllers\CategoryController@index')->defaults('_config', [ 'view' => 'admin::catalog.categories.index' diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/file.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/file.blade.php index eebd50a23..956865c37 100644 --- a/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/file.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/file.blade.php @@ -1,5 +1,5 @@ @if ($product[$attribute->code]) - + @endif diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/image.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/image.blade.php index 0cc3c63d9..5adea8795 100644 --- a/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/image.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/field-types/image.blade.php @@ -1,5 +1,5 @@ @if ($product[$attribute->code]) - + @endif diff --git a/packages/Webkul/Product/src/Helpers/View.php b/packages/Webkul/Product/src/Helpers/View.php index 6d82df9ae..16bca34d5 100755 --- a/packages/Webkul/Product/src/Helpers/View.php +++ b/packages/Webkul/Product/src/Helpers/View.php @@ -26,6 +26,7 @@ class View extends AbstractProduct } $data[] = [ + 'id' => $attribute->id, 'code' => $attribute->code, 'label' => $attribute->name, 'value' => $value, diff --git a/packages/Webkul/Product/src/Http/Controllers/ProductController.php b/packages/Webkul/Product/src/Http/Controllers/ProductController.php index 6d61b4950..4996e6074 100755 --- a/packages/Webkul/Product/src/Http/Controllers/ProductController.php +++ b/packages/Webkul/Product/src/Http/Controllers/ProductController.php @@ -11,6 +11,7 @@ use Webkul\Product\Repositories\ProductAttributeValueRepository as ProductAttrib use Webkul\Attribute\Repositories\AttributeFamilyRepository as AttributeFamily; use Webkul\Category\Repositories\CategoryRepository as Category; use Webkul\Inventory\Repositories\InventorySourceRepository as InventorySource; +use Illuminate\Support\Facades\Storage; /** * Product controller @@ -294,4 +295,20 @@ class ProductController extends Controller return view($this->_config['view']); } } + + /** + * Download image or file + * + * @param int $productId, $attributeId + * @return \Illuminate\Http\Response + */ + public function download($productId, $attributeId) + { + $productAttribute = $this->productAttributeValue->findOneWhere([ + 'product_id' => $productId, + 'attribute_id' => $attributeId + ]); + + return Storage::download($productAttribute['text_value']); + } } \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Http/Controllers/ProductController.php b/packages/Webkul/Shop/src/Http/Controllers/ProductController.php index 7dfe61312..5c2eadc43 100755 --- a/packages/Webkul/Shop/src/Http/Controllers/ProductController.php +++ b/packages/Webkul/Shop/src/Http/Controllers/ProductController.php @@ -5,6 +5,8 @@ namespace Webkul\Shop\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Http\Response; use Webkul\Product\Repositories\ProductRepository as Product; +use Webkul\Product\Repositories\ProductAttributeValueRepository as ProductAttributeValue; +use Illuminate\Support\Facades\Storage; /** * Product controller @@ -29,16 +31,26 @@ class ProductController extends Controller */ protected $product; + /** + * ProductAttributeValueRepository object + * + * @var array + */ + protected $productAttributeValue; + /** * Create a new controller instance. * - * @param \Webkul\Product\Repositories\ProductRepository $product + * @param \Webkul\Product\Repositories\ProductRepository $product + * @param \Webkul\Product\Repositories\ProductAttributeValue $productAttributeValue * @return void */ - public function __construct( Product $product) + public function __construct(Product $product, ProductAttributeValue $productAttributeValue) { $this->product = $product; + $this->productAttributeValue = $productAttributeValue; + $this->_config = request('_config'); } @@ -56,4 +68,20 @@ class ProductController extends Controller return view($this->_config['view'], compact('product','customer')); } + + /** + * Download image or file + * + * @param int $productId, $attributeId + * @return \Illuminate\Http\Response + */ + public function download($productId, $attributeId) + { + $productAttribute = $this->productAttributeValue->findOneWhere([ + 'product_id' => $productId, + 'attribute_id' => $attributeId + ]); + + return Storage::download($productAttribute['text_value']); + } } diff --git a/packages/Webkul/Shop/src/Http/routes.php b/packages/Webkul/Shop/src/Http/routes.php index ebd7e5e31..c575f8a60 100755 --- a/packages/Webkul/Shop/src/Http/routes.php +++ b/packages/Webkul/Shop/src/Http/routes.php @@ -115,6 +115,11 @@ Route::group(['middleware' => ['web', 'locale', 'theme', 'currency']], function 'redirect' => 'shop.home.index' ])->name('shop.reviews.store'); + // Download file or image + Route::get('/product/{id}/{attribute_id}', 'Webkul\Shop\Http\Controllers\ProductController@download')->defaults('_config', [ + 'view' => 'shop.products.index' + ])->name('shop.product.file.download'); + //customer routes starts here Route::prefix('customer')->group(function () { // forgot Password Routes diff --git a/packages/Webkul/Shop/src/Resources/views/products/view/attributes.blade.php b/packages/Webkul/Shop/src/Resources/views/products/view/attributes.blade.php index 298011a65..202b2ba59 100755 --- a/packages/Webkul/Shop/src/Resources/views/products/view/attributes.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/products/view/attributes.blade.php @@ -21,13 +21,13 @@ @endif @if ($attribute['type'] == 'file' && $attribute['value']) - + @elseif ($attribute['type'] == 'image' && $attribute['value']) - + @@ -35,7 +35,6 @@ {{ $attribute['value'] }} @endif - @endforeach