--- /dev/null
+<?php
+
+namespace App\Models\Base;
+
+use App\Fields\User;
+use Cubist\Backpack\Magic\Fields\Hidden;
+use Cubist\Backpack\Magic\Models\CubistMagicAbstractModel;
+use Illuminate\Database\Eloquent\Builder;
+use Illuminate\Support\Facades\Auth;
+
+class ToolboxModel extends CubistMagicAbstractModel
+{
+ protected static $_permissionBase = null;
+ protected static $_ownerAttribute = 'owner';
+ protected $_syncDbSchema = false;
+
+ public static function addOwnerClause(Builder $builder)
+ {
+ if (null === backpack_user() || null === Auth::id()) {
+ return;
+ }
+ if (Auth::user()->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')
+ ]
+ )
+ );
+ }
+
+}
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'));
}
}
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',
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()
{
$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]);
}
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()
{
'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'),
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;
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',
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()
{
'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'),
'type' => FluidbookDevelopmentVersion::class,
'label' => __('Version logicielle'),
'default' => 'stable',
- 'can'=>'fluidbook-publication:admin',
+ 'can' => 'fluidbook-publication:admin',
'column' => true,
'filter' => true,
'translatable' => false,
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',
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()
{
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',
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]);
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;
protected $_enableBulk = false;
+ protected static $_permissionBase = 'quiz';
+
public $registerMediaConversionsUsingModelInstance = false;
protected static function _getColors()
'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'),
return parent::create($data);
}
- public static function addOwnerClause(Builder $builder)
- {
- if (null !== backpack_user()) {
- $builder->whereIn('owner', backpack_user()->getManagedUsers());
- }
- }
}
class='nav-icon la la-dashboard'></i>{{ trans('backpack::base.dashboard') }}
</a></li>
-@canany(['quiz:read','quiztranslation:read'])
+@canany(['quiz:read','quiztranslation:read','elearning_media:read'])
<li class='nav-item nav-dropdown open'><a class='nav-link nav-dropdown-toggle' href='#'><i
class='nav-icon la la-chalkboard-teacher'></i>{{__('e-Learning')}}</a>
<ul class='nav-dropdown-items'>
<li class="nav-item"><a class="nav-link" href="{{ backpack_url('quiz') }}"><i
class="la la-question nav-icon"></i> {{__('Quiz')}}</a></li>
@endcan
- @can('elearning_media:read')
- <li class="nav-item"><a class="nav-link" href="{{ backpack_url('elearning_media') }}"><i
+ @can('elearning-media:read')
+ <li class="nav-item"><a class="nav-link" href="{{ backpack_url('elearning-media') }}"><i
class="la la-photo-video nav-icon"></i> {{__('Media')}}</a></li>
@endcan
@can('quiztranslation:read')