protected $_oldRoot = '/home/extranet/www/fluidbook/';
protected static $_admin = 5;
+ const WS3_BOOK_ID = 30000;
+ const WS3_DOC_ID = 200000;
+
public function handle()
{
$user = AuthUser::where('id', self::$_admin)->first();
PHP::neverStop();
- $ws3step = 200000;
-
$q = DB::table($this->_oldDB . '.documents')->orderBy('document_id', 'desc');
if ($this->option('documents') === 'missing') {
- $maxID = FluidbookDocument::where('id', '<', $ws3step)->orderBy('id', 'DESC')->first()->id;
+ $maxID = FluidbookDocument::where('id', '<', self::WS3_DOC_ID)->orderBy('id', 'DESC')->first()->id;
$q = DB::table($this->_oldDB . '.documents')->where('document_id', '>', $maxID)->orderBy('document_id', 'desc');
} else if ($this->option('documents') === 'v2') {
- DB::update('DELETE FROM fluidbook_document WHERE id<' . $ws3step);
+ DB::update('DELETE FROM fluidbook_document WHERE id<' . self::WS3_DOC_ID);
} else if ($this->option('documents') === 'all') {
FluidbookDocument::truncate();
} else {
$c->saveWithoutFlushingCache();
}
if ($this->option('documents') === 'all') {
- DB::update('ALTER TABLE ' . $c->getTable() . ' AUTO_INCREMENT = ' . $ws3step . ';');
+ DB::update('ALTER TABLE ' . $c->getTable() . ' AUTO_INCREMENT = ' . self::WS3_DOC_ID . ';');
}
}
}
PHP::neverStop();
- $ws3step = 30000;
+
$map = ['book_id' => 'id',
'nom' => 'name',
$q = DB::table($this->_oldDB . '.books')->orderBy('book_id', 'asc');
if ($this->option('publications') === 'v2') {
- DB::update('DELETE FROM fluidbook_publication WHERE id<' . $ws3step);
+ DB::update('DELETE FROM fluidbook_publication WHERE id<' . self::WS3_BOOK_ID);
} else if ($this->option('publications') === 'all') {
FluidbookPublication::truncate();
} else {
}
}
if ($reset) {
- DB::update('ALTER TABLE ' . $c->getTable() . ' AUTO_INCREMENT = ' . $ws3step . ';');
+ DB::update('ALTER TABLE ' . $c->getTable() . ' AUTO_INCREMENT = ' . self::WS3_BOOK_ID . ';');
}
}
--- /dev/null
+<?php
+
+namespace App\Http\Controllers\Admin\Operations\FluidbookPublication;
+
+use App\Console\Commands\WorkshopMigration;
+use App\Models\FluidbookPublication;
+use Illuminate\Support\Facades\Route;
+
+trait DeletefbOperation
+{
+
+ /**
+ * Define which routes are needed for this operation.
+ *
+ * @param string $segment Name of the current entity (singular). Used as first URL segment.
+ * @param string $routeName Prefix of the route name.
+ * @param string $controller Name of the current CrudController.
+ */
+ protected function setupDeletefbRoutes($segment, $routeName, $controller)
+ {
+ Route::delete($segment . '/{id}', [
+ 'as' => $routeName . '.destroyfb',
+ 'uses' => $controller . '@destroyfb',
+ 'operation' => 'deletefb',
+ ]);
+ }
+
+ /**
+ * Add the default settings, buttons, etc that this operation needs.
+ */
+ protected function setupDeletefbDefaults()
+ {
+ $this->crud->allowAccess('delete');
+//
+// $this->crud->operation('delete', function () {
+// $this->crud->loadDefaultOperationSettingsFromConfig();
+// });
+
+ $this->crud->addButton('line', 'deletefb', 'view', 'crud::buttons.fluidbook_publication.delete', 'end');
+ $this->crud->operation(['list', 'show'], function () {
+ $this->crud->removeButton('delete');
+
+ });
+ }
+
+ public function _allowsDelete($entry=null)
+ {
+ if(null===$entry){
+ $entry=$this->crud->getEntry();
+ }
+ if(!$entry->allowsDelete()){
+ return false;
+ }
+ if (!FluidbookPublication::hasPermission($entry)) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Remove the specified resource from storage.
+ *
+ * @param int $id
+ * @return string
+ */
+ public function destroyfb($id)
+ {
+ if (self::_allowsDelete($id)) {
+ abort(401);
+ }
+
+ $this->crud->hasAccessOrFail('delete');
+
+ // get entry ID from Request (makes sure its the last ID for nested resources)
+ $id = $this->crud->getCurrentEntryId() ?? $id;
+
+
+ return $this->crud->delete($id);
+ }
+
+}
namespace App\Models\Base;
use App\Fields\User;
+use App\Models\FluidbookPublication;
use Cubist\Backpack\Magic\Fields\HiddenDatetime;
use Cubist\Backpack\Magic\Models\CubistMagicAbstractModel;
use Illuminate\Database\Eloquent\Builder;
if (!$user->hasPermissionTo(static::$_permissionBase . ':' . $permission)) {
return false;
}
+ if($id instanceof FluidbookPublication){
+ return true;
+ }
$entry = static::find($id);
if (null === $entry) {
return false;
namespace App\Models;
+use App\Console\Commands\WorkshopMigration;
use App\Fields\FluidbookChapters;
use App\Fields\FluidbookComposition;
use App\Fields\FluidbookLocale;
-use App\Fields\FluidbookTitle;
use App\Fields\User;
use App\Http\Controllers\Admin\Operations\FluidbookPublication\CompositionOperation;
+use App\Http\Controllers\Admin\Operations\FluidbookPublication\DeletefbOperation;
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\Models\Traits\PublicationSettings;
use App\Models\Traits\SCORMVersionTrait;
use App\Util\FluidbookLinks;
+use Backpack\CRUD\app\Http\Controllers\Operations\CloneOperation;
use Backpack\CRUD\app\Library\Widget;
use Cubist\Backpack\Magic\Fields\FormBigSection;
use Cubist\Backpack\Magic\Fields\FormSuperSection;
use Cubist\Backpack\Magic\Fields\Hidden;
use Cubist\Backpack\Magic\Fields\Integer;
use Cubist\Backpack\Magic\Fields\SelectFromArray;
+use Cubist\Backpack\Magic\Operations\CreateOperation;
use Cubist\Util\Files\Files;
use Cubist\Util\Graphics\Image;
use Cubist\Util\Json;
'singular' => 'publication',
'plural' => 'publications'];
+ protected $_enableDeletion = false;
protected $_enableBulk = false;
+ protected $_enableClone = false;
+ protected $_enableCreation = false;
protected $_enableTrackNonDefaultValues = true;
protected static $_permissionBase = 'fluidbook-publication';
protected static $_docs = [];
- protected $_operations = [PreviewOperation::class, EditOperation::class, CompositionOperation::class, StatsOperation::class, DownloadOperation::class];
+ protected $_operations = [CreateOperation::class, PreviewOperation::class, EditOperation::class, CompositionOperation::class, StatsOperation::class, DownloadOperation::class, CloneOperation::class, DeletefbOperation::class];
protected $casts = ['composition' => 'array'];
protected $_documentsSize = null;
+
use PublicationSettings;
use SCORMVersionTrait;
}
return Json::decode($this->chapters, true);
}
+
+ public function allowsDelete()
+ {
+ if (!can('fluidbook-publication:admin')) {
+ return false;
+ }
+ if ($this->id < WorkshopMigration::WS3_BOOK_ID) {
+ return false;
+ }
+ if ($this->status >= 1) {
+ return false;
+ }
+ return true;
+ }
}
--- /dev/null
+@if($entry->allowsDelete())
+ @include('crud::buttons.delete')
+@endif
]
];
@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>
+@if($entry->getKey()>=\App\Console\Commands\WorkshopMigration::WS3_BOOK_ID)
+ <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>
+@endif