From a880ee4c4548c12da650652373b9dee813ca90f0 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Fri, 17 Jun 2022 17:44:02 +0200 Subject: [PATCH] wip #4213 @1.5 --- src/app/Console/Kernel.php | 3 +- src/app/CubistCrudPanel.php | 8 -- .../Operations/ReviseOperation.php | 30 ++++++- .../Magic/Fields/BunchOfFieldsMultiple.php | 3 +- src/public/bunchmultiple/bunchmultiple.css | 26 ++++++ .../bunchmultiple/bunchmultiple.css.map | 2 +- src/public/bunchmultiple/bunchmultiple.less | 44 +++++++++ .../fields/bunch_oneline_multiple.blade.php | 90 +++++++++++++++++++ src/resources/views/form/shortcuts.blade.php | 3 +- 9 files changed, 192 insertions(+), 17 deletions(-) create mode 100644 src/resources/views/fields/bunch_oneline_multiple.blade.php diff --git a/src/app/Console/Kernel.php b/src/app/Console/Kernel.php index 0d68f07..210c9be 100644 --- a/src/app/Console/Kernel.php +++ b/src/app/Console/Kernel.php @@ -15,9 +15,8 @@ class Kernel extends ConsoleKernel */ protected function schedule(Schedule $schedule) { + $schedule->command('queue:prune-failed --hours=24')->daily()->at('03:50'); $schedule->command('backup:clean')->daily()->at('04:00'); $schedule->command('backup:run')->daily()->at('05:00'); - - //$schedule->command('media-library:regenerate --only-missing')->daily(); } } diff --git a/src/app/CubistCrudPanel.php b/src/app/CubistCrudPanel.php index b565e89..86439dc 100644 --- a/src/app/CubistCrudPanel.php +++ b/src/app/CubistCrudPanel.php @@ -5,9 +5,6 @@ namespace Cubist\Backpack; use Backpack\CRUD\app\Exceptions\AccessDeniedException; use Backpack\CRUD\app\Library\CrudPanel\CrudPanel; use Cubist\Backpack\Magic\Models\CubistMagicAbstractModel; -use Cubist\Backpack\Magic\Requests\CubistMagicRequest; -use Illuminate\Http\Request; -use Illuminate\Support\Arr; /** * @property CubistMagicAbstractModel $model @@ -111,7 +108,6 @@ class CubistCrudPanel extends CrudPanel if (!$this->hasAccess($operation)) { throw new AccessDeniedException(trans('backpack::crud.unauthorized_access', ['access' => $operation])); } - return true; } @@ -122,7 +118,6 @@ class CubistCrudPanel extends CrudPanel return false; } } - return true; } @@ -133,11 +128,9 @@ class CubistCrudPanel extends CrudPanel return true; } } - return false; } - /** * @param $model CubistMagicAbstractModel */ @@ -151,7 +144,6 @@ class CubistCrudPanel extends CrudPanel } $this->addColumn($field->getColumnData(true)); } - return $res; } diff --git a/src/app/Http/Controllers/Operations/ReviseOperation.php b/src/app/Http/Controllers/Operations/ReviseOperation.php index 3eeac30..574afb6 100644 --- a/src/app/Http/Controllers/Operations/ReviseOperation.php +++ b/src/app/Http/Controllers/Operations/ReviseOperation.php @@ -3,7 +3,6 @@ namespace Cubist\Backpack\Http\Controllers\Operations; -use Cubist\Backpack\CubistCrudPanel; trait ReviseOperation { @@ -21,14 +20,37 @@ trait ReviseOperation }); $this->crud->operation(['list', 'show'], function () { - - if($this->crud->model->isButtonVisible('revise')) { + if ($this->crud->model->isButtonVisible('revise')) { // add a button in the line stack $this->crud->addButton('line', 'revise', 'view', 'revise-operation::revise_button', 'end'); } }); - $crud = $this->crud; + // add a new method on the CrudPanel object to allow this operation + // to call getRevisionsForEntry from multiple operation methods + $this->crud->macro('getRevisionsForEntry', function ($id) { + $revisions = []; + + // Group revisions by change date + foreach ($this->getEntry($id)->revisionHistory as $history) { + // Get just the date from the revision created timestamp + $revisionDate = date('Y-m-d', strtotime((string) $history->created_at)); + + // Be sure to instantiate the initial grouping array + if (! array_key_exists($revisionDate, $revisions)) { + $revisions[$revisionDate] = []; + } + + // Push onto the top of the current group - so we get orderBy decending timestamp + array_unshift($revisions[$revisionDate], $history); + } + + // Sort the array by timestamp descending (so that the most recent are at the top) + krsort($revisions); + + return $revisions; + }); + } } diff --git a/src/app/Magic/Fields/BunchOfFieldsMultiple.php b/src/app/Magic/Fields/BunchOfFieldsMultiple.php index 9a9505a..910ecac 100644 --- a/src/app/Magic/Fields/BunchOfFieldsMultiple.php +++ b/src/app/Magic/Fields/BunchOfFieldsMultiple.php @@ -13,10 +13,11 @@ class BunchOfFieldsMultiple extends BunchOfFields protected $_cast = 'array'; protected $_viewNamespace = CubistBackpackServiceProvider::NAMESPACE . '::fields'; protected $_show_empty = true; + protected $_bunch = []; public function getDefaultAttributes() { - return array_merge(parent::getDefaultAttributes(), ['bunch' => [], "add_label" => __('Add an item'), 'show_empty' => $this->_show_empty]); + return array_merge(parent::getDefaultAttributes(), ['bunch' => $this->_bunch, "add_label" => __('Add an item'), 'show_empty' => $this->_show_empty]); } public function _postSetAttributes() diff --git a/src/public/bunchmultiple/bunchmultiple.css b/src/public/bunchmultiple/bunchmultiple.css index 8984ddb..b78cf8f 100644 --- a/src/public/bunchmultiple/bunchmultiple.css +++ b/src/public/bunchmultiple/bunchmultiple.css @@ -1,6 +1,32 @@ .bunchmultiple { margin: 0 15px; } +.bunchmultiple.bunchmultiple_oneline .bunchmultiple__wrapper .item .legend a.action { + position: relative; + top: 13px; +} +.bunchmultiple.bunchmultiple_oneline .bunchmultiple__wrapper .item .legend a.action.sort-handle { + top: 6px; + padding-right: 10px; +} +.bunchmultiple.bunchmultiple_oneline .bunchmultiple__wrapper .legendsize { + display: inline-block; + white-space: nowrap; +} +.bunchmultiple.bunchmultiple_oneline .bunchmultiple__wrapper .legendsize label { + display: none; +} +.bunchmultiple.bunchmultiple_oneline .bunchmultiple__wrapper .legendsize .form-group { + display: inline-block; + vertical-align: top; + margin-bottom: 0; + padding: 0 10px; + position: relative; + top: -1px; +} +.bunchmultiple.bunchmultiple_oneline .bunchmultiple__wrapper .legendsize input.form-control { + height: 34px; +} .bunchmultiple.bunchmultiple_keyvalue .bunchmultiple__wrapper .item .legend a.action { position: relative; top: 13px; diff --git a/src/public/bunchmultiple/bunchmultiple.css.map b/src/public/bunchmultiple/bunchmultiple.css.map index d649d5b..36cc955 100644 --- a/src/public/bunchmultiple/bunchmultiple.css.map +++ b/src/public/bunchmultiple/bunchmultiple.css.map @@ -1 +1 @@ -{"version":3,"sources":["bunchmultiple.less"],"names":[],"mappings":"AAAA;EACI,cAAA;;AAEA,cAAC,uBACG,wBACI,MACI,QACI,EAAC;EACG,kBAAA;EACA,SAAA;;AAEA,cARnB,uBACG,wBACI,MACI,QACI,EAAC,OAII;EACG,QAAA;EACA,mBAAA;;AAVxB,cAAC,uBACG,wBAeI;EAKI,qBAAA;EACA,mBAAA;;AAtBZ,cAAC,uBACG,wBAeI,YACI;EACI,aAAA;;AAlBhB,cAAC,uBACG,wBAeI,YAQI;EACI,UAAA;EACA,qBAAA;EACA,mBAAA;EACA,gBAAA;EACA,eAAA;EACA,kBAAA;EACA,SAAA;;AA/BhB,cAAC,uBACG,wBAeI,YAkBI,MAAK;EACD,YAAA;;AAQhB,cAAC;EACG,WAAA;;AA/CR,cAkDI;EACI,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,mBAAA;;AAEA,cANJ,wBAMK;EACG,aAAA;;AAGJ,cAVJ,wBAUK;EACG,UAAA;EACA,SAAA;EACA,gBAAA;EACA,gBAAA;;AAhEZ,cAkDI,wBAkBI;EACI,UAAA;;AArEZ,cAkDI,wBAkBI,cAGI;EACI,gBAAA;EACA,mBAAA;;AAzEhB,cAkDI,wBA2BI;EACI,mBAAA;;AAEA,cA9BR,wBA2BI,MAGK;EACG,uBAAA;EACA,sBAAA;;AAFJ,cA9BR,wBA2BI,MAGK,MAIG;EACI,UAAA;;AALR,cA9BR,wBA2BI,MAGK,MAQG;EACI,UAAA;;AAzFpB,cAkDI,wBA2BI,MAgBI;EACI,yBAAA;EACA,iBAAA;EACA,gBAAA;EACA,kBAAA;EACA,eAAA;;AAlGhB,cAkDI,wBA2BI,MAgBI,QAOI;EACI,qBAAA;EACA,gBAAA;EACA,yBAAA;EACA,mBAAA;EACA,uBAAA;EACA,kBAAA;EACA,UAAA;EACA,SAAA;;AA5GpB,cAkDI,wBA2BI,MAgBI,QAkBI,EAAC;EACG,WAAA;EACA,gBAAA;EACA,qBAAA;;AAEA,cAlEhB,wBA2BI,MAgBI,QAkBI,EAAC,OAKI;EACG,mBAAA;EACA,YAAA;;AAGJ,cAvEhB,wBA2BI,MAgBI,QAkBI,EAAC,OAUI;EACG,kBAAA;EACA,WAAA;EACA,eAAA;;AAGJ,cA7EhB,wBA2BI,MAgBI,QAkBI,EAAC,OAgBI;EACG,kBAAA;EACA,WAAA;EACA,eAAA;;AAlIxB,cAkDI,wBA2BI,MA0DI;EACI,gBAAA;EACA,iEAAA;EACA,yBAAA;EACA,eAAA;;AAGJ,cA5FR,wBA2BI,MAiEK;EACG,aAAA;;AAGJ,cAhGR,wBA2BI,MAqEK,UACG;EACI,oBAAA;EACA,UAAA","file":"bunchmultiple.css"} \ No newline at end of file +{"version":3,"sources":["bunchmultiple.less"],"names":[],"mappings":"AAAA;EACI,cAAA;;AAEA,cAAC,sBACG,wBACI,MACI,QACI,EAAC;EACG,kBAAA;EACA,SAAA;;AAEA,cARnB,sBACG,wBACI,MACI,QACI,EAAC,OAII;EACG,QAAA;EACA,mBAAA;;AAVxB,cAAC,sBACG,wBAeI;EAKI,qBAAA;EACA,mBAAA;;AAtBZ,cAAC,sBACG,wBAeI,YACI;EACI,aAAA;;AAlBhB,cAAC,sBACG,wBAeI,YAQI;EAEI,qBAAA;EACA,mBAAA;EACA,gBAAA;EACA,eAAA;EACA,kBAAA;EACA,SAAA;;AA/BhB,cAAC,sBACG,wBAeI,YAkBI,MAAK;EACD,YAAA;;AAShB,cAAC,uBACG,wBACI,MACI,QACI,EAAC;EACG,kBAAA;EACA,SAAA;;AAEA,cARnB,uBACG,wBACI,MACI,QACI,EAAC,OAII;EACG,QAAA;EACA,mBAAA;;AAVxB,cAAC,uBACG,wBAeI;EAKI,qBAAA;EACA,mBAAA;;AAtBZ,cAAC,uBACG,wBAeI,YACI;EACI,aAAA;;AAlBhB,cAAC,uBACG,wBAeI,YAQI;EACI,UAAA;EACA,qBAAA;EACA,mBAAA;EACA,gBAAA;EACA,eAAA;EACA,kBAAA;EACA,SAAA;;AA/BhB,cAAC,uBACG,wBAeI,YAkBI,MAAK;EACD,YAAA;;AAQhB,cAAC;EACG,WAAA;;AA3FR,cA8FI;EACI,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,mBAAA;;AAEA,cANJ,wBAMK;EACG,aAAA;;AAGJ,cAVJ,wBAUK;EACG,UAAA;EACA,SAAA;EACA,gBAAA;EACA,gBAAA;;AA5GZ,cA8FI,wBAkBI;EACI,UAAA;;AAjHZ,cA8FI,wBAkBI,cAGI;EACI,gBAAA;EACA,mBAAA;;AArHhB,cA8FI,wBA2BI;EACI,mBAAA;;AAEA,cA9BR,wBA2BI,MAGK;EACG,uBAAA;EACA,sBAAA;;AAFJ,cA9BR,wBA2BI,MAGK,MAIG;EACI,UAAA;;AALR,cA9BR,wBA2BI,MAGK,MAQG;EACI,UAAA;;AArIpB,cA8FI,wBA2BI,MAgBI;EACI,yBAAA;EACA,iBAAA;EACA,gBAAA;EACA,kBAAA;EACA,eAAA;;AA9IhB,cA8FI,wBA2BI,MAgBI,QAOI;EACI,qBAAA;EACA,gBAAA;EACA,yBAAA;EACA,mBAAA;EACA,uBAAA;EACA,kBAAA;EACA,UAAA;EACA,SAAA;;AAxJpB,cA8FI,wBA2BI,MAgBI,QAkBI,EAAC;EACG,WAAA;EACA,gBAAA;EACA,qBAAA;;AAEA,cAlEhB,wBA2BI,MAgBI,QAkBI,EAAC,OAKI;EACG,mBAAA;EACA,YAAA;;AAGJ,cAvEhB,wBA2BI,MAgBI,QAkBI,EAAC,OAUI;EACG,kBAAA;EACA,WAAA;EACA,eAAA;;AAGJ,cA7EhB,wBA2BI,MAgBI,QAkBI,EAAC,OAgBI;EACG,kBAAA;EACA,WAAA;EACA,eAAA;;AA9KxB,cA8FI,wBA2BI,MA0DI;EACI,gBAAA;EACA,iEAAA;EACA,yBAAA;EACA,eAAA;;AAGJ,cA5FR,wBA2BI,MAiEK;EACG,aAAA;;AAGJ,cAhGR,wBA2BI,MAqEK,UACG;EACI,oBAAA;EACA,UAAA","file":"bunchmultiple.css"} \ No newline at end of file diff --git a/src/public/bunchmultiple/bunchmultiple.less b/src/public/bunchmultiple/bunchmultiple.less index 46519cf..96d1545 100644 --- a/src/public/bunchmultiple/bunchmultiple.less +++ b/src/public/bunchmultiple/bunchmultiple.less @@ -1,6 +1,50 @@ .bunchmultiple { margin: 0 15px; + &.bunchmultiple_oneline { + .bunchmultiple__wrapper { + .item { + .legend { + a.action { + position: relative; + top: 13px; + + &.sort-handle { + top: 6px; + padding-right: 10px; + } + } + } + } + + .legendsize { + label { + display: none; + } + + display: inline-block; + white-space: nowrap; + + .form-group { + + display: inline-block; + vertical-align: top; + margin-bottom: 0; + padding:0 10px; + position: relative; + top:-1px; + } + + input.form-control { + height: 34px; + } + + + } + } + } + + &.bunchmultiple_keyvalue { .bunchmultiple__wrapper { .item { diff --git a/src/resources/views/fields/bunch_oneline_multiple.blade.php b/src/resources/views/fields/bunch_oneline_multiple.blade.php new file mode 100644 index 0000000..42b4e5d --- /dev/null +++ b/src/resources/views/fields/bunch_oneline_multiple.blade.php @@ -0,0 +1,90 @@ + + + $v) { + if (!is_array($v) && !is_object($v)) { + $normalizedValue[] = ['key' => $k, 'value' => $v]; + } else { + $normalizedValue[$k] = $v; + } + } + $value = $normalizedValue; +} + +if (!is_string($value)) { + $value = json_encode($value); +} + +?> +
+ +
+ @include('crud::fields.inc.wrapper_start') + + @include('crud::fields.inc.translatable_icon') +
+ +
+
+
+ +
+ @include('cubist_back::inc.show_bunch_fields', array('bunchfields'=>$field['bunchfields'],'bmid'=>$field['rand'],'oneline'=>true)) +
+ + +
+ +
+
+ +
+ +
+ +
+ + {{-- HINT --}} + @if (isset($field['hint'])) +

{!! $field['hint'] !!}

+ @endif + @include('crud::fields.inc.wrapper_end') +
+
+ + +{{-- ########################################## --}} +{{-- Extra CSS and JS for this particular field --}} +{{-- If a field type is shown multiple times on a form, the CSS and JS will only be loaded once --}} +@if ($crud->checkIfFieldIsFirstOfItsType($field)) + + {{-- FIELD CSS - will be loaded in the after_styles section --}} + @push('crud_fields_styles') + + @endpush + + {{-- FIELD JS - will be loaded in the after_scripts section --}} + @push('crud_fields_scripts') + + + @endpush + +@endif +{{-- End of Extra CSS and JS --}} +{{-- ########################################## --}} diff --git a/src/resources/views/form/shortcuts.blade.php b/src/resources/views/form/shortcuts.blade.php index dd08795..28b4133 100644 --- a/src/resources/views/form/shortcuts.blade.php +++ b/src/resources/views/form/shortcuts.blade.php @@ -1,7 +1,7 @@ @section('form_shortcut_m') @stack('form_shortcuts') @endsection -
+
@hasSection('form_shortcut_m')