]> _ Git - cubist_cms-back.git/commitdiff
wip #4210 @1
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 14 Jun 2022 08:01:41 +0000 (10:01 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 14 Jun 2022 08:01:41 +0000 (10:01 +0200)
src/app/CubistCrudPanel.php
src/app/Http/Controllers/Operations/InfosOperation.php [new file with mode: 0644]
src/app/Magic/Controllers/CubistMagicController.php
src/app/Magic/Fields/Field.php

index 62c77a4d6d2e007fc342de1d3113b0a0fc87139a..b565e894fe05d7c1dfdbe7741985cf2a65c965ae 100644 (file)
@@ -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 (file)
index 0000000..4871203
--- /dev/null
@@ -0,0 +1,81 @@
+<?php
+
+namespace Cubist\Backpack\Http\Controllers\Operations;
+
+use Cubist\Backpack\Magic\Models\CubistMagicAbstractModel;
+use Illuminate\Support\Facades\Route;
+
+trait InfosOperation
+{
+    protected function setupInfosRoutes($segment, $routeName, $controller)
+    {
+        Route::get($segment . '/{id}/infos', [
+            'as' => $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)
+                           <tr>
+                               <td>
+                                   <strong>{!! $column['label'] !!}:</strong>
+                               </td>
+                        <td>
+                                                       @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
+                        </td>
+                           </tr>
+                       @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);
+    }
+}
index dd5b018e0fd1d0c2680ed2993abb81e1ba89ca0f..4f0c5222e63921d31ca45f12b0273ca7cc27f2e0 100644 (file)
@@ -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 {
index 689767dfe536feb59645950f162f97d0ce64877e..6263b308593a116ac64f30c022143a0da300d956 100644 (file)
@@ -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')) {