diff --git a/app/Http/Controllers/Admin/Shop/ArticleController.php b/app/Http/Controllers/Admin/Shop/ArticleController.php index 28e5b14e..9441d1e4 100644 --- a/app/Http/Controllers/Admin/Shop/ArticleController.php +++ b/app/Http/Controllers/Admin/Shop/ArticleController.php @@ -63,6 +63,17 @@ class ArticleController extends Controller return view('Admin.Shop.Articles.edit', $data); } + public function duplicate($id) + { + $data = Articles::getFull($id); + // Prepare for creation: blank id/slug, tweak name to indicate copy + $data['article']['id'] = null; + $data['article']['slug'] = null; + $data['article']['name'] = ($data['article']['name'] ?? '').' (copie)'; + + return view('Admin.Shop.Articles.create', $data); + } + public function destroy($id) { return Articles::destroy($id); diff --git a/app/Repositories/Shop/ArticleImages.php b/app/Repositories/Shop/ArticleImages.php index 9eb3b2ff..85869b39 100644 --- a/app/Repositories/Shop/ArticleImages.php +++ b/app/Repositories/Shop/ArticleImages.php @@ -31,7 +31,11 @@ class ArticleImages public static function getFullImagesByArticle($article) { - $images = count($article->images) ? $article->images : collect([]); + if (! $article) { + return collect([]); + } + + $images = count($article->images ?? []) ? $article->images : collect([]); switch ($article->product_type) { case 'App\Models\Botanic\Variety': $variety = $article->product ?? false; diff --git a/resources/shop/css/main.css b/resources/shop/css/main.css index 181eb2c9..795213bb 100644 --- a/resources/shop/css/main.css +++ b/resources/shop/css/main.css @@ -126,3 +126,19 @@ body { padding-bottom: 4px; line-height: 1.1; } + +@media (max-width: 575.98px) { + .content-header .form-buttons { + margin-left: 0; + margin-top: 8px; + } + + .content-header .form-buttons .btn { + height: 28px; + padding-top: 2px; + padding-bottom: 2px; + padding-left: 8px; + padding-right: 8px; + font-size: 0.75rem; + } +} diff --git a/resources/views/Admin/Shop/Articles/create.blade.php b/resources/views/Admin/Shop/Articles/create.blade.php index 5ac2ddd7..d89714eb 100644 --- a/resources/views/Admin/Shop/Articles/create.blade.php +++ b/resources/views/Admin/Shop/Articles/create.blade.php @@ -5,5 +5,7 @@ ]) @section('content') - @include('Admin.Shop.Articles.form') + @include('Admin.Shop.Articles.form', [ + 'cancel_url' => route('Admin.Shop.Articles.index'), + ]) @endsection diff --git a/resources/views/Admin/Shop/Articles/edit.blade.php b/resources/views/Admin/Shop/Articles/edit.blade.php index d1c6c28a..7ce7f373 100644 --- a/resources/views/Admin/Shop/Articles/edit.blade.php +++ b/resources/views/Admin/Shop/Articles/edit.blade.php @@ -5,5 +5,13 @@ ]) @section('content') - @include('Admin.Shop.Articles.form') + @php + $duplicateUrl = \Route::has('Admin.Shop.Articles.duplicate') + ? route('Admin.Shop.Articles.duplicate', $article['id'] ?? null) + : null; + @endphp + @include('Admin.Shop.Articles.form', [ + 'duplicate_url' => $duplicateUrl, + 'cancel_url' => route('Admin.Shop.Articles.index'), + ]) @endsection diff --git a/resources/views/Admin/Shop/Articles/form.blade.php b/resources/views/Admin/Shop/Articles/form.blade.php index f281ec0e..12d1647e 100644 --- a/resources/views/Admin/Shop/Articles/form.blade.php +++ b/resources/views/Admin/Shop/Articles/form.blade.php @@ -27,7 +27,7 @@ @include('Admin.Shop.Articles.partials.characteristics') {{ Form::close() }} - + @include('load.form.appender') @include('load.form.editor') diff --git a/resources/views/components/form/button.blade.php b/resources/views/components/form/button.blade.php index c9d07f6d..0282d758 100644 --- a/resources/views/components/form/button.blade.php +++ b/resources/views/components/form/button.blade.php @@ -15,7 +15,20 @@ @isset($trigger) data-trigger="{{ $trigger }}" @endisset @isset($container) data-container="{{ $container }}" @endisset @isset($html) data-html="true" @endisset - @isset($metadata) {{ $metadata }} @endisset> + @isset($metadata) {{ $metadata }} @endisset + @isset($attr) + @if (is_array($attr)) + @foreach ($attr as $key => $value) + @if ($value === true) + {{ $key }} + @elseif ($value !== false && $value !== null) + {{ $key }}="{{ $value }}" + @endif + @endforeach + @else + {{ $attr }} + @endif + @endisset> {{ $txt ?? '' }} diff --git a/resources/views/components/form/buttons/button-duplicate.blade.php b/resources/views/components/form/buttons/button-duplicate.blade.php new file mode 100644 index 00000000..65495810 --- /dev/null +++ b/resources/views/components/form/buttons/button-duplicate.blade.php @@ -0,0 +1,6 @@ +@include('components.form.button', [ + 'class' => 'btn-info duplicate ' . ($class ?? ''), + 'icon' => 'fa-copy', + 'txt' => __('Dupliquer'), + 'attr' => ['data-url' => $duplicate_url ?? $duplicateUrl ?? null], +]) diff --git a/resources/views/components/save.blade.php b/resources/views/components/save.blade.php index fa0b80ac..561af7b3 100644 --- a/resources/views/components/save.blade.php +++ b/resources/views/components/save.blade.php @@ -1,5 +1,6 @@ @php $cancelUrl = $cancel_url ?? $cancelUrl ?? null; + $duplicateUrl = $duplicate_url ?? $duplicateUrl ?? null; @endphp @push('header-actions') @@ -8,6 +9,12 @@ 'class' => 'btn-sm mr-2', 'url' => $cancelUrl, ]) + @if($duplicateUrl) + @include('components.form.buttons.button-duplicate', [ + 'class' => 'btn-sm mr-2', + 'duplicate_url' => $duplicateUrl, + ]) + @endif @include('components.form.buttons.button-save', [ 'class' => 'btn-sm', ]) @@ -18,6 +25,9 @@
@include('components.form.buttons.button-cancel', ['url' => $cancelUrl]) + @if($duplicateUrl) + @include('components.form.buttons.button-duplicate', ['duplicate_url' => $duplicateUrl]) + @endif @include('components.form.buttons.button-save')
diff --git a/resources/views/layout/contentheader.blade.php b/resources/views/layout/contentheader.blade.php index bbab5ad5..bd947469 100644 --- a/resources/views/layout/contentheader.blade.php +++ b/resources/views/layout/contentheader.blade.php @@ -1,9 +1,9 @@
-
+
-

+

{{ $title ?? null}} @isset($subtitle) {{ $subtitle }} @@ -12,7 +12,7 @@ @stack('header-actions')

-
+