]> _ Git - fluidbook-toolbox.git/commitdiff
#7822 @2
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 21 Nov 2025 17:15:18 +0000 (18:15 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 21 Nov 2025 17:15:18 +0000 (18:15 +0100)
app/Http/Controllers/Admin/Operations/FluidbookCollection/SettingsExportOperation.php
app/Jobs/AuditLinkRegister.php
app/Models/FluidbookCollection.php
resources/views/vendor/backpack/crud/inc/form_save_buttons.blade.php

index be763a1b65b8d75115ae3441c2dc5012d3f887a8..acb7fc17d718ac19a3bd9b6ce3f36f4f698393bf 100644 (file)
@@ -32,8 +32,6 @@ trait SettingsExportOperation
         $ids = Arr::join(array_column($publications, 'fluidbook'), ',');
         $file = (new FluidbookSettingsExport($ids, $userId, true))->handle();
 
-        $this->indexContent($publications, $id);
-
-        return response()->download($file, 'settings_export.xlsx')->deleteFileAfterSend();
+        return response()->download($file, 'settings_export_' . $id . '.xlsx')->deleteFileAfterSend();
     }
 }
index 264f25863b16accd2021de1f142de41280876b9d..cd8acce3cba1474f679fc64e1e149937d7ac5529 100644 (file)
@@ -21,7 +21,7 @@ class AuditLinkRegister extends Base
 
     public function handle()
     {
-        $publications = Arr::flatten(FluidbookCollection::where('enable_audit', 1)->pluck('publications')->toArray(), 1);
+        $publications = Arr::flatten(FluidbookCollection::where('links_audit', 1)->pluck('publications')->toArray(), 1);
 
         $publications = array_map(function ($n) {
             return $n['fluidbook'];
index d02a5326216ddef1a0fddd2b8ca8648caf7a88cc..23272922cbdbb59b3abdf7076ccc2251c99db8b6 100644 (file)
@@ -33,7 +33,9 @@ use Cubist\Backpack\Magic\Fields\ExternalPath;
 use Cubist\Backpack\Magic\Fields\FieldGroupEnd;
 use Cubist\Backpack\Magic\Fields\FieldGroupStart;
 use Cubist\Backpack\Magic\Fields\FilesOrURL;
+use Cubist\Backpack\Magic\Fields\FormBigSection;
 use Cubist\Backpack\Magic\Fields\FormSeparator;
+use Cubist\Backpack\Magic\Fields\FormSuperSection;
 use Cubist\Backpack\Magic\Fields\Hidden;
 use Cubist\Backpack\Magic\Fields\Integer;
 use Cubist\Backpack\Magic\Fields\SelectFromArray;
@@ -97,7 +99,9 @@ class FluidbookCollection extends ToolboxStatusModel
         $this->addOwnerField();
 
         $this->addField('hash', Hidden::class);
-        $this->addField('type', SelectFromArray::class, __('Type'), ['can' => 'fluidbook-collection:write', 'column' => true, 'options' => ['export' => __('Export'), 'export_multilang' => __('Export multilingue'), 'scorm_multilang' => __('SCORM multilingue')]]);
+        $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]);
+        $this->addField('section_export', FormBigSection::class, __('Paramètres d\'export'));
+        $this->addField('type', SelectFromArray::class, __('Type'), ['allows_null' => false, 'default' => 'none', 'can' => 'fluidbook-collection:write', 'column' => true, 'options' => ['none' => __('Désactivé'), 'export' => __('Export'), 'export_multilang' => __('Export multilingue'), 'scorm_multilang' => __('SCORM multilingue')]]);
         $this->addField('locale_switch', Checkbox::class, __('Permettre le changement de langue'), ['when' => ['type' => ['scorm_multilang', 'export_multilang']], 'default' => true]);
         $this->addField('locale_switch_currentpage', Checkbox::class, __('Rediriger vers la page en cours lors du changement de langue'), ['default' => false, 'when' => ['type' => ['scorm_multilang', 'export_multilang'], 'locale_switch' => 1]]);
         $this->addField('redirection_algorithm', SelectFromArray::class, __('Algorithme de choix de la version'),
@@ -107,6 +111,7 @@ class FluidbookCollection extends ToolboxStatusModel
                 'options' => ['language' => __('La langue de l\'utilisateur est prioritaire sur l\'appareil'), 'device' => __('L\'appareil est prioritaire sur la langue')],
             ]
         );
+
         $this->addField('version', FluidbookExportVersion::class, __('Version'), ['when' => ['type' => 'export']]);
         $excluded = array_diff(array_keys(FluidbookExportVersion::getVersions()), ['online', 'sharepoint']);
         $this->addField('version_multilang', FluidbookExportVersion::class, __('Version'), ['when' => ['type' => 'export_multilang'], 'excluded_options' => $excluded, 'default' => 'online']);
@@ -114,24 +119,22 @@ class FluidbookCollection extends ToolboxStatusModel
         $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]);
