From: Vincent Vanwaelscappel Date: Tue, 14 Jun 2022 08:01:41 +0000 (+0200) Subject: wip #4210 @1 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=38491f76e61792a1e25b96dcb5900487fd541957;p=cubist_cms-back.git wip #4210 @1 --- diff --git a/src/app/CubistCrudPanel.php b/src/app/CubistCrudPanel.php index 62c77a4..b565e89 100644 --- a/src/app/CubistCrudPanel.php +++ b/src/app/CubistCrudPanel.php @@ -73,7 +73,10 @@ class CubistCrudPanel extends CrudPanel // Then, apply model rules if ($this->model instanceof CubistMagicAbstractModel) { - $funcMap = ['list' => 'canList', + $funcMap = [ + 'show' => 'canList', + 'infos' => 'canList', + 'list' => 'canList', 'create' => 'canCreate', 'update' => 'canUpdate', 'delete' => 'canDelete', diff --git a/src/app/Http/Controllers/Operations/InfosOperation.php b/src/app/Http/Controllers/Operations/InfosOperation.php new file mode 100644 index 0000000..4871203 --- /dev/null +++ b/src/app/Http/Controllers/Operations/InfosOperation.php @@ -0,0 +1,81 @@ + $routeName . '.infos', + 'uses' => $controller . '@infos', + 'operation' => 'infos', + ]); + } + + public function infos($id) + { + $this->crud->hasAccessOrFail('list'); + + // get entry ID from Request (makes sure its the last ID for nested resources) + $id = $this->crud->getCurrentEntryId() ?? $id; + + // get the info for that entry + /** @var CubistMagicAbstractModel $entry */ + $entry = $this->crud->getEntry($id); + $res = []; + if (method_exists($entry, 'getPageData')) { + $res = $entry->getPageData()->getRawData(); + } + + /* @foreach ($crud->columns() as $column) + + + {!! $column['label'] !!}: + + + @if (!isset($column['type'])) + @include('crud::columns.text') + @else + @if(view()->exists('vendor.backpack.crud.columns.'.$column['type'])) + @include('vendor.backpack.crud.columns.'.$column['type']) + @else + @if(view()->exists('crud::columns.'.$column['type'])) + @include('crud::columns.'.$column['type']) + @else + @include('crud::columns.text') + @endif + @endif + @endif + + + @endforeach*/ + + $data = []; + $data['entry'] = $entry; + $data['crud'] = $this->crud; + $data['title'] = $this->crud->getTitle() ?? trans('backpack::crud.preview') . ' ' . $this->crud->entity_name; + $res['columns'] = []; + $this->crud->setShowColumns($entry); + foreach ($this->crud->columns() as $column) { + $data['column'] = $column; + $v = null; + if (view()->exists('vendor.backpack.crud.columns.' . $column['type'])) { + $v = view('vendor.backpack.crud.columns.' . $column['type'], $data); + } else { + if (view()->exists('crud::columns.' . $column['type'])) { + $v = view('crud::columns.' . $column['type'], $data); + } else { + $v = view('crud::columns.text', $data); + } + } + $res['columns'][$column['name']] = $v->render(); + } + + + return response()->json($res); + } +} diff --git a/src/app/Magic/Controllers/CubistMagicController.php b/src/app/Magic/Controllers/CubistMagicController.php index dd5b018..4f0c522 100644 --- a/src/app/Magic/Controllers/CubistMagicController.php +++ b/src/app/Magic/Controllers/CubistMagicController.php @@ -4,6 +4,8 @@ namespace Cubist\Backpack\Magic\Controllers; use Cubist\Backpack\Http\Controllers\CubistCrudController; +use Cubist\Backpack\Http\Controllers\Operations\InfosOperation; +use Cubist\Backpack\Http\Controllers\Operations\ShowOperation; use Cubist\Backpack\Magic\Fields\Field; use Cubist\Backpack\Magic\Menu\Menu; use Cubist\Backpack\Magic\Models\CubistMagicAbstractModel; @@ -23,6 +25,7 @@ use Symfony\Component\HttpFoundation\File\UploadedFile; class CubistMagicController extends CubistCrudController { use HandleAjaxMedia; + use InfosOperation; protected $_modelNamespace; protected $_routeURL; @@ -196,6 +199,7 @@ class CubistMagicController extends CubistCrudController { return $this->crud->getModel(); } + protected function _forgetCache() { try { diff --git a/src/app/Magic/Fields/Field.php b/src/app/Magic/Fields/Field.php index 689767d..6263b30 100644 --- a/src/app/Magic/Fields/Field.php +++ b/src/app/Magic/Fields/Field.php @@ -146,7 +146,7 @@ class Field implements \ArrayAccess 'filter' => false, 'filter_type' => $this->_filterType, 'filter_label' => null, 'filter_values' => $this->_filterValues, 'translatable' => $this->_translatable, 'migrateTranslatable' => $this->_migrateTranslatable, 'preview' => $this->_preview, - 'column_type' => $this->_columnType, 'column_move_after' => $this->_columnMoveAfter, 'column_format' => $this->_columnFormat, 'column_width' => 300, + 'column_type' => $this->_columnType, 'column_move_after' => $this->_columnMoveAfter, 'column_format' => $this->_columnFormat, 'column_width' => 300, 'column_escape' => true, 'default' => null, 'cast' => $this->_cast, 'column_view_namespace' => $this->_columnViewNamespace, 'searchLogic' => $this->_searchLogic, 'allow_null' => true, 'can' => $this->_can, 'can_write' => $this->_canWrite, 'auth' => $this->_auth, @@ -243,6 +243,7 @@ class Field implements \ArrayAccess 'searchLogic' => $this->getAttribute('searchLogic'), 'format' => $this->getAttribute('column_format', null), 'orderable' => true, + 'escape' => $this->getAttribute('column_escape', true), ]; if ($this->hasAttribute('column_function_name')) {