diff --git a/app/Datatables/Shop/ProducersDataTable.php b/app/Datatables/Shop/ProducersDataTable.php new file mode 100644 index 00000000..3a0b4df2 --- /dev/null +++ b/app/Datatables/Shop/ProducersDataTable.php @@ -0,0 +1,51 @@ +withCount(['Articles', 'tags', 'images']); + return $this->buildQuery($model); + } + + + public function modifier($datatables) + { + $datatables + ->editColumn('thumb', function (Merchandise $merchandise) { + return Merchandises::getThumb($merchandise->image); + }) + ->editColumn('tags2', function (Merchandise $merchandise) { + $html = ''; + foreach ($merchandise->tags as $tag) { + $html .= '' . $tag->slug . ' '; + } + return $html; + }) + ->rawColumns(['thumb', 'tags2', 'action']); + return parent::modifier($datatables); + } + + + protected function getColumns() + { + return [ + Column::make('thumb')->title('')->searchable(false)->orderable(false)->width(40)->class('text-center'), + Column::make('name')->title('Nom'), + Column::make('tags2')->title('Tags')->searchable(false)->orderable(false), + Column::make('articles_count')->title('#Art')->class('text-right')->searchable(false), + Column::make('tags_count')->title('#Tag')->class('text-right')->searchable(false), + Column::make('images_count')->title('#Pho')->class('text-right')->searchable(false), + $this->makeColumnButtons(), + ]; + } +} diff --git a/app/Http/Controllers/Admin/Shop/ProducerController.php b/app/Http/Controllers/Admin/Shop/ProducerController.php new file mode 100644 index 00000000..5e425e3d --- /dev/null +++ b/app/Http/Controllers/Admin/Shop/ProducerController.php @@ -0,0 +1,69 @@ +render('Admin.Shop.Producers.list'); + } + + public function create() + { + $data['tags_list'] = TagGroups::getTreeTags(); + return view('Admin.Shop.Producers.create', $data); + } + + public function store(Request $request) + { + $data = $request->all(); + Producers::storeFull($data); + return redirect()->route('Admin.Shop.Producers.index'); + } + + public function show($id) + { + return view('Admin.Shop.Producers.view', Producers::get($id)); + } + + public function edit($id) + { + $data['producer'] = Producers::getFull($id); + $data['tags_list'] = TagGroups::getTreeTags(); + return view('Admin.Shop.Producers.edit', $data); + } + + public function destroy($id) + { + return Producers::destroy($id); + } + + public function getImages(Request $request, $id = false, $can_edit = true) + { + $id = $id ? $id : $request->input('id'); + $data['images'] = Producers::getImages($id); + $data['can_edit'] = $can_edit; + return view('components.uploader.mini-gallery-items', $data); + } + + public function deleteImage(Request $request) + { + $id = $request->input('id'); + $index = $request->input('index'); + return Producers::deleteImage($id, $index); + } + + public function exportExcel() + { + return Producers::exportExcel(); + } +} diff --git a/app/Http/Controllers/Shop/CategoryController.php b/app/Http/Controllers/Shop/CategoryController.php index f9609b0f..577e6e52 100644 --- a/app/Http/Controllers/Shop/CategoryController.php +++ b/app/Http/Controllers/Shop/CategoryController.php @@ -27,7 +27,7 @@ class CategoryController extends Controller // dump($data['articles']); // exit; $data['tags'] = TagGroups::getWithTagsAndCountOffers(); - return view('Shop.shelve', $data); + return view('Shop.Shelves.shelve', $data); } public function getTree() diff --git a/app/Models/Shop/Producer.php b/app/Models/Shop/Producer.php new file mode 100644 index 00000000..47833740 --- /dev/null +++ b/app/Models/Shop/Producer.php @@ -0,0 +1,31 @@ +morphMany(Article::class, 'product'); + } + + public function tags() + { + return $this->morphToMany(Tag::class, 'taggable'); + } +} diff --git a/resources/views/Admin/Shop/Producers/create.blade.php b/resources/views/Admin/Shop/Producers/create.blade.php new file mode 100644 index 00000000..15dd0396 --- /dev/null +++ b/resources/views/Admin/Shop/Producers/create.blade.php @@ -0,0 +1,11 @@ +@extends('layout.index', [ + 'title' => __('shop.merchandises.title'), + 'subtitle' => __('shop.merchandises.add'), + 'breadcrumb' => [__('shop.merchandises.title'), __('shop.merchandises.add')] +]) + +@section('content') + {{ Form::open(['route' => 'Admin.Shop.Merchandises.store', 'id' => 'form', 'autocomplete' => 'off', 'files' => true]) }} + @include('Admin.Shop.Merchandises.form') + +@endsection diff --git a/resources/views/Admin/Shop/Producers/edit.blade.php b/resources/views/Admin/Shop/Producers/edit.blade.php new file mode 100644 index 00000000..f27012c1 --- /dev/null +++ b/resources/views/Admin/Shop/Producers/edit.blade.php @@ -0,0 +1,12 @@ +@extends('layout.index', [ + 'title' => __('Shop.merchandises.title'), + 'subtitle' => __('Shop.merchandises.edit'), + 'breadcrumb' => [__('Shop.merchandises.title'), __('Shop.merchandises.edit')] +]) + +@section('content') + {{ Form::open(['route' => 'Admin.Shop.Merchandises.store', 'id' => 'form', 'autocomplete' => 'off', 'files' => true]) }} + + @include('Admin.Shop.Merchandises.form') + +@endsection diff --git a/resources/views/Admin/Shop/Producers/form.blade.php b/resources/views/Admin/Shop/Producers/form.blade.php new file mode 100644 index 00000000..92005db3 --- /dev/null +++ b/resources/views/Admin/Shop/Producers/form.blade.php @@ -0,0 +1,67 @@ +
+
+
+
+ {{ Form::label('name', 'Nom') }} + @include('components.form.input', ['name' => 'name', 'value' => $merchandise['name'] ?? null, 'required' => true]) +
+
+ +
+
+ {{ Form::label('tags', 'Tags') }} + @include('components.form.selects.select-tree', [ + 'name' => 'tags[]', + 'list' => $tags_list, + 'values' => $merchandise['tags'] ?? null, + 'class' => 'select2 form-control', + 'multiple' => true + ]) +
+
+ +
+
+ {{ Form::label('description', 'Description') }} + @include('components.form.textarea', [ + 'name' => 'description', + 'value' => $merchandise['description'] ?? null, + 'class' => 'editor', + 'rows' => 5, + 'required' => false, + ]) +
+
+ +
+ +
+ @include('components.uploader.widget', [ + 'load_url' => route('Admin.Shop.Merchandises.getImages', ['id' => $merchandise['id'] ?? false]), + 'delete_url' => route('Admin.Botanic.Varieties.deleteImage'), + 'name' => 'images', + ]) +
+ +
+ +@include('components.save') + +@include('load.form.appender') +@include('load.form.editor') +@include('load.form.save') +@include('load.form.select2') +@include('load.layout.chevron') +@include('boilerplate::load.fileinput') +@include('boilerplate::load.tinymce') + +@push('js') + +@endpush \ No newline at end of file diff --git a/resources/views/Admin/Shop/Producers/list.blade.php b/resources/views/Admin/Shop/Producers/list.blade.php new file mode 100644 index 00000000..4be55daf --- /dev/null +++ b/resources/views/Admin/Shop/Producers/list.blade.php @@ -0,0 +1,12 @@ +@extends('layout.index', [ + 'title' => __('Marchandises'), + 'subtitle' => __('Liste de marchandises'), + 'breadcrumb' => [__('Shop.merchandises.title')] +]) + +@section('content') + @component('components.card') + @include('components.datatable', ['route' => route('Admin.Shop.Merchandises.index'), 'model' => 'merchandises']) + @endcomponent +@endsection + diff --git a/resources/views/Admin/Shop/Producers/show.blade.php b/resources/views/Admin/Shop/Producers/show.blade.php new file mode 100644 index 00000000..d6de9419 --- /dev/null +++ b/resources/views/Admin/Shop/Producers/show.blade.php @@ -0,0 +1,30 @@ +@extends('layout.index', [ + 'title' => __('products.title'), + 'subtitle' => __('products.title'), + 'breadcrumb' => [__('products.title')] +]) + +@section('content') + +
+ +
+ +
+
+
+

