]> _ Git - fluidbook-toolbox.git/commitdiff
wait #6513 @0.5
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 24 Nov 2023 11:08:06 +0000 (12:08 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 24 Nov 2023 11:08:06 +0000 (12:08 +0100)
app/Models/FluidbookCollection.php

index baa03cace931e437f48b97ef5979991ea601ed40..fa4a74be16883ed1dd2c02041f70278e9bef16a0 100644 (file)
@@ -17,12 +17,14 @@ use App\SubForms\CollectionPublication;
 use Cubist\Backpack\Magic\Fields\BunchOfFieldsMultiple;
 use Cubist\Backpack\Magic\Fields\Checkbox;
 use Cubist\Backpack\Magic\Fields\ExternalPath;
+use Cubist\Backpack\Magic\Fields\FilesOrURL;
 use Cubist\Backpack\Magic\Fields\Hidden;
 use Cubist\Backpack\Magic\Fields\Integer;
 use Cubist\Backpack\Magic\Fields\SelectFromArray;
 use Cubist\Backpack\Magic\Fields\Text;
 use Cubist\Util\Files\Files;
 use Illuminate\Database\Eloquent\Builder;
+use Illuminate\Http\UploadedFile;
 use Illuminate\Support\Facades\Auth;
 
 // __('!! Collections de fluidbooks')
@@ -75,9 +77,25 @@ class FluidbookCollection extends ToolboxStatusModel
         $this->addField('publications', BunchOfFieldsMultiple::class, __('Publications'), ['bunch' => CollectionPublication::class, 'edit_label' => '%fluidbook > %dir']);
         $this->addField('install', ExternalPath::class, 'Installer sur un serveur externe', ['default' => '', 'fake' => true, 'translatable' => false, 'store_in' => 'settings', 'servers_model' => FluidbookExternalInstallServer::class, ['when' => ['type' => ['export', 'export_multilang']]]]);
         $this->addField('override_settings', BunchOfFieldsMultiple::class, __('Redéfinir les paramètres lors de l\'export'), ['bunch' => Fluidbook_Setting::class]);
+        $this->addField('linksAssets', FilesOrURL::class, __('Charger ou remplacer des assets sur tous les fluidbooks de la collection'), ['hint' => __('Cela écrasera les fichiers sur tous les fluidbooks de la collection si ils portent le même nom d\'un asset chargé ici')]);
         $this->addField('visits_counter', Integer::class, 'Compteur de visites', ['can' => 'fluidbook-collection:write', 'read_only' => true, 'default' => 0, 'column' => true, 'column_label' => '<i class="las la-chart-area" title="' . __('Compteur de visites du lien de préview') . '"></i>', 'searchLogic' => false]);
     }
 
+
+    public function uploadFreeFile($uploadedFile, $attribute, $operation = 'move')
+    {
+        $field = $this->getField($attribute);
+        if (!$field instanceof FilesOrURL) {
+            throw new \Exception('Field must be FilesOrURL');
+        }
+        foreach ($this->getPageData()->publications as $publication) {
+            /** @var FluidbookPublication $fb */
+            $fb = FluidbookPublication::withoutGlobalScopes()->find($publication['fluidbook']);
+            $res = $fb->uploadFreeFile($uploadedFile, $attribute, 'copy');
+        }
+        return $res;
+    }
+
     public function getFinalPath()
     {
         return Files::mkdir(protected_path('fluidbookcollection/final/' . $this->id));