From 45ac09900224710075bc1063cee1d02c503ca3df Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Fri, 21 Nov 2025 18:15:18 +0100 Subject: [PATCH] #7822 @2 --- .../SettingsExportOperation.php | 4 +- app/Jobs/AuditLinkRegister.php | 2 +- app/Models/FluidbookCollection.php | 62 ++++++++----------- .../crud/inc/form_save_buttons.blade.php | 4 -- 4 files changed, 28 insertions(+), 44 deletions(-) diff --git a/app/Http/Controllers/Admin/Operations/FluidbookCollection/SettingsExportOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookCollection/SettingsExportOperation.php index be763a1b6..acb7fc17d 100644 --- a/app/Http/Controllers/Admin/Operations/FluidbookCollection/SettingsExportOperation.php +++ b/app/Http/Controllers/Admin/Operations/FluidbookCollection/SettingsExportOperation.php @@ -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(); } } diff --git a/app/Jobs/AuditLinkRegister.php b/app/Jobs/AuditLinkRegister.php index 264f25863..cd8acce3c 100644 --- a/app/Jobs/AuditLinkRegister.php +++ b/app/Jobs/AuditLinkRegister.php @@ -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']; diff --git a/app/Models/FluidbookCollection.php b/app/Models/FluidbookCollection.php index d02a53262..23272922c 100644 --- a/app/Models/FluidbookCollection.php +++ b/app/Models/FluidbookCollection.php @@ -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' => '', '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' => '', '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']); + /* + * + {{ __('Exporter les paramètres') }} + + */ + + $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)]); - } - } } diff --git a/resources/views/vendor/backpack/crud/inc/form_save_buttons.blade.php b/resources/views/vendor/backpack/crud/inc/form_save_buttons.blade.php index ee7c375ca..c8dd21519 100644 --- a/resources/views/vendor/backpack/crud/inc/form_save_buttons.blade.php +++ b/resources/views/vendor/backpack/crud/inc/form_save_buttons.blade.php @@ -11,10 +11,6 @@ @endphp @if(isset($saveAction['active']) && !is_null($saveAction['active']['value']))
- @if(($crud->entry && $crud->entry instanceof \App\Models\FluidbookCollection) && backpack_user()->hasPermissionTo('fluidbook-publication:admin')) - {{ __('Exporter les paramètres') }} - @endif @if($crud->entry && $crud->entry instanceof \App\Models\FluidbookExternalInstallServer) {{ __('Tester la connexion') }} -- 2.39.5