{{ name }}

+

+ {{ $product.section.name }}
+

+
+ +
+ @include('components.carousel') +
+
+
+
+
+ +@endsection diff --git a/resources/views/Shop/Articles/partials/article.blade.php b/resources/views/Shop/Articles/partials/article.blade.php index a91ec7d0..f06bd6be 100644 --- a/resources/views/Shop/Articles/partials/article.blade.php +++ b/resources/views/Shop/Articles/partials/article.blade.php @@ -14,20 +14,24 @@
- Semence
- @if ($article['semences'] ?? false) - {{ $article['semences']['price'] ?? null }}
- @else - Indisponible
- @endif + + @if ($article['semences'] ?? false) + {{ $article['semences']['price'] ?? null }} € + @else + - + @endif +
+ Semence
- Plant
- @if ($article['plants'] ?? false) - {{ $article['plants']['price'] }}
- @else - Indisponible
- @endif + + @if ($article['plants'] ?? false) + {{ $article['plants']['price'] }} € + @else + - + @endif +
+ Plant
diff --git a/resources/views/Shop/layout/partials/category.blade.php b/resources/views/Shop/Shelves/partials/category.blade.php similarity index 100% rename from resources/views/Shop/layout/partials/category.blade.php rename to resources/views/Shop/Shelves/partials/category.blade.php diff --git a/resources/views/Shop/layout/partials/category_add.blade.php b/resources/views/Shop/Shelves/partials/category_add.blade.php similarity index 58% rename from resources/views/Shop/layout/partials/category_add.blade.php rename to resources/views/Shop/Shelves/partials/category_add.blade.php index cc0475c2..4a4d8b0f 100644 --- a/resources/views/Shop/layout/partials/category_add.blade.php +++ b/resources/views/Shop/Shelves/partials/category_add.blade.php @@ -1,24 +1,3 @@ -
-
- -
-
- -
-
- -
-
- Il y a {{ $articles ? count($articles) : 0 }} article(s) dans la liste -
-
-
@include('components.form.button', ['id' => 'by_cards', 'icon' => 'fa-th', 'class' => 'btn-success']) diff --git a/resources/views/Shop/Shelves/partials/category_add_multi.blade.php b/resources/views/Shop/Shelves/partials/category_add_multi.blade.php new file mode 100644 index 00000000..e89d2884 --- /dev/null +++ b/resources/views/Shop/Shelves/partials/category_add_multi.blade.php @@ -0,0 +1,14 @@ +
+
+ +
+
+ +
+
diff --git a/resources/views/Shop/layout/partials/category_articles.blade.php b/resources/views/Shop/Shelves/partials/category_articles.blade.php similarity index 100% rename from resources/views/Shop/layout/partials/category_articles.blade.php rename to resources/views/Shop/Shelves/partials/category_articles.blade.php diff --git a/resources/views/Shop/Shelves/partials/category_articles_count.blade.php b/resources/views/Shop/Shelves/partials/category_articles_count.blade.php new file mode 100644 index 00000000..11f31af6 --- /dev/null +++ b/resources/views/Shop/Shelves/partials/category_articles_count.blade.php @@ -0,0 +1,5 @@ +
+
+ Il y a {{ $articles ? count($articles) : 0 }} article(s) dans la liste +
+
diff --git a/resources/views/Shop/layout/partials/category_articles_rows.blade.php b/resources/views/Shop/Shelves/partials/category_articles_rows.blade.php similarity index 100% rename from resources/views/Shop/layout/partials/category_articles_rows.blade.php rename to resources/views/Shop/Shelves/partials/category_articles_rows.blade.php diff --git a/resources/views/Shop/shelve.blade.php b/resources/views/Shop/Shelves/shelve.blade.php similarity index 71% rename from resources/views/Shop/shelve.blade.php rename to resources/views/Shop/Shelves/shelve.blade.php index fabd93c8..4b6dded1 100644 --- a/resources/views/Shop/shelve.blade.php +++ b/resources/views/Shop/Shelves/shelve.blade.php @@ -11,13 +11,13 @@

