return true;
}
- public function hasAccess($operation)
+ public function hasAccess($operation, $entry = null): bool
{
// First filter with standard backpack gate
- if (!parent::hasAccess($operation)) {
+ if (!parent::hasAccess($operation, $entry)) {
return false;
}
+ $model = $entry ?? $this->entry ?? $this->model;
+
// Then, apply model rules
- if ($this->model instanceof CubistMagicAbstractModel) {
+ if ($model instanceof CubistMagicAbstractModel) {
$funcMap = [
'show' => 'canList',
'infos' => 'canList',
} else {
$func = 'can' . ucfirst($operation);
}
- $model = $this->entry ?? $this->model;
+
if (is_callable([$model, $func])) {
return $model->$func(backpack_user());
}
return request()->get('embeded', '0') != '0';
}
- public function hasAccessOrFail($operation)
- {
- if (!$this->hasAccess($operation)) {
- throw new AccessDeniedException(trans('backpack::crud.unauthorized_access', ['access' => $operation]));
- }
- return true;
- }
-
- public function hasAccessToAll($operation_array)
- {
- foreach ((array)$operation_array as $key => $operation) {
- if (!$this->hasAccess($operation)) {
- return false;
- }
- }
- return true;
- }
-
- public function hasAccessToAny($operation_array)
- {
- foreach ((array)$operation_array as $key => $operation) {
- if ($this->hasAccess($operation) == true) {
- return true;
- }
- }
- return false;
- }
-
/**
* @param $model CubistMagicAbstractModel
*/
class Checkbox extends Field
{
- protected $_adminType = 'toggle';
+ protected $_adminType = 'switch';
protected $_databaseType = 'boolean';
protected $_columnType = 'check';
protected $_cast = 'boolean';
- protected $_viewNamespace = 'toggle-field-for-backpack::fields';
protected $_filterType = 'dropdown';
public function filterDefault($value)
@endphp
@section('header')
- <section class="container-fluid">
- <h2>
- <span class="text-capitalize">{!! $crud->getHeading() ?? $crud->entity_name_plural !!}</span>
- <small>{!! $crud->getSubheading() ?? trans('backpack::crud.add').' '.$crud->entity_name !!}.</small>
-
+ <section class="header-operation container-fluid animated fadeIn d-flex mb-2 align-items-baseline d-print-none" bp-section="page-header">
+ <h1 class="text-capitalize mb-0" bp-section="page-heading">{!! $crud->getHeading() ?? $crud->entity_name_plural !!}</h1>
+ <p class="ms-2 ml-2 mb-0" bp-section="page-subheading">{!! $crud->getSubheading() ?? trans('backpack::crud.add').' '.$crud->entity_name !!}.</p>
@if ($crud->hasAccess('list'))
- <small><a href="{{ url($crud->route) }}" class="hidden-print font-sm"><i class="la la-angle-double-{{ config('backpack.base.html_direction') == 'rtl' ? 'right' : 'left' }}"></i> {{ trans('backpack::crud.back_to_all') }} <span>{{ $crud->entity_name_plural }}</span></a></small>
+ <p class="mb-0 ms-2 ml-2" bp-section="page-subheading-back-button">
+ <small>
+ <a href="{{ url($crud->route) }}" class="d-print-none font-sm">
+ <span><i class="la la-angle-double-{{ config('backpack.base.html_direction') == 'rtl' ? 'right' : 'left' }}"></i> {{ trans('backpack::crud.back_to_all') }} <span>{{ $crud->entity_name_plural }}</span></span>
+ </a>
+ </small>
+ </p>
@endif
- </h2>
</section>
@endsection
@section('content')
- <div class="row">
+<div class="row" bp-section="crud-operation-create">
<div class="{{ $crud->getCreateContentClass() }}">
- <!-- Default box -->
+ {{-- Default box --}}
@include('crud::inc.grouped_errors')
@endif
>
{!! csrf_field() !!}
- <!-- load the view from the application if it exists, otherwise load the one in the package -->
+ {{-- load the view from the application if it exists, otherwise load the one in the package --}}
@if(view()->exists('vendor.backpack.crud.form_content'))
@include('vendor.backpack.crud.form_content', [ 'fields' => $crud->fields(), 'action' => 'create' ])
@else
@include('crud::form_content', [ 'fields' => $crud->fields(), 'action' => 'create' ])
@endif
-
+ {{-- This makes sure that all field assets are loaded. --}}
+ <div class="d-none" id="parentLoadedAssets">{{ json_encode(Basset::loaded()) }}</div>
@include('crud::inc.form_save_buttons')
</form>
</div>
@endphp
@section('header')
- <section class="container-fluid">
- <h2>
- <span class="text-capitalize">{!! $crud->getHeading() ?? $crud->entity_name_plural !!}</span>
- <small>{!! $crud->getSubheading() ?? trans('backpack::crud.edit').' '.$crud->entity_name !!}.</small>
-
+ <section class="header-operation container-fluid animated fadeIn d-flex mb-2 align-items-baseline d-print-none" bp-section="page-header">
+ <h1 class="text-capitalize mb-0" bp-section="page-heading">{!! $crud->getHeading() ?? $crud->entity_name_plural !!}</h1>
+ <p class="ms-2 ml-2 mb-0" bp-section="page-subheading">{!! $crud->getSubheading() ?? trans('backpack::crud.edit').' '.$crud->entity_name !!}.</p>
@if ($crud->hasAccess('list'))
- <small><a href="{{ url($crud->route) }}" class="d-print-none font-sm"><i
- class="la la-angle-double-{{ config('backpack.base.html_direction') == 'rtl' ? 'right' : 'left' }}"></i> {{ trans('backpack::crud.back_to_all') }}
- <span>{{ $crud->entity_name_plural }}</span></a></small>
+ <p class="mb-0 ms-2 ml-2" bp-section="page-subheading-back-button">
+ <small><a href="{{ url($crud->route) }}" class="d-print-none font-sm"><i class="la la-angle-double-{{ config('backpack.base.html_direction') == 'rtl' ? 'right' : 'left' }}"></i> {{ trans('backpack::crud.back_to_all') }} <span>{{ $crud->entity_name_plural }}</span></a></small>
+ </p>
@endif
- </h2>
</section>
@endsection
@section('content')
- <div class="row">
+<div class="row" bp-section="crud-operation-update">
<div class="{{ $crud->getEditContentClass() }}">
{{-- Default box --}}
<div class="mb-2 text-right">
{{-- Single button --}}
<div class="btn-group">
- <button type="button" class="btn btn-sm btn-primary dropdown-toggle" data-toggle="dropdown"
- aria-haspopup="true" aria-expanded="false">
+ <button type="button" class="btn btn-sm btn-primary dropdown-toggle" data-toggle="dropdown" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
{{trans('backpack::crud.language')}}
: {{ $crud->model->getAvailableLocales()[request()->input('_locale')?request()->input('_locale'):App::getLocale()] }}
<span class="caret"></span>
@include('crud::form_content', ['fields' => $crud->fields(), 'action' => 'edit'])
@endif
{{-- This makes sure that all field assets are loaded. --}}
- <div class="d-none" id="parentLoadedAssets">{{ json_encode(Assets::loaded()) }}</div>
+ <div class="d-none" id="parentLoadedAssets">{{ json_encode(Basset::loaded()) }}</div>
@include('crud::inc.form_save_buttons')
</form>
</div>