From 0b1322e5c550b735faae794cf0adf463687dd092 Mon Sep 17 00:00:00 2001 From: OwenMelbz Date: Sun, 4 Dec 2016 22:17:37 +0000 Subject: [PATCH 1/5] added inline errors --- src/CrudPanel.php | 3 +- src/PanelTraits/Errors.php | 49 +++++++ src/app/Http/Controllers/CrudController.php | 1 + src/config/backpack/crud.php | 2 + src/resources/views/form_content.blade.php | 152 +++++++++++--------- 5 files changed, 140 insertions(+), 67 deletions(-) create mode 100644 src/PanelTraits/Errors.php diff --git a/src/CrudPanel.php b/src/CrudPanel.php index 1c0492a9fc..89237f548c 100644 --- a/src/CrudPanel.php +++ b/src/CrudPanel.php @@ -8,6 +8,7 @@ use Backpack\CRUD\PanelTraits\Columns; use Backpack\CRUD\PanelTraits\Create; use Backpack\CRUD\PanelTraits\Delete; +use Backpack\CRUD\PanelTraits\Errors; use Backpack\CRUD\PanelTraits\FakeColumns; use Backpack\CRUD\PanelTraits\FakeFields; use Backpack\CRUD\PanelTraits\Fields; @@ -21,7 +22,7 @@ class CrudPanel { - use Create, Read, Update, Delete, Reorder, Access, Columns, Fields, Query, Buttons, AutoSet, FakeFields, FakeColumns, ViewsAndRestoresRevisions, AutoFocus, Filters; + use Create, Read, Update, Delete, Errors, Reorder, Access, Columns, Fields, Query, Buttons, AutoSet, FakeFields, FakeColumns, ViewsAndRestoresRevisions, AutoFocus, Filters; // -------------- // CRUD variables diff --git a/src/PanelTraits/Errors.php b/src/PanelTraits/Errors.php new file mode 100644 index 0000000000..d9f7d965a2 --- /dev/null +++ b/src/PanelTraits/Errors.php @@ -0,0 +1,49 @@ +errorsGrouped = config('backpack.crud.errors_grouped', true); + $this->errorsInline = config('backpack.crud.errors_inline', false); + } + + public function enableGroupedErrors() + { + $this->errorsGrouped = true; + return $this->errorsGrouped; + } + + public function disableGroupedErrors() + { + $this->errorsGrouped = false; + return $this->errorsGrouped; + } + + public function isGroupedErrorsEnabled() + { + return $this->errorsGrouped; + } + + public function enableInlineErrors() + { + $this->errorsInline = true; + return $this->errorsInline; + } + + public function disableInlineErrors() + { + $this->errorsInline = false; + return $this->errorsInline; + } + + public function isInlineErrorsEnabled() + { + return $this->errorsInline; + } +} diff --git a/src/app/Http/Controllers/CrudController.php b/src/app/Http/Controllers/CrudController.php index a8fdd7501e..3ea8fcf485 100644 --- a/src/app/Http/Controllers/CrudController.php +++ b/src/app/Http/Controllers/CrudController.php @@ -29,6 +29,7 @@ public function __construct() { if (! $this->crud) { $this->crud = new CrudPanel(); + $this->crud->setErrorDefaults(); // call the setup function inside this closure to also have the request there // this way, developers can use things stored in session (auth variables, etc) diff --git a/src/config/backpack/crud.php b/src/config/backpack/crud.php index e871fe8bc8..abab63179b 100644 --- a/src/config/backpack/crud.php +++ b/src/config/backpack/crud.php @@ -7,6 +7,8 @@ | Backpack\CRUD preferences |-------------------------------------------------------------------------- */ + 'errors_inline' => false, + 'errors_grouped' => true, /* |------------ diff --git a/src/resources/views/form_content.blade.php b/src/resources/views/form_content.blade.php index 3d987249b0..679369c27a 100644 --- a/src/resources/views/form_content.blade.php +++ b/src/resources/views/form_content.blade.php @@ -1,78 +1,98 @@
- {{-- Show the erros, if any --}} - @if ($errors->any()) -
-
-

{{ trans('backpack::crud.please_fix') }}

-
    - @foreach($errors->all() as $error) -
  • {{ $error }}
  • - @endforeach -
-
-
- @endif - - {{-- Show the inputs --}} - @foreach ($fields as $field) - - @if(view()->exists('vendor.backpack.crud.fields.'.$field['type'])) - @include('vendor.backpack.crud.fields.'.$field['type'], array('field' => $field)) - @else - @include('crud::fields.'.$field['type'], array('field' => $field)) - @endif - @endforeach + {{-- Show the erros, if any --}} + @if ($crud->isGroupedErrorsEnabled() && $errors->any()) +
+
+

{{ trans('backpack::crud.please_fix') }}

+
    + @foreach($errors->all() as $error) +
  • {{ $error }}
  • + @endforeach +
+
+
+ @endif + + {{-- Show the inputs --}} + @foreach ($fields as $field) + + @if(view()->exists('vendor.backpack.crud.fields.'.$field['type'])) + @include('vendor.backpack.crud.fields.'.$field['type'], array('field' => $field)) + @else + @include('crud::fields.'.$field['type'], array('field' => $field)) + @endif + @endforeach
{{-- Define blade stacks so css and js can be pushed from the fields to these sections. --}} @section('after_styles') - - @stack('crud_fields_styles') + + @stack('crud_fields_styles') @endsection @section('after_scripts') - - @stack('crud_fields_scripts') - - + + @endif + }); + @endsection From 9fa966aeccf93e69de3bb4cb7cc45f12d00535fd Mon Sep 17 00:00:00 2001 From: Cristian Tabacitu Date: Sun, 4 Dec 2016 22:17:45 +0000 Subject: [PATCH 2/5] Apply fixes from StyleCI [ci skip] [skip ci] --- src/CrudPanel.php | 20 ++++++++++---------- src/CrudServiceProvider.php | 4 +--- src/CrudTrait.php | 2 +- src/PanelTraits/Errors.php | 4 ++++ src/app/Http/Controllers/CrudController.php | 16 ++++++++-------- src/resources/lang/ro/crud.php | 1 - 6 files changed, 24 insertions(+), 23 deletions(-) diff --git a/src/CrudPanel.php b/src/CrudPanel.php index 89237f548c..0765bb8f14 100644 --- a/src/CrudPanel.php +++ b/src/CrudPanel.php @@ -2,23 +2,23 @@ namespace Backpack\CRUD; +use Backpack\CRUD\PanelTraits\Read; +use Backpack\CRUD\PanelTraits\Query; use Backpack\CRUD\PanelTraits\Access; -use Backpack\CRUD\PanelTraits\AutoSet; -use Backpack\CRUD\PanelTraits\Buttons; -use Backpack\CRUD\PanelTraits\Columns; use Backpack\CRUD\PanelTraits\Create; use Backpack\CRUD\PanelTraits\Delete; use Backpack\CRUD\PanelTraits\Errors; -use Backpack\CRUD\PanelTraits\FakeColumns; -use Backpack\CRUD\PanelTraits\FakeFields; use Backpack\CRUD\PanelTraits\Fields; -use Backpack\CRUD\PanelTraits\Query; -use Backpack\CRUD\PanelTraits\Read; -use Backpack\CRUD\PanelTraits\Reorder; use Backpack\CRUD\PanelTraits\Update; -use Backpack\CRUD\PanelTraits\ViewsAndRestoresRevisions; -use Backpack\CRUD\PanelTraits\AutoFocus; +use Backpack\CRUD\PanelTraits\AutoSet; +use Backpack\CRUD\PanelTraits\Buttons; +use Backpack\CRUD\PanelTraits\Columns; use Backpack\CRUD\PanelTraits\Filters; +use Backpack\CRUD\PanelTraits\Reorder; +use Backpack\CRUD\PanelTraits\AutoFocus; +use Backpack\CRUD\PanelTraits\FakeFields; +use Backpack\CRUD\PanelTraits\FakeColumns; +use Backpack\CRUD\PanelTraits\ViewsAndRestoresRevisions; class CrudPanel { diff --git a/src/CrudServiceProvider.php b/src/CrudServiceProvider.php index 81361459b8..534e79e202 100644 --- a/src/CrudServiceProvider.php +++ b/src/CrudServiceProvider.php @@ -2,8 +2,8 @@ namespace Backpack\CRUD; -use Illuminate\Support\ServiceProvider; use Route; +use Illuminate\Support\ServiceProvider; class CrudServiceProvider extends ServiceProvider { @@ -30,7 +30,6 @@ public function boot() $this->loadTranslationsFrom(realpath(__DIR__.'/resources/lang'), 'backpack'); - // PUBLISH FILES // publish lang files @@ -51,7 +50,6 @@ public function boot() __DIR__.'/resources/views-elfinder' => resource_path('views/vendor/elfinder'), ], 'elfinder'); - // use the vendor configuration file as fallback $this->mergeConfigFrom( __DIR__.'/config/backpack/crud.php', 'backpack.crud' diff --git a/src/CrudTrait.php b/src/CrudTrait.php index d7761a65f2..e43aa26935 100644 --- a/src/CrudTrait.php +++ b/src/CrudTrait.php @@ -3,8 +3,8 @@ namespace Backpack\CRUD; use DB; -use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\Config; +use Illuminate\Database\Eloquent\Model; trait CrudTrait { diff --git a/src/PanelTraits/Errors.php b/src/PanelTraits/Errors.php index d9f7d965a2..57d6ad10d4 100644 --- a/src/PanelTraits/Errors.php +++ b/src/PanelTraits/Errors.php @@ -16,12 +16,14 @@ public function setErrorDefaults() public function enableGroupedErrors() { $this->errorsGrouped = true; + return $this->errorsGrouped; } public function disableGroupedErrors() { $this->errorsGrouped = false; + return $this->errorsGrouped; } @@ -33,12 +35,14 @@ public function isGroupedErrorsEnabled() public function enableInlineErrors() { $this->errorsInline = true; + return $this->errorsInline; } public function disableInlineErrors() { $this->errorsInline = false; + return $this->errorsInline; } diff --git a/src/app/Http/Controllers/CrudController.php b/src/app/Http/Controllers/CrudController.php index 3ea8fcf485..cf6e85b62b 100644 --- a/src/app/Http/Controllers/CrudController.php +++ b/src/app/Http/Controllers/CrudController.php @@ -2,18 +2,18 @@ namespace Backpack\CRUD\app\Http\Controllers; +use Backpack\CRUD\CrudPanel; +use Illuminate\Http\Request; +use Illuminate\Support\Facades\Form as Form; use Illuminate\Foundation\Bus\DispatchesJobs; -use Illuminate\Foundation\Validation\ValidatesRequests; use Illuminate\Routing\Controller as BaseController; -use Illuminate\Support\Facades\Form as Form; -use Illuminate\Http\Request; -use Backpack\CRUD\app\Http\Requests\CrudRequest as StoreRequest; -use Backpack\CRUD\app\Http\Requests\CrudRequest as UpdateRequest; -use Backpack\CRUD\CrudPanel; -// CRUD Traits for non-core features -use Backpack\CRUD\app\Http\Controllers\CrudFeatures\AjaxTable; +use Illuminate\Foundation\Validation\ValidatesRequests; use Backpack\CRUD\app\Http\Controllers\CrudFeatures\Reorder; +use Backpack\CRUD\app\Http\Controllers\CrudFeatures\AjaxTable; +// CRUD Traits for non-core features use Backpack\CRUD\app\Http\Controllers\CrudFeatures\Revisions; +use Backpack\CRUD\app\Http\Requests\CrudRequest as StoreRequest; +use Backpack\CRUD\app\Http\Requests\CrudRequest as UpdateRequest; use Backpack\CRUD\app\Http\Controllers\CrudFeatures\ShowDetailsRow; class CrudController extends BaseController diff --git a/src/resources/lang/ro/crud.php b/src/resources/lang/ro/crud.php index b3b505d1e4..65b017cf45 100644 --- a/src/resources/lang/ro/crud.php +++ b/src/resources/lang/ro/crud.php @@ -88,7 +88,6 @@ 'insert_success' => 'Intrarea a fost adăugată cu succes.', 'update_success' => 'Intrarea a fost modificată cu succes.', - // CRUD reorder view 'reorder' => 'Reordonare', 'reorder_text' => 'Folosește drag&drop pentru a reordona.', From e52aecc3a1f7da23bb8a8422798d43a3f6b343d1 Mon Sep 17 00:00:00 2001 From: Cristian Tabacitu Date: Sun, 12 Feb 2017 10:23:08 +0000 Subject: [PATCH 3/5] Apply fixes from StyleCI [ci skip] [skip ci] --- src/config/backpack/crud.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/config/backpack/crud.php b/src/config/backpack/crud.php index bea2ce10fb..d7e1a608f1 100644 --- a/src/config/backpack/crud.php +++ b/src/config/backpack/crud.php @@ -8,7 +8,6 @@ |-------------------------------------------------------------------------- */ - /* |------------ | CREATE & UPDATE From 536357a18ffa9e1b2beb94db3c9375a1d46655a9 Mon Sep 17 00:00:00 2001 From: Cristian Tabacitu Date: Sun, 12 Feb 2017 12:42:58 +0200 Subject: [PATCH 4/5] auto-enable errors inside CrudPanel class, not CrudController --- src/CrudPanel.php | 8 ++++++ src/PanelTraits/Errors.php | 24 +++++++++------- src/PanelTraits/Filters.php | 32 +++++++++++++++++---- src/app/Http/Controllers/CrudController.php | 1 - 4 files changed, 49 insertions(+), 16 deletions(-) diff --git a/src/CrudPanel.php b/src/CrudPanel.php index 2f81fe7dce..6bda185064 100644 --- a/src/CrudPanel.php +++ b/src/CrudPanel.php @@ -65,10 +65,18 @@ class CrudPanel // The following methods are used in CrudController or your EntityCrudController to manipulate the variables above. + + public function __construct() + { + $this->setErrorDefaults(); + } + + // ------------------------------------------------------ // BASICS - model, route, entity_name, entity_name_plural // ------------------------------------------------------ + /** * This function binds the CRUD to its corresponding Model (which extends Eloquent). * All Create-Read-Update-Delete operations are done using that Eloquent Collection. diff --git a/src/PanelTraits/Errors.php b/src/PanelTraits/Errors.php index 30b718a514..e50ead1bc2 100644 --- a/src/PanelTraits/Errors.php +++ b/src/PanelTraits/Errors.php @@ -13,6 +13,20 @@ public function setErrorDefaults() $this->inlineErrors = config('backpack.crud.show_inline_errors', false); } + // Getters + + public function groupedErrorsEnabled() + { + return $this->groupedErrors; + } + + public function inlineErrorsEnabled() + { + return $this->inlineErrors; + } + + // Setters + public function enableGroupedErrors() { $this->groupedErrors = true; @@ -27,11 +41,6 @@ public function disableGroupedErrors() return $this->groupedErrors; } - public function groupedErrorsEnabled() - { - return $this->groupedErrors; - } - public function enableInlineErrors() { $this->inlineErrors = true; @@ -45,9 +54,4 @@ public function disableInlineErrors() return $this->inlineErrors; } - - public function inlineErrorsEnabled() - { - return $this->inlineErrors; - } } diff --git a/src/PanelTraits/Filters.php b/src/PanelTraits/Filters.php index f0ce44de5a..c98f539ed3 100644 --- a/src/PanelTraits/Filters.php +++ b/src/PanelTraits/Filters.php @@ -6,13 +6,32 @@ trait Filters { - // ------------ - // FILTERS - // ------------ - public $filters = []; - public function __construct() + public function filtersEnabled() + { + return !is_array($this->filters); + } + + public function filtersDisabled() + { + return is_array($this->filters); + } + + public function enableFilters() + { + if ($this->filtersDisabled()) + { + $this->filters = new FiltersCollection; + } + } + + public function disableFilters() + { + $this->filters = []; + } + + public function clearFilters() { $this->filters = new FiltersCollection; } @@ -32,6 +51,9 @@ public function addFilter($options, $values = false, $filter_logic = false) $values = $values(); } + // enable the filters functionality + $this->enableFilters(); + // check if another filter with the same name exists if (! isset($options['name'])) { abort(500, 'All your filters need names.'); diff --git a/src/app/Http/Controllers/CrudController.php b/src/app/Http/Controllers/CrudController.php index 7172025cc4..6a9fc435c4 100644 --- a/src/app/Http/Controllers/CrudController.php +++ b/src/app/Http/Controllers/CrudController.php @@ -30,7 +30,6 @@ public function __construct() { if (! $this->crud) { $this->crud = app()->make(CrudPanel::class); - $this->crud->setErrorDefaults(); // call the setup function inside this closure to also have the request there // this way, developers can use things stored in session (auth variables, etc) From 0c2f2c4deee4952da6fc5bcd025cf8dbd661f9ad Mon Sep 17 00:00:00 2001 From: Cristian Tabacitu Date: Sun, 12 Feb 2017 10:43:36 +0000 Subject: [PATCH 5/5] Apply fixes from StyleCI [ci skip] [skip ci] --- src/CrudPanel.php | 3 --- src/PanelTraits/Filters.php | 5 ++--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/CrudPanel.php b/src/CrudPanel.php index 6bda185064..c8768841df 100644 --- a/src/CrudPanel.php +++ b/src/CrudPanel.php @@ -65,18 +65,15 @@ class CrudPanel // The following methods are used in CrudController or your EntityCrudController to manipulate the variables above. - public function __construct() { $this->setErrorDefaults(); } - // ------------------------------------------------------ // BASICS - model, route, entity_name, entity_name_plural // ------------------------------------------------------ - /** * This function binds the CRUD to its corresponding Model (which extends Eloquent). * All Create-Read-Update-Delete operations are done using that Eloquent Collection. diff --git a/src/PanelTraits/Filters.php b/src/PanelTraits/Filters.php index c98f539ed3..53b1284418 100644 --- a/src/PanelTraits/Filters.php +++ b/src/PanelTraits/Filters.php @@ -10,7 +10,7 @@ trait Filters public function filtersEnabled() { - return !is_array($this->filters); + return ! is_array($this->filters); } public function filtersDisabled() @@ -20,8 +20,7 @@ public function filtersDisabled() public function enableFilters() { - if ($this->filtersDisabled()) - { + if ($this->filtersDisabled()) { $this->filters = new FiltersCollection; } }