--- /dev/null
+<?php
+
+namespace App\Http\Controllers\Admin\Operations;
+
+use Backpack\CRUD\app\Library\CrudPanel\CrudPanel;
+use Cubist\Backpack\Magic\Controllers\CubistMagicController;
+use Illuminate\Support\Facades\Route;
+use Prologue\Alerts\Facades\Alert;
+
+trait ChangeownerOperation
+{
+ protected function setupChangeownerRoutes($segment, $routeName, $controller)
+ {
+ Route::match(['get'], $segment . '/{id}/changeowner/{owner}', $controller . '@changeOwner');
+ }
+
+ protected function changeOwner($id, $owner)
+ {
+ /** @var $this CubistMagicController */
+ $class = $this->getModelInstance();
+ if (!$this->getModelInstance()->canAdmin(backpack_user())) {
+ abort(401);
+ }
+ $instance = $class::find($id);
+ $instance->owner = $owner;
+ $instance->save();
+ Alert::add('success', __('Propriétaire modifié'))->flash();
+ return redirect(backpack_url($instance->getOption('name')));
+ }
+}
namespace App\Models;
use App\Fields\SCORMVersion;
+use App\Http\Controllers\Admin\Operations\ChangeownerOperation;
use App\Http\Controllers\Admin\Operations\ELearningMedia\ImportOperation;
use App\Http\Controllers\Admin\Operations\ELearningMedia\PreviewOperation;
use App\Http\Controllers\Admin\Operations\ELearningMedia\DownloadOperation;
public const MEDIA_TYPES = ['audio/mpeg', 'video/mp4', 'application/pdf'];
- protected $_operations = [ImportOperation::class, PreviewOperation::class, DownloadOperation::class];
+ protected $_operations = [ImportOperation::class, PreviewOperation::class, DownloadOperation::class,ChangeownerOperation::class];
public function setFields()
{
namespace App\Models;
use App\Fields\SCORMVersion;
+use App\Http\Controllers\Admin\Operations\ChangeownerOperation;
use App\Http\Controllers\Admin\Operations\ELearningPackage\ImportOperation;
use App\Http\Controllers\Admin\Operations\ELearningPackage\PreviewOperation;
use App\Http\Controllers\Admin\Operations\ELearningPackage\DownloadOperation;
protected static $_permissionBase = 'elearning-package';
- protected $_operations = [ImportOperation::class, PreviewOperation::class, DownloadOperation::class];
+ protected $_operations = [ImportOperation::class, PreviewOperation::class, DownloadOperation::class,ChangeownerOperation::class];
public function setFields()
{
use App\Fields\User;
use App\Fluidbook\Farm;
use App\Fluidbook\Links;
+use App\Http\Controllers\Admin\Operations\ChangeownerOperation;
use App\Http\Controllers\Admin\Operations\FluidbookPublication\CloneOperation;
use App\Http\Controllers\Admin\Operations\FluidbookPublication\CompositionOperation;
use App\Http\Controllers\Admin\Operations\FluidbookPublication\DeletefbOperation;
protected static $_docs = [];
- protected $_operations = [CreateOperation::class, PreviewOperation::class, LinksOperation::class, CompositionOperation::class, StatsOperation::class, DownloadOperation::class, CloneOperation::class, DeletefbOperation::class, EditOperation::class];
+ protected $_operations = [CreateOperation::class, PreviewOperation::class, LinksOperation::class, CompositionOperation::class, StatsOperation::class, DownloadOperation::class, CloneOperation::class, DeletefbOperation::class, EditOperation::class,ChangeownerOperation::class];
protected $casts = ['composition' => 'array'];
namespace App\Models;
use App\Fields\FluidbookThemeImage;
+use App\Http\Controllers\Admin\Operations\ChangeownerOperation;
use App\Jobs\GenerateThemePreview;
use App\Jobs\UpdateWS2ThemeTable;
use App\Models\Base\ToolboxSettingsModel;
public static $updateWS2ViewOnChange = true;
public static $updateWS2SyncViewOnChange = false;
+ protected $_operations = [ChangeownerOperation::class];
+
public function setFields()
{
parent::setFields();
namespace App\Models;
use App\Fields\SCORMVersion;
+use App\Http\Controllers\Admin\Operations\ChangeownerOperation;
use App\Http\Controllers\Admin\Operations\Quiz\DownloadOperation;
use App\Http\Controllers\Admin\Operations\Quiz\ImportOperation;
use App\Http\Controllers\Admin\Operations\Quiz\LogOperation;
public $registerMediaConversionsUsingModelInstance = false;
- protected $_operations = [PreviewOperation::class, DownloadOperation::class, LogOperation::class, ReportOperation::class, ImportOperation::class];
+ protected $_operations = [PreviewOperation::class, DownloadOperation::class, LogOperation::class, ReportOperation::class, ImportOperation::class,ChangeownerOperation::class];
use SCORMVersionTrait;
'https://cdnjs.cloudflare.com/ajax/libs/jquery-contextmenu/2.9.2/jquery.contextMenu.min.css',
'https://cdnjs.cloudflare.com/ajax/libs/sweetalert2/11.7.3/sweetalert2.min.css',
+ 'https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/css/select2.min.css',
+ 'https://cdnjs.cloudflare.com/ajax/libs/select2-bootstrap-theme/0.1.0-beta.10/select2-bootstrap.min.css',
// Here's what's inside the bundle:
// 'packages/@digitallyhappy/backstrap/css/style.min.css',
"https://cdnjs.cloudflare.com/ajax/libs/jquery-contextmenu/2.9.2/jquery.contextMenu.min.js",
"https://cdnjs.cloudflare.com/ajax/libs/jquery-contextmenu/2.9.2/jquery.ui.position.min.js",
'https://cdnjs.cloudflare.com/ajax/libs/gsap/3.11.4/gsap.min.js',
-
+ 'https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/js/select2.min.js',
'https://cdnjs.cloudflare.com/ajax/libs/sweetalert2/11.7.3/sweetalert2.all.js',
// examples (everything inside the bundle, loaded from CDN)
@php
$values = data_get($entry, $column['name']);
$v=$column['options'][$values];
+
@endphp
@if(!isset($crud->seenOwnersList))
@php $crud->seenOwnersList=true;
- $ajax=\Cubist\Backpack\Magic\Fields\SelectFromArray::hashOptions($column['options']);
+ $crud->ajaxOwnerList=\Cubist\Backpack\Magic\Fields\SelectFromArray::hashOptions($column['options']);
@endphp
- <div id="owners_list_container">
- <select
- name="owners_list"
- style="display: none;"
- data-ajax="{{$ajax}}"
- data-allow-html="1"
- data-options="{{ json_encode($column['options']) }}"
- >
- </select>
- </div>
+ <style>
+ .select2-dropdown {
+ z-index: 10000;
+ }
+ </style>
<script>
$(document).on('click', ".changeowner", function () {
+ var a = $(this);
Swal.fire({
title: '{{__('Modifier le propriétaire')}}',
- html: $('#owners_list_container').html(),
+ html: $(a).closest('span').find('.owners_list_container').html(),
confirmButtonColor: '#467fcf',
confirmButtonText: '{{__('Valider')}}',
showCancelButton: true,
cancelButtonColor: '#f1ecec',
cancelButtonTextColor: '#000000',
focusConfirm: false,
- onOpen: function () {
- $('select[name=owners_list]').select2({});
+ didOpen: function () {
+ let select = $(Swal.getHtmlContainer()).find('select');
+ $(select).select2({
+ theme: 'bootstrap',
+ ajax: {
+ url: '{{backpack_url('select2')}}' + '/' + $(select).data('ajax'),
+ dataType: 'json'
+ },
+ escapeMarkup: function (m) {
+ return m;
+ }
+ });
},
+ didDestroy: function () {
+ let select = $(Swal.getHtmlContainer()).find('select');
+ $(select).select2('destroy');
+ },
+ }).then((result) => {
+ if (result.isConfirmed) {
+ let select = $(Swal.getHtmlContainer()).find('select');
+ window.location = '{{backpack_url($entry->getOption('name').'/'.$entry->id.'/changeowner')}}/' + select.val();
+ }
});
return false;
});
<span data-{{$entry->getOption('name')}}-{{$column['name']}}="{{$values}}">
+ <div class="owners_list_container" style="display: none;">
+ <select
+ style="width: 100%;"
+ name="owners_list"
+ data-ajax="{{$crud->ajaxOwnerList}}"
+ >
+ <option value="{{$values}}" selected>{!! $v !!}</option>
+ </select>
+ </div>
<a href="#" class="changeowner" title="{{__('Changer le propriétaire')}}">{!! $v !!}</a>
</span>