{!! $category['description'] !!}

- @include('Shop.layout.partials.category_add') + @include('Shop.Shelves.partials.category_add')
@if ($display_by_rows ?? false) - @include('Shop.layout.partials.category_articles_rows') + @include('Shop.Shelves.partials.category_articles_rows') @else - @include('Shop.layout.partials.category_articles') + @include('Shop.Shelves.partials.category_articles') @endif @endsection diff --git a/routes/Admin/Shop/Producers.php b/routes/Admin/Shop/Producers.php new file mode 100644 index 00000000..e201a4e8 --- /dev/null +++ b/routes/Admin/Shop/Producers.php @@ -0,0 +1,16 @@ +name('Producers.')->group(function () { + Route::get('', 'ProducerController@index')->name('index'); + Route::get('getDataTable', 'ProducerController@getDataTable')->name('getDataTable'); + Route::get('create', 'ProducerController@create')->name('create'); + Route::delete('destroy/{id?}', 'ProducerController@destroy')->name('destroy'); + Route::post('update', 'ProducerController@update')->name('update'); + Route::post('store', 'ProducerController@store')->name('store'); + Route::get('edit/{id}', 'ProducerController@edit')->name('edit'); + Route::post('getSelect', 'ProducerController@getOptions')->name('getSelect'); + Route::post('deleteImage', 'ProducerController@deleteImage')->name('deleteImage'); + Route::any('getImages/{id?}/{can_edit?}', 'ProducerController@getImages')->name('getImages'); + Route::any('exportExcel', 'ProducerController@exportExcel')->name('exportExcel'); +}); + diff --git a/routes/Admin/Shop/route.php b/routes/Admin/Shop/route.php index c4e64567..b1e0e830 100644 --- a/routes/Admin/Shop/route.php +++ b/routes/Admin/Shop/route.php @@ -17,6 +17,7 @@ Route::middleware('auth')->prefix('Shop')->namespace('Shop')->name('Shop.')->gro include __DIR__ . '/Packages.php'; include __DIR__ . '/PriceLists.php'; include __DIR__ . '/PriceListValues.php'; + include __DIR__ . '/Producers.php'; include __DIR__ . '/SaleChannels.php'; include __DIR__ . '/Tags.php'; include __DIR__ . '/TagGroups.php';