From: Vincent Vanwaelscappel Date: Tue, 14 Jun 2022 16:28:02 +0000 (+0200) Subject: wip #4210 @1 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=9f5de6734fafc9360edee471dcdaa56b3d8c4442;p=cubist_cms-back.git wip #4210 @1 --- diff --git a/src/app/Http/Controllers/Operations/CloneEditOperation.php b/src/app/Http/Controllers/Operations/CloneEditOperation.php index be7c970..dea8093 100644 --- a/src/app/Http/Controllers/Operations/CloneEditOperation.php +++ b/src/app/Http/Controllers/Operations/CloneEditOperation.php @@ -2,10 +2,14 @@ namespace Cubist\Backpack\Http\Controllers\Operations; +use Cubist\Backpack\Magic\Fields\SelectFromArray; +use Cubist\Backpack\Magic\Models\CubistMagicAbstractModel; +use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Route; -trait CloneEditOperation{ - protected function setupBulkPublishRoutes($segment, $routeName, $controller) +trait CloneEditOperation +{ + protected function setupCloneEditRoutes($segment, $routeName, $controller) { Route::get($segment . '/{id}/clone-edit', [ 'as' => $routeName . '.cloneEdit', @@ -14,13 +18,25 @@ trait CloneEditOperation{ ]); } - protected function cloneEdit($id){ - dd(Route::current()); + protected function cloneEdit($id) + { $this->crud->hasAccessOrFail('create'); + /** @var CubistMagicAbstractModel $clonedEntry */ $clonedEntry = $this->crud->model->findOrFail($id)->replicate(); - $clonedEntry->owner=backpack_user()->id; + $clonedEntry->owner = backpack_user()->id; + $clonedEntry->name .= ' (copy)'; $clonedEntry->save(); - $newid=$clonedEntry->id; - return response()->redirectTo(); + $newid = $clonedEntry->id; + $url = Route::current()->uri . '?' . request()->getQueryString(); + $url = str_replace('clone-edit', 'edit', $url); + $url = str_replace('{id}', $newid, $url); + + + if (isset($_GET['ajax'])) { + $entry = call_user_func([$_GET['entry'], 'find'], $_GET['id']); + SelectFromArray::hashOptions($entry->getField($_GET['name'])['options'], $_GET['ajax']); + } + + return response()->redirectTo($url); } } diff --git a/src/app/Magic/Fields/SelectFromArray.php b/src/app/Magic/Fields/SelectFromArray.php index 0f26d54..ac7ac27 100644 --- a/src/app/Magic/Fields/SelectFromArray.php +++ b/src/app/Magic/Fields/SelectFromArray.php @@ -37,14 +37,16 @@ class SelectFromArray extends Field } } - public static function hashOptions($options) + public static function hashOptions($options, $hash = null) { $data = []; foreach ($options as $k => $v) { $data[$k] = ['t' => $v, 'n' => self::normalize($v)]; } - $hash = hash('sha256', print_r($data, true)); - Cache::add('select2_' . $hash, $data, 6000); + if (null === $hash) { + $hash = hash('sha256', print_r($data, true)); + } + Cache::put('select2_' . $hash, $data, 6000); return $hash; }