From: Vincent Vanwaelscappel Date: Tue, 4 Jul 2023 19:15:08 +0000 (+0200) Subject: wait #6109 @1.5 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=0b510fa8b6356a7f4c248b3876177d30a5b8c78a;p=fluidbook-toolbox.git wait #6109 @1.5 --- diff --git a/.docker/syncprodtodev.exclude b/.docker/syncprodtodev.exclude index 6b1f38a77..3583598ab 100644 --- a/.docker/syncprodtodev.exclude +++ b/.docker/syncprodtodev.exclude @@ -2,8 +2,13 @@ fluidbookpublication/packager fluidbookpublication/final fluidbookpublication/seo fluidbookpublication/pdf +fluidbookcollection/final collection/final elearningpackage/final elearningmedia/final quiz/final debugbar +app/public/elearningmedia +app/public/elearningpackage +app/public/fluidbookcollection +app/public/quiz diff --git a/.docker/syncprodtodev.sh b/.docker/syncprodtodev.sh index c647e85eb..ee3cd2bb2 100644 --- a/.docker/syncprodtodev.sh +++ b/.docker/syncprodtodev.sh @@ -4,9 +4,12 @@ rsync -avz --delete --exclude-from /home/toolbox/dev/.docker/syncprodtodev.exclu rsync -avz --delete --exclude-from /home/toolbox/dev/.docker/syncprodtodev.exclude --delete-excluded /data/toolbox/storage/ /data/toolbox/dev/storage/ # Sync database docker stop fluidbook-toolbox-dev-mariadb +rm -rf /docker/fluidbook-toolbox-dev/database/data/* rsync -avz /docker/fluidbook-toolbox/database/data/ /docker/fluidbook-toolbox-dev/database/data/ docker stop fluidbook-toolbox-mariadb rsync -avz /docker/fluidbook-toolbox/database/data/ /docker/fluidbook-toolbox-dev/database/data/ +sleep 1 +rsync -avz /docker/fluidbook-toolbox/database/data/ /docker/fluidbook-toolbox-dev/database/data/ docker start fluidbook-toolbox-mariadb # Update and restart dev containers /docker/fluidbook-toolbox-dev/update diff --git a/app/Fields/FluidbookProjectManager.php b/app/Fields/FluidbookProjectManager.php new file mode 100644 index 000000000..b56cf31bb --- /dev/null +++ b/app/Fields/FluidbookProjectManager.php @@ -0,0 +1,15 @@ +setAttribute('optionsmodel_scope', 'currentTeam'); + } +} diff --git a/app/Http/Controllers/Admin/Operations/FluidbookPublication/EditOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookPublication/EditOperation.php index b54acc20f..284ce2b35 100644 --- a/app/Http/Controllers/Admin/Operations/FluidbookPublication/EditOperation.php +++ b/app/Http/Controllers/Admin/Operations/FluidbookPublication/EditOperation.php @@ -11,6 +11,7 @@ trait EditOperation protected function setupEditRoutes($segment, $routeName, $controller) { Route::match(['get'], $segment . '/{id}/changestatus/{status}', $controller . '@changeStatus'); + Route::match(['get'], $segment . '/{id}/changeprojectmanager/{status}', $controller . '@changeProjectManager'); } protected function changeStatus($fluidbook_id, $newStatus) @@ -22,7 +23,7 @@ trait EditOperation abort(401); } $fluidbook = FluidbookPublication::find($fluidbook_id); - if (!$fluidbook) { + if (!$fluidbook || !$fluidbook->allowsEdit()) { abort(404); } if ($fluidbook->status != $newStatus) { @@ -32,4 +33,24 @@ trait EditOperation Alert::add('success', __('Status de la publication modifié'))->flash(); return redirect(backpack_url('fluidbook-publication')); } + + protected function changeProjectManager($fluidbook_id, $user) + { + if (!can('fluidbook-publication:admin')) { + abort(401); + } + if (!FluidbookPublication::hasPermission($fluidbook_id)) { + abort(401); + } + $fluidbook = FluidbookPublication::find($fluidbook_id); + if (!$fluidbook || !$fluidbook->allowsEdit()) { + abort(404); + } + if ($fluidbook->project_manager != $user) { + $fluidbook->project_manager = $user; + $fluidbook->save(); + } + Alert::add('success', __('Chef de projet de la publication modifié'))->flash(); + return redirect(backpack_url('fluidbook-publication')); + } } diff --git a/app/Models/FluidbookPublication.php b/app/Models/FluidbookPublication.php index 13ecd965c..17d39d453 100644 --- a/app/Models/FluidbookPublication.php +++ b/app/Models/FluidbookPublication.php @@ -4,11 +4,13 @@ namespace App\Models; use App\Console\Commands\WorkshopMigration; +use App\Fields\CubedesignersTeamMember; use App\Fields\FluidbookChapters; use App\Fields\FluidbookComposition; use App\Fields\FluidbookID; use App\Fields\FluidbookIDOptionnal; use App\Fields\FluidbookLocale; +use App\Fields\FluidbookProjectManager; use App\Fields\FluidbookStatus; use App\Fields\FluidbookV3ID; use App\Fields\User; @@ -206,6 +208,13 @@ class FluidbookPublication extends ToolboxSettingsModel ] ); + $this->addField('project_manager', FluidbookProjectManager::class, __('Chef de projet'), [ + 'column' => true, + 'filter' => true, + 'searchLogic' => false, + 'can' => 'fluidbook-publication:admin', + ]); + $this->addField('section_composition', FormBigSection::class, __('Composition')); $this->addField('composition_fluidbook', Checkbox::class, __('Utiliser la composition d\'un autre fluidbook'), ['default' => false]); $this->addField('composition_fluidbook_id', FluidbookV3ID::class, __('Utiliser la composition d\'un autre fluidbook'), ['excluded_options' => $this->id, 'when' => ['composition_fluidbook' => 1]]); @@ -908,32 +917,74 @@ class FluidbookPublication extends ToolboxSettingsModel return $l10n; } - public function generateThumbnailsPreview($sync = false) { + /** + * @return mixed + */ + public function getNumbering() + { + return $this->_getCompositionAttribute('page_numbers'); + } + + /** + * @return array + */ + public function getComposition() + { + $res = $this->_getCompositionAttribute('composition'); + return $res; + } + + protected function _getCompositionAttribute($name) + { + if (null === $this->_fluidbookToUseForComposition) { + if ($this->composition_fluidbook) { + $this->_fluidbookToUseForComposition = FluidbookPublication::withoutGlobalScopes()->find($this->composition_fluidbook_id); + } else { + $this->_fluidbookToUseForComposition = $this; + } + } + return $this->_fluidbookToUseForComposition->$name; + } + + + public function generateThumbnailsPreview($sync = false) + { $mobilefirstFluidbookId = $this->mobilefirstFluidbookId; $fm = null; $fn = 'dispatch'; - if($sync) + if ($sync) $fn = 'dispatchSync'; - if($mobilefirstFluidbookId) { + if ($mobilefirstFluidbookId) { $fm = self::find($mobilefirstFluidbookId); } - if($fm) { - if($sync) { - GenerateDeliveryThumbnailsPreview::$fn($fm,320, 683, 'mobile'); - }else { - dispatch(new GenerateDeliveryThumbnailsPreview($fm,320, 683, 'mobile'))->onQueue('theme'); + if ($fm) { + if ($sync) { + GenerateDeliveryThumbnailsPreview::$fn($fm, 320, 683, 'mobile'); + } else { + dispatch(new GenerateDeliveryThumbnailsPreview($fm, 320, 683, 'mobile'))->onQueue('theme'); } } - if($sync) { + if ($sync) { GenerateDeliveryThumbnailsPreview::$fn($this, 1920, 1201); GenerateDeliveryThumbnailsPreview::$fn($this, 320, 683, 'mobile'); - }else { + } else { dispatch(new GenerateDeliveryThumbnailsPreview($this, 1920, 1201))->onQueue('theme'); dispatch(new GenerateDeliveryThumbnailsPreview($this, 320, 683, 'mobile'))->onQueue('theme'); } } + + public function getProjectManagerEmail() + { + if (null !== $this->project_manager) { + $u = \App\Models\User::withoutGlobalScopes()->find($this->project_manager); + if ($u !== null) { + return $u->email; + } + } + return false; + } } diff --git a/app/Models/User.php b/app/Models/User.php index a121efc32..86b22c84e 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -15,7 +15,14 @@ class User extends \Cubedesigners\UserDatabase\Models\User $query->where('company', 7); $query->orderBy('enabled', 'ASC'); $query->orderBy('id', 'ASC'); + } + public function scopeCurrentTeam($query) + { + $query->where('company', 7); + $query->whereNotIn('id', [5963, 7]); + $query->where('enabled', 1); + $query->orderBy('id', 'ASC'); } public function avatar() diff --git a/public/packages/fluidbook/toolbox/js/contextdownload.js b/public/packages/fluidbook/toolbox/js/contextdownload.js index 5114371bd..fcd9d5e0e 100644 --- a/public/packages/fluidbook/toolbox/js/contextdownload.js +++ b/public/packages/fluidbook/toolbox/js/contextdownload.js @@ -27,14 +27,14 @@ $(function () { action.disabled = action.disabled || (key == disabledOption); action.isHtmlName = true; } - actions[key] = action; + actions[key+""] = action; }); $.each(actions, function (key, action) { if (action !== sep) { - items[key] = {name: action.label, isHtmlName: action.isHtmlName, disabled: action.disabled,}; + items[key+""] = {name: action.label, isHtmlName: action.isHtmlName, disabled: action.disabled,}; } else { - items[key] = action; + items[key+""] = action; } }); diff --git a/resources/views/columns/fluidbook_project_manager.blade.php b/resources/views/columns/fluidbook_project_manager.blade.php new file mode 100644 index 000000000..d354e4475 --- /dev/null +++ b/resources/views/columns/fluidbook_project_manager.blade.php @@ -0,0 +1,31 @@ +{{-- select_from_array column --}} +@php + $values = data_get($entry, $column['name']); + $me=backpack_user()->id; + if($me==$values){ + $v=__('Moi'); + }else{ + $v=isset($column['options'][$values])?e($column['options'][$values]):''.__('Indéfini').''; + } + + $options=$column['options']; + if(isset($options[$me])){ + unset($options[$me]); + $options=[$me=>''.__('Moi').''] + $options; + } +@endphp + +@if($entry->allowsEdit()) + getOption('name')}}-{{$column['name']}}="{{$values}}"> + {!! $v !!} + +@else + {!! $v !!} +@endif diff --git a/resources/views/columns/fluidbook_status.blade.php b/resources/views/columns/fluidbook_status.blade.php index c8fb53f9a..dc03a9c7d 100644 --- a/resources/views/columns/fluidbook_status.blade.php +++ b/resources/views/columns/fluidbook_status.blade.php @@ -5,7 +5,8 @@ @endphp @can('fluidbook-publication:admin') - getOption('name')}}-{{$column['name']}}="{{$values}}"> + @if($entry->allowsEdit()) + getOption('name')}}-{{$column['name']}}="{{$values}}"> {{$v}} + @else + {{$v}} + @endif @endcan @cannot('fluidbook-publication:admin') diff --git a/resources/views/vendor/backpack/crud/buttons/fluidbook_publication/download.blade.php b/resources/views/vendor/backpack/crud/buttons/fluidbook_publication/download.blade.php index aa876be0d..0dfa1ab66 100644 --- a/resources/views/vendor/backpack/crud/buttons/fluidbook_publication/download.blade.php +++ b/resources/views/vendor/backpack/crud/buttons/fluidbook_publication/download.blade.php @@ -10,12 +10,12 @@ -// $actions['delivery']=[ -// 'label'=>__('Page de téléchargement'), -// 'url'=>$base.'/delivery', -// ]; -// -// $actions['sep_download']='---------'; + $actions['delivery']=[ + 'label'=>__('Page de téléchargement'), + 'url'=>$base.'/delivery', + ]; + + $actions['sep_download']='---------'; foreach (\App\Models\FluidbookPublication::getDownloadVersions() as $k=>$v) { if($k==='scorm'){ continue;