-        $this->addField('sep_search', FormSeparator::class);
+        $this->addField('section_search', FormBigSection::class, __('Moteur de recherche'));
         $this->addField('search', SelectFromArray::class, __('Indexer les contenus dans un moteur de recherche'), ['options' => ['none' => __('Non'), 'typesense' => __('Serveur typesense')]]);
         $this->addField('search_host', Text::class, __('Hôte'), ['when' => ['search' => 'typesense']]);
         $this->addField('search_key', Text::class, __('Clé API'), ['when' => ['search' => 'typesense']]);
-        $this->addField('sep_pubs', FormSeparator::class);
-        $this->addField('group_actions_auditlinks', FieldGroupStart::class, '', []);
-        $this->addField('enable_audit', Checkbox::class, __('Activer l’audit des liens'), ['default' => false]);
-        $this->addField('download_audit', LinkButton::class, __('Télécharger l\'audit'), [
-            'when' => ["enable_audit" => 1],
+        $this->addField('section_links_audit', FormBigSection::class, __('Audit des liens'));
+        $this->addField('links_audit', Checkbox::class, __('Activer l\'audit des liens'), ['default' => false]);
+        $this->addField('links_audit_download', LinkButton::class, __('Télécharger l\'audit des liens'), [
+            'when' => ["links_audit" => 1],
             'value' => './export_excel',
             'translatable' => false,
             'wrapperAttributes' => [
                 'class' => 'form-group col-auto'
             ]
         ]);
-        $this->addField('update_collection', LinkButton::class, __('Mettre à jour les publications'), [
-                'when' => ["enable_audit" => 1],
+        $this->addField('links_audit_update', LinkButton::class, __('Mettre à jour les liens à partir d\'un excel d\'audit'), [
+                'when' => ["links_audit" => 1],
                 'value' => '#',
                 'translatable' => false,
                 'wrapperAttributes' => [
@@ -143,8 +146,18 @@ class FluidbookCollection extends ToolboxStatusModel
             'fake' => true,
             'wrapper' => ['class' => 'd-none']
         ]);
-        $this->addField('end_group', FieldGroupEnd::class, '', []);
-        $this->addField('publications', BunchOfFieldsMultiple::class, __('Publications'), [
+
+        $this->addField('section_tools', FormBigSection::class, __('Outils'));
+        $this->addField('export_settings', LinkButton::class, __('Exporter les paramètres'), ['value' => './download_settings']);
+        /*
+         *
+            <a class='btn btn-primary mr-3'
+               href='download_settings' target="_blank" rel="noopener">{{ __('Exporter les paramètres') }}</a>
+
+         */
+
+        $this->addField('section_publications', FormBigSection::class, __('Publications'));
+        $this->addField('publications', BunchOfFieldsMultiple::class, '', [
             'bunch' => CollectionPublication::class,
             'edit_label' => '%fluidbook > %dir',
             'wrapper' => [
@@ -272,7 +285,6 @@ class FluidbookCollection extends ToolboxStatusModel
     public function refreshIndex()
     {
         if (!$this->search === 'none') {
-            dddd(':/');
             return;
         }
 
@@ -310,31 +322,9 @@ class FluidbookCollection extends ToolboxStatusModel
     {
         $res = parent::onSaved();
         dispatch(new FluidbookCollectionRefreshIndex($this->id));
-        if($this->enable_audit){
+        if ($this->enable_audit) {
             AuditLinkRegister::dispatch();
         }
         return $res;
     }
-
-    public static function updateHemsleyCollection($data) {
-        $c = self::where('title','=','Audit Hemsley');
-        $collection = $c->get();
-        if($collection[0]) {
-            $publications = $collection[0]->publications;
-            foreach ($data as $fb) {
-                // Vérifier si le fluidbook n'existe pas déjà dans la collection
-                if (array_filter($publications, function ($n) use ($fb) {
-                    return $n['fluidbook'] !== $fb;
-                })) {
-                    $publications[] = [
-                        'fluidbook' => "$fb",
-                        'export' => '',
-                        'dir' => ''
-                    ];
-                }
-            }
-
-            $c->update(['publications' => json_encode($publications)]);
-        }
-    }
 }
index ee7c375caa3d2d714924b2f5f9ce41bdde9de1a2..c8dd21519426c589d57daa1b172c89869e253fb6 100644 (file)
 @endphp
 @if(isset($saveAction['active']) && !is_null($saveAction['active']['value']))
     <div id="saveActions" class="form-group">
-        @if(($crud->entry && $crud->entry instanceof \App\Models\FluidbookCollection) && backpack_user()->hasPermissionTo('fluidbook-publication:admin'))
-            <a class='btn btn-primary mr-3'
-               href='download_settings' target="_blank" rel="noopener">{{ __('Exporter les paramètres') }}</a>
-        @endif
         @if($crud->entry && $crud->entry instanceof \App\Models\FluidbookExternalInstallServer)
             <a id='verifyconnection' class='btn btn-primary mr-3'
                href='verifyconnection'>{{ __('Tester la connexion') }}</a>