]> _ Git - fluidbook-toolbox.git/commitdiff
wip #4464 @2
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 14 May 2021 19:02:48 +0000 (21:02 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 14 May 2021 19:02:48 +0000 (21:02 +0200)
app/Http/Controllers/API/FluidbookThemeAPIController.php
app/Models/FluidbookTheme.php
resources/views/vendor/backpack/base/inc/sidebar_content.blade.php
routes/api.php

index 05db41035a950db8584526fbc16c0346425dbbcf..9f0b96844910526a735405bb6fd6659b72543e3a 100644 (file)
@@ -19,11 +19,28 @@ class FluidbookThemeAPIController extends Controller
     public function createfromws2(Request $request)
     {
         $theme = new FluidbookTheme();
-        $data = $request->get('theme');
-        foreach ($data as $k => $v) {
+        self::_prepareData($theme, $request->get('theme'));
+        $theme->save();
+    }
+
+    /**
+     * @param $theme FluidbookTheme
+     * @param $data array
+     * @return FluidbookTheme
+     */
+    public static function _prepareData($theme, $data)
+    {
+        $map = ['theme_id' => 'id', 'proprietaire' => 'owner', 'nom' => 'name'];
+        foreach ($map as $former => $new) {
+            if (!isset($data[$former])) {
+                continue;
+            }
+            $theme->setAttribute($new, $data[$former]);
+        }
+        foreach ($data['parametres'] as $k => $v) {
             $theme->setAttribute($k, $v);
         }
-        $theme->save();
+        return $theme;
     }
 
 
@@ -36,7 +53,15 @@ class FluidbookThemeAPIController extends Controller
      */
     public function updatefromws2(Request $request, $id)
     {
-        //
+        $theme = FluidbookTheme::find($id);
+        self::_prepareData($theme, $request->get('theme'));
+        $theme->save();
     }
 
+    public function deletefromws2(Request $request, $id)
+    {
+        /** @var FluidbookTheme $theme */
+        $theme = FluidbookTheme::find($id);
+        $theme->delete();
+    }
 }
index 40cd17fde9c8f034765f0416ecc54c1e092faa07..268e7611d7cd384ea878e07ae6ff7d10e1bdc24f 100644 (file)
@@ -868,8 +868,6 @@ class FluidbookTheme extends CubistMagicAbstractModel
                     $colorFields[] = $name;
                 }
             }
-
-
         }
         $ignore = ['id', 'name', 'owner', 'created_at', 'deleted_at', 'updated_at', 'slug'];
 
@@ -891,7 +889,9 @@ class FluidbookTheme extends CubistMagicAbstractModel
                 } else if (in_array($k, $fileFields)) {
                     /** @var Media $media */
                     $media = $theme->getMedia($v)->get(0);
-                    $v = $media->getAttribute('file_name');
+                    if (null !== $media) {
+                        $v = $media->getAttribute('file_name');
+                    }
                 }
                 if (null === $v) {
                     continue;
@@ -899,7 +899,6 @@ class FluidbookTheme extends CubistMagicAbstractModel
                 $settings[$k] = $v;
             }
             $data[] = ['theme_id' => $theme->id, 'signature' => 0, 'nom' => $theme->name, 'proprietaire' => $theme->owner, 'icones' => $theme->iconSet, 'date' => strtotime($theme->creation_date), 'parametres' => json_encode($settings)];
-
         }
         $t = DB::table('extranet_clean.ws3_theme');
         $t->truncate();
@@ -979,9 +978,16 @@ class FluidbookTheme extends CubistMagicAbstractModel
         return $res;
     }
 
-    public function onAfterSave()
+
+    public function postSave()
     {
-        parent::onAfterSave();
+        parent::postSave();
+        $this->updateWS2Table();
+    }
+
+    public function postDelete()
+    {
+        parent::postDelete();
         $this->updateWS2Table();
     }
 
@@ -1048,12 +1054,8 @@ class FluidbookTheme extends CubistMagicAbstractModel
             $file = $oldRoot . $data;
             if (file_exists($file)) {
 
-                $copy = $this->getStorage() . $data;
-                if (!file_exists($copy)) {
-                    copy($file, $copy);
-                }
                 try {
-                    $this->addMediaToField($field->getName(), $copy);
+                    $this->addMediaToField($field->getName(), $file, true);
                 } catch (\Exception $e) {
                     echo $copy . "\n";
                 }
index efc0de2d6252c341b678e9b82a96a3ed97538d81..621d4157efaa6016055b4157628e6c51b08620c0 100644 (file)
     <li class='nav-item nav-dropdown open'><a class='nav-link nav-dropdown-toggle' href='#'><i
                 class="nav-icon la"><img src="/images/icons/icon-fluidbook.svg"/></i>{{__('Fluidbook')}}</a>
         <ul class='nav-dropdown-items'>
+            @can('fluidbook-theme:read')
+                <li class="nav-item"><a class="nav-link" href="{{ backpack_url('fluidbook-theme') }}"><i
+                            class="la la-palette nav-icon"></i> {{__('Thèmes')}}</a></li>
+            @endcan
             @can('signature:read')
                 <li class="nav-item"><a class="nav-link" href="{{ backpack_url('signature') }}"><i
                             class="la la-signature nav-icon"></i> {{__('Signatures')}}</a></li>
index 32315c66c849ab1ffbe4916ba3be730e8f6de754..427b95ab65b5d02333a6503d4158d5f13f1df31a 100644 (file)
@@ -13,9 +13,13 @@ use Illuminate\Support\Facades\Route;
 |
 */
 
-Route::middleware('auth:api')->group( function () {
+Route::group([
+    'middleware' => ['auth:api'],
+   'excluded_middleware' => ['verifycsrftoken']
+], function () {
     Route::post('fluidbook-theme', [\App\Http\Controllers\API\FluidbookThemeAPIController::class, 'createfromws2']);
     Route::put('fluidbook-theme/{id}', [\App\Http\Controllers\API\FluidbookThemeAPIController::class, 'updatefromws2']);
+    Route::delete('fluidbook-theme/{id}', [\App\Http\Controllers\API\FluidbookThemeAPIController::class, 'deletefromws2']);
 });