From 59ecc0f0194d7d0021f3d04c4710812f7f2dc247 Mon Sep 17 00:00:00 2001 From: rahul shukla Date: Thu, 21 Feb 2019 16:36:27 +0530 Subject: [PATCH] guest review --- packages/Webkul/Admin/src/Config/system.php | 33 +++++++++++++++++++ .../src/Providers/AdminServiceProvider.php | 8 +++-- ..._21_145238_alter_product_reviews_table.php | 31 +++++++++++++++++ ...r_id_nullable_in_product_reviews_table.php | 32 ++++++++++++++++++ .../Product/src/Models/ProductReview.php | 2 +- .../Webkul/Shipping/src/Config/system.php | 2 +- .../src/Http/Controllers/ReviewController.php | 12 ++++--- packages/Webkul/Shop/src/Http/routes.php | 2 +- .../Webkul/Shop/src/Resources/lang/en/app.php | 3 +- .../views/products/reviews/create.blade.php | 10 ++++++ .../views/products/reviews/index.blade.php | 8 +++-- .../views/products/view/reviews.blade.php | 16 ++++----- 12 files changed, 138 insertions(+), 21 deletions(-) create mode 100644 packages/Webkul/Admin/src/Config/system.php create mode 100644 packages/Webkul/Product/src/Database/Migrations/2019_02_21_145238_alter_product_reviews_table.php create mode 100644 packages/Webkul/Product/src/Database/Migrations/2019_02_21_153035_alter_customer_id_nullable_in_product_reviews_table.php diff --git a/packages/Webkul/Admin/src/Config/system.php b/packages/Webkul/Admin/src/Config/system.php new file mode 100644 index 000000000..67d19e606 --- /dev/null +++ b/packages/Webkul/Admin/src/Config/system.php @@ -0,0 +1,33 @@ + 'catalog', + 'name' => 'Catalog', + 'sort' => 1 + ], [ + 'key' => 'catalog.products', + 'name' => 'Products', + 'sort' => 1, + ], [ + 'key' => 'catalog.products.review', + 'name' => 'Review', + 'sort' => 1, + 'fields' => [ + [ + 'name' => 'guest_review', + 'title' => 'Allow Guest Review', + 'type' => 'select', + 'options' => [ + [ + 'title' => 'Yes', + 'value' => true + ], [ + 'title' => 'No', + 'value' => false + ] + ], + ] + ] + ], +]; \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Providers/AdminServiceProvider.php b/packages/Webkul/Admin/src/Providers/AdminServiceProvider.php index eb4853f6d..28dfb17d6 100755 --- a/packages/Webkul/Admin/src/Providers/AdminServiceProvider.php +++ b/packages/Webkul/Admin/src/Providers/AdminServiceProvider.php @@ -44,7 +44,7 @@ class AdminServiceProvider extends ServiceProvider Handler::class ); } - + /** * Register services. * @@ -115,7 +115,7 @@ class AdminServiceProvider extends ServiceProvider return $tree; } - + /** * Register package config. * @@ -130,5 +130,9 @@ class AdminServiceProvider extends ServiceProvider $this->mergeConfigFrom( dirname(__DIR__) . '/Config/acl.php', 'acl' ); + + $this->mergeConfigFrom( + dirname(__DIR__) . '/Config/system.php', 'core' + ); } } \ No newline at end of file diff --git a/packages/Webkul/Product/src/Database/Migrations/2019_02_21_145238_alter_product_reviews_table.php b/packages/Webkul/Product/src/Database/Migrations/2019_02_21_145238_alter_product_reviews_table.php new file mode 100644 index 000000000..897f343c3 --- /dev/null +++ b/packages/Webkul/Product/src/Database/Migrations/2019_02_21_145238_alter_product_reviews_table.php @@ -0,0 +1,31 @@ +string('name'); + $table->dropForeign('product_reviews_customer_id_foreign'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +} diff --git a/packages/Webkul/Product/src/Database/Migrations/2019_02_21_153035_alter_customer_id_nullable_in_product_reviews_table.php b/packages/Webkul/Product/src/Database/Migrations/2019_02_21_153035_alter_customer_id_nullable_in_product_reviews_table.php new file mode 100644 index 000000000..b231e39de --- /dev/null +++ b/packages/Webkul/Product/src/Database/Migrations/2019_02_21_153035_alter_customer_id_nullable_in_product_reviews_table.php @@ -0,0 +1,32 @@ +integer('customer_id')->nullable()->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('product_reviews', function (Blueprint $table) { + // + }); + } +} diff --git a/packages/Webkul/Product/src/Models/ProductReview.php b/packages/Webkul/Product/src/Models/ProductReview.php index d5e111f5b..2544b941d 100755 --- a/packages/Webkul/Product/src/Models/ProductReview.php +++ b/packages/Webkul/Product/src/Models/ProductReview.php @@ -9,7 +9,7 @@ use Webkul\Product\Contracts\ProductReview as ProductReviewContract; class ProductReview extends Model implements ProductReviewContract { - protected $fillable = ['comment', 'title', 'rating', 'status', 'product_id', 'customer_id']; + protected $fillable = ['comment', 'title', 'rating', 'status', 'product_id', 'customer_id', 'name']; /** * Get the product attribute family that owns the product. diff --git a/packages/Webkul/Shipping/src/Config/system.php b/packages/Webkul/Shipping/src/Config/system.php index 03e49e78f..be069892b 100755 --- a/packages/Webkul/Shipping/src/Config/system.php +++ b/packages/Webkul/Shipping/src/Config/system.php @@ -30,7 +30,7 @@ return [ ], [ 'name' => 'active', 'title' => 'Status', - 'type' => 'select', + 'type' => 'multiselect', 'options' => [ [ 'title' => 'Active', diff --git a/packages/Webkul/Shop/src/Http/Controllers/ReviewController.php b/packages/Webkul/Shop/src/Http/Controllers/ReviewController.php index 32fbffd5f..55bc20f1d 100755 --- a/packages/Webkul/Shop/src/Http/Controllers/ReviewController.php +++ b/packages/Webkul/Shop/src/Http/Controllers/ReviewController.php @@ -46,8 +46,6 @@ class ReviewController extends Controller */ public function __construct(Product $product, ProductReview $productReview) { - $this->middleware('customer')->only(['create', 'store', 'destroy']); - $this->product = $product; $this->productReview = $productReview; @@ -65,7 +63,9 @@ class ReviewController extends Controller { $product = $this->product->findBySlugOrFail($slug); - return view($this->_config['view'], compact('product')); + $guest_review = core()->getConfigData('catalog.products.review.guest_review'); + + return view($this->_config['view'], compact('product', 'guest_review')); } /** @@ -84,11 +84,13 @@ class ReviewController extends Controller $data = request()->all(); - $customer_id = auth()->guard('customer')->user()->id; + if (auth()->guard('customer')->user()) { + $data['customer_id'] = auth()->guard('customer')->user()->id; + $data['name'] = auth()->guard('customer')->user()->first_name .' ' . auth()->guard('customer')->user()->last_name; + } $data['status'] = 'pending'; $data['product_id'] = $id; - $data['customer_id'] = $customer_id; $this->productReview->create($data); diff --git a/packages/Webkul/Shop/src/Http/routes.php b/packages/Webkul/Shop/src/Http/routes.php index cacfa3afa..e04ce1c40 100755 --- a/packages/Webkul/Shop/src/Http/routes.php +++ b/packages/Webkul/Shop/src/Http/routes.php @@ -106,7 +106,7 @@ Route::group(['middleware' => ['web', 'theme', 'locale', 'currency']], function // Show Product Review Form Store Route::post('/product/{slug}/review', 'Webkul\Shop\Http\Controllers\ReviewController@store')->defaults('_config', [ - 'redirect' => 'customer.reviews.index' + 'redirect' => 'shop.home.index' ])->name('shop.reviews.store'); //customer routes starts here diff --git a/packages/Webkul/Shop/src/Resources/lang/en/app.php b/packages/Webkul/Shop/src/Resources/lang/en/app.php index 9ab227503..594aea865 100755 --- a/packages/Webkul/Shop/src/Resources/lang/en/app.php +++ b/packages/Webkul/Shop/src/Resources/lang/en/app.php @@ -80,7 +80,8 @@ return [ 'ratingreviews' => ':rating Ratings & :review Reviews', 'star' => 'Star', 'percentage' => ':percentage %', - 'id-star' => 'star' + 'id-star' => 'star', + 'name' => 'Name' ], 'customer' => [ diff --git a/packages/Webkul/Shop/src/Resources/views/products/reviews/create.blade.php b/packages/Webkul/Shop/src/Resources/views/products/reviews/create.blade.php index fb5224293..1c4ee3d91 100755 --- a/packages/Webkul/Shop/src/Resources/views/products/reviews/create.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/products/reviews/create.blade.php @@ -75,6 +75,16 @@ @{{ errors.first('title') }} + @if ($guest_review && !auth()->guard('customer')->user()) +
+ + + @{{ errors.first('name') }} +
+ @endif +
@else - @auth('customer') + @if (core()->getConfigData('catalog.products.review.guest_review') || auth()->guard('customer')->check())
- @endauth + @endif @endif {!! view_render_event('bagisto.shop.products.view.reviews.after', ['product' => $product]) !!} \ No newline at end of file