From 71fd4a6237d131beadaa2e7ee4c77f49f56ebf4c Mon Sep 17 00:00:00 2001 From: jitendra Date: Wed, 1 Aug 2018 11:41:33 +0530 Subject: [PATCH] Product page --- packages/Webkul/Admin/src/Http/routes.php | 4 ++ .../Webkul/Admin/src/ProductFormAccordian.php | 58 +++++++++++++++++++ .../src/Providers/AdminServiceProvider.php | 6 ++ .../src/Providers/EventServiceProvider.php | 21 +++++++ .../products/accordians/categories.blade.php | 6 ++ .../products/attribute-types/text.blade.php | 4 ++ .../views/catalog/products/create.blade.php | 25 ++++---- .../views/catalog/products/edit.blade.php | 28 ++++++++- ...1_create_product_attribute_value_table.php | 4 +- .../Http/Controllers/ProductController.php | 15 +++-- .../Webkul/Product/src/Models/Product.php | 19 ++++++ .../Product/src/Observers/ProductObserver.php | 41 +++++++++++++ .../src/Providers/ProductServiceProvider.php | 4 ++ .../src/Repositories/ProductRepository.php | 6 +- 14 files changed, 222 insertions(+), 19 deletions(-) create mode 100644 packages/Webkul/Admin/src/ProductFormAccordian.php create mode 100644 packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/categories.blade.php create mode 100644 packages/Webkul/Admin/src/Resources/views/catalog/products/attribute-types/text.blade.php create mode 100644 packages/Webkul/Product/src/Observers/ProductObserver.php diff --git a/packages/Webkul/Admin/src/Http/routes.php b/packages/Webkul/Admin/src/Http/routes.php index db4064bb8..96e1e3b4b 100644 --- a/packages/Webkul/Admin/src/Http/routes.php +++ b/packages/Webkul/Admin/src/Http/routes.php @@ -61,6 +61,10 @@ Route::group(['middleware' => ['web']], function () { 'view' => 'admin::catalog.products.edit' ])->name('admin.catalog.products.edit'); + Route::put('/products/edit/{id}', 'Webkul\Product\Http\Controllers\ProductController@update')->defaults('_config', [ + 'redirect' => 'admin.catalog.products.index' + ])->name('admin.catalog.products.update'); + // Catalog Category Routes Route::get('/categories', 'Webkul\Category\Http\Controllers\CategoryController@index')->defaults('_config', [ diff --git a/packages/Webkul/Admin/src/ProductFormAccordian.php b/packages/Webkul/Admin/src/ProductFormAccordian.php new file mode 100644 index 000000000..16169dea8 --- /dev/null +++ b/packages/Webkul/Admin/src/ProductFormAccordian.php @@ -0,0 +1,58 @@ +items = $accordian->sortItems($accordian->items); + + return $accordian; + } + + /** + * Add a accordian item to the item stack + * + * @param string $key Dot seperated heirarchy + * @param string $name Text for the anchor + * @param string $view Blade file for accordian + * @param integer $sort Sorting index for the items + */ + public function add($key, $name, $view, $sort = 0) + { + array_push($this->items, [ + 'key' => $key, + 'name' => $name, + 'view' => $view, + 'sort' => $sort + ]); + } + + /** + * Method to sort through the acl items and put them in order + * + * @return void + */ + public function sortItems($items) { + usort($items, function($a, $b) { + if ($a['sort'] == $b['sort']) { + return 0; + } + + return ($a['sort'] < $b['sort']) ? -1 : 1; + }); + + return $items; + } +} \ 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 15d2dd29e..66e18b19c 100644 --- a/packages/Webkul/Admin/src/Providers/AdminServiceProvider.php +++ b/packages/Webkul/Admin/src/Providers/AdminServiceProvider.php @@ -40,6 +40,12 @@ class AdminServiceProvider extends ServiceProvider */ protected function composeView() { + view()->composer(['admin::catalog.products.create', 'admin::catalog.products.edit'], function ($view) { + $accordians = current(Event::fire('admin.catalog.products.accordian.create')); + + $view->with('form_accordians', $accordians); + }); + view()->composer(['admin::layouts.nav-left', 'admin::layouts.nav-aside', 'admin::layouts.tabs'], function ($view) { $menu = current(Event::fire('admin.menu.create')); diff --git a/packages/Webkul/Admin/src/Providers/EventServiceProvider.php b/packages/Webkul/Admin/src/Providers/EventServiceProvider.php index 414c24d50..eb09fd1ca 100644 --- a/packages/Webkul/Admin/src/Providers/EventServiceProvider.php +++ b/packages/Webkul/Admin/src/Providers/EventServiceProvider.php @@ -6,6 +6,7 @@ use Illuminate\Support\ServiceProvider; use Illuminate\Support\Facades\Event; use Illuminate\Support\Facades\View; use Webkul\Ui\Menu; +use Webkul\Admin\ProductFormAccordian; class EventServiceProvider extends ServiceProvider { @@ -21,6 +22,8 @@ class EventServiceProvider extends ServiceProvider $this->buildACL(); $this->registerACL(); + + $this->createProductFormAccordian(); } /** @@ -110,4 +113,22 @@ class EventServiceProvider extends ServiceProvider View::share('acl', app('acl')); } + + /** + * This method fires an event for accordian creation, any package can add their accordian item by listening to the admin.catalog.products.accordian.build event + * + * @return void + */ + public function createProductFormAccordian() + { + Event::listen('admin.catalog.products.accordian.create', function() { + return ProductFormAccordian::create(function($accordian) { + Event::fire('admin.catalog.products.accordian.build', $accordian); + }); + }); + + Event::listen('admin.catalog.products.accordian.build', function($accordian) { + $accordian->add('categories', 'Categories', 'admin::catalog.products.accordians.categories', 1); + }); + } } diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/categories.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/categories.blade.php new file mode 100644 index 000000000..b09e22aa5 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/accordians/categories.blade.php @@ -0,0 +1,6 @@ + +
+ + +
+
\ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/attribute-types/text.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/attribute-types/text.blade.php new file mode 100644 index 000000000..ffd5e9498 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/attribute-types/text.blade.php @@ -0,0 +1,4 @@ +
+ + +
\ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/create.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/create.blade.php index 70b06f8be..d1f94dbb1 100644 --- a/packages/Webkul/Admin/src/Resources/views/catalog/products/create.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/create.blade.php @@ -35,6 +35,7 @@ @csrf() input('family') ?> + input('sku') ?>
@@ -57,7 +58,7 @@ @@ -67,13 +68,11 @@ @{{ errors.first('attribute_family_id') }}
- @if($familyId) -
- - - @{{ errors.first('sku') }} -
- @endif +
+ + + @{{ errors.first('sku') }} +
@@ -130,8 +129,14 @@ @section('javascript') @stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/products/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/products/edit.blade.php index 6ab4ebd32..d1d5b82b1 100644 --- a/packages/Webkul/Admin/src/Resources/views/catalog/products/edit.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/catalog/products/edit.blade.php @@ -2,11 +2,11 @@ @section('content')
-
+