diff --git a/packages/Webkul/Admin/src/DataGrids/OrderDataGrid.php b/packages/Webkul/Admin/src/DataGrids/OrderDataGrid.php index 9d5678b37..477d5dde3 100644 --- a/packages/Webkul/Admin/src/DataGrids/OrderDataGrid.php +++ b/packages/Webkul/Admin/src/DataGrids/OrderDataGrid.php @@ -14,7 +14,6 @@ use Webkul\Ui\DataGrid\Facades\DataGrid; class OrderDataGrid { - /** * The Data Grid implementation. * @@ -114,19 +113,17 @@ class OrderDataGrid //don't use aliasing in case of searchables 'searchable' => [ - // [ - // 'column' => 'cat.id', - // 'type' => 'number', - // 'label' => 'Category ID', - // ], [ - // 'column' => 'ct.name', - // 'type' => 'string', - // 'label' => 'Category Name', - // ], [ - // 'column' => 'cat.status', - // 'type' => 'string', - // 'label' => 'Visible in Menu', - // ] + [ + 'column' => 'or.id', + 'alias' => 'orderid', + 'type' => 'number', + 'label' => 'ID', + ], [ + 'name' => 'or.status', + 'alias' => 'orstatus', + 'type' => 'string', + 'label' => 'Status' + ] ], //list of viable operators that will be used diff --git a/packages/Webkul/Admin/src/DataGrids/ProductDataGrid.php b/packages/Webkul/Admin/src/DataGrids/ProductDataGrid.php index ba712cc2c..3f81843f0 100644 --- a/packages/Webkul/Admin/src/DataGrids/ProductDataGrid.php +++ b/packages/Webkul/Admin/src/DataGrids/ProductDataGrid.php @@ -25,17 +25,12 @@ class ProductDataGrid return DataGrid::make([ 'name' => 'Products', 'table' => 'products_grid as prods', - 'select' => 'prods.id', - 'perpage' => 10, + 'select' => 'prods.product_id', + 'perpage' => 5, 'aliased' => true, //use this with false as default and true in case of joins 'massoperations' =>[ - // [ - // 'route' => route('admin.datagrid.delete'), - // 'method' => 'DELETE', - // 'label' => 'Delete', - // 'type' => 'button', - // ], + //check other grid for configuration and make of your own ], 'actions' => [ @@ -61,19 +56,50 @@ class ProductDataGrid //name, alias, type, label, sortable [ 'name' => 'prods.product_id', - 'alias' => 'productID', - 'type' => 'number', + 'alias' => 'id', + 'type' => 'string', 'label' => 'ID', 'sortable' => true, - ], - [ + ], [ 'name' => 'prods.sku', 'alias' => 'productSku', 'type' => 'string', 'label' => 'SKU', 'sortable' => true, - ], - [ + ], [ + 'name' => 'prods.name', + 'alias' => 'ProductName', + 'type' => 'string', + 'label' => 'Product Name', + 'sortable' => false, + ], [ + 'name' => 'prods.type', + 'alias' => 'ProductType', + 'type' => 'string', + 'label' => 'Product Type', + 'sortable' => false, + ], [ + 'name' => 'prods.status', + 'alias' => 'ProductStatus', + 'type' => 'string', + 'label' => 'Product Status', + 'sortable' => false, + 'wrapper' => function ($value) { + if($value == 1) + return 'Active'; + else + return 'Inactive'; + }, + ], [ + 'name' => 'prods.price', + 'alias' => 'ProductPrice', + 'type' => 'string', + 'label' => 'Product Price', + 'sortable' => false, + 'wrapper' => function ($value) { + return core()->formatBasePrice($value); + }, + ], [ 'name' => 'prods.quantity', 'alias' => 'ProductQuantity', 'type' => 'string', @@ -83,57 +109,50 @@ class ProductDataGrid ], 'filterable' => [ - //column, type, and label - // [ - // 'column' => 'prods.id', - // 'alias' => 'productID', - // 'type' => 'number', - // 'label' => 'ID', - // ], - // [ - // 'column' => 'prods.sku', - // 'alias' => 'productCode', - // 'type' => 'string', - // 'label' => 'SKU', - // ], - // [ - // 'column' => 'attfam.name', - // 'alias' => 'FamilyName', - // 'type' => 'string', - // 'label' => 'Family Name', - // ], - // [ - // 'column' => 'pi.qty', - // 'alias' => 'ProductQuantity', - // 'type' => 'number', - // 'label' => 'Product Quatity', - // ], + //column, alias, type, and label + [ + 'column' => 'prods.product_id', + 'alias' => 'productID', + 'type' => 'number', + 'label' => 'ID', + ], [ + 'column' => 'prods.sku', + 'alias' => 'productSku', + 'type' => 'string', + 'label' => 'SKU', + ], [ + 'column' => 'prods.name', + 'alias' => 'ProductName', + 'type' => 'string', + 'label' => 'Product Name', + ], [ + 'column' => 'prods.type', + 'alias' => 'ProductType', + 'type' => 'string', + 'label' => 'Product Type', + ] ], - //don't use aliasing in case of searchables 'searchable' => [ //column, type and label - // [ - // 'column' => 'prods.id', - // 'type' => 'number', - // 'label' => 'ID', - // ], - // [ - // 'column' => 'prods.sku', - // 'type' => 'string', - // 'label' => 'SKU', - // ], - // [ - // 'column' => 'attfam.name', - // 'type' => 'string', - // 'label' => 'Family Name', - // ], - // [ - // 'column' => 'pi.qty', - // 'type' => 'string', - // 'label' => 'Product Quatity', - // ], + [ + 'column' => 'prods.product_id', + 'type' => 'number', + 'label' => 'ID', + ], [ + 'column' => 'prods.sku', + 'type' => 'string', + 'label' => 'SKU', + ], [ + 'column' => 'prods.name', + 'type' => 'string', + 'label' => 'Product Name', + ], [ + 'column' => 'prods.type', + 'type' => 'string', + 'label' => 'Product Type', + ] ], //list of viable operators that will be used diff --git a/packages/Webkul/Admin/src/DataGrids/RolesDataGrid.php b/packages/Webkul/Admin/src/DataGrids/RolesDataGrid.php index ab8d08b8b..7bfeb06cc 100644 --- a/packages/Webkul/Admin/src/DataGrids/RolesDataGrid.php +++ b/packages/Webkul/Admin/src/DataGrids/RolesDataGrid.php @@ -68,29 +68,25 @@ class RolesDataGrid //use aliasing on secodary columns if join is performed 'columns' => [ - [ 'name' => 'id', 'alias' => 'roleId', 'type' => 'number', 'label' => 'ID', 'sortable' => true, - ], - [ + ], [ 'name' => 'name', 'alias' => 'roleName', 'type' => 'string', 'label' => 'Name', 'sortable' => true, - ], - [ + ], [ 'name' => 'permission_type', 'alias' => 'rolePermissionType', 'type' => 'string', 'label' => 'Permission Type', 'sortable' => true, ], - ], //don't use aliasing in case of filters @@ -101,14 +97,12 @@ class RolesDataGrid 'alias' => 'roleId', 'type' => 'number', 'label' => 'ID', - ], - [ + ], [ 'column' => 'name', 'alias' => 'roleName', 'type' => 'string', 'label' => 'Name', - ], - [ + ], [ 'column' => 'permission_type', 'alias' => 'rolePermissionType', 'type' => 'string', @@ -123,8 +117,7 @@ class RolesDataGrid 'column' => 'name', 'type' => 'string', 'label' => 'Name', - ], - [ + ], [ 'column' => 'permission_type', 'type' => 'string', 'label' => 'Permission Type', diff --git a/packages/Webkul/Admin/src/DataGrids/UserDataGrid.php b/packages/Webkul/Admin/src/DataGrids/UserDataGrid.php index d639b1071..0543693aa 100644 --- a/packages/Webkul/Admin/src/DataGrids/UserDataGrid.php +++ b/packages/Webkul/Admin/src/DataGrids/UserDataGrid.php @@ -135,8 +135,7 @@ class UserDataGrid 'column' => 'u.email', 'type' => 'string', 'label' => 'E-Mail' - ], - [ + ], [ 'column' => 'u.name', 'type' => 'string', 'label' => 'Name' diff --git a/packages/Webkul/Admin/src/Http/routes.php b/packages/Webkul/Admin/src/Http/routes.php index 95a236a9e..627d7d5fc 100644 --- a/packages/Webkul/Admin/src/Http/routes.php +++ b/packages/Webkul/Admin/src/Http/routes.php @@ -137,6 +137,8 @@ Route::group(['middleware' => ['web']], function () { // Catalog Routes Route::prefix('catalog')->group(function () { + Route::get('/sync', 'Webkul\Product\Http\Controllers\ProductController@sync'); + // Catalog Product Routes Route::get('/products', 'Webkul\Product\Http\Controllers\ProductController@index')->defaults('_config', [ 'view' => 'admin::catalog.products.index' diff --git a/packages/Webkul/Admin/src/Listeners/Product.php b/packages/Webkul/Admin/src/Listeners/Product.php new file mode 100644 index 000000000..59648f121 --- /dev/null +++ b/packages/Webkul/Admin/src/Listeners/Product.php @@ -0,0 +1,143 @@ + @prashant-webkul + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class Product { + + /** + * Product Repository Object + */ + protected $product; + + /** + * Price Object + * + * @var array + */ + Protected $price; + + + /** + * Product Grid Repository Object + */ + protected $productGrid; + + public function __construct(ProductRepository $product, ProductGridRepository $productGrid, Price $price) + { + $this->product = $product; + + $this->productGrid = $productGrid; + + $this->price = $price; + } + + /** + * Creates a new entry in the product grid whenever a new product is created. + * + * @return boolean + */ + public function afterProductCreated($product) { + $gridObject = []; + + $gridObject = [ + 'product_id' => $product->id, + 'sku' => $product->sku, + 'type' => $product->type, + 'attribute_family_name' => $product->toArray()['attribute_family']['name'], + ]; + + if($this->productGrid->create($gridObject)) { + return true; + } else { + return false; + } + } + + /** + * Event before the product update + * + * @return boolean + */ + public function beforeProductUpdate($productId) { + return true; + } + + /** + * Event after the product update + * + * @var collection product + * + * return boolean + */ + public function afterProductUpdate($product) { + //update product grid here + $this->productGrid->updateWhere($product); + + return true; + } + + /** + * Event after deletion of the product + * + * @return boolean + */ + public function afterProductDelete($productId) { + return true; + } + + /** + * Fill attributes for that product after the creation + * + * @return boolean + */ + public function fillAttribute() { + + } + + public function sync() { + $gridObject = []; + + foreach($this->product->all() as $product) { + $gridObject = [ + 'product_id' => $product->id, + 'sku' => $product->sku, + 'type' => $product->type, + 'name' => $product->name, + 'attribute_family_name' => $product->toArray()['attribute_family']['name'], + 'price' => $this->price->getMinimalPrice($product), + 'status' => $product->status + ]; + + if($product->type == 'configurable') { + $gridObject['quantity'] = 0; + } else { + $qty = 0; + + foreach($product->toArray()['inventories'] as $inventorySource) { + $qty = $qty + $inventorySource['qty']; + } + + $gridObject['quantity'] = $qty; + + $qty = 0; + } + $this->productGrid->create($gridObject); + + $gridObject = []; + } + + return true; + } +} \ No newline at end of file diff --git a/packages/Webkul/Customer/src/Http/Controllers/RegistrationController.php b/packages/Webkul/Customer/src/Http/Controllers/RegistrationController.php index fa9ac1f22..53b389bd1 100644 --- a/packages/Webkul/Customer/src/Http/Controllers/RegistrationController.php +++ b/packages/Webkul/Customer/src/Http/Controllers/RegistrationController.php @@ -51,20 +51,20 @@ class RegistrationController extends Controller */ public function create(Request $request) { - // dd(request()->input()); $request->validate([ - 'first_name' => 'string|required', 'last_name' => 'string|required', 'email' => 'email|required', 'password' => 'confirmed|min:6|required', - 'agreement' => 'confirmed' + 'agreement' => 'required' ]); $data = request()->input(); $data['password'] = bcrypt($data['password']); + $data['channel_id'] = core()->getCurrentChannel()->id; + if ($this->customer->create($data)) { session()->flash('success', 'Account created successfully.'); @@ -72,11 +72,9 @@ class RegistrationController extends Controller return redirect()->route($this->_config['redirect']); } else { - session()->flash('error', 'Cannot Create Your Account.'); return redirect()->back(); - } } } diff --git a/packages/Webkul/Customer/src/Http/Controllers/WishlistController.php b/packages/Webkul/Customer/src/Http/Controllers/WishlistController.php index 6225f6a1c..646230d1c 100644 --- a/packages/Webkul/Customer/src/Http/Controllers/WishlistController.php +++ b/packages/Webkul/Customer/src/Http/Controllers/WishlistController.php @@ -133,7 +133,6 @@ class WishlistController extends Controller * @return response */ public function addconfigurable($urlkey) { - dd($urlkey); session()->flash('warning', trans('Select options before adding to wishlist')); return redirect()->route('shop.products.index', $urlkey); } diff --git a/packages/Webkul/Customer/src/Models/Customer.php b/packages/Webkul/Customer/src/Models/Customer.php index bb6589d57..5105f9953 100644 --- a/packages/Webkul/Customer/src/Models/Customer.php +++ b/packages/Webkul/Customer/src/Models/Customer.php @@ -18,7 +18,7 @@ class Customer extends Authenticatable protected $table = 'customers'; - protected $fillable = ['first_name', 'last_name', 'gender', 'date_of_birth','phone','email','password','customer_group_id','subscribed_to_news_letter']; + protected $fillable = ['first_name', 'channel_id', 'last_name', 'gender', 'date_of_birth','phone','email','password','customer_group_id','subscribed_to_news_letter']; protected $hidden = ['password','remember_token']; diff --git a/packages/Webkul/Customer/src/Resources/lang/en/app.php b/packages/Webkul/Customer/src/Resources/lang/en/app.php index 30f59002c..cbd32f946 100644 --- a/packages/Webkul/Customer/src/Resources/lang/en/app.php +++ b/packages/Webkul/Customer/src/Resources/lang/en/app.php @@ -10,4 +10,7 @@ return [ 'empty' => 'You Don\'t Have Any Items In Your Wishlist', 'select-options' => 'Need To Select Options Before Adding To Wishlist' ], + 'reviews' => [ + 'empty' => 'You Haven\'t Reviewed Any Product Yet' + ] ]; \ No newline at end of file diff --git a/packages/Webkul/Product/src/Database/Migrations/2018_10_22_111807_create_products_grid.php b/packages/Webkul/Product/src/Database/Migrations/2018_10_22_111807_create_products_grid.php index 790131dd6..46130304f 100644 --- a/packages/Webkul/Product/src/Database/Migrations/2018_10_22_111807_create_products_grid.php +++ b/packages/Webkul/Product/src/Database/Migrations/2018_10_22_111807_create_products_grid.php @@ -16,14 +16,15 @@ class CreateProductsGrid extends Migration Schema::create('products_grid', function (Blueprint $table) { $table->increments('id'); $table->integer('product_id')->unsigned(); - $table->foreign('product_id')->references('id')->on('products'); + $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade'); $table->string('sku')->nullable(); $table->string('type')->nullable(); - $table->string('attribute_family_name')->nullable(); - $table->string('product_name')->nullable(); + $table->string('name')->nullable(); $table->string('quantity')->default(0); $table->string('cost')->default(0); $table->string('price')->nullable(); + $table->string('status')->nullable(); + $table->string('attribute_family_name')->nullable(); }); } diff --git a/packages/Webkul/Product/src/Http/Controllers/ProductController.php b/packages/Webkul/Product/src/Http/Controllers/ProductController.php index 576c1ad8e..44a88fd5b 100644 --- a/packages/Webkul/Product/src/Http/Controllers/ProductController.php +++ b/packages/Webkul/Product/src/Http/Controllers/ProductController.php @@ -10,7 +10,6 @@ use Webkul\Product\Repositories\ProductGridRepository as ProductGrid; use Webkul\Attribute\Repositories\AttributeFamilyRepository as AttributeFamily; use Webkul\Category\Repositories\CategoryRepository as Category; use Webkul\Inventory\Repositories\InventorySourceRepository as InventorySource; -use Webkul\Product\Helpers\Price; use Event; /** @@ -63,13 +62,6 @@ class ProductController extends Controller */ protected $productGrid; - /** - * Price Object - * - * @var array - */ - Protected $price; - /** * Create a new controller instance. * @@ -84,8 +76,7 @@ class ProductController extends Controller Category $category, InventorySource $inventorySource, Product $product, - ProductGrid $productGrid, - Price $price) + ProductGrid $productGrid) { $this->attributeFamily = $attributeFamily; @@ -97,8 +88,6 @@ class ProductController extends Controller $this->productGrid = $productGrid; - $this->price = $price; - $this->_config = request('_config'); } @@ -190,8 +179,8 @@ class ProductController extends Controller */ public function update(ProductForm $request, $id) { - //before update of product - // Event::fire('product.update.before', false); + // before update of product + // Event::fire('product.update.before', $id); $this->product->update(request()->all(), $id); @@ -221,37 +210,7 @@ class ProductController extends Controller return redirect()->back(); } - public function test() { - $gridObject = []; - - foreach($this->product->all() as $product) { - $gridObject = [ - 'product_id' => $product->id, - 'sku' => $product->sku, - 'type' => $product->type, - 'product_name' => $product->sku, - 'attribute_family_name' => $product->toArray()['attribute_family']['name'], - 'price' => $this->price->getMinimalPrice($product) - ]; - - if($product->type == 'configurable') { - $gridObject['quantity'] = 0; - } else { - $qty = 0; - - foreach($product->toArray()['inventories'] as $inventorySource) { - $qty = $qty + $inventorySource['qty']; - } - - $gridObject['quantity'] = $qty; - - $qty = 0; - } - $this->productGrid->create($gridObject); - - $gridObject = []; - } - - return true; + public function sync() { + Event::fire('products.datagrid.create', true); } } \ No newline at end of file diff --git a/packages/Webkul/Product/src/Models/ProductGrid.php b/packages/Webkul/Product/src/Models/ProductGrid.php index 0fbfa307b..4b5779ba8 100644 --- a/packages/Webkul/Product/src/Models/ProductGrid.php +++ b/packages/Webkul/Product/src/Models/ProductGrid.php @@ -9,7 +9,7 @@ class ProductGrid extends Model { protected $table = 'products_grid'; - protected $fillable = ['product_id', 'sku', 'type', 'attribute_family_name', 'product_name', 'quantity', 'cost', 'price']; + protected $fillable = ['product_id', 'sku', 'type', 'attribute_family_name', 'name', 'quantity', 'cost', 'price', 'status']; public $timestamps = false; diff --git a/packages/Webkul/Product/src/Providers/ProductServiceProvider.php b/packages/Webkul/Product/src/Providers/ProductServiceProvider.php index 262217b6e..73c99bb38 100644 --- a/packages/Webkul/Product/src/Providers/ProductServiceProvider.php +++ b/packages/Webkul/Product/src/Providers/ProductServiceProvider.php @@ -19,15 +19,17 @@ class ProductServiceProvider extends ServiceProvider { $this->loadMigrationsFrom(__DIR__ . '/../Database/Migrations'); - // Event::listen('product.save.before', 'Webkul\Product\Listeners\ProductListener@beforeProductUpdate'); + Event::listen('products.datagrid.create', 'Webkul\Admin\Listeners\Product@sync'); - Event::listen('product.save.after', 'Webkul\Product\Listeners\ProductListener@afterProductSave'); + Event::listen('product.save.after', 'Webkul\Admin\Listeners\Product@afterProductCreated'); - // Event::listen('product.update.before', 'Webkul\Product\Listeners\ProductListener@beforeProductUpdate'); + Event::listen('product.update.before', + 'Webkul\Admin\Listeners\Product@beforeProductUpdate'); - Event::listen('product.update.after', 'Webkul\Product\Listeners\ProductListener@beforeProductUpdate'); + Event::listen('product.update.after', + 'Webkul\Admin\Listeners\Product@afterProductUpdate'); - Event::listen('product.delete.after', 'Webkul\Product\Listeners\ProductListener@afterProductDelete'); + Event::listen('product.delete.after', 'Webkul\Admin\Listeners\Product@afterProductDelete'); Product::observe(ProductObserver::class); } diff --git a/packages/Webkul/Product/src/Repositories/ProductGridRepository.php b/packages/Webkul/Product/src/Repositories/ProductGridRepository.php index 373018e61..c11180504 100644 --- a/packages/Webkul/Product/src/Repositories/ProductGridRepository.php +++ b/packages/Webkul/Product/src/Repositories/ProductGridRepository.php @@ -4,17 +4,111 @@ namespace Webkul\Product\Repositories; use Illuminate\Container\Container as App; use Webkul\Core\Eloquent\Repository; -use Webkul\Product\Repositories\ProductRepository; +use Webkul\Product\Repositories\ProductRepository as Product; +use Webkul\Product\Helpers\Price; /** * Product Repository * - * @author Prashant Singh @prashant-webkul + * @author Prashant Singh @prashant-webkul * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) */ class ProductGridRepository extends Repository { + protected $product; + + /** + * Price Object + * + * @var array + */ + Protected $price; + + + public function __construct( + Product $product, + Price $price, + App $app + ) + { + $this->product = $product; + + $this->price = $price; + + parent::__construct($app); + } + public function model() { return 'Webkul\Product\Models\ProductGrid'; } + + public function updateWhere($product) { + if($product->type == "simple") { + $gridObject = [ + 'sku' => $product->sku, + 'name' => $product->name, + 'attribute_family_name' => $product->toArray()['attribute_family']['name'], + 'price' => $this->price->getMinimalPrice($product), + 'status' => $product->status + ]; + + $qty = 0; + + if($product->parent_id == 'null') { + $gridObject['type'] = $product->type; + } + + foreach($product->toArray()['inventories'] as $inventorySource) { + $qty = $qty + $inventorySource['qty']; + } + + $gridObject['quantity'] = $qty; + + return $this->getModel()->where('product_id', $product->id)->update($gridObject); + + } else if($product->type == "configurable") { + $gridObject = [ + 'sku' => $product->sku, + 'type' => $product->type, + 'name' => $product->name, + 'attribute_family_name' => $product->toArray()['attribute_family']['name'], + 'price' => $this->price->getMinimalPrice($product), + 'status' => $product->status + ]; + $qty = 0; + + $gridObject['quantity'] = $qty; + + $this->getModel()->where('product_id', $product->id)->update($gridObject); + + $variants = $product->variants; + + foreach($variants as $variant) { + $gridObject = []; + + $gridObject = [ + 'sku' => $variant->sku, + 'name' => $variant->name, + 'attribute_family_name' => $variant->toArray()['attribute_family']['name'], + 'price' => $this->price->getMinimalPrice($variant), + 'status' => $variant->status + ]; + + if($variant->type == 'configurable') { + $gridObject['quantity'] = 0; + } else { + $qty = 0; + + foreach($variant->toArray()['inventories'] as $inventorySource) { + $qty = $qty + $inventorySource['qty']; + } + + $gridObject['quantity'] = $qty; + } + + return $this->getModel()->where('product_id', $product->id)->update($gridObject); + } + } + return false; + } } \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Resources/assets/sass/icons.scss b/packages/Webkul/Shop/src/Resources/assets/sass/icons.scss index e1757818f..a45e8ed46 100644 --- a/packages/Webkul/Shop/src/Resources/assets/sass/icons.scss +++ b/packages/Webkul/Shop/src/Resources/assets/sass/icons.scss @@ -7,7 +7,7 @@ background-image:URL('../images/icon-dropdown-left.svg'); width: 8px; height: 8px; - margin-left:auto; + margin-left: auto; margin-bottom: 2px; } @@ -15,7 +15,14 @@ background-image:URL('../images/icon-menu-close.svg'); width: 24px; height: 24px; - margin-left:auto; + margin-left: auto; +} + +.icon-menu-close-adj { + background-image:URL('../images/cross-icon-adj.svg'); + width: 32px; + height: 32px; + margin-left: auto; } .grid-view-icon { diff --git a/packages/Webkul/Shop/src/Resources/lang/en/app.php b/packages/Webkul/Shop/src/Resources/lang/en/app.php index 973b47420..926dfdd17 100644 --- a/packages/Webkul/Shop/src/Resources/lang/en/app.php +++ b/packages/Webkul/Shop/src/Resources/lang/en/app.php @@ -17,7 +17,6 @@ return [ 'add-review-page-title' => 'Add Review', 'write-review' => 'Write a review', 'review-title' => 'Give Your Review a Title', - 'empty' => 'You Haven\'t Reviewed Any Product Yet' ], 'customer' => [ 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 a81ab1a9a..693d185fb 100644 --- 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 @@ -16,39 +16,37 @@