]> _ Git - cubist_cms-back.git/commitdiff
wip #4210 @0.5
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 15 Jun 2022 10:59:20 +0000 (12:59 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 15 Jun 2022 10:59:20 +0000 (12:59 +0200)
src/app/Http/Controllers/Operations/CloneEditOperation.php
src/app/Magic/Fields/Model.php

index dea80931c49cb860bf4869a13a032ae9c4bd9108..5df97fdb9a1901047a2a8337817e9947c6618341 100644 (file)
@@ -2,9 +2,9 @@
 
 namespace Cubist\Backpack\Http\Controllers\Operations;
 
+use Cubist\Backpack\Magic\Fields\Model;
 use Cubist\Backpack\Magic\Fields\SelectFromArray;
 use Cubist\Backpack\Magic\Models\CubistMagicAbstractModel;
-use Illuminate\Support\Facades\Cache;
 use Illuminate\Support\Facades\Route;
 
 trait CloneEditOperation
@@ -34,7 +34,15 @@ trait CloneEditOperation
 
         if (isset($_GET['ajax'])) {
             $entry = call_user_func([$_GET['entry'], 'find'], $_GET['id']);
-            SelectFromArray::hashOptions($entry->getField($_GET['name'])['options'], $_GET['ajax']);
+            $field = $entry->getField($_GET['name']);
+            if ($field instanceof Model) {
+                $options = $field->_getOptions();
+            } else if ($field instanceof SelectFromArray) {
+                $options = $field->getOptions();
+            } else {
+                $options = [];
+            }
+            SelectFromArray::hashOptions($options, $_GET['ajax']);
         }
 
         return response()->redirectTo($url);
index 9425c5fe7c5a7510fbae66d8b9e4fa06e0e382cd..ae29387ad456c114060c89ee7e1623ada37e71aa 100644 (file)
@@ -32,10 +32,11 @@ class Model extends Field
         $modelScope = $this->getAttribute('optionsmodel_scope', '');
         $modelOrderBy = $this->getAttribute('optionsmodel_orderby', '');
         $modelOrderByWay = $this->getAttribute('optionsmodel_orderby_way', 'asc');
-        $baseCacheKey = '_getOption_Model_' . $modelClass . '-|' . $modelScope . '|-' . '!' . $modelOrderBy . '!' . $modelOrderByWay . '!!';
+        $baseCacheKey = '_getOption_Model_' . $modelClass . '-|' . $modelScope;
         $globalCacheKey = $baseCacheKey . '|-' . $attr;
         $cacheKey = $globalCacheKey . '|-' . $bui;
-        $cacheKeysKey = $baseCacheKey . '/KEYS/' . '|-' . $bui;
+        $cacheKeysKey = $baseCacheKey . '/KEYS/' . '|-' . $bui . '|-' . '!' . $modelOrderBy . '!' . $modelOrderByWay . '!!';
+
         if (isset(static::$_options[$cacheKey])) {
             return static::$_options[$cacheKey];
         }
@@ -67,9 +68,14 @@ class Model extends Field
         }
 
         if (!isset(static::$_options[$cacheKeysKey])) {
-            static::$_options[$cacheKeysKey] = cache()->tags([$tag])->remember($cacheKeysKey, 86400, function () use ($modelClass) {
+            static::$_options[$cacheKeysKey] = cache()->tags([$tag])->remember($cacheKeysKey, 86400, function () use ($modelClass, $modelOrderBy, $modelOrderByWay) {
                 set_time_limit(0);
-                return $modelClass::all()->modelKeys();
+                /** @var Builder $q */
+                $q = $modelClass::where('created_ok', 1);
+                if ($modelOrderBy) {
+                    $q->orderBy($modelOrderBy, $modelOrderByWay);
+                }
+                return $q->get()->modelKeys();
             });
         }