From 1c7ea33817ee2e5aebb3a59a5834a8ebc43b97e6 Mon Sep 17 00:00:00 2001 From: Rene Hrdina Date: Wed, 18 Nov 2020 15:37:08 +0100 Subject: [PATCH 01/21] Allow to disable actions on a per-row (per-record) basis When adding actions to a dataGrid the `condition` key can be specified. It can hold a function which currently doesn't receive any parameters. When we pass the record here we allow developers to decide whether or not to show a action on a per-row (per-record) basis, so showing an action for some items, hiding it for others. --- packages/Webkul/Ui/src/Resources/views/datagrid/body.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/Webkul/Ui/src/Resources/views/datagrid/body.blade.php b/packages/Webkul/Ui/src/Resources/views/datagrid/body.blade.php index 6e48f0526..962bf7811 100644 --- a/packages/Webkul/Ui/src/Resources/views/datagrid/body.blade.php +++ b/packages/Webkul/Ui/src/Resources/views/datagrid/body.blade.php @@ -43,7 +43,7 @@
@foreach ($actions as $action) @php - $toDisplay = (isset($action['condition']) && gettype($action['condition']) == 'object') ? $action['condition']() : true; + $toDisplay = (isset($action['condition']) && gettype($action['condition']) == 'object') ? $action['condition']($record) : true; @endphp @if ($toDisplay) From 7157318d18e06cb0e47e872e176350d7100f1d87 Mon Sep 17 00:00:00 2001 From: prateek srivastava Date: Mon, 4 Jan 2021 13:57:45 +0530 Subject: [PATCH 02/21] product image facade added --- config/app.php | 1 + .../Product/src/Facades/ProductImage.php | 18 +++ packages/Webkul/Product/src/ProductImage.php | 124 ++++++++++++++++++ .../src/Providers/ProductServiceProvider.php | 57 ++++++++ 4 files changed, 200 insertions(+) create mode 100644 packages/Webkul/Product/src/Facades/ProductImage.php create mode 100644 packages/Webkul/Product/src/ProductImage.php diff --git a/config/app.php b/config/app.php index c79026ded..79bf8456c 100755 --- a/config/app.php +++ b/config/app.php @@ -340,5 +340,6 @@ return [ 'Concord' => Konekt\Concord\Facades\Concord::class, 'Helper' => Konekt\Concord\Facades\Helper::class, 'Debugbar' => Barryvdh\Debugbar\Facade::class, + 'ProductImage' => Webkul\Product\Facades\ProductImage::class ], ]; \ No newline at end of file diff --git a/packages/Webkul/Product/src/Facades/ProductImage.php b/packages/Webkul/Product/src/Facades/ProductImage.php new file mode 100644 index 000000000..d8a1aa62f --- /dev/null +++ b/packages/Webkul/Product/src/Facades/ProductImage.php @@ -0,0 +1,18 @@ +productRepository = $productRepository; + } + + public function sampleText() + { + echo "Sample Text"; + } + + /** + * Retrieve collection of gallery images + * + * @param \Webkul\Product\Contracts\Product|\Webkul\Product\Contracts\ProductFlat $product + * @return array + */ + public function getGalleryImages($product) + { + if (! $product) { + return []; + } + + $images = []; + + foreach ($product->images as $image) { + if (! Storage::has($image->path)) { + continue; + } + + $images[] = [ + 'small_image_url' => url('cache/small/' . $image->path), + 'medium_image_url' => url('cache/medium/' . $image->path), + 'large_image_url' => url('cache/large/' . $image->path), + 'original_image_url' => url('cache/original/' . $image->path), + ]; + } + + if (! $product->parent_id && ! count($images) && ! count($product->videos)) { + $images[] = [ + 'small_image_url' => asset('vendor/webkul/ui/assets/images/product/small-product-placeholder.webp'), + 'medium_image_url' => asset('vendor/webkul/ui/assets/images/product/meduim-product-placeholder.webp'), + 'large_image_url' => asset('vendor/webkul/ui/assets/images/product/large-product-placeholder.webp'), + 'original_image_url' => asset('vendor/webkul/ui/assets/images/product/large-product-placeholder.webp'), + ]; + } + + return $images; + } + + /** + * Get product's base image + * + * @param \Webkul\Product\Contracts\Product|\Webkul\Product\Contracts\ProductFlat $product + * @return array + */ + public function getProductBaseImage($product) + { + $images = $product ? $product->images : null; + + if ($images && $images->count()) { + $image = [ + 'small_image_url' => url('cache/small/' . $images[0]->path), + 'medium_image_url' => url('cache/medium/' . $images[0]->path), + 'large_image_url' => url('cache/large/' . $images[0]->path), + 'original_image_url' => url('cache/original/' . $images[0]->path), + ]; + } else { + $image = [ + 'small_image_url' => asset('vendor/webkul/ui/assets/images/product/small-product-placeholder.webp'), + 'medium_image_url' => asset('vendor/webkul/ui/assets/images/product/meduim-product-placeholder.webp'), + 'large_image_url' => asset('vendor/webkul/ui/assets/images/product/large-product-placeholder.webp'), + 'original_image_url' => asset('vendor/webkul/ui/assets/images/product/large-product-placeholder.webp'), + ]; + } + + return $image; + } + + /** + * Get product varient image if available otherwise product base image + * + * @param \Webkul\Customer\Contracts\Wishlist $item + * @return array + */ + public function getProductImage($item) + { + if ($item instanceof \Webkul\Customer\Contracts\Wishlist) { + if (isset($item->additional['selected_configurable_option'])) { + $product = $this->productRepository->find($item->additional['selected_configurable_option']); + } else { + $product = $item->product; + } + } else { + $product = $item->product; + } + + return $this->getProductBaseImage($product); + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Providers/ProductServiceProvider.php b/packages/Webkul/Product/src/Providers/ProductServiceProvider.php index 36da00135..8d2471001 100755 --- a/packages/Webkul/Product/src/Providers/ProductServiceProvider.php +++ b/packages/Webkul/Product/src/Providers/ProductServiceProvider.php @@ -8,6 +8,9 @@ use Webkul\Product\Models\ProductProxy; use Webkul\Product\Observers\ProductObserver; use Webkul\Product\Console\Commands\PriceUpdate; use Webkul\Product\Console\Commands\GenerateProducts; +use Illuminate\Foundation\AliasLoader; +use Webkul\Product\Facades\ProductImage as ProductImageFacade; +use Webkul\Product\ProductImage; class ProductServiceProvider extends ServiceProvider { @@ -42,6 +45,8 @@ class ProductServiceProvider extends ServiceProvider $this->registerCommands(); + $this->registerFacades(); + $this->registerEloquentFactoriesFrom(__DIR__ . '/../Database/Factories'); } @@ -79,4 +84,56 @@ class ProductServiceProvider extends ServiceProvider { $this->app->make(EloquentFactory::class)->load($path); } + + + /** + * Register Bouncer as a singleton. + * + * @return void + */ + protected function registerFacades() + { + $loader = AliasLoader::getInstance(); + $loader->alias('productimage', ProductImageFacade::class); + + $this->app->singleton('productimage', function () { + return app()->make(ProductImage::class); + }); + } + + /** + * Register facade + * + */ + public function registerFacadesd() + { + //to make the cart facade and bind the + //alias to the class needed to be called. + // $loader = AliasLoader::getInstance(); + + // $loader->alias('productimage', ProductImageFacade::class); + + // $this->app->singleton('productimage', function () { + // return new cart(); + // }); + + // $this->app->bind('productimage', 'Webkul\Checkout\Cart'); + + + // \App::bind('mysiteclass', function() + // { + // return new \Webkul\Product\Helpers\ProductImage; + // }); + + $this->app->bind('ProductImage', function() { + return new ProductImage; + }); + + // $loader = AliasLoader::getInstance(); + // $loader->alias('productimage', ProductImageFacade::class); + + // $this->app->singleton('productimage', function () { + // return app()->make(ProductImage::class); + // }); + } } \ No newline at end of file From b57bcdc39e5504498379c87fd225adc7af520fad Mon Sep 17 00:00:00 2001 From: prateek srivastava Date: Mon, 4 Jan 2021 16:38:38 +0530 Subject: [PATCH 03/21] product video facade added --- config/app.php | 3 +- .../Product/src/Facades/ProductVideo.php | 18 +++++++++ packages/Webkul/Product/src/ProductImage.php | 5 --- packages/Webkul/Product/src/ProductVideo.php | 37 +++++++++++++++++++ .../src/Providers/ProductServiceProvider.php | 11 ++++++ 5 files changed, 68 insertions(+), 6 deletions(-) create mode 100644 packages/Webkul/Product/src/Facades/ProductVideo.php create mode 100644 packages/Webkul/Product/src/ProductVideo.php diff --git a/config/app.php b/config/app.php index 79bf8456c..ba239157e 100755 --- a/config/app.php +++ b/config/app.php @@ -340,6 +340,7 @@ return [ 'Concord' => Konekt\Concord\Facades\Concord::class, 'Helper' => Konekt\Concord\Facades\Helper::class, 'Debugbar' => Barryvdh\Debugbar\Facade::class, - 'ProductImage' => Webkul\Product\Facades\ProductImage::class + 'ProductImage' => Webkul\Product\Facades\ProductImage::class, + 'ProductVideo' => Webkul\Product\Facades\ProductVideo::class ], ]; \ No newline at end of file diff --git a/packages/Webkul/Product/src/Facades/ProductVideo.php b/packages/Webkul/Product/src/Facades/ProductVideo.php new file mode 100644 index 000000000..b9c3bf971 --- /dev/null +++ b/packages/Webkul/Product/src/Facades/ProductVideo.php @@ -0,0 +1,18 @@ +productRepository = $productRepository; } - public function sampleText() - { - echo "Sample Text"; - } - /** * Retrieve collection of gallery images * diff --git a/packages/Webkul/Product/src/ProductVideo.php b/packages/Webkul/Product/src/ProductVideo.php new file mode 100644 index 000000000..1cf130863 --- /dev/null +++ b/packages/Webkul/Product/src/ProductVideo.php @@ -0,0 +1,37 @@ +videos as $video) { + if (! Storage::has($video->path)) { + continue; + } + + $videos[] = [ + 'type' => $video->type, + 'video_url' => Storage::url($video->path), + ]; + } + + return $videos; + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Providers/ProductServiceProvider.php b/packages/Webkul/Product/src/Providers/ProductServiceProvider.php index 8d2471001..7384af873 100755 --- a/packages/Webkul/Product/src/Providers/ProductServiceProvider.php +++ b/packages/Webkul/Product/src/Providers/ProductServiceProvider.php @@ -10,7 +10,9 @@ use Webkul\Product\Console\Commands\PriceUpdate; use Webkul\Product\Console\Commands\GenerateProducts; use Illuminate\Foundation\AliasLoader; use Webkul\Product\Facades\ProductImage as ProductImageFacade; +use Webkul\Product\Facades\ProductVideo as ProductVideoFacade; use Webkul\Product\ProductImage; +use Webkul\Product\ProductVideo; class ProductServiceProvider extends ServiceProvider { @@ -93,12 +95,21 @@ class ProductServiceProvider extends ServiceProvider */ protected function registerFacades() { + // Product image $loader = AliasLoader::getInstance(); $loader->alias('productimage', ProductImageFacade::class); $this->app->singleton('productimage', function () { return app()->make(ProductImage::class); }); + + // Product video + $loader = AliasLoader::getInstance(); + $loader->alias('productvideo', ProductVideoFacade::class); + + $this->app->singleton('productvideo', function () { + return app()->make(ProductVideo::class); + }); } /** From 5935fbf28ce50b1f4bcbeee031f63bd9496b8abe Mon Sep 17 00:00:00 2001 From: prateek srivastava Date: Mon, 4 Jan 2021 17:44:33 +0530 Subject: [PATCH 04/21] product Image helper removed --- config/repository.php | 3 ++- .../Resources/views/dashboard/index.blade.php | 6 ++---- .../src/Helpers/ConfigurableOption.php | 20 +------------------ .../Webkul/Product/src/Type/AbstractType.php | 2 +- .../views/checkout/cart/index.blade.php | 2 -- .../views/checkout/cart/mini-cart.blade.php | 2 -- .../views/checkout/onepage/review.blade.php | 2 -- .../customers/account/reviews/index.blade.php | 4 +--- .../account/reviews/reviews.blade.php | 4 +--- .../account/wishlist/wishlist.blade.php | 2 -- .../views/products/list/card.blade.php | 4 +--- .../views/products/reviews/create.blade.php | 3 +-- .../views/products/reviews/index.blade.php | 4 +--- .../Resources/views/products/view.blade.php | 2 +- .../views/products/view/gallery.blade.php | 7 +++---- .../Webkul/Velocity/src/Helpers/Helper.php | 5 ++--- .../views/shop/checkout/cart/index.blade.php | 1 - .../shop/checkout/onepage/review.blade.php | 2 -- .../customers/account/reviews/index.blade.php | 4 +--- .../Resources/views/shop/home/index.blade.php | 1 - .../views/shop/products/list/card.blade.php | 7 +++---- .../shop/products/reviews/create.blade.php | 2 -- .../views/shop/products/view.blade.php | 5 ++--- .../view/configurable-options.blade.php | 3 +-- .../shop/products/view/gallery.blade.php | 3 +-- .../shop/products/view/small-view.blade.php | 4 +--- 26 files changed, 26 insertions(+), 78 deletions(-) diff --git a/config/repository.php b/config/repository.php index 3123c2789..f8498b8db 100755 --- a/config/repository.php +++ b/config/repository.php @@ -169,7 +169,8 @@ return [ */ 'acceptedConditions' => [ '=', - 'like' + 'like', + 'in' ], /* |-------------------------------------------------------------------------- diff --git a/packages/Webkul/Admin/src/Resources/views/dashboard/index.blade.php b/packages/Webkul/Admin/src/Resources/views/dashboard/index.blade.php index 930a6a8df..020d74d3f 100755 --- a/packages/Webkul/Admin/src/Resources/views/dashboard/index.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/dashboard/index.blade.php @@ -192,8 +192,6 @@
- @inject ('productImageHelper', 'Webkul\Product\Helpers\ProductImage') -
@@ -208,7 +206,7 @@
  • - getProductBaseImage($item->product); ?> + product); ?>
    @@ -318,7 +316,7 @@
  • - getProductBaseImage($item->product); ?> + product); ?>
    diff --git a/packages/Webkul/Product/src/Helpers/ConfigurableOption.php b/packages/Webkul/Product/src/Helpers/ConfigurableOption.php index 004ede9e5..ef0ca45b3 100755 --- a/packages/Webkul/Product/src/Helpers/ConfigurableOption.php +++ b/packages/Webkul/Product/src/Helpers/ConfigurableOption.php @@ -7,24 +7,6 @@ use Webkul\Product\Models\ProductAttributeValue; class ConfigurableOption extends AbstractProduct { - /** - * ProductImage object - * - * @var array - */ - protected $productImage; - - /** - * Create a new controller instance. - * - * @param \Webkul\Product\Helpers\ProductImage $productImage - * @return void - */ - public function __construct(ProductImage $productImage) - { - $this->productImage = $productImage; - } - /** * Returns the allowed variants * @@ -223,7 +205,7 @@ class ConfigurableOption extends AbstractProduct $variantId = $variant->id; } - $images[$variantId] = $this->productImage->getGalleryImages($variant); + $images[$variantId] = ProductImage::getGalleryImages($variant); } return $images; diff --git a/packages/Webkul/Product/src/Type/AbstractType.php b/packages/Webkul/Product/src/Type/AbstractType.php index 5ac820274..76ef5491e 100644 --- a/packages/Webkul/Product/src/Type/AbstractType.php +++ b/packages/Webkul/Product/src/Type/AbstractType.php @@ -849,7 +849,7 @@ abstract class AbstractType */ public function getBaseImage($item) { - return $this->productImageHelper->getProductBaseImage($item->product); + return ProductImage::getProductBaseImage($item->product); } /** diff --git a/packages/Webkul/Shop/src/Resources/views/checkout/cart/index.blade.php b/packages/Webkul/Shop/src/Resources/views/checkout/cart/index.blade.php index d44caa83c..f14a10383 100755 --- a/packages/Webkul/Shop/src/Resources/views/checkout/cart/index.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/checkout/cart/index.blade.php @@ -5,8 +5,6 @@ @stop @section('content-wrapper') - @inject ('productImageHelper', 'Webkul\Product\Helpers\ProductImage') -
    @if ($cart)
    diff --git a/packages/Webkul/Shop/src/Resources/views/checkout/cart/mini-cart.blade.php b/packages/Webkul/Shop/src/Resources/views/checkout/cart/mini-cart.blade.php index 4477af9b0..6750f8fdd 100755 --- a/packages/Webkul/Shop/src/Resources/views/checkout/cart/mini-cart.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/checkout/cart/mini-cart.blade.php @@ -1,5 +1,3 @@ -@inject ('productImageHelper', 'Webkul\Product\Helpers\ProductImage') - getCart(); ?> @if ($cart) diff --git a/packages/Webkul/Shop/src/Resources/views/checkout/onepage/review.blade.php b/packages/Webkul/Shop/src/Resources/views/checkout/onepage/review.blade.php index 223514041..43950ef85 100755 --- a/packages/Webkul/Shop/src/Resources/views/checkout/onepage/review.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/checkout/onepage/review.blade.php @@ -68,8 +68,6 @@
    - @inject ('productImageHelper', 'Webkul\Product\Helpers\ProductImage') -
    @foreach ($cart->items as $item) @php diff --git a/packages/Webkul/Shop/src/Resources/views/customers/account/reviews/index.blade.php b/packages/Webkul/Shop/src/Resources/views/customers/account/reviews/index.blade.php index 28683a5c4..5f0c93482 100755 --- a/packages/Webkul/Shop/src/Resources/views/customers/account/reviews/index.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/customers/account/reviews/index.blade.php @@ -1,5 +1,3 @@ -@inject ('productImageHelper', 'Webkul\Product\Helpers\ProductImage') - @extends('shop::layouts.master') @section('page_title') @@ -34,7 +32,7 @@ @foreach ($reviews as $review)