From fe883255b8a5e2be32af290a5bcd567d9578388d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20ARGOUD?= Date: Mon, 8 Jul 2024 13:18:47 +0200 Subject: [PATCH 1/9] feat(laravel-11): add compatibility --- README.md | 31 ++++++++++++++++++++++++++----- composer.json | 14 +++++++------- 2 files changed, 33 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 628f5cf..4c8ccdb 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,7 @@ composer require thomascombe/backpack-async-export |---------|------------|---------------------|--------------| | 1.x | 7.4 - ^8.0 | ^8.0 - ^9.0 - ^10.0 | 4.1.* - ~5.0 | | 2.x | ^8.1 | ^9.0 - ^10.0 | ~5.5 | +| 3.x | ^8.2 | ^11.0 | ~6.0 | You can publish and run the migrations with: @@ -32,6 +33,7 @@ php artisan migrate ``` You can publish the config file with: + ```bash php artisan vendor:publish --provider="Thomascombe\BackpackAsyncExport\BackpackAsyncExportServiceProvider" --tag="backpack-async-export-config" ``` @@ -56,6 +58,7 @@ return [ ## Usage for export ### Add export item in menu + ```bash php artisan backpack:add-sidebar-content "" # or @@ -63,19 +66,23 @@ php artisan backpack:add-menu-content " Import" ``` ### Create you import class + ```bash php artisan make:import UserImport --model=App/Models/User ``` + For all details, have a look at [Laravel Excel Package](https://laravel-excel.com/) ### Create your controller + ```bash php artisan backpack:crud {Name}CrudController ``` ### Your controller need to implement interface + ```php use Thomascombe\BackpackAsyncExport\Http\Controllers\Admin\Interfaces\ImportableCrud; @@ -192,11 +206,13 @@ class {Name}CrudController extends CrudController implements ImportableCrud {} ``` ### Use awesome trait + ```php use Thomascombe\BackpackAsyncExport\Http\Controllers\Admin\Traits\HasImportButton; ``` ### Call method to add buttons + ```php public function setup() { @@ -237,6 +253,7 @@ public function getImportParameters(): array ## Need more? ### Override ImportExport model + You can override `ImportExport` model using config : `import_export_model`. Your model class **need** to implement `\Thomascombe\BackpackAsyncExport\Models\ImportExport`. @@ -247,7 +264,9 @@ class ImportExport extends \Thomascombe\BackpackAsyncExport\Models\ImportExport ``` ### Update export name -Package allow to change export name with interface on your export class: `Thomascombe\BackpackAsyncExport\Exports\ExportWithName` + +Package allow to change export name with interface on your export +class: `Thomascombe\BackpackAsyncExport\Exports\ExportWithName` ```php @@ -269,7 +288,8 @@ class UserExport implements ExportWithName ### Multi export by CRUD? You can easily have multi export on save CRUD. -Your CRUD controller need to implement `Thomascombe\BackpackAsyncExport\Http\Controllers\Admin\Interfaces\MultiExportableCrud` interface. +Your CRUD controller need to +implement `Thomascombe\BackpackAsyncExport\Http\Controllers\Admin\Interfaces\MultiExportableCrud` interface. ```php public function getAvailableExports(): array @@ -280,10 +300,12 @@ public function getAvailableExports(): array ]; } ``` + **Array keys**: key for query params and dynamic method name -**Array values**: Export name (display in CRUD button) +**Array values**: Export name (display in CRUD button) + +For each new export you have to add news methods: -For each new export you have to add news methods: ```php public function getExport*All*(): ImportExport { @@ -296,7 +318,6 @@ public function getExport*All*Parameters(): array } ``` - ## Testing ```bash diff --git a/composer.json b/composer.json index a04c6ca..8eaba23 100644 --- a/composer.json +++ b/composer.json @@ -18,21 +18,21 @@ } ], "require": { - "php": "^8.1", - "backpack/crud": "~5.5|~6.0", - "illuminate/contracts": "^9.0|^10.0", + "php": "^8.2", + "backpack/crud": "~6.0", + "illuminate/contracts": "^11.0", "maatwebsite/excel": "^3.1", "spatie/laravel-package-tools": "^1.12" }, "require-dev": { - "nunomaduro/collision": "^6.1|^7.0", + "nunomaduro/collision": "^8.1", "nunomaduro/larastan": "^2.0", - "orchestra/testbench": "^7.0|^8.0", + "orchestra/testbench": "^9.0", "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^9.5", + "phpunit/phpunit": "^10.1", "spatie/laravel-ray": "^1.30", "squizlabs/php_codesniffer": "^3.7", - "vimeo/psalm": "^4.25" + "vimeo/psalm": "^5.0" }, "autoload": { "psr-4": { From 55cd11bb5f702791be12f2b4dc264eb52720e006 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20ARGOUD?= Date: Mon, 8 Jul 2024 14:01:02 +0200 Subject: [PATCH 2/9] fix(backpack-6): update import view --- resources/views/pages/import.blade.php | 39 ++++++++++++++------------ 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/resources/views/pages/import.blade.php b/resources/views/pages/import.blade.php index 4c384dc..e872883 100644 --- a/resources/views/pages/import.blade.php +++ b/resources/views/pages/import.blade.php @@ -1,22 +1,25 @@ @extends(backpack_view('blank')) +@php + $defaultBreadcrumbs = [ + trans('backpack::crud.admin') => backpack_url('dashboard'), + $crud->entity_name_plural => url($crud->route), + trans('backpack-async-export::admin.operation.import') => false, + ]; + + // if breadcrumbs aren't defined in the CrudController, use the default breadcrumbs + $breadcrumbs = $breadcrumbs ?? $defaultBreadcrumbs; +@endphp + @section('header') -
-

- {!! $crud->getHeading() ?? $crud->entity_name_plural !!} - {!! $crud->getSubheading() ?? trans('backpack-async-export::admin.operation.import') . ' ' . $crud->entity_name !!} - . - - @if($crud->hasAccess('list')) - - - - @lang('backpack::crud.back_to_all') - {{ $crud->entity_name_plural }} - - - @endif -

+
+

{!! $crud->getHeading() ?? $crud->entity_name_plural !!}

+

{!! $crud->getSubheading() ?? trans('backpack-async-export::admin.operation.import').' '.$crud->entity_name !!}.

+ @if ($crud->hasAccess('list')) +

+ {{ trans('backpack::crud.back_to_all') }} {{ $crud->entity_name_plural }} +

+ @endif
@endsection @@ -40,8 +43,8 @@ ] ) -
{{ json_encode(Assets::loaded()) }}
-
+
{{ json_encode(Basset::loaded()) }}
+