From: Vincent Vanwaelscappel Date: Fri, 21 Nov 2025 17:34:51 +0000 (+0100) Subject: #7822 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=43b1e251e10884baaba1847a75383e50037e8dc5;p=fluidbook-toolbox.git #7822 --- diff --git a/app/Models/FluidbookCollection.php b/app/Models/FluidbookCollection.php index 23272922c..5c916e844 100644 --- a/app/Models/FluidbookCollection.php +++ b/app/Models/FluidbookCollection.php @@ -94,35 +94,37 @@ class FluidbookCollection extends ToolboxStatusModel 'allows_null' => false, 'default' => 0, 'searchLogic' => false, + 'can' => 'fluidbook-collection:admin', ] ); $this->addOwnerField(); $this->addField('hash', Hidden::class); - $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('visits_counter', Integer::class, __('Compteur de visites'), ['can' => 'fluidbook-collection:admin', 'read_only' => true, 'default' => 0, 'column' => true, 'column_label' => '', 'searchLogic' => false]); + $this->addField('section_export', FormBigSection::class, __('Paramètres d\'export'), ['can' => 'fluidbook-collection:admin']); + $this->addField('type', SelectFromArray::class, __('Type'), ['can' => 'fluidbook-collection:admin', 'allows_null' => false, 'default' => 'none', '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'), ['can' => 'fluidbook-collection:admin', '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'), ['can' => 'fluidbook-collection:admin', 'default' => false, 'when' => ['type' => ['scorm_multilang', 'export_multilang'], 'locale_switch' => 1]]); $this->addField('redirection_algorithm', SelectFromArray::class, __('Algorithme de choix de la version'), [ + 'can' => 'fluidbook-collection:admin', 'when' => ['type' => ['scorm_multilang', 'export_multilang']], 'default' => 'language', 'databaseDefault' => 'language', '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']]); + $this->addField('version', FluidbookExportVersion::class, __('Version'), ['can' => 'fluidbook-collection:admin', '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']); - - $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('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('version_multilang', FluidbookExportVersion::class, __('Version'), ['can' => 'fluidbook-collection:admin', 'when' => ['type' => 'export_multilang'], 'excluded_options' => $excluded, 'default' => 'online']); + + $this->addField('install', ExternalPath::class, 'Installer sur un serveur externe', ['can' => 'fluidbook-collection:admin', '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'), ['can' => 'fluidbook-collection:admin', 'bunch' => Fluidbook_Setting::class]); + $this->addField('linksAssets', FilesOrURL::class, __('Charger ou remplacer des assets sur tous les fluidbooks de la collection'), ['can' => 'fluidbook-collection:admin', '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('section_search', FormBigSection::class, __('Moteur de recherche'), ['can' => 'fluidbook-collection:admin',]); + $this->addField('search', SelectFromArray::class, __('Indexer les contenus dans un moteur de recherche'), ['can' => 'fluidbook-collection:admin', 'options' => ['none' => __('Non'), 'typesense' => __('Serveur typesense')]]); + $this->addField('search_host', Text::class, __('Hôte'), ['can' => 'fluidbook-collection:admin', 'when' => ['search' => 'typesense']]); + $this->addField('search_key', Text::class, __('Clé API'), ['can' => 'fluidbook-collection:admin', 'when' => ['search' => 'typesense']]); $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'), [ @@ -147,8 +149,8 @@ class FluidbookCollection extends ToolboxStatusModel 'wrapper' => ['class' => 'd-none'] ]); - $this->addField('section_tools', FormBigSection::class, __('Outils')); - $this->addField('export_settings', LinkButton::class, __('Exporter les paramètres'), ['value' => './download_settings']); + $this->addField('section_tools', FormBigSection::class, __('Outils'), ['can' => 'fluidbook-collection:admin',]); + $this->addField('export_settings', LinkButton::class, __('Exporter les paramètres'), ['can' => 'fluidbook-collection:admin', 'value' => './download_settings']); /* * _can('admin', backpack_user()); + } + + public function allowsDownload(): bool + { + return $this->type && $this->type !== 'none'; + } } diff --git a/resources/views/vendor/backpack/crud/buttons/delete.blade.php b/resources/views/vendor/backpack/crud/buttons/delete.blade.php index 38f08d472..9164781c3 100644 --- a/resources/views/vendor/backpack/crud/buttons/delete.blade.php +++ b/resources/views/vendor/backpack/crud/buttons/delete.blade.php @@ -1,4 +1,4 @@ -@if ($crud->hasAccess('delete')) +@if ($entry->allowsDelete()) {{ trans('backpack::crud.delete') }} diff --git a/resources/views/vendor/backpack/crud/buttons/fluidbook_collection/download.blade.php b/resources/views/vendor/backpack/crud/buttons/fluidbook_collection/download.blade.php index 031cdcbfc..76d48eec7 100644 --- a/resources/views/vendor/backpack/crud/buttons/fluidbook_collection/download.blade.php +++ b/resources/views/vendor/backpack/crud/buttons/fluidbook_collection/download.blade.php @@ -31,6 +31,7 @@ 'cancel'=>__('Annuler') ]; @endphp +@if($entry->allowsDownload()) {{__('Export')}} +@endif