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 @@
+