From: Vincent Vanwaelscappel Date: Thu, 20 Jan 2022 15:28:41 +0000 (+0100) Subject: wip #5041 @1.5 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=e537f546d02aa45d26fe1beb8680d13b14249ff4;p=fluidbook-toolbox.git wip #5041 @1.5 --- diff --git a/app/Models/Base/ToolboxModel.php b/app/Models/Base/ToolboxModel.php new file mode 100644 index 000000000..9076a1e3f --- /dev/null +++ b/app/Models/Base/ToolboxModel.php @@ -0,0 +1,81 @@ +hasPermissionTo(static::$_permissionBase . ':admin')) { + return; + } + if (null === static::$_ownerAttribute) { + return; + } + $builder->whereIn(static::$_ownerAttribute, backpack_user()->getManagedUsers()); + if (Auth::user()->hasPermissionTo(static::$_permissionBase . ':write')) { + $builder->orWhere('created_ok', 0); + } + } + + public function addOwnerField($tab = null) + { + $fieldSettings = ['name' => static::$_ownerAttribute, + 'label' => __('Propriétaire'), + 'type' => User::class, + 'column' => true, + 'can' => static::$_permissionBase . ':admin', + 'column_attribute' => 'companyWithNameOnTwoLines', + 'attribute' => 'companyWithName', + 'default' => Auth::id() + ]; + if (null !== $tab) { + $fieldSettings['tab'] = $tab; + } + $this->addField($fieldSettings); + } + + public function addColumnDateFields($tab = null, $type = Hidden::class) + { + $common = ['type' => $type, + 'column' => true, + 'column_type' => 'date', + 'column_format' => null]; + + if (null !== $tab) { + $common['tab'] = $tab; + } + + $this->addField( + array_merge($common, + [ + 'name' => 'created_at', + 'label' => __('Crée le'), + ] + ) + ); + + $this->addField( + array_merge($common, + [ + 'name' => 'updated_at', + 'label' => __('Mis à jour le') + ] + ) + ); + } + +} diff --git a/app/Models/ELearningMedia.php b/app/Models/ELearningMedia.php index 637f0456a..22a5cafc1 100644 --- a/app/Models/ELearningMedia.php +++ b/app/Models/ELearningMedia.php @@ -2,24 +2,31 @@ namespace App\Models; +use App\Models\Base\ToolboxModel; use Cubist\Backpack\Magic\Fields\Files; use Cubist\Backpack\Magic\Fields\Percent; -use Cubist\Backpack\Magic\Models\CubistMagicAbstractModel; +use Cubist\Backpack\Magic\Fields\Text; -class ELearningMedia extends CubistMagicAbstractModel +class ELearningMedia extends ToolboxModel { protected $table = 'elearning_media'; - protected $_options = ['name' => 'elearning_media', - 'singular' => 'e-learning media', - 'plural' => 'e-learning media']; + protected $_options = ['name' => 'elearning-media', + 'singular' => 'media', + 'plural' => 'media']; + protected static $_permissionBase = 'elearning-media'; public function setFields() { parent::setFields(); - $this->addField('complete_pct', Percent::class, __('Marquer terminé quand ce pourcentage est lu')); - $this->addField('media',Files::class,__('Media')); + $this->addField('title', Text::class, __('Titre')); + + $this->addOwnerField(); + $this->addColumnDateFields(); + + $this->addField('complete_pct', Percent::class, __('Marquer terminé quand ce pourcentage est lu'), ['default' => 75]); + $this->addField('media', Files::class, __('Media')); } } diff --git a/app/Models/FluidbookCollection.php b/app/Models/FluidbookCollection.php index 965f48b8d..f7a4bb430 100644 --- a/app/Models/FluidbookCollection.php +++ b/app/Models/FluidbookCollection.php @@ -3,19 +3,16 @@ namespace App\Models; use App\Fields\FluidbookExportVersion; -use App\Fields\User; use App\Http\Controllers\Admin\Operations\FluidbookCollection\DownloadOperation; +use App\Models\Base\ToolboxModel; use App\SubForms\CollectionPublication; use App\SubForms\Fluidbook_Setting; use Cubist\Backpack\Magic\Fields\BunchOfFieldsMultiple; use Cubist\Backpack\Magic\Fields\Checkbox; use Cubist\Backpack\Magic\Fields\SelectFromArray; use Cubist\Backpack\Magic\Fields\Text; -use Cubist\Backpack\Magic\Models\CubistMagicAbstractModel; -use Illuminate\Database\Eloquent\Builder; -use Illuminate\Support\Facades\Auth; -class FluidbookCollection extends CubistMagicAbstractModel +class FluidbookCollection extends ToolboxModel { protected $table = 'fluidbook_collection'; protected $_options = ['name' => 'fluidbook-collection', @@ -24,16 +21,7 @@ class FluidbookCollection extends CubistMagicAbstractModel protected $_operations = [DownloadOperation::class]; - public static function addOwnerClause(Builder $builder) - { - if (null === backpack_user()) { - return; - } - if (Auth::user()->hasPermissionTo('fluidbook-collection:admin')) { - return; - } - $builder->where('owner', Auth::id()); - } + protected static $_permissionBase = 'fluidbook-collection'; public function setFields() { @@ -41,21 +29,13 @@ class FluidbookCollection extends CubistMagicAbstractModel $this->addField('title', Text::class, __('Titre de la collection'), ['column' => true]); - $this->addField(['name' => 'owner', - 'label' => __('Propriétaire'), - 'type' => User::class, - 'column' => true, - 'can' => 'fluidbook-collection:admin', - 'column_attribute' => 'companyWithNameOnTwoLines', - 'attribute' => 'companyWithName', - 'default' => Auth::id()] - ); + $this->addOwnerField(); $this->addField('type', SelectFromArray::class, __('Type'), ['column' => true, 'options' => ['export' => __('Export'), 'scorm_multilang' => __('SCORM multilingue')]]); $this->addField('locale_switch', Checkbox::class, __('Permettre le changement de langue'), ['when' => ['type' => 'scorm_multilang'], 'default' => true]); $this->addField('version', FluidbookExportVersion::class, __('Version'), ['when' => ['type' => 'export']]); $this->addField('publications', BunchOfFieldsMultiple::class, __('Publications'), ['bunch' => CollectionPublication::class]); - $this->addField('override_settings',BunchOfFieldsMultiple::class,__('Redéfinir les paramètres lors de l\'export'),['bunch'=>Fluidbook_Setting::class]); + $this->addField('override_settings', BunchOfFieldsMultiple::class, __('Redéfinir les paramètres lors de l\'export'), ['bunch' => Fluidbook_Setting::class]); } diff --git a/app/Models/FluidbookIconset.php b/app/Models/FluidbookIconset.php index 8cd0d6eb8..a96ff9141 100644 --- a/app/Models/FluidbookIconset.php +++ b/app/Models/FluidbookIconset.php @@ -2,33 +2,20 @@ namespace App\Models; -use App\Fields\User; -use App\Jobs\GenerateThemePreview; +use App\Models\Base\ToolboxModel; use Cubist\Backpack\Magic\Fields\Checkbox; use Cubist\Backpack\Magic\Fields\Code; use Cubist\Backpack\Magic\Fields\Text; -use Cubist\Backpack\Magic\Models\CubistMagicAbstractModel; use Cubist\Util\Files\Files; -use Illuminate\Database\Eloquent\Builder; -use Illuminate\Support\Facades\Auth; -class FluidbookIconset extends CubistMagicAbstractModel +class FluidbookIconset extends ToolboxModel { protected $table = 'fluidbook_iconset'; protected $_options = ['name' => 'fluidbook-iconset', 'singular' => 'icon set', 'plural' => 'icon sets']; - public static function addOwnerClause(Builder $builder) - { - if (null === backpack_user()) { - return; - } - if (Auth::user()->hasPermissionTo('fluidbook-iconset:admin')) { - return; - } - $builder->where('owner', Auth::id())->orWhere('public', 1); - } + protected static $_permissionBase = 'fluidbook-iconset'; public function setFields() { @@ -39,15 +26,7 @@ class FluidbookIconset extends CubistMagicAbstractModel 'type' => Text::class, 'column' => true]); - $this->addField(['name' => 'owner', - 'label' => __('Propriétaire'), - 'type' => User::class, - 'column' => true, - 'can' => 'fluidbook-iconset:admin', - 'column_attribute' => 'companyWithNameOnTwoLines', - 'attribute' => 'companyWithName', - 'default' => Auth::id()] - ); + $this->addOwnerField(); $this->addField(['name' => 'public', 'label' => __('Publique'), diff --git a/app/Models/FluidbookPublication.php b/app/Models/FluidbookPublication.php index 07d6c01ca..fec94edad 100644 --- a/app/Models/FluidbookPublication.php +++ b/app/Models/FluidbookPublication.php @@ -8,6 +8,7 @@ use App\Fields\FluidbookLocale; use App\Fields\FluidbookSignature; use App\Fields\FluidbookTitle; use App\Fields\User; +use App\Models\Base\ToolboxModel; use Cubist\Backpack\Magic\Fields\Code; use Cubist\Backpack\Magic\Fields\Datetime; use Cubist\Backpack\Magic\Fields\Hidden; @@ -15,11 +16,8 @@ use Cubist\Backpack\Magic\Fields\Integer; use Cubist\Backpack\Magic\Fields\LongText; use Cubist\Backpack\Magic\Fields\SelectFromArray; use Cubist\Backpack\Magic\Fields\Textarea; -use Cubist\Backpack\Magic\Models\CubistMagicAbstractModel; -use Illuminate\Database\Eloquent\Builder; -use Illuminate\Support\Facades\Auth; -class FluidbookPublication extends CubistMagicAbstractModel +class FluidbookPublication extends ToolboxModel { protected $table = 'fluidbook_publication'; protected $_options = ['name' => 'fluidbook-publication', @@ -30,15 +28,8 @@ class FluidbookPublication extends CubistMagicAbstractModel protected $_enableTrackNonDefaultValues = true; - protected $_syncDbSchema=false; + protected $_syncDbSchema = false; - public static function addOwnerClause(Builder $builder) - { - if (Auth::user()->hasPermissionTo('fluidbook-quote:admin')) { - return; - } - $builder->where('owner', Auth::id()); - } public function setFields() { @@ -49,20 +40,11 @@ class FluidbookPublication extends CubistMagicAbstractModel 'type' => FluidbookTitle::class, 'label' => __('Titre de la publication'), 'default' => '', - 'column'=>true, + 'column' => true, 'translatable' => false, ]); - $this->addField(['name' => 'owner', - 'label' => __('Propriétaire'), - 'type' => User::class, - 'column' => true, - 'can' => 'fluidbook-publication:admin', - 'column_attribute' => 'companyWithNameOnTwoLines', - 'attribute' => 'companyWithName', - 'default' => Auth::id(), - ] - ); + $this->addOwnerField(); $this->addField(['name' => 'c_admin', 'label' => __('Administrateur'), @@ -116,7 +98,7 @@ class FluidbookPublication extends CubistMagicAbstractModel 'type' => FluidbookDevelopmentVersion::class, 'label' => __('Version logicielle'), 'default' => 'stable', - 'can'=>'fluidbook-publication:admin', + 'can' => 'fluidbook-publication:admin', 'column' => true, 'filter' => true, 'translatable' => false, diff --git a/app/Models/FluidbookQuote.php b/app/Models/FluidbookQuote.php index 88e21f97c..ee960f94e 100644 --- a/app/Models/FluidbookQuote.php +++ b/app/Models/FluidbookQuote.php @@ -8,15 +8,12 @@ use App\Fields\FluidbookUser; use App\Http\Controllers\Admin\Operations\FluidbookQuote\AssignOperation; use App\Http\Controllers\Admin\Operations\FluidbookQuote\ConfirmAssignmentOperation; use App\Http\Controllers\Admin\Operations\FluidbookQuote\CreateFromWebsite; +use App\Models\Base\ToolboxModel; use App\Widgets; -use Cubist\Backpack\Http\Controllers\Operations\ShowOperation; use Cubist\Backpack\Magic\Fields\Integer; use Cubist\Backpack\Magic\Fields\Number; -use Cubist\Backpack\Magic\Fields\ReadOnlyValue; -use Cubist\Backpack\Magic\Models\CubistMagicAbstractModel; -use Illuminate\Database\Eloquent\Builder; -class FluidbookQuote extends CubistMagicAbstractModel +class FluidbookQuote extends ToolboxModel { protected $table = 'fluidbook_quote'; protected $_options = ['name' => 'fluidbook-quote', @@ -29,13 +26,8 @@ class FluidbookQuote extends CubistMagicAbstractModel protected $_enableCreation = false; protected $_enableBulk = false; - public static function addOwnerClause(Builder $builder) - { - if (backpack_user()->hasPermissionTo('fluidbook-quote:admin')) { - return; - } - $builder->where('reseller', backpack_user()->id); - } + protected static $_permissionBase = 'fluidbook-quote'; + protected static $_ownerAttribute = 'reseller'; public function setFields() { diff --git a/app/Models/FluidbookTheme.php b/app/Models/FluidbookTheme.php index 1ce8677de..1ffa3ad0d 100644 --- a/app/Models/FluidbookTheme.php +++ b/app/Models/FluidbookTheme.php @@ -3,20 +3,14 @@ namespace App\Models; - -use App\Fields\User; use App\Jobs\GenerateThemePreview; use App\Jobs\UpdateWS2ThemeTable; +use App\Models\Base\ToolboxModel; use Cubist\Backpack\Magic\Fields\Color; use Cubist\Backpack\Magic\Fields\Files; use Cubist\Backpack\Magic\Fields\SelectFromModel; -use Cubist\Backpack\Magic\Models\CubistMagicAbstractModel; -use Illuminate\Database\Eloquent\Builder; -use Illuminate\Support\Facades\Auth; -use Illuminate\Support\Facades\DB; -use Spatie\MediaLibrary\MediaCollections\Models\Media; -class FluidbookTheme extends CubistMagicAbstractModel +class FluidbookTheme extends ToolboxModel { protected $table = 'fluidbook_theme'; protected $_options = ['name' => 'fluidbook-theme', @@ -32,30 +26,13 @@ class FluidbookTheme extends CubistMagicAbstractModel public static $updateWS2ViewOnChange = true; - public static function addOwnerClause(Builder $builder) - { - if (null === backpack_user()) { - return; - } - if (Auth::user()->hasPermissionTo('fluidbook-theme:admin')) { - return; - } - $builder->where('owner', Auth::id()); - } + protected static $_permissionBase ='fluidbook-theme'; public function setFields() { parent::setFields(); - $this->addField(['name' => 'owner', - 'label' => __('Propriétaire'), - 'type' => User::class, - 'column' => true, - 'can' => 'fluidbook-publication:admin', - 'column_attribute' => 'companyWithNameOnTwoLines', - 'attribute' => 'companyWithName', - 'default' => Auth::id()] - ); + $this->addOwnerField(); $this->addField('name', 'Text', __('Nom'), ['column' => true]); $this->addField('preview', 'NoValue', __('Preview'), ['column' => true, 'column_type' => 'model_function', 'column_function_name' => 'getPreviewImage', 'column_limit' => -1]); diff --git a/app/Models/Quiz.php b/app/Models/Quiz.php index a778b1215..0cc1751da 100644 --- a/app/Models/Quiz.php +++ b/app/Models/Quiz.php @@ -4,16 +4,12 @@ namespace App\Models; use App\Http\Controllers\Admin\Base\QuizController; -use Cubist\Backpack\Magic\Models\CubistMagicAbstractModel; +use App\Models\Base\ToolboxModel; use Cubist\Util\Files\Files; -use Illuminate\Database\Eloquent\Builder; -use Illuminate\Support\Facades\App; -use Illuminate\Support\Facades\Artisan; use Spatie\MediaLibrary\MediaCollections\Models\Media; use Spatie\Image\Manipulations; -use App\Fields\User; -class Quiz extends CubistMagicAbstractModel +class Quiz extends ToolboxModel { protected $_baseController = QuizController::class; @@ -25,6 +21,8 @@ class Quiz extends CubistMagicAbstractModel protected $_enableBulk = false; + protected static $_permissionBase = 'quiz'; + public $registerMediaConversionsUsingModelInstance = false; protected static function _getColors() @@ -81,30 +79,8 @@ class Quiz extends CubistMagicAbstractModel 'column_label' => __('Projet'), 'tab' => __('Projet')]); - $this->addField(['name' => 'created_at', - 'label' => __('Crée le'), - 'type' => 'Datetime', - 'column' => true, - 'column_type' => 'date', - 'column_format' => null, - 'tab' => __('Projet')]); - - $this->addField(['name' => 'updated_at', - 'label' => __('Mis à jour le'), - 'type' => 'Hidden', - 'column' => true, - 'column_type' => 'date', - 'column_format' => null, - 'tab' => __('Projet')]); - - $this->addField(['name' => 'owner', - 'label' => __('Propriétaire'), - 'type' => User::class, - 'column' => true, - 'can' => 'quiz:admin', - 'column_attribute' => 'companyWithNameOnTwoLines', - 'attribute' => 'companyWithName', - 'tab' => __('Projet')]); + $this->addColumnDateFields(__('Projet')); + $this->addOwnerField(__('Projet')); $this->addField(['name' => 'title', 'label' => __('Titre du quiz'), @@ -386,10 +362,4 @@ class Quiz extends CubistMagicAbstractModel return parent::create($data); } - public static function addOwnerClause(Builder $builder) - { - if (null !== backpack_user()) { - $builder->whereIn('owner', backpack_user()->getManagedUsers()); - } - } } diff --git a/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php b/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php index 23d308efc..ed85f60f5 100644 --- a/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php +++ b/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php @@ -2,7 +2,7 @@ class='nav-icon la la-dashboard'>{{ trans('backpack::base.dashboard') }} -@canany(['quiz:read','quiztranslation:read']) +@canany(['quiz:read','quiztranslation:read','elearning_media:read'])