use \Backpack\CRUD\app\Http\Controllers\Operations\CloneOperation;
use \Backpack\CRUD\app\Http\Controllers\Operations\DeleteOperation;
use \Cubist\Backpack\Http\Controllers\Operations\ReviseOperation;
-
+
/*
--- /dev/null
+<?php
+
+namespace App\Http\Controllers\Admin\Operations\FluidbookPublication;
+
+use Illuminate\Support\Facades\Route;
+
+trait EditOperation
+{
+
+ protected function setupEditRoutes($segment, $routeName, $controller)
+ {
+ Route::match(['get'], $segment . '/{id}/edit/links', $controller . '@links');
+ }
+
+ protected function setupEditDefaults()
+ {
+ $this->crud->addButton('line', 'edit', 'view', 'crud::buttons.fluidbook_publication.edit', 'end');
+ $this->crud->operation(['list', 'show'], function () {
+ $this->crud->removeButton('update');
+ });
+ }
+
+ public function links($id)
+ {
+ return 'Link editor of ' . $id;
+ }
+}
use App\Http\Controllers\Admin\Operations\FluidbookPublication\DownloadOperation;
use App\Http\Controllers\Admin\Operations\FluidbookPublication\PreviewOperation;
use App\Http\Controllers\Admin\Operations\FluidbookPublication\StatsOperation;
+use App\Http\Controllers\Admin\Operations\FluidbookPublication\EditOperation;
use App\Models\Base\ToolboxSettingsModel;
use App\Models\Traits\PublicationSettings;
use App\Models\Traits\SCORMVersionTrait;
protected static $_docs = [];
- protected $_operations = [PreviewOperation::class, CompositionOperation::class, DownloadOperation::class, StatsOperation::class];
+ protected $_operations = [PreviewOperation::class, EditOperation::class, CompositionOperation::class, StatsOperation::class, DownloadOperation::class];
protected $casts = ['composition' => 'array'];
{
public function getSCORMVersion()
{
- if ((isset($this->scorm_enable) && !$this->scorm_enable) || !$this->scorm_version) {
+ if (!$this->isSCORMEnabled()) {
return '-';
}
$map = ['1.2' => '1.2', '2004' => '2004', '2004.3' => '2004 <sup>3rd ed.</sup>'];
return $map[$this->scorm_version];
}
+
+ public function isSCORMEnabled()
+ {
+ return (isset($this->scorm_enable) && $this->scorm_enable) && $this->scorm_version;
+ }
}
selector: '[data-context-actions]', trigger: 'left', build: function ($trigger, e) {
var route = $($trigger).data('context-route');
var id = $($trigger).data('context-id');
- var actions = $($trigger).data('context-actions');
+ var rawActions = $($trigger).data('context-actions');
var items = {};
var confirm = $($trigger).data('context-confirm');
- $.each(actions, function (key, name) {
- items[key] = {name: name};
+
+ var actions = {};
+ $.each(rawActions, function (key, action) {
+ if (typeof action === 'string') {
+ action = {'label': action};
+ }
+ if (action.url === undefined) {
+ action.url = route;
+ }
+ action.url = replaceVariables(action.url, key);
+ if (action.target === undefined) {
+ action.target = '_self';
+ }
+ actions[key] = action;
+ });
+
+ $.each(actions, function (key, action) {
+ items[key] = {name: action.label};
});
function replaceVariables(template, action) {
return {
callback: function (key, options) {
- var url = replaceVariables(route, key);
+
var ok = function () {
- window.location = url;
+ var target = actions[key].target;
+ var url = actions[key].url;
+ if (target === '_self') {
+ window.location = url;
+ } else {
+ window.open(url, target);
+ }
return true;
}
- console.log(confirm);
- if (confirm === null || confirm===undefined) {
+ if (confirm === null || confirm === undefined) {
return ok();
}
swal({
title: confirm.title,
- text: replaceVariables(confirm.text, actions[key]),
+ text: replaceVariables(confirm.text, actions[key].label),
icon: "info",
buttons: {
cancel: {
--- /dev/null
+@php
+ $actions=[
+ 'settings'=>
+ [
+ 'label'=>__('Modifier les paramètres'),
+ 'url'=>$crud->route.'/$id/edit'
+ ],
+ 'links'=>
+ [
+ 'label'=>__('Modifier les liens'),
+ 'url'=>$crud->route.'/$id/edit/$action',
+ 'target'=>'_blank'
+ ]
+ ];
+@endphp
+<a class="btn btn-sm btn-link" href="#"
+ data-toggle="tooltip"
+ title="{{__('Éditer la publication')}}"
+ data-context-actions="{{json_encode($actions)}}"
+ data-context-route="{{$crud->route}}/$id/edit/$action"
+ data-context-id="{{$entry->getKey()}}"
+>
+ <i class="la la-edit"></i> {{__('Éditer')}}
+</a>
-<a class="btn btn-sm btn-link" target="_blank" href="{{$crud->route}}/preview/{{$entry->id}}_{{$entry->hash}}"
+@php
+ $actions=['preview'=>['label'=>__('Version online'),'url'=>$crud->route.'/preview/$id_'.$entry->hash,'target'=>'_blank']];
+ if($entry->isSCORMEnabled()){
+ $actions['scorm']=['label'=>__('Version SCORM'),'url'=>$crud->route.'/preview/scorm/$id_'.$entry->hash,'target'=>'_blank'];
+ }
+@endphp
+
+<a class="btn btn-sm btn-link" target="{!! $actions['preview']['target'] !!}" href="{!! $actions['preview']['url'] !!}"
+ @if(count($actions)>1)
+ data-context-actions="{{json_encode($actions)}}"
+ data-context-route="{{$crud->route}}/$id/edit/$action"
+ data-context-id="{{$entry->getKey()}}"
+ @endif
data-toggle="tooltip"
title="{{__('Voir le fluidbook')}}"><i class="las la-eye"></i> {{__('Voir')}}
</a>