namespace App\Fields;
+use App\Models\FluidbookPublication;
use Cubist\Backpack\Magic\Fields\SelectFromArray;
+use Cubist\Util\PHP;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\DB;
{
$u = backpack_user();
if ($u) {
- return Cache::remember('fluidbok_id_' . $u->id, 600, function () use ($u) {
+ $cacheKey = 'fluidbok_id_' . $u->id;
+ return Cache::remember($cacheKey, 600, function () use ($u) {
$res = [];
- $q = DB::table('extranet_clean.books');
+
+ $q = DB::table('fluidbook_publication')->where('created_ok', '1')->orderBy('id', 'desc');
if (!$u->hasPermissionTo('fluidbook-publication:admin')) {
- $q->whereIn('proprietaire', explode(',', $u->e1_ws_rights));
+ $q->whereIn('owner', explode(',', $u->e1_ws_rights));
}
- foreach ($q->orderByDesc('book_id')->get() as $book) {
- $res[$book->book_id] = $book->book_id . ' - ' . $book->nom;
+ $books = $q->get();
+
+ foreach ($books as $book) {
+ $res[$book->id] = $book->id . ' - ' . $book->c_title;
}
return $res;
});
use App\SubForms\Fluidbook_Setting;
use Cubist\Backpack\Magic\Fields\BunchOfFieldsMultiple;
use Cubist\Backpack\Magic\Fields\Checkbox;
+use Cubist\Backpack\Magic\Fields\ExternalPath;
use Cubist\Backpack\Magic\Fields\SelectFromArray;
use Cubist\Backpack\Magic\Fields\Text;
+
// __('!! Collections de fluidbooks')
class FluidbookCollection extends ToolboxModel
{
$this->addField('locale_switch', Checkbox::class, __('Permettre le changement de langue'), ['when' => ['type' => ['scorm_multilang', 'export_multilang']], 'default' => true]);
$this->addField('version', FluidbookExportVersion::class, __('Version'), ['when' => ['type' => 'export']]);
$this->addField('publications', BunchOfFieldsMultiple::class, __('Publications'), ['bunch' => CollectionPublication::class, 'edit_label' => '%fluidbook > %dir']);
+ $this->addField('install', ExternalPath::class, 'Installer sur un serveur externe', ['default' => '', 'fake' => true, 'translatable' => false, 'store_in' => 'settings', 'servers_model' => FluidbookExternalInstallServer::class]);
$this->addField('override_settings', BunchOfFieldsMultiple::class, __('Redéfinir les paramètres lors de l\'export'), ['bunch' => Fluidbook_Setting::class]);
}
--- /dev/null
+@if ($crud->hasAccess('delete'))
+ <a href="javascript:void(0)" onclick="deleteEntry(this)" data-route="{{ url($crud->route.'/'.$entry->getKey()) }}" class="btn btn-sm btn-link" data-button-type="delete"><i class="la la-trash"></i> {{ trans('backpack::crud.delete') }}</a>
+@endif
+
+{{-- Button Javascript --}}
+{{-- - used right away in AJAX operations (ex: List) --}}
+{{-- - pushed to the end of the page, after jQuery is loaded, for non-AJAX operations (ex: Show) --}}
+@push('after_scripts') @if (request()->ajax()) @endpush @endif
+<script>
+
+ if (typeof deleteEntry != 'function') {
+ $("[data-button-type=delete]").unbind('click');
+
+ function deleteEntry(button) {
+ // ask for confirmation before deleting an item
+ // e.preventDefault();
+ var route = $(button).attr('data-route');
+
+ Swal.fire({
+ title: "{!! trans('backpack::base.warning') !!}",
+ text: "{!! trans('backpack::crud.delete_confirm') !!}",
+ icon: "warning",
+ buttons: ["{!! trans('backpack::crud.cancel') !!}", "{!! trans('backpack::crud.delete') !!}"],
+ dangerMode: true,
+ }).then((value) => {
+ if (value) {
+ $.ajax({
+ url: route,
+ type: 'DELETE',
+ success: function(result) {
+ if (result == 1) {
+ // Redraw the table
+ if (typeof crud != 'undefined' && typeof crud.table != 'undefined') {
+ // Move to previous page in case of deleting the only item in table
+ if(crud.table.rows().count() === 1) {
+ crud.table.page("previous");
+ }
+
+ crud.table.draw(false);
+ }
+
+ // Show a success notification bubble
+ new Noty({
+ type: "success",
+ text: "{!! '<strong>'.trans('backpack::crud.delete_confirmation_title').'</strong><br>'.trans('backpack::crud.delete_confirmation_message') !!}"
+ }).show();
+
+ // Hide the modal, if any
+ $('.modal').modal('hide');
+ } else {
+ // if the result is an array, it means
+ // we have notification bubbles to show
+ if (result instanceof Object) {
+ // trigger one or more bubble notifications
+ Object.entries(result).forEach(function(entry, index) {
+ var type = entry[0];
+ entry[1].forEach(function(message, i) {
+ new Noty({
+ type: type,
+ text: message
+ }).show();
+ });
+ });
+ } else {// Show an error alert
+ swal({
+ title: "{!! trans('backpack::crud.delete_confirmation_not_title') !!}",
+ text: "{!! trans('backpack::crud.delete_confirmation_not_message') !!}",
+ icon: "error",
+ timer: 4000,
+ buttons: false,
+ });
+ }
+ }
+ },
+ error: function(result) {
+ // Show an alert with the result
+ swal({
+ title: "{!! trans('backpack::crud.delete_confirmation_not_title') !!}",
+ text: "{!! trans('backpack::crud.delete_confirmation_not_message') !!}",
+ icon: "error",
+ timer: 4000,
+ buttons: false,
+ });
+ }
+ });
+ }
+ });
+
+ }
+ }
+
+ // make it so that the function above is run after each DataTable draw event
+ // crud.addFunctionToDataTablesDrawEventQueue('deleteEntry');
+</script>
+@if (!request()->ajax()) @endpush @endif
{{-- __('!! Collections de fluidbooks') --}}
@php
$v=$entry->version?:'online';
+ $servers=\App\Models\FluidbookExternalInstallServer::getAllServers();
$vname=\App\Fields\FluidbookExportVersion::getVersions()[$v]['short'];
- $actions=['download'=>__('Télécharger la version :version',['version'=>$vname]),'install_hosting'=>__('Installer la version online sur hosting')];
+ $actions=['download'=>__('Télécharger la version :version',['version'=>$vname])];
+
+ if($entry->install && $entry->install->server && isset($servers[$entry->install->server])){
+ $server=$servers[$entry->install->server];
+ if($entry->install->path || $server['allows_root']){
+ $actions['install']=[
+ 'label'=>__('Installer sur le serveur :server',['server'=>'<strong>'.$server['name'].'</strong>']).' <span class="small"><span class="grey">'.$server['base_url'].'</span>'.$entry->install->path.'</span>',
+ ];
+ }
+ }
+
if($entry->type==='scorm_multilang'){
$actions['scormcloud']=__('Tester sur Scorm Cloud');
}