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',
]);
}
- 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);
}
}
}
}
- 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;
}