From: Vincent Vanwaelscappel Date: Wed, 10 Apr 2024 17:54:44 +0000 (+0200) Subject: wip #6857 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=c9022e895edc27ae87085f01197d4ba230d27863;p=bastide-resah.git wip #6857 --- diff --git a/app/Models/Client.php b/app/Models/Client.php new file mode 100644 index 0000000..a92e944 --- /dev/null +++ b/app/Models/Client.php @@ -0,0 +1,14 @@ + - */ - protected $fillable = [ - 'name', - 'email', - 'password', - ]; - /** - * The attributes that should be hidden for serialization. - * - * @var array - */ - protected $hidden = [ - 'password', - 'remember_token', - ]; +class User extends CubistMagicAuthenticatable +{ - /** - * The attributes that should be cast. - * - * @var array - */ - protected $casts = [ - 'email_verified_at' => 'datetime', - 'password' => 'hashed', - ]; } diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index 54756cd..a969f62 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -4,6 +4,7 @@ namespace App\Providers; // use Illuminate\Support\Facades\Gate; use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; +use Illuminate\Support\Facades\Gate; class AuthServiceProvider extends ServiceProvider { @@ -19,8 +20,12 @@ class AuthServiceProvider extends ServiceProvider /** * Register any authentication / authorization services. */ - public function boot(): void + public function boot() { - // + $this->registerPolicies(); + Gate::before(function ($user, $ability) { + return $user->hasRole('superadmin') ? true : null; + }); + } } diff --git a/config/auth.php b/config/auth.php index d2651cb..8b1abfe 100644 --- a/config/auth.php +++ b/config/auth.php @@ -65,6 +65,11 @@ return [ 'model' => App\Models\User::class, ], + 'backpack' => [ + 'driver' => 'eloquent', + 'model' => App\Models\User::class, + ], + // 'users' => [ // 'driver' => 'database', // 'table' => 'users', diff --git a/resources/views/vendor/backpack/base/auth/emails/password.blade.php b/resources/views/vendor/backpack/base/auth/emails/password.blade.php new file mode 100644 index 0000000..c167c7f --- /dev/null +++ b/resources/views/vendor/backpack/base/auth/emails/password.blade.php @@ -0,0 +1 @@ +{{ trans('backpack::base.click_here_to_reset') }}: {{ $link }} diff --git a/resources/views/vendor/backpack/base/auth/login.blade.php b/resources/views/vendor/backpack/base/auth/login.blade.php new file mode 100644 index 0000000..b47df68 --- /dev/null +++ b/resources/views/vendor/backpack/base/auth/login.blade.php @@ -0,0 +1,68 @@ +@extends(backpack_view('layouts.plain')) + +@section('content') +
+
+

{{ trans('backpack::base.login') }}

+
+
+
+ {!! csrf_field() !!} + +
+ + +
+ + + @if ($errors->has($username)) + + {{ $errors->first($username) }} + + @endif +
+
+ +
+ + +
+ + + @if ($errors->has('password')) + + {{ $errors->first('password') }} + + @endif +
+
+ +
+
+
+ +
+
+
+ +
+
+ +
+
+
+
+
+ @if (backpack_users_have_email() && backpack_email_column() == 'email' && config('backpack.base.setup_password_recovery_routes', true)) + + @endif + @if (config('backpack.base.registration_open')) + + @endif +
+
+@endsection diff --git a/resources/views/vendor/backpack/base/auth/passwords/email.blade.php b/resources/views/vendor/backpack/base/auth/passwords/email.blade.php new file mode 100644 index 0000000..6054f43 --- /dev/null +++ b/resources/views/vendor/backpack/base/auth/passwords/email.blade.php @@ -0,0 +1,64 @@ +@extends(backpack_view('layouts.plain')) + +{{-- Main Content --}} +@section('content') +
+
+

{{ trans('backpack::base.reset_password') }}

+ + + +
+ {{ trans('backpack::base.login') }} + + @if (config('backpack.base.registration_open')) + / {{ trans('backpack::base.register') }} + @endif +
+
+
+@endsection diff --git a/resources/views/vendor/backpack/base/auth/passwords/reset.blade.php b/resources/views/vendor/backpack/base/auth/passwords/reset.blade.php new file mode 100644 index 0000000..8f83034 --- /dev/null +++ b/resources/views/vendor/backpack/base/auth/passwords/reset.blade.php @@ -0,0 +1,83 @@ +@extends(backpack_view('layouts.plain')) + +@section('content') +
+
+

{{ trans('backpack::base.reset_password') }}

+ + +
+
+@endsection diff --git a/resources/views/vendor/backpack/base/auth/register.blade.php b/resources/views/vendor/backpack/base/auth/register.blade.php new file mode 100644 index 0000000..0555f8e --- /dev/null +++ b/resources/views/vendor/backpack/base/auth/register.blade.php @@ -0,0 +1,84 @@ +@extends(backpack_view('layouts.plain')) + +@section('content') +
+
+

{{ trans('backpack::base.register') }}

+
+
+
+ {!! csrf_field() !!} + +
+ + +
+ + + @if ($errors->has('name')) + + {{ $errors->first('name') }} + + @endif +
+
+ +
+ + +
+ + + @if ($errors->has(backpack_authentication_column())) + + {{ $errors->first(backpack_authentication_column()) }} + + @endif +
+
+ +
+ + +
+ + + @if ($errors->has('password')) + + {{ $errors->first('password') }} + + @endif +
+
+ +
+ + +
+ + + @if ($errors->has('password_confirmation')) + + {{ $errors->first('password_confirmation') }} + + @endif +
+
+ +
+
+ +
+
+
+
+
+ @if (backpack_users_have_email() && backpack_email_column() == 'email' && config('backpack.base.setup_password_recovery_routes', true)) + + @endif + +
+
+@endsection diff --git a/resources/views/vendor/backpack/base/blank.blade.php b/resources/views/vendor/backpack/base/blank.blade.php new file mode 100644 index 0000000..892031b --- /dev/null +++ b/resources/views/vendor/backpack/base/blank.blade.php @@ -0,0 +1,33 @@ +@extends(backpack_view('layouts.top_left')) + +@php + // Merge widgets that were fluently declared with widgets declared without the fluent syntax: + // - $data['widgets']['before_content'] + // - $data['widgets']['after_content'] + if (isset($widgets)) { + foreach ($widgets as $section => $widgetSection) { + foreach ($widgetSection as $key => $widget) { + \Backpack\CRUD\app\Library\Widget::add($widget)->section($section); + } + } + } +@endphp + +@section('before_breadcrumbs_widgets') + @include(backpack_view('inc.widgets'), [ 'widgets' => app('widgets')->where('section', 'before_breadcrumbs')->toArray() ]) +@endsection + +@section('after_breadcrumbs_widgets') + @include(backpack_view('inc.widgets'), [ 'widgets' => app('widgets')->where('section', 'after_breadcrumbs')->toArray() ]) +@endsection + +@section('before_content_widgets') + @include(backpack_view('inc.widgets'), [ 'widgets' => app('widgets')->where('section', 'before_content')->toArray() ]) +@endsection + +@section('content') +@endsection + +@section('after_content_widgets') + @include(backpack_view('inc.widgets'), [ 'widgets' => app('widgets')->where('section', 'after_content')->toArray() ]) +@endsection \ No newline at end of file diff --git a/resources/views/vendor/backpack/base/dashboard.blade.php b/resources/views/vendor/backpack/base/dashboard.blade.php new file mode 100644 index 0000000..b20efb1 --- /dev/null +++ b/resources/views/vendor/backpack/base/dashboard.blade.php @@ -0,0 +1,21 @@ +@extends(backpack_view('blank')) + +@php + if (config('backpack.base.show_getting_started')) { + $widgets['before_content'][] = [ + 'type' => 'view', + 'view' => 'backpack::inc.getting_started', + ]; + } else { + $widgets['before_content'][] = [ + 'type' => 'jumbotron', + 'heading' => trans('backpack::base.welcome'), + 'content' => trans('backpack::base.use_sidebar'), + 'button_link' => backpack_url('logout'), + 'button_text' => trans('backpack::base.logout'), + ]; + } +@endphp + +@section('content') +@endsection diff --git a/resources/views/vendor/backpack/base/inc/alerts.blade.php b/resources/views/vendor/backpack/base/inc/alerts.blade.php new file mode 100644 index 0000000..6c26336 --- /dev/null +++ b/resources/views/vendor/backpack/base/inc/alerts.blade.php @@ -0,0 +1,47 @@ +{{-- Bootstrap Notifications using Prologue Alerts & PNotify JS --}} + diff --git a/resources/views/vendor/backpack/base/inc/breadcrumbs.blade.php b/resources/views/vendor/backpack/base/inc/breadcrumbs.blade.php new file mode 100644 index 0000000..05e449d --- /dev/null +++ b/resources/views/vendor/backpack/base/inc/breadcrumbs.blade.php @@ -0,0 +1,13 @@ +@if (config('backpack.base.breadcrumbs') && isset($breadcrumbs) && is_array($breadcrumbs) && count($breadcrumbs)) + +@endif diff --git a/resources/views/vendor/backpack/base/inc/footer.blade.php b/resources/views/vendor/backpack/base/inc/footer.blade.php new file mode 100644 index 0000000..b8b9300 --- /dev/null +++ b/resources/views/vendor/backpack/base/inc/footer.blade.php @@ -0,0 +1,10 @@ +@if (config('backpack.base.show_powered_by') || config('backpack.base.developer_link')) +
+ @if (config('backpack.base.developer_link') && config('backpack.base.developer_name')) + {{ trans('backpack::base.handcrafted_by') }} {{ config('backpack.base.developer_name') }}. + @endif + @if (config('backpack.base.show_powered_by')) + {{ trans('backpack::base.powered_by') }} Backpack for Laravel. + @endif +
+@endif \ No newline at end of file diff --git a/resources/views/vendor/backpack/base/inc/full_screen_loader.blade.php b/resources/views/vendor/backpack/base/inc/full_screen_loader.blade.php new file mode 100644 index 0000000..00f4bee --- /dev/null +++ b/resources/views/vendor/backpack/base/inc/full_screen_loader.blade.php @@ -0,0 +1,136 @@ +@push('after_styles') + +@endpush + +@push('after_scripts') + +@endpush diff --git a/resources/views/vendor/backpack/base/inc/getting_started.blade.php b/resources/views/vendor/backpack/base/inc/getting_started.blade.php new file mode 100644 index 0000000..a90c5b8 --- /dev/null +++ b/resources/views/vendor/backpack/base/inc/getting_started.blade.php @@ -0,0 +1,127 @@ +
+
+ +

Getting Started

+

If it's your first time using Backpack, we heavily recommend you follow the steps below:

+ +
+
+ +
+
+

You've already got a model, App\Models\User... all Laravel projects do. So let's create a page to administer users. We want the admin to Create, Read, Update and Delete them. In Backpack, we call that a CRUD. And you can easily generate one for an existing Eloquent model, by running:

+

+ php artisan backpack:crud user +

+

Run that in your terminal and choose field when asked which validation type you'd like. You can now click on the new sidebar item (or here) and you'll be able to see the entries in the users table. Now... even though most generated CRUDs work out-of-the-box, they probably won't be exactly what you need. But that's where Backpack shines, in how easy it is to customize.

+ +

To dig a little deeper, let's make a few changes to the Users CRUD

+ +
+

1. When Listing, let's remove the "password" column - no point in showing the hash. To do that, go to UserCrudController::setupListOperation() and remove the line saying CRUD::column('password'); - easy-peasy, right?

+

2. On Create & Update, let's add validation to forms. There are multiple ways to add validation but we've already chosen the simplest, validation using field attributes. Let's go to setupCreateOperation() and specify our validation rules directly on the fields: +

+


+    CRUD::field('name')->validationRules('required|min:5');
+    CRUD::field('email')->validationRules('required|email|unique:users,email');
+    CRUD::field('password')->validationRules('required');
+                  
+

+

3. On Create, let's hash the password. Currently, if we create a new User, it'll work. But if you look in the database... you'll notice the password is stored in plain text. We don't want that - we want it hashed. There are multiple ways to achieve this too. Let's use Model Events inside setupCreateOperation(). Here's how our method could look, when we also tap into the creating event, to hash the password:

+

+


+      protected function setupCreateOperation()
+      {
+          CRUD::field('name')->validationRules('required|min:5');
+          CRUD::field('email')->validationRules('required|email|unique:users,email');
+          CRUD::field('password')->validationRules('required');
+
+          \App\Models\User::creating(function ($entry) {
+              $entry->password = \Hash::make($entry->password);
+          });
+      }
+                
+

+

4. On Update, let's not require the password. It should only be needed if an admin wants to change it, right? That means the validation rules will be different for "password". But then again... the rules will also be different for "email" (because on Update, we need to pass the ID to the unique rule in Laravel). Since 2/3 rules are different, let's just delete what was inside setupUpdateOperation() and code it from scratch:

+

+


+      protected function setupUpdateOperation()
+      {
+          CRUD::field('name')->validationRules('required|min:5');
+          CRUD::field('email')->validationRules('required|email|unique:users,email,'.CRUD::getCurrentEntryId());
+          CRUD::field('password')->hint('Type a password to change it.');
+
+          \App\Models\User::updating(function ($entry) {
+              if (request('password') == null) {
+                  $entry->password = $entry->getOriginal('password');
+              } else {
+                  $entry->password = \Hash::make(request('password'));
+              }
+          });
+      }
+                
+

+

+ That's it. You have a working Users CRUD. Plus, you've already learned some advanced techniques, like using Model events inside CrudController. Of course, this only scratches the surface of what Backpack can do. To really understand how it works, and how you can best use Backpack's features, we heavily recommend you move on to the next step, and learn the basics. +

+
+
+
+
+
+ +
+
+

So you've created your first CRUD? Excellent. Now it's time to understand how it works and what else you can do. Time to learn the basics - how to build and customize admin panels using Backpack. Please follow one of the courses below, depending on how you prefer to learn:

+ +
+
+
+
+ +
+
+

If you decide to use Backpack, please create a Backpack account and stay subscribed to the Security Newsletter (1-2 emails per year). That way, we can let you know if your admin panel becomes vulnerable in any way.

+

Of course, if you like our free & open-source core, you might also enjoy our premium add-ons:

+
    +
  • PRO - adds 28 fields, 10 filters, 6 columns, 5 operations, 1 widget
  • +
  • DevTools - easily generate Laravel migrations and models, from a web interface
  • +
  • FigmaTemplate - create designs and mockups that are easy to implement in Backpack
  • +
  • EditableColumns - let your admins make quick edits, right from the table view
  • +
+
+
+
+
+ +
+
Go to your config/backpack/base.php and change show_getting_started to false.
+
+
+
+ +

* this card is only visible on localhost. Follow the last step to hide it from localhost too.

+
+
+ +@push('after_styles') + +@endpush + +@push('after_scripts') + + +@endpush diff --git a/resources/views/vendor/backpack/base/inc/head.blade.php b/resources/views/vendor/backpack/base/inc/head.blade.php new file mode 100644 index 0000000..b9c255c --- /dev/null +++ b/resources/views/vendor/backpack/base/inc/head.blade.php @@ -0,0 +1,32 @@ + + + + @if (config('backpack.base.meta_robots_content')) @endif + + {{-- Encrypted CSRF token for Laravel, in order for Ajax requests to work --}} + {{ isset($title) ? $title.' :: '.config('backpack.base.project_name') : config('backpack.base.project_name') }} + + @yield('before_styles') + @stack('before_styles') + + @foreach(config('backpack.base.styles', []) as $path) + + @endforeach + + @foreach(config('backpack.base.mix_styles', []) as $path => $manifest) + + @endforeach + + @if(!empty(config('backpack.base.vite_styles', []))) + @vite(config('backpack.base.vite_styles', [])) + @endif + + @yield('after_styles') + @stack('after_styles') + + {{-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --}} + {{-- WARNING: Respond.js doesn't work if you view the page via file:// --}} + diff --git a/resources/views/vendor/backpack/base/inc/main_header.blade.php b/resources/views/vendor/backpack/base/inc/main_header.blade.php new file mode 100644 index 0000000..d38619d --- /dev/null +++ b/resources/views/vendor/backpack/base/inc/main_header.blade.php @@ -0,0 +1,14 @@ +
+ {{-- Logo --}} + + + {!! config('backpack.base.project_logo') !!} + + + + @include(backpack_view('inc.menu')) +
diff --git a/resources/views/vendor/backpack/base/inc/menu.blade.php b/resources/views/vendor/backpack/base/inc/menu.blade.php new file mode 100644 index 0000000..d62a034 --- /dev/null +++ b/resources/views/vendor/backpack/base/inc/menu.blade.php @@ -0,0 +1,32 @@ +{{-- =================================================== --}} +{{-- ========== Top menu items (ordered left) ========== --}} +{{-- =================================================== --}} + +{{-- ========== End of top menu left items ========== --}} + + + +{{-- ========================================================= --}} +{{-- ========= Top menu right items (ordered right) ========== --}} +{{-- ========================================================= --}} + +{{-- ========== End of top menu right items ========== --}} diff --git a/resources/views/vendor/backpack/base/inc/menu_user_dropdown.blade.php b/resources/views/vendor/backpack/base/inc/menu_user_dropdown.blade.php new file mode 100644 index 0000000..fe64f2b --- /dev/null +++ b/resources/views/vendor/backpack/base/inc/menu_user_dropdown.blade.php @@ -0,0 +1,13 @@ + diff --git a/resources/views/vendor/backpack/base/inc/scripts.blade.php b/resources/views/vendor/backpack/base/inc/scripts.blade.php new file mode 100644 index 0000000..0d5ee1f --- /dev/null +++ b/resources/views/vendor/backpack/base/inc/scripts.blade.php @@ -0,0 +1,69 @@ +@foreach(config('backpack.base.scripts', []) as $path) + +@endforeach + +@foreach(config('backpack.base.mix_scripts', []) as $path => $manifest) + +@endforeach + +@if(!empty(config('backpack.base.vite_scripts', []))) + @vite(config('backpack.base.vite_scripts', [])) +@endif + +@include('backpack::inc.alerts') + +{{-- page script --}} + + +@if(config('app.debug')) + @include('crud::inc.ajax_error_frame') +@endif diff --git a/resources/views/vendor/backpack/base/inc/sidebar.blade.php b/resources/views/vendor/backpack/base/inc/sidebar.blade.php new file mode 100644 index 0000000..93e4c0d --- /dev/null +++ b/resources/views/vendor/backpack/base/inc/sidebar.blade.php @@ -0,0 +1,94 @@ +@if (backpack_auth()->check()) + {{-- Left side column. contains the sidebar --}} +
+ {{-- sidebar: style can be found in sidebar.less --}} + + {{-- /.sidebar --}} +
+@endif + +@push('before_scripts') + +@endpush + +@push('after_scripts') + +@endpush diff --git a/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php b/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php new file mode 100644 index 0000000..1526d56 --- /dev/null +++ b/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php @@ -0,0 +1,2 @@ +{{-- This file is used to store sidebar items, inside the Backpack admin panel --}} + diff --git a/resources/views/vendor/backpack/base/inc/topbar_left_content.blade.php b/resources/views/vendor/backpack/base/inc/topbar_left_content.blade.php new file mode 100644 index 0000000..25c09f7 --- /dev/null +++ b/resources/views/vendor/backpack/base/inc/topbar_left_content.blade.php @@ -0,0 +1,5 @@ +{{-- This file is used to store topbar (left) items --}} + +{{-- + + --}} diff --git a/resources/views/vendor/backpack/base/inc/topbar_right_content.blade.php b/resources/views/vendor/backpack/base/inc/topbar_right_content.blade.php new file mode 100644 index 0000000..9012de1 --- /dev/null +++ b/resources/views/vendor/backpack/base/inc/topbar_right_content.blade.php @@ -0,0 +1,6 @@ +{{-- This file is used to store topbar (right) items --}} + + +{{-- + + --}} diff --git a/resources/views/vendor/backpack/base/inc/widgets.blade.php b/resources/views/vendor/backpack/base/inc/widgets.blade.php new file mode 100644 index 0000000..33b138f --- /dev/null +++ b/resources/views/vendor/backpack/base/inc/widgets.blade.php @@ -0,0 +1,13 @@ +@if (!empty($widgets)) + @foreach ($widgets as $currentWidget) + + @if (is_array($currentWidget)) + @php + $currentWidget = \Backpack\CRUD\app\Library\Widget::add($currentWidget); + @endphp + @endif + + @include($currentWidget->getFinalViewPath(), ['widget' => $currentWidget->toArray()]) + + @endforeach +@endif diff --git a/resources/views/vendor/backpack/base/layouts/plain.blade.php b/resources/views/vendor/backpack/base/layouts/plain.blade.php new file mode 100644 index 0000000..f05906d --- /dev/null +++ b/resources/views/vendor/backpack/base/layouts/plain.blade.php @@ -0,0 +1,27 @@ + + + + @include(backpack_view('inc.head')) + + + + @yield('header') + +
+ @yield('content') +
+ +
+ @include('backpack::inc.footer') +
+ + @yield('before_scripts') + @stack('before_scripts') + + @include(backpack_view('inc.scripts')) + + @yield('after_scripts') + @stack('after_scripts') + + + diff --git a/resources/views/vendor/backpack/base/layouts/top_left.blade.php b/resources/views/vendor/backpack/base/layouts/top_left.blade.php new file mode 100644 index 0000000..ba03b61 --- /dev/null +++ b/resources/views/vendor/backpack/base/layouts/top_left.blade.php @@ -0,0 +1,54 @@ + + + + + + @include(backpack_view('inc.head')) + + + + + + @include(backpack_view('inc.main_header')) + +
+ + @include(backpack_view('inc.sidebar')) + +
+ + @yield('before_breadcrumbs_widgets') + + @includeWhen(isset($breadcrumbs), backpack_view('inc.breadcrumbs')) + + @yield('after_breadcrumbs_widgets') + + @yield('header') + +
+ + @yield('before_content_widgets') + + @yield('content') + + @yield('after_content_widgets') + +
+ +
+ +
{{-- ./app-body --}} + +
+ @include(backpack_view('inc.footer')) +
+ + @yield('before_scripts') + @stack('before_scripts') + + @include(backpack_view('inc.scripts')) + + @yield('after_scripts') + @stack('after_scripts') + + \ No newline at end of file diff --git a/resources/views/vendor/backpack/base/my_account.blade.php b/resources/views/vendor/backpack/base/my_account.blade.php new file mode 100644 index 0000000..92e3e62 --- /dev/null +++ b/resources/views/vendor/backpack/base/my_account.blade.php @@ -0,0 +1,147 @@ +@extends(backpack_view('blank')) + +@section('after_styles') + +@endsection + +@php + $breadcrumbs = [ + trans('backpack::crud.admin') => url(config('backpack.base.route_prefix'), 'dashboard'), + trans('backpack::base.my_account') => false, + ]; +@endphp + +@section('header') +
+
+

{{ trans('backpack::base.my_account') }}

+
+
+@endsection + +@section('content') +
+ + @if (session('success')) +
+
+ {{ session('success') }} +
+
+ @endif + + @if ($errors->count()) +
+
+
    + @foreach ($errors->all() as $e) +
  • {{ $e }}
  • + @endforeach +
+
+
+ @endif + + {{-- UPDATE INFO FORM --}} +
+
+ + {!! csrf_field() !!} + +
+ +
+ {{ trans('backpack::base.update_account_info') }} +
+ +
+
+
+ @php + $label = trans('backpack::base.name'); + $field = 'name'; + @endphp + + +
+ +
+ @php + $label = config('backpack.base.authentication_column_name'); + $field = backpack_authentication_column(); + @endphp + + +
+
+
+ + +
+ +
+
+ + {{-- CHANGE PASSWORD FORM --}} +
+
+ + {!! csrf_field() !!} + +
+ +
+ {{ trans('backpack::base.change_password') }} +
+ +
+
+
+ @php + $label = trans('backpack::base.old_password'); + $field = 'old_password'; + @endphp + + +
+ +
+ @php + $label = trans('backpack::base.new_password'); + $field = 'new_password'; + @endphp + + +
+ +
+ @php + $label = trans('backpack::base.confirm_password'); + $field = 'confirm_password'; + @endphp + + +
+
+
+ + + +
+ +
+
+ +
+@endsection diff --git a/resources/views/vendor/backpack/base/widgets/alert.blade.php b/resources/views/vendor/backpack/base/widgets/alert.blade.php new file mode 100644 index 0000000..1a8fb3e --- /dev/null +++ b/resources/views/vendor/backpack/base/widgets/alert.blade.php @@ -0,0 +1,19 @@ +@includeWhen(!empty($widget['wrapper']), 'backpack::widgets.inc.wrapper_start') + + + +@includeWhen(!empty($widget['wrapper']), 'backpack::widgets.inc.wrapper_end') \ No newline at end of file diff --git a/resources/views/vendor/backpack/base/widgets/card.blade.php b/resources/views/vendor/backpack/base/widgets/card.blade.php new file mode 100644 index 0000000..b59d93e --- /dev/null +++ b/resources/views/vendor/backpack/base/widgets/card.blade.php @@ -0,0 +1,15 @@ +@php + // preserve backwards compatibility with Widgets in Backpack 4.0 + $widget['wrapper']['class'] = $widget['wrapper']['class'] ?? $widget['wrapperClass'] ?? 'col-sm-6 col-md-4'; +@endphp + +@includeWhen(!empty($widget['wrapper']), 'backpack::widgets.inc.wrapper_start') +
+ @if (isset($widget['content'])) + @if (isset($widget['content']['header'])) +
{!! $widget['content']['header'] !!}
+ @endif +
{!! $widget['content']['body'] !!}
+ @endif +
+@includeWhen(!empty($widget['wrapper']), 'backpack::widgets.inc.wrapper_end') \ No newline at end of file diff --git a/resources/views/vendor/backpack/base/widgets/div.blade.php b/resources/views/vendor/backpack/base/widgets/div.blade.php new file mode 100644 index 0000000..f8ff200 --- /dev/null +++ b/resources/views/vendor/backpack/base/widgets/div.blade.php @@ -0,0 +1,19 @@ +@includeWhen(!empty($widget['wrapper']), 'backpack::widgets.inc.wrapper_start') + +
2) + @foreach ($widget as $attribute => $value) + @if (is_string($attribute) && $attribute!='content' && $attribute!='type') + {{ $attribute }}="{{ $value }}" + @endif + @endforeach + @endif + > + + @if (isset($widget['content'])) + @include('backpack::inc.widgets', [ 'widgets' => $widget['content'] ]) + @endif + +
+ +@includeWhen(!empty($widget['wrapper']), 'backpack::widgets.inc.wrapper_end') \ No newline at end of file diff --git a/resources/views/vendor/backpack/base/widgets/inc/wrapper_end.blade.php b/resources/views/vendor/backpack/base/widgets/inc/wrapper_end.blade.php new file mode 100644 index 0000000..33ca6a9 --- /dev/null +++ b/resources/views/vendor/backpack/base/widgets/inc/wrapper_end.blade.php @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/views/vendor/backpack/base/widgets/inc/wrapper_start.blade.php b/resources/views/vendor/backpack/base/widgets/inc/wrapper_start.blade.php new file mode 100644 index 0000000..19fe366 --- /dev/null +++ b/resources/views/vendor/backpack/base/widgets/inc/wrapper_start.blade.php @@ -0,0 +1,16 @@ +@php + $widget['wrapper']['element'] = $widget['wrapper']['element'] ?? 'div'; + $widget['wrapper']['class'] = $widget['wrapper']['class'] ?? "col-sm-6 col-md-4"; + + // each wrapper attribute can be a callback or a string + // for those that are callbacks, run the callbacks to get the final string to use + foreach($widget['wrapper'] as $attribute => $value) { + $widget['wrapper'][$attribute] = (!is_string($value) && is_callable($value) ? $value() : $value) ?? ''; + } +@endphp + +<{{ $widget['wrapper']['element'] ?? 'div' }} +@foreach(Arr::where($widget['wrapper'],function($value, $key) { return $key != 'element'; }) as $element => $value) + {{$element}}="{{$value}}" +@endforeach +> \ No newline at end of file diff --git a/resources/views/vendor/backpack/base/widgets/jumbotron.blade.php b/resources/views/vendor/backpack/base/widgets/jumbotron.blade.php new file mode 100644 index 0000000..bc594a2 --- /dev/null +++ b/resources/views/vendor/backpack/base/widgets/jumbotron.blade.php @@ -0,0 +1,25 @@ +@php + // preserve backwards compatibility with Widgets in Backpack 4.0 + if (isset($widget['wrapperClass'])) { + $widget['wrapper']['class'] = $widget['wrapperClass']; + } +@endphp + +@includeWhen(!empty($widget['wrapper']), 'backpack::widgets.inc.wrapper_start') +
+ + @if (isset($widget['heading'])) +

{!! $widget['heading'] !!}

+ @endif + + @if (isset($widget['content'])) +

{!! $widget['content'] !!}

+ @endif + + @if (isset($widget['button_link'])) +

+ {{ $widget['button_text'] }} +

+ @endif +
+@includeWhen(!empty($widget['wrapper']), 'backpack::widgets.inc.wrapper_end') \ No newline at end of file diff --git a/resources/views/vendor/backpack/base/widgets/progress.blade.php b/resources/views/vendor/backpack/base/widgets/progress.blade.php new file mode 100644 index 0000000..98fdbb7 --- /dev/null +++ b/resources/views/vendor/backpack/base/widgets/progress.blade.php @@ -0,0 +1,34 @@ +@php + // defaults; backwards compatibility with Backpack 4.0 widgets + $widget['wrapper']['class'] = $widget['wrapper']['class'] ?? $widget['wrapperClass'] ?? 'col-sm-6 col-lg-3'; +@endphp + +@includeWhen(!empty($widget['wrapper']), 'backpack::widgets.inc.wrapper_start') +
+
+ @if (isset($widget['value'])) +
{!! $widget['value'] !!}
+ @endif + + @if (isset($widget['description'])) +
{!! $widget['description'] !!}
+ @endif + + @if (isset($widget['progress'])) +
+
+
+ @endif + + @if (isset($widget['hint'])) + {!! $widget['hint'] !!} + @endif +
+ + @if (isset($widget['footer_link'])) + + @endif +
+@includeWhen(!empty($widget['wrapper']), 'backpack::widgets.inc.wrapper_end') \ No newline at end of file diff --git a/resources/views/vendor/backpack/base/widgets/progress_white.blade.php b/resources/views/vendor/backpack/base/widgets/progress_white.blade.php new file mode 100644 index 0000000..c96c26d --- /dev/null +++ b/resources/views/vendor/backpack/base/widgets/progress_white.blade.php @@ -0,0 +1,34 @@ +@php + // defaults; backwards compatibility with Backpack 4.0 widgets + $widget['wrapper']['class'] = $widget['wrapper']['class'] ?? $widget['wrapperClass'] ?? 'col-sm-6 col-lg-3'; +@endphp + +@includeWhen(!empty($widget['wrapper']), 'backpack::widgets.inc.wrapper_start') +
+
+ @if (isset($widget['value'])) +
{!! $widget['value'] !!}
+ @endif + + @if (isset($widget['description'])) +
{!! $widget['description'] !!}
+ @endif + + @if (isset($widget['progress'])) +
+
+
+ @endif + + @if (isset($widget['hint'])) + {!! $widget['hint'] !!} + @endif +
+ + @if (isset($widget['footer_link'])) + + @endif +
+@includeWhen(!empty($widget['wrapper']), 'backpack::widgets.inc.wrapper_end') \ No newline at end of file diff --git a/resources/views/vendor/backpack/base/widgets/script.blade.php b/resources/views/vendor/backpack/base/widgets/script.blade.php new file mode 100644 index 0000000..3c2dfe6 --- /dev/null +++ b/resources/views/vendor/backpack/base/widgets/script.blade.php @@ -0,0 +1,12 @@ +@php + $src = asset($widget['src'] ?? $widget['content'] ?? $widget['path']); + $attributes = collect($widget)->except(['name', 'section', 'type', 'stack', 'src', 'content', 'path']) +@endphp + +@push($widget['stack'] ?? 'after_scripts') + +@endpush diff --git a/resources/views/vendor/backpack/base/widgets/style.blade.php b/resources/views/vendor/backpack/base/widgets/style.blade.php new file mode 100644 index 0000000..93d09a6 --- /dev/null +++ b/resources/views/vendor/backpack/base/widgets/style.blade.php @@ -0,0 +1,14 @@ +@php + $widget['rel'] = $widget['rel'] ?? 'stylesheet'; + + $href = asset($widget['href'] ?? $widget['content'] ?? $widget['path']); + $attributes = collect($widget)->except(['name', 'section', 'type', 'stack', 'href', 'content', 'path']) +@endphp + +@push($widget['stack'] ?? 'after_styles') + $value) + {{ $key }}{!! $value === true || $value === '' ? '' : "=\"$value\"" !!} + @endforeach + /> +@endpush diff --git a/resources/views/vendor/backpack/base/widgets/view.blade.php b/resources/views/vendor/backpack/base/widgets/view.blade.php new file mode 100644 index 0000000..b496fcf --- /dev/null +++ b/resources/views/vendor/backpack/base/widgets/view.blade.php @@ -0,0 +1,6 @@ +{{-- view field --}} +@includeWhen(!empty($widget['wrapper']), 'backpack::widgets.inc.wrapper_start') + + @include($widget['view'], ['widget' => $widget]) + +@includeWhen(!empty($widget['wrapper']), 'backpack::widgets.inc.wrapper_end') \ No newline at end of file diff --git a/resources/views/vendor/backpack/crud/buttons/create.blade.php b/resources/views/vendor/backpack/crud/buttons/create.blade.php new file mode 100644 index 0000000..d69e2f3 --- /dev/null +++ b/resources/views/vendor/backpack/crud/buttons/create.blade.php @@ -0,0 +1,3 @@ +@if ($crud->hasAccess('create')) + {{ trans('backpack::crud.add') }} {{ $crud->entity_name }} +@endif \ No newline at end of file diff --git a/resources/views/vendor/backpack/crud/buttons/delete.blade.php b/resources/views/vendor/backpack/crud/buttons/delete.blade.php new file mode 100644 index 0000000..1bff031 --- /dev/null +++ b/resources/views/vendor/backpack/crud/buttons/delete.blade.php @@ -0,0 +1,97 @@ +@if ($crud->hasAccess('delete')) + {{ trans('backpack::crud.delete') }} +@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) --}} +@loadOnce('delete_button_script') +@push('after_scripts') @if (request()->ajax()) @endpush @endif + +@if (!request()->ajax()) @endpush @endif +@endLoadOnce diff --git a/resources/views/vendor/backpack/crud/buttons/reorder.blade.php b/resources/views/vendor/backpack/crud/buttons/reorder.blade.php new file mode 100644 index 0000000..7b3933b --- /dev/null +++ b/resources/views/vendor/backpack/crud/buttons/reorder.blade.php @@ -0,0 +1,3 @@ +@if ($crud->get('reorder.enabled') && $crud->hasAccess('reorder')) + {{ trans('backpack::crud.reorder') }} {{ $crud->entity_name_plural }} +@endif \ No newline at end of file diff --git a/resources/views/vendor/backpack/crud/buttons/show.blade.php b/resources/views/vendor/backpack/crud/buttons/show.blade.php new file mode 100644 index 0000000..d907463 --- /dev/null +++ b/resources/views/vendor/backpack/crud/buttons/show.blade.php @@ -0,0 +1,24 @@ +@if ($crud->hasAccess('show')) + @if (!$crud->model->translationEnabled()) + + {{-- Single edit button --}} + {{ trans('backpack::crud.preview') }} + + @else + + {{-- Edit button group --}} +
+ {{ trans('backpack::crud.preview') }} + + +
+ + @endif +@endif diff --git a/resources/views/vendor/backpack/crud/buttons/update.blade.php b/resources/views/vendor/backpack/crud/buttons/update.blade.php new file mode 100644 index 0000000..fb0dbc0 --- /dev/null +++ b/resources/views/vendor/backpack/crud/buttons/update.blade.php @@ -0,0 +1,24 @@ +@if ($crud->hasAccess('update')) + @if (!$crud->model->translationEnabled()) + + {{-- Single edit button --}} + {{ trans('backpack::crud.edit') }} + + @else + + {{-- Edit button group --}} +
+ {{ trans('backpack::crud.edit') }} + + +
+ + @endif +@endif diff --git a/resources/views/vendor/backpack/crud/columns/boolean.blade.php b/resources/views/vendor/backpack/crud/columns/boolean.blade.php new file mode 100644 index 0000000..6f41660 --- /dev/null +++ b/resources/views/vendor/backpack/crud/columns/boolean.blade.php @@ -0,0 +1,41 @@ +{{-- converts 1/true or 0/false to yes/no/lang --}} +@php + $column['value'] = $column['value'] ?? data_get($entry, $column['name']); + $column['escaped'] = $column['escaped'] ?? true; + $column['prefix'] = $column['prefix'] ?? ''; + $column['suffix'] = $column['suffix'] ?? ''; + + if($column['value'] instanceof \Closure) { + $column['value'] = $column['value']($entry); + } + + if (in_array($column['value'], [true, 1, '1'])) { + $related_key = 1; + if ( isset( $column['options'][1] ) ) { + $column['text'] = $column['options'][1]; + $column['escaped'] = false; + } else { + $column['text'] = Lang::has('backpack::crud.yes') ? trans('backpack::crud.yes') : 'Yes'; + } + } else { + $related_key = 0; + if ( isset( $column['options'][0] ) ) { + $column['text'] = $column['options'][0]; + $column['escaped'] = false; + } else { + $column['text'] = Lang::has('backpack::crud.no') ? trans('backpack::crud.no') : 'No'; + } + } + + $column['text'] = $column['prefix'].$column['text'].$column['suffix']; +@endphp + + + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_start') + @if($column['escaped']) + {{ $column['text'] }} + @else + {!! $column['text'] !!} + @endif + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_end') + diff --git a/resources/views/vendor/backpack/crud/columns/check.blade.php b/resources/views/vendor/backpack/crud/columns/check.blade.php new file mode 100644 index 0000000..9832b1b --- /dev/null +++ b/resources/views/vendor/backpack/crud/columns/check.blade.php @@ -0,0 +1,35 @@ +{{-- checkbox with loose false/null/0 checking --}} +@php + $column['value'] = $column['value'] ?? data_get($entry, $column['name']); + $column['escaped'] = $column['escaped'] ?? true; + $column['prefix'] = $column['prefix'] ?? ''; + $column['suffix'] = $column['suffix'] ?? ''; + + if($column['value'] instanceof \Closure) { + $column['value'] = $column['value']($entry); + } + + $column['icon'] = $column['value'] != false + ? ($column['icons']['checked'] ?? 'la-check-circle') + : ($column['icons']['unchecked'] ?? 'la-circle'); + + $column['text'] = $column['value'] != false + ? ($column['labels']['checked'] ?? trans('backpack::crud.yes')) + : ($column['labels']['unchecked'] ?? trans('backpack::crud.no')); + + $column['text'] = $column['prefix'].$column['text'].$column['suffix']; +@endphp + + + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_start') + + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_end') + + + + @if($column['escaped']) + {{ $column['text'] }} + @else + {!! $column['text'] !!} + @endif + diff --git a/resources/views/vendor/backpack/crud/columns/closure.blade.php b/resources/views/vendor/backpack/crud/columns/closure.blade.php new file mode 100644 index 0000000..d568834 --- /dev/null +++ b/resources/views/vendor/backpack/crud/columns/closure.blade.php @@ -0,0 +1,26 @@ +{{-- closure function column type --}} +@php + $column['value'] = $column['value'] ?? $column['function']; + $column['escaped'] = $column['escaped'] ?? true; + $column['prefix'] = $column['prefix'] ?? ''; + $column['suffix'] = $column['suffix'] ?? ''; + $column['text'] = $column['default'] ?? '-'; + + if($column['value'] instanceof \Closure) { + $column['value'] = $column['value']($entry); + } + + if(!empty($column['value'])) { + $column['text'] = $column['prefix'].$column['value'].$column['suffix']; + } +@endphp + + + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_start') + @if($column['escaped']) + {{ $column['text'] }} + @else + {!! $column['text'] !!} + @endif + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_end') + diff --git a/resources/views/vendor/backpack/crud/columns/custom_html.blade.php b/resources/views/vendor/backpack/crud/columns/custom_html.blade.php new file mode 100644 index 0000000..03519c7 --- /dev/null +++ b/resources/views/vendor/backpack/crud/columns/custom_html.blade.php @@ -0,0 +1,25 @@ +{{-- custom html --}} +@php + $column['escaped'] = $column['escaped'] ?? false; + $column['prefix'] = $column['prefix'] ?? ''; + $column['suffix'] = $column['suffix'] ?? ''; + $column['text'] = $column['default'] ?? '-'; + + if($column['value'] instanceof \Closure) { + $column['value'] = $column['value']($entry); + } + + if(!empty($column['value'])) { + $column['text'] = $column['prefix'].$column['value'].$column['suffix']; + } +@endphp + + + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_start') + @if($column['escaped']) + {{ $column['text'] }} + @else + {!! $column['text'] !!} + @endif + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_end') + diff --git a/resources/views/vendor/backpack/crud/columns/date.blade.php b/resources/views/vendor/backpack/crud/columns/date.blade.php new file mode 100644 index 0000000..60ac0c9 --- /dev/null +++ b/resources/views/vendor/backpack/crud/columns/date.blade.php @@ -0,0 +1,31 @@ +{{-- localized date using nesbot carbon --}} +@php + $column['value'] = $column['value'] ?? data_get($entry, $column['name']); + $column['escaped'] = $column['escaped'] ?? true; + $column['prefix'] = $column['prefix'] ?? ''; + $column['suffix'] = $column['suffix'] ?? ''; + $column['format'] = $column['format'] ?? config('backpack.base.default_date_format'); + $column['text'] = $column['default'] ?? '-'; + + if($column['value'] instanceof \Closure) { + $column['value'] = $column['value']($entry); + } + + if(!empty($column['value'])) { + $date = \Carbon\Carbon::parse($column['value']) + ->locale(App::getLocale()) + ->isoFormat($column['format']); + + $column['text'] = $column['prefix'].$date.$column['suffix']; + } +@endphp + + + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_start') + @if($column['escaped']) + {{ $column['text'] }} + @else + {!! $column['text'] !!} + @endif + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_end') + diff --git a/resources/views/vendor/backpack/crud/columns/datetime.blade.php b/resources/views/vendor/backpack/crud/columns/datetime.blade.php new file mode 100644 index 0000000..7350d81 --- /dev/null +++ b/resources/views/vendor/backpack/crud/columns/datetime.blade.php @@ -0,0 +1,31 @@ +{{-- localized datetime using carbon --}} +@php + $column['value'] = $column['value'] ?? data_get($entry, $column['name']); + $column['escaped'] = $column['escaped'] ?? true; + $column['prefix'] = $column['prefix'] ?? ''; + $column['suffix'] = $column['suffix'] ?? ''; + $column['format'] = $column['format'] ?? config('backpack.base.default_datetime_format'); + $column['text'] = $column['default'] ?? '-'; + + if($column['value'] instanceof \Closure) { + $column['value'] = $column['value']($entry); + } + + if(!empty($column['value'])) { + $date = \Carbon\Carbon::parse($column['value']) + ->locale(App::getLocale()) + ->isoFormat($column['format']); + + $column['text'] = $column['prefix'].$date.$column['suffix']; + } +@endphp + + + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_start') + @if($column['escaped']) + {{ $column['text'] }} + @else + {!! $column['text'] !!} + @endif + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_end') + diff --git a/resources/views/vendor/backpack/crud/columns/email.blade.php b/resources/views/vendor/backpack/crud/columns/email.blade.php new file mode 100644 index 0000000..08715c6 --- /dev/null +++ b/resources/views/vendor/backpack/crud/columns/email.blade.php @@ -0,0 +1,30 @@ +{{-- email link --}} +@php + $column['value'] = $column['value'] ?? data_get($entry, $column['name']); + $column['escaped'] = $column['escaped'] ?? true; + $column['prefix'] = $column['prefix'] ?? ''; + $column['suffix'] = $column['suffix'] ?? ''; + $column['limit'] = $column['limit'] ?? 32; + $column['text'] = $column['default'] ?? '-'; + + if($column['value'] instanceof \Closure) { + $column['value'] = $column['value']($entry); + } + + if(!empty($column['value'])) { + $column['text'] = $column['prefix'].Str::limit(strip_tags($column['value']), $column['limit'], "…").$column['suffix']; + } + + $column['wrapper']['element'] = $column['wrapper']['element'] ?? 'a'; + $column['wrapper']['href'] = $column['wrapper']['href'] ?? 'mailto:'.$column['value']; +@endphp + + + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_start') + @if($column['escaped']) + {{ $column['text'] }} + @else + {!! $column['text'] !!} + @endif + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_end') + diff --git a/resources/views/vendor/backpack/crud/columns/enum.blade.php b/resources/views/vendor/backpack/crud/columns/enum.blade.php new file mode 100644 index 0000000..1f8a78c --- /dev/null +++ b/resources/views/vendor/backpack/crud/columns/enum.blade.php @@ -0,0 +1,19 @@ +@php + $column['value'] = $column['value'] ?? data_get($entry, $column['name']); + if(function_exists('enum_exists') && !empty($column['value'])) { + if($column['value'] instanceof \UnitEnum) { + $column['value'] = isset($column['enum_function']) ? $column['value']->{$column['enum_function']}() : ($column['value'] instanceof \BackedEnum ? $column['value']->value : $column['value']->name); + }else{ + if(isset($column['enum_class'])) { + $enumClassReflection = new \ReflectionEnum($column['enum_class']); + if ($enumClassReflection->hasConstant($column['value'])) { + $enumClass = $enumClassReflection->getConstant($column['value']); + } + + $column['value'] = isset($column['enum_function']) ? $enumClass->{$column['enum_function']}() : $column['value']; + } + } + } +@endphp + +@include(isset($column['options']) ? 'crud::columns.select_from_array' : 'crud::columns.text') \ No newline at end of file diff --git a/resources/views/vendor/backpack/crud/columns/image.blade.php b/resources/views/vendor/backpack/crud/columns/image.blade.php new file mode 100644 index 0000000..6ab2ce0 --- /dev/null +++ b/resources/views/vendor/backpack/crud/columns/image.blade.php @@ -0,0 +1,53 @@ +{{-- image column type --}} +@php + $column['value'] = $column['value'] ?? data_get($entry, $column['name']); + + if($column['value']) { + $column['height'] = $column['height'] ?? "25px"; + $column['width'] = $column['width'] ?? "auto"; + $column['radius'] = $column['radius'] ?? "3px"; + $column['prefix'] = $column['prefix'] ?? ''; + $column['temporary'] = $column['temporary'] ?? false; + $column['expiration'] = $column['expiration'] ?? 1; + + if($column['value'] instanceof \Closure) { + $column['value'] = $column['value']($entry); + } + + if (is_array($column['value'])) { + $column['value'] = json_encode($column['value']); + } + + if (preg_match('/^data\:image\//', $column['value'])) { // base64_image + $href = $src = $column['value']; + } elseif (isset($column['disk'])) { // image from a different disk (like s3 bucket) + + if (!empty($column['temporary'])) { + $href = $src = Storage::disk($column['disk'])->temporaryUrl($column['prefix'].$column['value'], now()->addMinutes((int) $column['expiration'])); + } else { + $href = $src = Storage::disk($column['disk'])->url($column['prefix'].$column['value']); + } + + } else { // plain-old image, from a local disk + $href = $src = asset($column['prefix'] . $column['value']); + } + + $column['wrapper']['element'] = $column['wrapper']['element'] ?? 'a'; + $column['wrapper']['href'] = $column['wrapper']['href'] ?? $href; + $column['wrapper']['target'] = $column['wrapper']['target'] ?? '_blank'; + } +@endphp + + + @if(empty($column['value'])) + {{ $column['default'] ?? '-' }} + @else + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_start') + + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_end') + @endif + diff --git a/resources/views/vendor/backpack/crud/columns/inc/bulk_actions_checkbox.blade.php b/resources/views/vendor/backpack/crud/columns/inc/bulk_actions_checkbox.blade.php new file mode 100644 index 0000000..e16f3bb --- /dev/null +++ b/resources/views/vendor/backpack/crud/columns/inc/bulk_actions_checkbox.blade.php @@ -0,0 +1,127 @@ +@if (!isset($entry)) + + + +@else + + + + + @loadOnce('bpFieldInitCheckboxScript') + + @endLoadOnce +@endif diff --git a/resources/views/vendor/backpack/crud/columns/inc/details_row_button.blade.php b/resources/views/vendor/backpack/crud/columns/inc/details_row_button.blade.php new file mode 100644 index 0000000..0239c5b --- /dev/null +++ b/resources/views/vendor/backpack/crud/columns/inc/details_row_button.blade.php @@ -0,0 +1,4 @@ +{{-- expand/minimize button column --}} + + + \ No newline at end of file diff --git a/resources/views/vendor/backpack/crud/columns/inc/wrapper_end.blade.php b/resources/views/vendor/backpack/crud/columns/inc/wrapper_end.blade.php new file mode 100644 index 0000000..a853676 --- /dev/null +++ b/resources/views/vendor/backpack/crud/columns/inc/wrapper_end.blade.php @@ -0,0 +1,12 @@ +@php + // this is made available by columns like select and select_multiple + $related_key = $related_key ?? null; + + // define the wrapper element + $wrapperElement = $column['wrapper']['element'] ?? 'a'; + if(!is_string($wrapperElement) && $wrapperElement instanceof \Closure) { + $wrapperElement = $wrapperElement($crud, $column, $entry, $related_key); + } +@endphp + + diff --git a/resources/views/vendor/backpack/crud/columns/inc/wrapper_start.blade.php b/resources/views/vendor/backpack/crud/columns/inc/wrapper_start.blade.php new file mode 100644 index 0000000..69270e9 --- /dev/null +++ b/resources/views/vendor/backpack/crud/columns/inc/wrapper_start.blade.php @@ -0,0 +1,16 @@ +@php + // this is made available by columns like select and select_multiple + $related_key = $related_key ?? null; + + // each wrapper attribute can be a callback or a string + // for those that are callbacks, run the callbacks to get the final string to use + foreach($column['wrapper'] as $attribute => $value) { + $column['wrapper'][$attribute] = !is_string($value) && $value instanceof \Closure ? $value($crud, $column, $entry, $related_key) : $value ?? ''; + } +@endphp + +<{{ $column['wrapper']['element'] ?? 'a' }} +@foreach(Arr::except($column['wrapper'], 'element') as $element => $value) + {{$element}}="{{$value}}" +@endforeach +> \ No newline at end of file diff --git a/resources/views/vendor/backpack/crud/columns/json.blade.php b/resources/views/vendor/backpack/crud/columns/json.blade.php new file mode 100644 index 0000000..a4485d0 --- /dev/null +++ b/resources/views/vendor/backpack/crud/columns/json.blade.php @@ -0,0 +1,29 @@ +{{-- json --}} +@php + $column['value'] = $column['value'] ?? $entry->{$column['name']}; + $column['escaped'] = $column['escaped'] ?? true; + $column['prefix'] = $column['prefix'] ?? ''; + $column['suffix'] = $column['suffix'] ?? ''; + $column['wrapper']['element'] = $column['wrapper']['element'] ?? 'pre'; + $column['text'] = $column['default'] ?? '-'; + + if(is_string($column['value'])) { + $column['value'] = json_decode($column['value'], true); + } + + if($column['value'] instanceof \Closure) { + $column['value'] = $column['value']($entry); + } + + if(!empty($column['value'])) { + $column['text'] = $column['prefix'].json_encode($column['value'], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES).$column['suffix']; + } +@endphp + +@includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_start') +@if($column['escaped']) +{{ $column['text'] }} +@else +{!! $column['text'] !!} +@endif +@includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_end') diff --git a/resources/views/vendor/backpack/crud/columns/model_function.blade.php b/resources/views/vendor/backpack/crud/columns/model_function.blade.php new file mode 100644 index 0000000..042a14e --- /dev/null +++ b/resources/views/vendor/backpack/crud/columns/model_function.blade.php @@ -0,0 +1,27 @@ +{{-- custom return value --}} +@php + $column['value'] = $column['value'] ?? $entry->{$column['function_name']}(...($column['function_parameters'] ?? [])); + $column['escaped'] = $column['escaped'] ?? true; + $column['limit'] = $column['limit'] ?? 32; + $column['prefix'] = $column['prefix'] ?? ''; + $column['suffix'] = $column['suffix'] ?? ''; + $column['text'] = $column['default'] ?? '-'; + + if($column['value'] instanceof \Closure) { + $column['value'] = $column['value']($entry); + } + + if(!empty($column['value'])) { + $column['text'] = $column['prefix'].Str::limit($column['value'], $column['limit'], "…").$column['suffix']; + } +@endphp + + + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_start') + @if($column['escaped']) + {{ $column['text'] }} + @else + {!! $column['text'] !!} + @endif + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_end') + diff --git a/resources/views/vendor/backpack/crud/columns/model_function_attribute.blade.php b/resources/views/vendor/backpack/crud/columns/model_function_attribute.blade.php new file mode 100644 index 0000000..394491c --- /dev/null +++ b/resources/views/vendor/backpack/crud/columns/model_function_attribute.blade.php @@ -0,0 +1,27 @@ +{{-- custom return value via attribute --}} +@php + $column['value'] = $column['value'] ?? $entry->{$column['function_name']}(...($column['function_parameters'] ?? []))->{$column['attribute']} ?? ''; + $column['escaped'] = $column['escaped'] ?? true; + $column['limit'] = $column['limit'] ?? 32; + $column['prefix'] = $column['prefix'] ?? ''; + $column['suffix'] = $column['suffix'] ?? ''; + $column['text'] = $column['default'] ?? '-'; + + if($column['value'] instanceof \Closure) { + $column['value'] = $column['value']($entry); + } + + if(!empty($column['value'])) { + $column['text'] = $column['prefix'].Str::limit($column['value'], $column['limit'], "…").$column['suffix']; + } +@endphp + + + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_start') + @if($column['escaped']) + {{ $column['text'] }} + @else + {!! $column['text'] !!} + @endif + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_end') + diff --git a/resources/views/vendor/backpack/crud/columns/multidimensional_array.blade.php b/resources/views/vendor/backpack/crud/columns/multidimensional_array.blade.php new file mode 100644 index 0000000..a0260a9 --- /dev/null +++ b/resources/views/vendor/backpack/crud/columns/multidimensional_array.blade.php @@ -0,0 +1,55 @@ +{{-- enumerate the values in an array --}} +@php + $column['value'] = $column['value'] ?? data_get($entry, $column['name']); + $list = []; + + if($column['value'] instanceof \Closure) { + $column['value'] = $column['value']($entry); + } + + // if the isn't using attribute casting, decode it + if (is_string($column['value'])) { + $column['value'] = json_decode($column['value']); + } + + if (is_array($column['value']) && count($column['value'])) { + foreach ($column['value'] as $item) { + if (isset($item->{$column['visible_key']})) { + $list[$column['visible_key']][] = $item->{$column['visible_key']}; + } elseif (is_array($item) && isset($item[$column['visible_key']])) { + $list[$column['visible_key']][] = $item[$column['visible_key']]; + } + } + } + + $column['escaped'] = $column['escaped'] ?? true; + $column['prefix'] = $column['prefix'] ?? ''; + $column['suffix'] = $column['suffix'] ?? ''; +@endphp + + + @if(!empty($list)) + {{ $column['prefix'] }} + @foreach($list[$column['visible_key']] as $key => $text) + @php + $column['text'] = $text; + $related_key = $key; + @endphp + + + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_start') + @if($column['escaped']) + {{ $column['text'] }} + @else + {!! $column['text'] !!} + @endif + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_end') + + @if(!$loop->last), @endif + + @endforeach + {{ $column['suffix'] }} + @else + {{ $column['default'] ?? '-' }} + @endif + diff --git a/resources/views/vendor/backpack/crud/columns/number.blade.php b/resources/views/vendor/backpack/crud/columns/number.blade.php new file mode 100644 index 0000000..5b61fea --- /dev/null +++ b/resources/views/vendor/backpack/crud/columns/number.blade.php @@ -0,0 +1,30 @@ +{{-- regular object attribute --}} +@php + $column['value'] = $column['value'] ?? data_get($entry, $column['name']); + $column['escaped'] = $column['escaped'] ?? true; + $column['prefix'] = $column['prefix'] ?? ''; + $column['suffix'] = $column['suffix'] ?? ''; + $column['decimals'] = $column['decimals'] ?? 0; + $column['dec_point'] = $column['dec_point'] ?? '.'; + $column['thousands_sep'] = $column['thousands_sep'] ?? ','; + $column['text'] = $column['default'] ?? '-'; + + if($column['value'] instanceof \Closure) { + $column['value'] = $column['value']($entry); + } + + if (!is_null($column['value'])) { + $column['value'] = number_format($column['value'], $column['decimals'], $column['dec_point'], $column['thousands_sep']); + $column['text'] = $column['prefix'].$column['value'].$column['suffix']; + } +@endphp + + + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_start') + @if($column['escaped']) + {{ $column['text'] }} + @else + {!! $column['text'] !!} + @endif + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_end') + diff --git a/resources/views/vendor/backpack/crud/columns/phone.blade.php b/resources/views/vendor/backpack/crud/columns/phone.blade.php new file mode 100644 index 0000000..434ea67 --- /dev/null +++ b/resources/views/vendor/backpack/crud/columns/phone.blade.php @@ -0,0 +1,30 @@ +{{-- telephone link --}} +@php + $column['value'] = $column['value'] ?? data_get($entry, $column['name']); + $column['escaped'] = $column['escaped'] ?? true; + $column['prefix'] = $column['prefix'] ?? ''; + $column['suffix'] = $column['suffix'] ?? ''; + $column['limit'] = $column['limit'] ?? 32; + $column['text'] = $column['default'] ?? '-'; + + if($column['value'] instanceof \Closure) { + $column['value'] = $column['value']($entry); + } + + if(!empty($column['value'])) { + $column['text'] = $column['prefix'].Str::limit(strip_tags($column['value']), $column['limit'], "…").$column['suffix']; + } + + $column['wrapper']['element'] = $column['wrapper']['element'] ?? 'a'; + $column['wrapper']['href'] = $column['wrapper']['href'] ?? 'tel:'.$column['value']; +@endphp + + + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_start') + @if($column['escaped']) + {{ $column['text'] }} + @else + {!! $column['text'] !!} + @endif + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_end') + diff --git a/resources/views/vendor/backpack/crud/columns/radio.blade.php b/resources/views/vendor/backpack/crud/columns/radio.blade.php new file mode 100644 index 0000000..a919599 --- /dev/null +++ b/resources/views/vendor/backpack/crud/columns/radio.blade.php @@ -0,0 +1,28 @@ +{{-- radio --}} +@php + $column['key'] = $column['key'] ?? $column['name']; + $column['value'] = $column['value'] ?? data_get($entry, $column['key']); + $column['escaped'] = $column['escaped'] ?? true; + $column['prefix'] = $column['prefix'] ?? ''; + $column['suffix'] = $column['suffix'] ?? ''; + $column['text'] = $column['default'] ?? '-'; + + if($column['value'] instanceof \Closure) { + $column['value'] = $column['value']($entry); + } + + if(!empty($column['value'])) { + $column['value'] = $column['options'][$column['value']] ?? ''; + $column['text'] = $column['prefix'].$column['value'].$column['suffix']; + } +@endphp + + + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_start') + @if($column['escaped']) + {{ $column['text'] }} + @else + {!! $column['text'] !!} + @endif + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_end') + diff --git a/resources/views/vendor/backpack/crud/columns/relationship_count.blade.php b/resources/views/vendor/backpack/crud/columns/relationship_count.blade.php new file mode 100644 index 0000000..e8e3727 --- /dev/null +++ b/resources/views/vendor/backpack/crud/columns/relationship_count.blade.php @@ -0,0 +1,26 @@ +{{-- relationship_count (works for n-n relationships) --}} +@php + $column['value'] = $column['value'] ?? data_get($entry, $column['name']); + $column['escaped'] = $column['escaped'] ?? true; + $column['prefix'] = $column['prefix'] ?? ''; + $column['suffix'] = $column['suffix'] ?? ' items'; + $column['text'] = $column['default'] ?? '-'; + + if($column['value'] instanceof \Closure) { + $column['value'] = $column['value']($entry); + } + + if(!empty($column['value'])) { + $column['text'] = $column['prefix'].count($column['value']).$column['suffix']; + } +@endphp + + + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_start') + @if($column['escaped']) + {{ $column['text'] }} + @else + {!! $column['text'] !!} + @endif + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_end') + diff --git a/resources/views/vendor/backpack/crud/columns/row_number.blade.php b/resources/views/vendor/backpack/crud/columns/row_number.blade.php new file mode 100644 index 0000000..719263f --- /dev/null +++ b/resources/views/vendor/backpack/crud/columns/row_number.blade.php @@ -0,0 +1,27 @@ +{{-- row number --}} +@php + $column['value'] = $column['value'] ?? $rowNumber; + $column['escaped'] = $column['escaped'] ?? true; + $column['limit'] = $column['limit'] ?? 32; + $column['prefix'] = $column['prefix'] ?? ''; + $column['suffix'] = $column['suffix'] ?? ''; + $column['text'] = $column['default'] ?? '-'; + + if($column['value'] instanceof \Closure) { + $column['value'] = $column['value']($entry); + } + + if(!empty($column['value'])) { + $column['text'] = $column['prefix'].Str::limit(strip_tags($column['value']), $column['limit'], "…").$column['suffix']; + } +@endphp + + + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_start') + @if($column['escaped']) + {{ $column['text'] }} + @else + {!! $column['text'] !!} + @endif + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_end') + diff --git a/resources/views/vendor/backpack/crud/columns/select.blade.php b/resources/views/vendor/backpack/crud/columns/select.blade.php new file mode 100644 index 0000000..2b3ccf3 --- /dev/null +++ b/resources/views/vendor/backpack/crud/columns/select.blade.php @@ -0,0 +1,43 @@ +{{-- single relationships (1-1, 1-n) --}} +@php + $column['attribute'] = $column['attribute'] ?? (new $column['model'])->identifiableAttribute(); + $column['value'] = $column['value'] ?? $crud->getRelatedEntriesAttributes($entry, $column['entity'], $column['attribute']); + $column['escaped'] = $column['escaped'] ?? true; + $column['prefix'] = $column['prefix'] ?? ''; + $column['suffix'] = $column['suffix'] ?? ''; + $column['limit'] = $column['limit'] ?? 32; + + if($column['value'] instanceof \Closure) { + $column['value'] = $column['value']($entry); + } + + foreach ($column['value'] as &$value) { + $value = Str::limit($value, $column['limit'], '…'); + } +@endphp + + + @if(count($column['value'])) + {{ $column['prefix'] }} + @foreach($column['value'] as $key => $text) + @php + $related_key = $key; + @endphp + + + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_start') + @if($column['escaped']) + {{ $text }} + @else + {!! $text !!} + @endif + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_end') + + @if(!$loop->last), @endif + + @endforeach + {{ $column['suffix'] }} + @else + {{ $column['default'] ?? '-' }} + @endif + diff --git a/resources/views/vendor/backpack/crud/columns/select_from_array.blade.php b/resources/views/vendor/backpack/crud/columns/select_from_array.blade.php new file mode 100644 index 0000000..1d8a498 --- /dev/null +++ b/resources/views/vendor/backpack/crud/columns/select_from_array.blade.php @@ -0,0 +1,50 @@ +{{-- select_from_array column --}} +@php + $column['value'] = $column['value'] ?? data_get($entry, $column['name']); + $column['escaped'] = $column['escaped'] ?? true; + $column['prefix'] = $column['prefix'] ?? ''; + $column['suffix'] = $column['suffix'] ?? ''; + + if($column['value'] instanceof \Closure) { + $column['value'] = $column['value']($entry); + } + + $list = []; + if ($column['value'] !== null) { + if (is_array($column['value'])) { + foreach ($column['value'] as $key => $value) { + if (! is_null($value)) { + $list[$key] = $column['options'][$value] ?? $value; + } + } + } else { + $list[$column['value']] = $column['options'][$column['value']] ?? $column['value']; + } + } +@endphp + + + @if(!empty($list)) + {{ $column['prefix'] }} + @foreach($list as $key => $text) + @php + $related_key = $key; + @endphp + + + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_start') + @if($column['escaped']) + {{ $text }} + @else + {!! $text !!} + @endif + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_end') + + @if(!$loop->last), @endif + + @endforeach + {{ $column['suffix'] }} + @else + {{ $column['default'] ?? '-' }} + @endif + diff --git a/resources/views/vendor/backpack/crud/columns/select_multiple.blade.php b/resources/views/vendor/backpack/crud/columns/select_multiple.blade.php new file mode 100644 index 0000000..0ad4d2c --- /dev/null +++ b/resources/views/vendor/backpack/crud/columns/select_multiple.blade.php @@ -0,0 +1,50 @@ +{{-- relationships with pivot table (n-n) --}} +@php + $column['value'] = $column['value'] ?? data_get($entry, $column['name'], []); + $column['escaped'] = $column['escaped'] ?? true; + $column['prefix'] = $column['prefix'] ?? ''; + $column['suffix'] = $column['suffix'] ?? ''; + $column['limit'] = $column['limit'] ?? 32; + $column['attribute'] = $column['attribute'] ?? (new $column['model'])->identifiableAttribute(); + + if($column['value'] instanceof \Closure) { + $column['value'] = $column['value']($entry); + } + + if($column['value'] !== null && !$column['value']->isEmpty()) { + $related_key = $column['value']->first()->getKeyName(); + $column['value'] = $column['value']->pluck($column['attribute'], $related_key); + } + + $column['value'] = $column['value'] + ->map(function($value) use ($column) { + return Str::limit($value, $column['limit'], '…'); + }) + ->toArray(); +@endphp + + + @if(!empty($column['value'])) + {{ $column['prefix'] }} + @foreach($column['value'] as $key => $text) + @php + $related_key = $key; + @endphp + + + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_start') + @if($column['escaped']) + {{ $text }} + @else + {!! $text !!} + @endif + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_end') + + @if(!$loop->last), @endif + + @endforeach + {{ $column['suffix'] }} + @else + {{ $column['default'] ?? '-' }} + @endif + diff --git a/resources/views/vendor/backpack/crud/columns/text.blade.php b/resources/views/vendor/backpack/crud/columns/text.blade.php new file mode 100644 index 0000000..8654aca --- /dev/null +++ b/resources/views/vendor/backpack/crud/columns/text.blade.php @@ -0,0 +1,31 @@ +{{-- regular object attribute --}} +@php + $column['value'] = $column['value'] ?? data_get($entry, $column['name']); + $column['escaped'] = $column['escaped'] ?? true; + $column['limit'] = $column['limit'] ?? 32; + $column['prefix'] = $column['prefix'] ?? ''; + $column['suffix'] = $column['suffix'] ?? ''; + $column['text'] = $column['default'] ?? '-'; + + if($column['value'] instanceof \Closure) { + $column['value'] = $column['value']($entry); + } + + if(is_array($column['value'])) { + $column['value'] = json_encode($column['value']); + } + + if(!empty($column['value'])) { + $column['text'] = $column['prefix'].Str::limit($column['value'], $column['limit'], '…').$column['suffix']; + } +@endphp + + + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_start') + @if($column['escaped']) + {{ $column['text'] }} + @else + {!! $column['text'] !!} + @endif + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_end') + diff --git a/resources/views/vendor/backpack/crud/columns/textarea.blade.php b/resources/views/vendor/backpack/crud/columns/textarea.blade.php new file mode 100644 index 0000000..be8d1a2 --- /dev/null +++ b/resources/views/vendor/backpack/crud/columns/textarea.blade.php @@ -0,0 +1,26 @@ +{{-- regular object attribute --}} +@php + $column['value'] = $column['value'] ?? data_get($entry, $column['name']); + $column['escaped'] = $column['escaped'] ?? true; + $column['prefix'] = $column['prefix'] ?? ''; + $column['suffix'] = $column['suffix'] ?? ''; + $column['text'] = $column['default'] ?? '-'; + + if($column['value'] instanceof \Closure) { + $column['value'] = $column['value']($entry); + } + + if(!empty($column['value'])) { + $column['text'] = $column['prefix'].$column['value'].$column['suffix']; + } +@endphp + + + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_start') + @if($column['escaped']) + {{ $column['text'] }} + @else + {!! $column['text'] !!} + @endif + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_end') + diff --git a/resources/views/vendor/backpack/crud/columns/upload_multiple.blade.php b/resources/views/vendor/backpack/crud/columns/upload_multiple.blade.php new file mode 100644 index 0000000..662465a --- /dev/null +++ b/resources/views/vendor/backpack/crud/columns/upload_multiple.blade.php @@ -0,0 +1,43 @@ +@php + $column['value'] = $column['value'] ?? data_get($entry, $column['name']); + $column['prefix'] = $column['prefix'] ?? ''; + $column['suffix'] = $column['suffix'] ?? ''; + $column['disk'] = $column['disk'] ?? null; + $column['escaped'] = $column['escaped'] ?? true; + $column['wrapper']['element'] = $column['wrapper']['element'] ?? 'a'; + $column['wrapper']['target'] = $column['wrapper']['target'] ?? '_blank'; + $column_wrapper_href = $column['wrapper']['href'] ?? + function($file_path, $disk, $prefix) use ($column) { + if (is_null($disk)) { + return $prefix.$file_path; + } + if (isset($column['temporary'])) { + return asset(\Storage::disk($disk)->temporaryUrl($file_path, Carbon\Carbon::now()->addMinutes($column['temporary']))); + } + return asset(\Storage::disk($disk)->url($file_path)); + }; + + if($column['value'] instanceof \Closure) { + $column['value'] = $column['value']($entry); + } +@endphp + + + @if ($column['value'] && count($column['value'])) + @foreach ($column['value'] as $file_path) + @php + $column['wrapper']['href'] = $column_wrapper_href instanceof \Closure ? $column_wrapper_href($file_path, $column['disk'], $column['prefix']) : $column_wrapper_href; + $text = $column['prefix'].$file_path.$column['suffix']; + @endphp + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_start') + @if($column['escaped']) + - {{ $text }}
+ @else + - {!! $text !!}
+ @endif + @includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_end') + @endforeach + @else + {{ $column['default'] ?? '-' }} + @endif +
diff --git a/resources/views/vendor/backpack/crud/columns/view.blade.php b/resources/views/vendor/backpack/crud/columns/view.blade.php new file mode 100644 index 0000000..1947abe --- /dev/null +++ b/resources/views/vendor/backpack/crud/columns/view.blade.php @@ -0,0 +1,3 @@ +@includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_start') + @include($column['view']) +@includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_end') \ No newline at end of file diff --git a/resources/views/vendor/backpack/crud/create.blade.php b/resources/views/vendor/backpack/crud/create.blade.php new file mode 100644 index 0000000..576223c --- /dev/null +++ b/resources/views/vendor/backpack/crud/create.blade.php @@ -0,0 +1,56 @@ +@extends(backpack_view('blank')) + +@php + $defaultBreadcrumbs = [ + trans('backpack::crud.admin') => url(config('backpack.base.route_prefix'), 'dashboard'), + $crud->entity_name_plural => url($crud->route), + trans('backpack::crud.add') => false, + ]; + + // if breadcrumbs aren't defined in the CrudController, use the default breadcrumbs + $breadcrumbs = $breadcrumbs ?? $defaultBreadcrumbs; +@endphp + +@section('header') +
+

+ {!! $crud->getHeading() ?? $crud->entity_name_plural !!} + {!! $crud->getSubheading() ?? trans('backpack::crud.add').' '.$crud->entity_name !!}. + + @if ($crud->hasAccess('list')) + {{ trans('backpack::crud.back_to_all') }} {{ $crud->entity_name_plural }} + @endif +

+
+@endsection + +@section('content') + +
+
+ {{-- Default box --}} + + @include('crud::inc.grouped_errors') + +
hasUploadFields('create')) + enctype="multipart/form-data" + @endif + > + {!! csrf_field() !!} + {{-- 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. --}} +
{{ json_encode(Assets::loaded()) }}
+ @include('crud::inc.form_save_buttons') +
+
+
+ +@endsection + diff --git a/resources/views/vendor/backpack/crud/details_row.blade.php b/resources/views/vendor/backpack/crud/details_row.blade.php new file mode 100644 index 0000000..d8e65e7 --- /dev/null +++ b/resources/views/vendor/backpack/crud/details_row.blade.php @@ -0,0 +1,8 @@ +
+
+
+ {{ trans('backpack::crud.details_row') }} +
+
+
+
\ No newline at end of file diff --git a/resources/views/vendor/backpack/crud/edit.blade.php b/resources/views/vendor/backpack/crud/edit.blade.php new file mode 100644 index 0000000..08f5036 --- /dev/null +++ b/resources/views/vendor/backpack/crud/edit.blade.php @@ -0,0 +1,71 @@ +@extends(backpack_view('blank')) + +@php + $defaultBreadcrumbs = [ + trans('backpack::crud.admin') => backpack_url('dashboard'), + $crud->entity_name_plural => url($crud->route), + trans('backpack::crud.edit') => false, + ]; + + // if breadcrumbs aren't defined in the CrudController, use the default breadcrumbs + $breadcrumbs = $breadcrumbs ?? $defaultBreadcrumbs; +@endphp + +@section('header') +
+

+ {!! $crud->getHeading() ?? $crud->entity_name_plural !!} + {!! $crud->getSubheading() ?? trans('backpack::crud.edit').' '.$crud->entity_name !!}. + + @if ($crud->hasAccess('list')) + {{ trans('backpack::crud.back_to_all') }} {{ $crud->entity_name_plural }} + @endif +

+
+@endsection + +@section('content') +
+
+ {{-- Default box --}} + + @include('crud::inc.grouped_errors') + +
hasUploadFields('update', $entry->getKey())) + enctype="multipart/form-data" + @endif + > + {!! csrf_field() !!} + {!! method_field('PUT') !!} + + @if ($crud->model->translationEnabled()) +
+ {{-- Single button --}} +
+ + +
+
+ @endif + {{-- 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' => 'edit']) + @else + @include('crud::form_content', ['fields' => $crud->fields(), 'action' => 'edit']) + @endif + {{-- This makes sure that all field assets are loaded. --}} +
{{ json_encode(Assets::loaded()) }}
+ @include('crud::inc.form_save_buttons') +
+
+
+@endsection + diff --git a/resources/views/vendor/backpack/crud/fields/boolean.blade.php b/resources/views/vendor/backpack/crud/fields/boolean.blade.php new file mode 100644 index 0000000..6714f31 --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/boolean.blade.php @@ -0,0 +1 @@ +@include('crud::fields.checkbox') diff --git a/resources/views/vendor/backpack/crud/fields/checkbox.blade.php b/resources/views/vendor/backpack/crud/fields/checkbox.blade.php new file mode 100644 index 0000000..d953642 --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/checkbox.blade.php @@ -0,0 +1,79 @@ +{{-- checkbox field --}} + +@php + $field['value'] = old_empty_or_null($field['name'], '') ?? $field['value'] ?? $field['default'] ?? ''; +@endphp +@include('crud::fields.inc.wrapper_start') + @include('crud::fields.inc.translatable_icon') + + $value) + {{ $attribute }}="{{ $value }}" + @endforeach + @endif + > + + + {{-- HINT --}} + @if (isset($field['hint'])) +

{!! $field['hint'] !!}

+ @endif +@include('crud::fields.inc.wrapper_end') + +{{-- ########################################## --}} +{{-- Extra CSS and JS for this particular field --}} +{{-- If a field type is shown multiple times on a form, the CSS and JS will only be loaded once --}} + + {{-- FIELD JS - will be loaded in the after_scripts section --}} + @push('crud_fields_scripts') + @loadOnce('bpFieldInitCheckbox') + + @endLoadOnce + @endpush + +{{-- End of Extra CSS and JS --}} +{{-- ########################################## --}} diff --git a/resources/views/vendor/backpack/crud/fields/checklist.blade.php b/resources/views/vendor/backpack/crud/fields/checklist.blade.php new file mode 100644 index 0000000..57456fb --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/checklist.blade.php @@ -0,0 +1,106 @@ +{{-- checklist --}} +@php + $key_attribute = (new $field['model'])->getKeyName(); + $field['attribute'] = $field['attribute'] ?? (new $field['model'])->identifiableAttribute(); + $field['number_of_columns'] = $field['number_of_columns'] ?? 3; + + // calculate the checklist options + if (!isset($field['options'])) { + $field['options'] = $field['model']::all()->pluck($field['attribute'], $key_attribute)->toArray(); + } else { + $field['options'] = call_user_func($field['options'], $field['model']::query()); + } + + // calculate the value of the hidden input + $field['value'] = old_empty_or_null($field['name'], []) ?? $field['value'] ?? $field['default'] ?? []; + if(!empty($field['value'])) { + if (is_a($field['value'], \Illuminate\Support\Collection::class)) { + $field['value'] = ($field['value'])->pluck($key_attribute)->toArray(); + } elseif (is_string($field['value'])){ + $field['value'] = json_decode($field['value']); + } + } + + // define the init-function on the wrapper + $field['wrapper']['data-init-function'] = $field['wrapper']['data-init-function'] ?? 'bpFieldInitChecklist'; +@endphp + +@include('crud::fields.inc.wrapper_start') + + @include('crud::fields.inc.translatable_icon') + + + +
+ @foreach ($field['options'] as $key => $option) +
+
+ +
+
+ @endforeach +
+ + {{-- HINT --}} + @if (isset($field['hint'])) +

{!! $field['hint'] !!}

+ @endif +@include('crud::fields.inc.wrapper_end') + + +{{-- ########################################## --}} +{{-- Extra CSS and JS for this particular field --}} +{{-- If a field type is shown multiple times on a form, the CSS and JS will only be loaded once --}} + {{-- FIELD JS - will be loaded in the after_scripts section --}} + @push('crud_fields_scripts') + @loadOnce('bpFieldInitChecklist') + + @endLoadOnce + @endpush +{{-- End of Extra CSS and JS --}} +{{-- ########################################## --}} diff --git a/resources/views/vendor/backpack/crud/fields/checklist_dependency.blade.php b/resources/views/vendor/backpack/crud/fields/checklist_dependency.blade.php new file mode 100644 index 0000000..f4c057d --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/checklist_dependency.blade.php @@ -0,0 +1,316 @@ +{{-- dependencyJson --}} +@php + $field['wrapper'] = $field['wrapper'] ?? $field['wrapperAttributes'] ?? []; + $field['wrapper']['class'] = $field['wrapper']['class'] ?? 'form-group col-sm-12'; + $field['wrapper']['class'] = $field['wrapper']['class'].' checklist_dependency'; + $field['wrapper']['data-entity'] = $field['wrapper']['data-entity'] ?? $field['field_unique_name']; + $field['wrapper']['data-init-function'] = $field['wrapper']['init-function'] ?? 'bpFieldInitChecklistDependencyElement'; +@endphp + +@include('crud::fields.inc.wrapper_start') + + + getModel(); + + //short name for dependency fields + $primary_dependency = $field['subfields']['primary']; + $secondary_dependency = $field['subfields']['secondary']; + + //all items with relation + $dependencies = $primary_dependency['model']::with($primary_dependency['entity_secondary'])->get(); + + $dependencyArray = []; + + //convert dependency array to simple matrix ( primary id as key and array with secondaries id ) + foreach ($dependencies as $primary) { + $dependencyArray[$primary->id] = []; + foreach ($primary->{$primary_dependency['entity_secondary']} as $secondary) { + $dependencyArray[$primary->id][] = $secondary->id; + } + } + + $old_primary_dependency = old_empty_or_null($primary_dependency['name'], false) ?? false; + $old_secondary_dependency = old_empty_or_null($secondary_dependency['name'], false) ?? false; + + //for update form, get initial state of the entity + if (isset($id) && $id) { + //get entity with relations for primary dependency + $entity_dependencies = $entity_model->with($primary_dependency['entity']) + ->with($primary_dependency['entity'].'.'.$primary_dependency['entity_secondary']) + ->find($id); + + $secondaries_from_primary = []; + + //convert relation in array + $primary_array = $entity_dependencies->{$primary_dependency['entity']}->toArray(); + + $secondary_ids = []; + //create secondary dependency from primary relation, used to check what checkbox must be checked from second checklist + if ($old_primary_dependency) { + foreach ($old_primary_dependency as $primary_item) { + foreach ($dependencyArray[$primary_item] as $second_item) { + $secondary_ids[$second_item] = $second_item; + } + } + } else { //create dependencies from relation if not from validate error + foreach ($primary_array as $primary_item) { + foreach ($primary_item[$secondary_dependency['entity']] as $second_item) { + $secondary_ids[$second_item['id']] = $second_item['id']; + } + } + } + } + + //json encode of dependency matrix + $dependencyJson = json_encode($dependencyArray); + ?> + +
+ +
+
+ + @include('crud::fields.inc.translatable_icon', ['field' => $primary_dependency]) +
+
+ +
+ +
+ + @if(isset($field['value'])) + @if($old_primary_dependency) + @foreach($old_primary_dependency as $item ) + + @endforeach + @else + @foreach( $field['value'][0]->pluck('id', 'id')->toArray() as $item ) + + @endforeach + @endif + @endif +
+ + @foreach ($primary_dependency['model']::all() as $connected_entity_entry) +
+
+ +
+
+ @endforeach +
+ +
+
+ + @include('crud::fields.inc.translatable_icon', ['field' => $secondary_dependency]) +
+
+ +
+
+ + @if(isset($field['value'])) + @if($old_secondary_dependency) + @foreach($old_secondary_dependency as $item ) + + @endforeach + @else + @foreach( $field['value'][1]->pluck('id', 'id')->toArray() as $item ) + + @endforeach + @endif + @endif +
+ + @foreach ($secondary_dependency['model']::all() as $connected_entity_entry) +
+
+ +
+
+ @endforeach +
+
{{-- /.container --}} + + + {{-- HINT --}} + @if (isset($field['hint'])) +

{!! $field['hint'] !!}

+ @endif + +@include('crud::fields.inc.wrapper_end') + +{{-- ########################################## --}} +{{-- Extra CSS and JS for this particular field --}} +{{-- If a field type is shown multiple times on a form, the CSS and JS will only be loaded once --}} + +@push('crud_fields_scripts') + +@endpush + +{{-- FIELD JS - will be loaded in the after_scripts section --}} +@push('crud_fields_scripts') + {{-- include checklist_dependency js --}} + @loadOnce('bpFieldInitChecklistDependencyElement') + + @endLoadOnce +@endpush +{{-- End of Extra CSS and JS --}} +{{-- ########################################## --}} diff --git a/resources/views/vendor/backpack/crud/fields/color.blade.php b/resources/views/vendor/backpack/crud/fields/color.blade.php new file mode 100644 index 0000000..a667e87 --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/color.blade.php @@ -0,0 +1,21 @@ +{{-- html5 color input --}} +@include('crud::fields.inc.wrapper_start') + + @include('crud::fields.inc.translatable_icon') + + @if(isset($field['prefix']) || isset($field['suffix']))
@endif + @if(isset($field['prefix']))
{!! $field['prefix'] !!}
@endif + + @if(isset($field['suffix']))
{!! $field['suffix'] !!}
@endif + @if(isset($field['prefix']) || isset($field['suffix']))
@endif + + {{-- HINT --}} + @if (isset($field['hint'])) +

{!! $field['hint'] !!}

+ @endif +@include('crud::fields.inc.wrapper_end') diff --git a/resources/views/vendor/backpack/crud/fields/custom_html.blade.php b/resources/views/vendor/backpack/crud/fields/custom_html.blade.php new file mode 100644 index 0000000..666ff6b --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/custom_html.blade.php @@ -0,0 +1,4 @@ +{{-- used for heading, separators, etc --}} +@includeWhen(!isset($field['wrapper']) || $field['wrapper'] !== false, 'crud::fields.inc.wrapper_start') + {!! $field['value'] !!} +@includeWhen(!isset($field['wrapper']) || $field['wrapper'] !== false, 'crud::fields.inc.wrapper_end') \ No newline at end of file diff --git a/resources/views/vendor/backpack/crud/fields/date.blade.php b/resources/views/vendor/backpack/crud/fields/date.blade.php new file mode 100644 index 0000000..7d68928 --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/date.blade.php @@ -0,0 +1,30 @@ +{{-- html5 date input --}} + +toDateString(); +} +?> + +@include('crud::fields.inc.wrapper_start') + + @include('crud::fields.inc.translatable_icon') + + @if(isset($field['prefix']) || isset($field['suffix']))
@endif + @if(isset($field['prefix']))
{!! $field['prefix'] !!}
@endif + + @if(isset($field['suffix']))
{!! $field['suffix'] !!}
@endif + @if(isset($field['prefix']) || isset($field['suffix']))
@endif + + {{-- HINT --}} + @if (isset($field['hint'])) +

{!! $field['hint'] !!}

+ @endif +@include('crud::fields.inc.wrapper_end') diff --git a/resources/views/vendor/backpack/crud/fields/datetime.blade.php b/resources/views/vendor/backpack/crud/fields/datetime.blade.php new file mode 100644 index 0000000..2356c09 --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/datetime.blade.php @@ -0,0 +1,34 @@ +{{-- html5 datetime input --}} + +@php +// if the column has been cast to Carbon or Date (using attribute casting) +// get the value as a date string +if (isset($field['value']) && ($field['value'] instanceof \Carbon\CarbonInterface)) { + $field['value'] = $field['value']->toDateTimeString(); +} + +$timestamp = strtotime(old_empty_or_null($field['name'], '') ?? $field['value'] ?? $field['default'] ?? ''); + +$value = $timestamp ? date('Y-m-d\TH:i:s', $timestamp) : ''; +@endphp + +@include('crud::fields.inc.wrapper_start') + + @include('crud::fields.inc.translatable_icon') + + @if(isset($field['prefix']) || isset($field['suffix']))
@endif + @if(isset($field['prefix']))
{!! $field['prefix'] !!}
@endif + + @if(isset($field['suffix']))
{!! $field['suffix'] !!}
@endif + @if(isset($field['prefix']) || isset($field['suffix']))
@endif + + {{-- HINT --}} + @if (isset($field['hint'])) +

{!! $field['hint'] !!}

+ @endif +@include('crud::fields.inc.wrapper_end') diff --git a/resources/views/vendor/backpack/crud/fields/email.blade.php b/resources/views/vendor/backpack/crud/fields/email.blade.php new file mode 100644 index 0000000..7b83c8a --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/email.blade.php @@ -0,0 +1,21 @@ +{{-- text input --}} +@include('crud::fields.inc.wrapper_start') + + @include('crud::fields.inc.translatable_icon') + + @if(isset($field['prefix']) || isset($field['suffix']))
@endif + @if(isset($field['prefix']))
{!! $field['prefix'] !!}
@endif + + @if(isset($field['suffix']))
{!! $field['suffix'] !!}
@endif + @if(isset($field['prefix']) || isset($field['suffix']))
@endif + + {{-- HINT --}} + @if (isset($field['hint'])) +

{!! $field['hint'] !!}

+ @endif +@include('crud::fields.inc.wrapper_end') diff --git a/resources/views/vendor/backpack/crud/fields/enum.blade.php b/resources/views/vendor/backpack/crud/fields/enum.blade.php new file mode 100644 index 0000000..6d53f31 --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/enum.blade.php @@ -0,0 +1,91 @@ +{{-- enum --}} +@php + $entity_model = $field['model'] ?? $field['baseModel'] ?? $crud->model; + + $field['value'] = old_empty_or_null($field['name'], '') ?? $field['value'] ?? $field['default'] ?? ''; + + $possible_values = (function() use ($entity_model, $field) { + $fieldName = $field['baseFieldName'] ?? $field['name']; + // if developer provided the options, use them, no ned to guess. + if(isset($field['options'])) { + return $field['options']; + } + + // if we are in a PHP version where PHP enums are not available, it can only be a database enum + if(! function_exists('enum_exists')) { + $options = $entity_model::getPossibleEnumValues($fieldName); + return array_combine($options, $options); + } + + // developer can provide the enum class so that we extract the available options from it + $enumClassReflection = isset($field['enum_class']) ? new \ReflectionEnum($field['enum_class']) : false; + + if(! $enumClassReflection) { + // check for model casting + $possibleEnumCast = (new $entity_model)->getCasts()[$fieldName] ?? false; + if($possibleEnumCast && class_exists($possibleEnumCast)) { + $enumClassReflection = new \ReflectionEnum($possibleEnumCast); + } + } + + if($enumClassReflection) { + $options = array_map(function($item) use ($enumClassReflection) { + return $enumClassReflection->isBacked() ? [$item->getBackingValue() => $item->name] : $item->name; + },$enumClassReflection->getCases()); + $options = is_multidimensional_array($options) ? array_replace(...$options) : array_combine($options, $options); + } + + if(isset($field['enum_function']) && isset($options)) { + $options = array_map(function($item) use ($field, $enumClassReflection) { + if ($enumClassReflection->hasConstant($item)) { + return $enumClassReflection->getConstant($item)->{$field['enum_function']}(); + } + return $item; + }, $options); + return $options; + } + + // if we have the enum options return them + if(isset($options)) { + return $options; + } + + // no enum options, can only be database enum + $options = $entity_model::getPossibleEnumValues($field['name']); + return array_combine($options, $options); + })(); + + + if(function_exists('enum_exists') && !empty($field['value']) && $field['value'] instanceof \UnitEnum) { + $field['value'] = $field['value'] instanceof \BackedEnum ? $field['value']->value : $field['value']->name; + } +@endphp + +@include('crud::fields.inc.wrapper_start') + + @include('crud::fields.inc.translatable_icon') + + + {{-- HINT --}} + @if (isset($field['hint'])) +

{!! $field['hint'] !!}

+ @endif +@include('crud::fields.inc.wrapper_end') diff --git a/resources/views/vendor/backpack/crud/fields/hidden.blade.php b/resources/views/vendor/backpack/crud/fields/hidden.blade.php new file mode 100644 index 0000000..e07bf41 --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/hidden.blade.php @@ -0,0 +1,15 @@ +@php + // if not otherwise specified, the hidden input should take up no space in the form + $field['wrapper'] = $field['wrapper'] ?? $field['wrapperAttributes'] ?? []; + $field['wrapper']['class'] = $field['wrapper']['class'] ?? "hidden"; +@endphp + +{{-- hidden input --}} +@include('crud::fields.inc.wrapper_start') + +@include('crud::fields.inc.wrapper_end') diff --git a/resources/views/vendor/backpack/crud/fields/inc/attributes.blade.php b/resources/views/vendor/backpack/crud/fields/inc/attributes.blade.php new file mode 100644 index 0000000..480d786 --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/inc/attributes.blade.php @@ -0,0 +1,10 @@ +@php + $field['attributes'] = $field['attributes'] ?? []; + $field['attributes']['class'] = $field['attributes']['class'] ?? $default_class ?? 'form-control'; +@endphp + +@foreach ($field['attributes'] as $attribute => $value) + @if (is_string($attribute)) + {{ $attribute }}="{{ $value }}" + @endif +@endforeach \ No newline at end of file diff --git a/resources/views/vendor/backpack/crud/fields/inc/translatable_icon.blade.php b/resources/views/vendor/backpack/crud/fields/inc/translatable_icon.blade.php new file mode 100644 index 0000000..2745a7c --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/inc/translatable_icon.blade.php @@ -0,0 +1,20 @@ +@php + // if field name is array we check if any of the arrayed fields is translatable + $translatable = false; + if($crud->model->translationEnabled()) { + foreach((array) $field['name'] as $field_name){ + if($crud->model->isTranslatableAttribute($field_name)) { + $translatable = true; + } + } + // if the field is a fake one (value is stored in a JSON column instead of a direct db column) + // and that JSON column is translatable, then the field itself should be translatable + if(isset($field['store_in']) && $crud->model->isTranslatableAttribute($field['store_in'])) { + $translatable = true; + } + } + +@endphp +@if ($translatable && config('backpack.crud.show_translatable_field_icon')) + +@endif diff --git a/resources/views/vendor/backpack/crud/fields/inc/wrapper_end.blade.php b/resources/views/vendor/backpack/crud/fields/inc/wrapper_end.blade.php new file mode 100644 index 0000000..45cc546 --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/inc/wrapper_end.blade.php @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/views/vendor/backpack/crud/fields/inc/wrapper_start.blade.php b/resources/views/vendor/backpack/crud/fields/inc/wrapper_start.blade.php new file mode 100644 index 0000000..6b45def --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/inc/wrapper_start.blade.php @@ -0,0 +1,34 @@ +@php + $field['wrapper'] = $field['wrapper'] ?? $field['wrapperAttributes'] ?? []; + + // each wrapper attribute can be a callback or a string + // for those that are callbacks, run the callbacks to get the final string to use + foreach($field['wrapper'] as $attributeKey => $value) { + $field['wrapper'][$attributeKey] = !is_string($value) && $value instanceof \Closure ? $value($crud, $field, $entry ?? null) : $value ?? ''; + } + // if the field is required in any of the crud validators (FormRequest, controller validation or field validation) + // we add an astherisc for it. Case it's a subfield, that check is done upstream in repeatable_row. + // the reason for that is that here the field name is already the repeatable name: parent[row][fieldName] + if(!isset($field['parentFieldName']) || !$field['parentFieldName']) { + $fieldName = is_array($field['name']) ? current($field['name']) : $field['name']; + $required = (isset($action) && $crud->isRequired($fieldName)) ? ' required' : ''; + } + + // if the developer has intentionally set the required attribute on the field + // forget whatever is in the FormRequest, do what the developer wants + // subfields also get here with `showAsterisk` already set. + $required = isset($field['showAsterisk']) ? ($field['showAsterisk'] ? ' required' : '') : ($required ?? ''); + + $field['wrapper']['class'] = $field['wrapper']['class'] ?? "form-group col-sm-12"; + $field['wrapper']['class'] = $field['wrapper']['class'].$required; + $field['wrapper']['element'] = $field['wrapper']['element'] ?? 'div'; + $field['wrapper']['bp-field-wrapper'] = 'true'; + $field['wrapper']['bp-field-name'] = square_brackets_to_dots(implode(',', (array)$field['name'])); + $field['wrapper']['bp-field-type'] = $field['type']; +@endphp + +<{{ $field['wrapper']['element'] }} + @foreach($field['wrapper'] as $attribute => $value) + {{ $attribute }}="{{ $value }}" + @endforeach +> diff --git a/resources/views/vendor/backpack/crud/fields/month.blade.php b/resources/views/vendor/backpack/crud/fields/month.blade.php new file mode 100644 index 0000000..aa16e82 --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/month.blade.php @@ -0,0 +1,21 @@ +{{-- html5 month input --}} +@include('crud::fields.inc.wrapper_start') + + @include('crud::fields.inc.translatable_icon') + + @if(isset($field['prefix']) || isset($field['suffix']))
@endif + @if(isset($field['prefix']))
{!! $field['prefix'] !!}
@endif + + @if(isset($field['suffix']))
{!! $field['suffix'] !!}
@endif + @if(isset($field['prefix']) || isset($field['suffix']))
@endif + + {{-- HINT --}} + @if (isset($field['hint'])) +

{!! $field['hint'] !!}

+ @endif +@include('crud::fields.inc.wrapper_end') diff --git a/resources/views/vendor/backpack/crud/fields/number.blade.php b/resources/views/vendor/backpack/crud/fields/number.blade.php new file mode 100644 index 0000000..6553444 --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/number.blade.php @@ -0,0 +1,22 @@ +{{-- number input --}} +@include('crud::fields.inc.wrapper_start') + + @include('crud::fields.inc.translatable_icon') + + @if(isset($field['prefix']) || isset($field['suffix']))
@endif + @if(isset($field['prefix']))
{!! $field['prefix'] !!}
@endif + + @if(isset($field['suffix']))
{!! $field['suffix'] !!}
@endif + + @if(isset($field['prefix']) || isset($field['suffix']))
@endif + + {{-- HINT --}} + @if (isset($field['hint'])) +

{!! $field['hint'] !!}

+ @endif +@include('crud::fields.inc.wrapper_end') diff --git a/resources/views/vendor/backpack/crud/fields/password.blade.php b/resources/views/vendor/backpack/crud/fields/password.blade.php new file mode 100644 index 0000000..82b953b --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/password.blade.php @@ -0,0 +1,28 @@ +{{-- password --}} + +@php + // autocomplete off, if not otherwise specified + if (!isset($field['attributes']['autocomplete'])) { + $field['attributes']['autocomplete'] = "off"; + } +@endphp + +@include('crud::fields.inc.wrapper_start') + + @include('crud::fields.inc.translatable_icon') + + @if(isset($field['prefix']) || isset($field['suffix']))
@endif + @if(isset($field['prefix']))
{!! $field['prefix'] !!}
@endif + + @if(isset($field['suffix']))
{!! $field['suffix'] !!}
@endif + @if(isset($field['prefix']) || isset($field['suffix']))
@endif + + {{-- HINT --}} + @if (isset($field['hint'])) +

{!! $field['hint'] !!}

+ @endif +@include('crud::fields.inc.wrapper_end') diff --git a/resources/views/vendor/backpack/crud/fields/radio.blade.php b/resources/views/vendor/backpack/crud/fields/radio.blade.php new file mode 100644 index 0000000..55d2c37 --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/radio.blade.php @@ -0,0 +1,92 @@ +{{-- radio --}} +@php + $optionValue = old_empty_or_null($field['name'], '') ?? $field['value'] ?? $field['default'] ?? ''; + + // check if attribute is casted, if it is, we get back un-casted values + if(Arr::get($crud->model->getCasts(), $field['name']) === 'boolean') { + $optionValue = (int) $optionValue; + } + + // if the class isn't overwritten, use 'radio' + if (!isset($field['attributes']['class'])) { + $field['attributes']['class'] = 'radio'; + } + + $field['wrapper'] = $field['wrapper'] ?? $field['wrapperAttributes'] ?? []; + $field['wrapper']['data-init-function'] = $field['wrapper']['data-init-function'] ?? 'bpFieldInitRadioElement'; +@endphp + +@include('crud::fields.inc.wrapper_start') + + + + @include('crud::fields.inc.translatable_icon') + + + + + @if( isset($field['options']) && $field['options'] = (array)$field['options'] ) + + @foreach ($field['options'] as $value => $label ) + +
+ + +
+ + @endforeach + + @endif + + {{-- HINT --}} + @if (isset($field['hint'])) +

{!! $field['hint'] !!}

+ @endif + +@include('crud::fields.inc.wrapper_end') + + {{-- FIELD JS - will be loaded in the after_scripts section --}} + @push('crud_fields_scripts') + @loadOnce('bpFieldInitRadioElement') + + @endLoadOnce + @endpush diff --git a/resources/views/vendor/backpack/crud/fields/range.blade.php b/resources/views/vendor/backpack/crud/fields/range.blade.php new file mode 100644 index 0000000..a156b1c --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/range.blade.php @@ -0,0 +1,16 @@ +{{-- html5 range input --}} +@include('crud::fields.inc.wrapper_start') + + @include('crud::fields.inc.translatable_icon') + + + {{-- HINT --}} + @if (isset($field['hint'])) +

{!! $field['hint'] !!}

+ @endif +@include('crud::fields.inc.wrapper_end') diff --git a/resources/views/vendor/backpack/crud/fields/select.blade.php b/resources/views/vendor/backpack/crud/fields/select.blade.php new file mode 100644 index 0000000..1d29847 --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/select.blade.php @@ -0,0 +1,53 @@ +{{-- select --}} +@php + $current_value = old_empty_or_null($field['name'], '') ?? $field['value'] ?? $field['default'] ?? ''; + $entity_model = $crud->getRelationModel($field['entity'], - 1); + $field['allows_null'] = $field['allows_null'] ?? $entity_model::isColumnNullable($field['name']); + + //if it's part of a relationship here we have the full related model, we want the key. + if (is_object($current_value) && is_subclass_of(get_class($current_value), 'Illuminate\Database\Eloquent\Model') ) { + $current_value = $current_value->getKey(); + } + + if (!isset($field['options'])) { + $options = $field['model']::all(); + } else { + $options = call_user_func($field['options'], $field['model']::query()); + } +@endphp + +@include('crud::fields.inc.wrapper_start') + + + @include('crud::fields.inc.translatable_icon') + + @if(isset($field['prefix']) || isset($field['suffix']))
@endif + @if(isset($field['prefix']))
{!! $field['prefix'] !!}
@endif + + @if(isset($field['suffix']))
{!! $field['suffix'] !!}
@endif + @if(isset($field['prefix']) || isset($field['suffix']))
@endif + + {{-- HINT --}} + @if (isset($field['hint'])) +

{!! $field['hint'] !!}

+ @endif + +@include('crud::fields.inc.wrapper_end') diff --git a/resources/views/vendor/backpack/crud/fields/select_from_array.blade.php b/resources/views/vendor/backpack/crud/fields/select_from_array.blade.php new file mode 100644 index 0000000..170f44c --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/select_from_array.blade.php @@ -0,0 +1,36 @@ +@php + $field['allows_null'] = $field['allows_null'] ?? $crud->model::isColumnNullable($field['name']); + $field['value'] = old_empty_or_null($field['name'], '') ?? $field['value'] ?? $field['default'] ?? ''; + $field['multiple'] = $field['allows_multiple'] ?? $field['multiple'] ?? false; +@endphp +{{-- select from array --}} +@include('crud::fields.inc.wrapper_start') + + @include('crud::fields.inc.translatable_icon') + @if($field['multiple'])@endif + + + {{-- HINT --}} + @if (isset($field['hint'])) +

{!! $field['hint'] !!}

+ @endif +@include('crud::fields.inc.wrapper_end') diff --git a/resources/views/vendor/backpack/crud/fields/select_grouped.blade.php b/resources/views/vendor/backpack/crud/fields/select_grouped.blade.php new file mode 100644 index 0000000..db8976a --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/select_grouped.blade.php @@ -0,0 +1,65 @@ +{{-- select_grouped --}} +@php + $current_value = old_empty_or_null($field['name'], '') ?? $field['value'] ?? $field['default'] ?? ''; + $field['allows_null'] = $field['allows_null'] ?? $field['model']::isColumnNullable($field['name']); +@endphp + +@include('crud::fields.inc.wrapper_start') + + @include('crud::fields.inc.translatable_icon') + @php + $related_model = $field['model']; + $group_by_model = (new $related_model)->{$field['group_by']}()->getRelated(); + $categories = $group_by_model::with($field['group_by_relationship_back'])->get(); + + if (isset($field['model'])) { + $categorylessEntries = $related_model::doesnthave($field['group_by'])->get(); + } + @endphp + + @if(isset($field['prefix']) || isset($field['suffix']))
@endif + @if(isset($field['prefix']))
{!! $field['prefix'] !!}
@endif + + @if(isset($field['suffix']))
{!! $field['suffix'] !!}
@endif + @if(isset($field['prefix']) || isset($field['suffix']))
@endif + + {{-- HINT --}} + @if (isset($field['hint'])) +

{!! $field['hint'] !!}

+ @endif +@include('crud::fields.inc.wrapper_end') diff --git a/resources/views/vendor/backpack/crud/fields/select_multiple.blade.php b/resources/views/vendor/backpack/crud/fields/select_multiple.blade.php new file mode 100644 index 0000000..96d801f --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/select_multiple.blade.php @@ -0,0 +1,48 @@ +{{-- select multiple --}} +@php + if (!isset($field['options'])) { + $options = $field['model']::all(); + } else { + $options = call_user_func($field['options'], $field['model']::query()); + } + $field['allows_null'] = $field['allows_null'] ?? true; + + $field['value'] = old_empty_or_null($field['name'], collect()) ?? $field['value'] ?? $field['default'] ?? collect(); + + if (is_a($field['value'], \Illuminate\Support\Collection::class)) { + $field['value'] = $field['value']->pluck(app($field['model'])->getKeyName())->toArray(); + } + +@endphp + +@include('crud::fields.inc.wrapper_start') + + + @include('crud::fields.inc.translatable_icon') + {{-- To make sure a value gets submitted even if the "select multiple" is empty, we need a hidden input --}} + + + + {{-- HINT --}} + @if (isset($field['hint'])) +

{!! $field['hint'] !!}

+ @endif + +@include('crud::fields.inc.wrapper_end') diff --git a/resources/views/vendor/backpack/crud/fields/summernote.blade.php b/resources/views/vendor/backpack/crud/fields/summernote.blade.php new file mode 100644 index 0000000..92fc8de --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/summernote.blade.php @@ -0,0 +1,75 @@ +{{-- summernote editor --}} +@php + // make sure that the options array is defined + // and at the very least, dialogsInBody is true; + // that's needed for modals to show above the overlay in Bootstrap 4 + $field['options'] = array_merge(['dialogsInBody' => true, 'tooltip' => false], $field['options'] ?? []); +@endphp + +@include('crud::fields.inc.wrapper_start') + + @include('crud::fields.inc.translatable_icon') + + + {{-- HINT --}} + @if (isset($field['hint'])) +

{!! $field['hint'] !!}

+ @endif +@include('crud::fields.inc.wrapper_end') + + +{{-- ########################################## --}} +{{-- Extra CSS and JS for this particular field --}} +{{-- If a field type is shown multiple times on a form, the CSS and JS will only be loaded once --}} + + {{-- FIELD CSS - will be loaded in the after_styles section --}} +@push('crud_fields_styles') + {{-- include summernote css --}} + @loadOnce('packages/summernote/dist/summernote-bs4.css') + @loadOnce('summernoteCss') + + @endLoadOnce +@endpush +{{-- FIELD JS - will be loaded in the after_scripts section --}} +@push('crud_fields_scripts') + {{-- include summernote js --}} + @loadOnce('packages/summernote/dist/summernote-bs4.min.js') + @loadOnce('bpFieldInitSummernoteElement') + + @endLoadOnce +@endpush + +{{-- End of Extra CSS and JS --}} +{{-- ########################################## --}} diff --git a/resources/views/vendor/backpack/crud/fields/switch.blade.php b/resources/views/vendor/backpack/crud/fields/switch.blade.php new file mode 100644 index 0000000..80e4e18 --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/switch.blade.php @@ -0,0 +1,96 @@ +{{-- switch field --}} +@php + $field['value'] = old_empty_or_null($field['name'], '') ?? $field['value'] ?? $field['default'] ?? '0'; + $field['onLabel'] = $field['onLabel'] ?? ''; + $field['offLabel'] = $field['offLabel'] ?? ''; + $field['color'] = $field['color'] ?? 'primary'; +@endphp + +{{-- Wrapper --}} +@include('crud::fields.inc.wrapper_start') + + {{-- Translatable icon --}} + @include('crud::fields.inc.translatable_icon') + +
+ {{-- Switch --}} + + + {{-- Label --}} + +
+ + {{-- Label for the required * --}} + + + {{-- Hint --}} + @isset($field['hint']) +

{!! $field['hint'] !!}

+ @endisset +@include('crud::fields.inc.wrapper_end') + +{{-- ########################################## --}} +{{-- Extra CSS and JS for this particular field --}} +{{-- If a field type is shown multiple times on a form, the CSS and JS will only be loaded once --}} + +{{-- FIELD JS - will be loaded in the after_scripts section --}} +@push('crud_fields_scripts') + @loadOnce('bpFieldInitSwitchScript') + + @endLoadOnce +@endpush + +@push('crud_fields_styles') + @loadOnce('bpFieldInitSwitchStyle') + + @endLoadOnce +@endpush + +{{-- End of Extra CSS and JS --}} +{{-- ########################################## --}} diff --git a/resources/views/vendor/backpack/crud/fields/text.blade.php b/resources/views/vendor/backpack/crud/fields/text.blade.php new file mode 100644 index 0000000..83c3ee8 --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/text.blade.php @@ -0,0 +1,22 @@ +{{-- text input --}} + +@include('crud::fields.inc.wrapper_start') + + @include('crud::fields.inc.translatable_icon') + + @if(isset($field['prefix']) || isset($field['suffix']))
@endif + @if(isset($field['prefix']))
{!! $field['prefix'] !!}
@endif + + @if(isset($field['suffix']))
{!! $field['suffix'] !!}
@endif + @if(isset($field['prefix']) || isset($field['suffix']))
@endif + + {{-- HINT --}} + @if (isset($field['hint'])) +

{!! $field['hint'] !!}

+ @endif +@include('crud::fields.inc.wrapper_end') diff --git a/resources/views/vendor/backpack/crud/fields/textarea.blade.php b/resources/views/vendor/backpack/crud/fields/textarea.blade.php new file mode 100644 index 0000000..7f4eae1 --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/textarea.blade.php @@ -0,0 +1,15 @@ +{{-- textarea --}} +@include('crud::fields.inc.wrapper_start') + + @include('crud::fields.inc.translatable_icon') + + + {{-- HINT --}} + @if (isset($field['hint'])) +

{!! $field['hint'] !!}

+ @endif +@include('crud::fields.inc.wrapper_end') diff --git a/resources/views/vendor/backpack/crud/fields/time.blade.php b/resources/views/vendor/backpack/crud/fields/time.blade.php new file mode 100644 index 0000000..9bda26f --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/time.blade.php @@ -0,0 +1,21 @@ +{{-- html5 time input --}} +@include('crud::fields.inc.wrapper_start') + + @include('crud::fields.inc.translatable_icon') + + @if(isset($field['prefix']) || isset($field['suffix']))
@endif + @if(isset($field['prefix']))
{!! $field['prefix'] !!}
@endif + + @if(isset($field['suffix']))
{!! $field['suffix'] !!}
@endif + @if(isset($field['prefix']) || isset($field['suffix']))
@endif + + {{-- HINT --}} + @if (isset($field['hint'])) +

{!! $field['hint'] !!}

+ @endif +@include('crud::fields.inc.wrapper_end') diff --git a/resources/views/vendor/backpack/crud/fields/upload.blade.php b/resources/views/vendor/backpack/crud/fields/upload.blade.php new file mode 100644 index 0000000..bbfcb91 --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/upload.blade.php @@ -0,0 +1,193 @@ +@php + $field['wrapper'] = $field['wrapper'] ?? $field['wrapperAttributes'] ?? []; + $field['wrapper']['data-init-function'] = $field['wrapper']['data-init-function'] ?? 'bpFieldInitUploadElement'; + $field['wrapper']['data-field-name'] = $field['wrapper']['data-field-name'] ?? $field['name']; +@endphp + +{{-- text input --}} +@include('crud::fields.inc.wrapper_start') + + @include('crud::fields.inc.translatable_icon') + + {{-- Show the file name and a "Clear" button on EDIT form. --}} + @if (!empty($field['value'])) +
+ @if (isset($field['disk'])) + @if (isset($field['temporary'])) + + @else + + @endif + @else + + @endif + {{ $field['value'] }} + + +
+
+ @endif + + {{-- Show the file picker on CREATE form. --}} +
+ isset($field['value']) && $field['value']!=null?'file_input backstrap-file-input':'file_input backstrap-file-input']) + > + +
+ + {{-- HINT --}} + @if (isset($field['hint'])) +

{!! $field['hint'] !!}

+ @endif +@include('crud::fields.inc.wrapper_end') + + + +{{-- ########################################## --}} +{{-- Extra CSS and JS for this particular field --}} +{{-- If a field type is shown multiple times on a form, the CSS and JS will only be loaded once --}} + +@push('crud_fields_styles') + @loadOnce('upload_field_styles') + + @endLoadOnce +@endpush + +@push('crud_fields_scripts') + @loadOnce('bpFieldInitUploadElement') + + @endLoadOnce +@endpush diff --git a/resources/views/vendor/backpack/crud/fields/upload_multiple.blade.php b/resources/views/vendor/backpack/crud/fields/upload_multiple.blade.php new file mode 100644 index 0000000..313b515 --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/upload_multiple.blade.php @@ -0,0 +1,204 @@ +@php + $field['wrapper'] = $field['wrapper'] ?? $field['wrapperAttributes'] ?? []; + $field['wrapper']['data-init-function'] = $field['wrapper']['data-init-function'] ?? 'bpFieldInitUploadMultipleElement'; + $field['wrapper']['data-field-name'] = $field['wrapper']['data-field-name'] ?? $field['name']; +@endphp + +{{-- upload multiple input --}} +@include('crud::fields.inc.wrapper_start') + + @include('crud::fields.inc.translatable_icon') + + {{-- Show the file name and a "Clear" button on EDIT form. --}} + @if (isset($field['value'])) + @php + if (is_string($field['value'])) { + $values = json_decode($field['value'], true) ?? []; + } else { + $values = $field['value']; + } + @endphp + @if (count($values)) +
+ @foreach($values as $key => $file_path) +
+ @if (isset($field['temporary'])) + {{ $file_path }} + @else + {{ $file_path }} + @endif + +
+
+ @endforeach +
+ @endif + @endif + {{-- Show the file picker on CREATE form. --}} + +
+ isset($field['value']) && $field['value']!=null?'file_input backstrap-file-input':'file_input backstrap-file-input']) + multiple + > + +
+ + {{-- HINT --}} + @if (isset($field['hint'])) +

{!! $field['hint'] !!}

+ @endif + + @include('crud::fields.inc.wrapper_end') + +{{-- ########################################## --}} +{{-- Extra CSS and JS for this particular field --}} + @push('crud_fields_styles') + @loadOnce('upload_field_styles') + + @endLoadOnce + @endpush + @push('crud_fields_scripts') + @loadOnce('bpFieldInitUploadMultipleElement') + + @endLoadOnce + @endpush diff --git a/resources/views/vendor/backpack/crud/fields/url.blade.php b/resources/views/vendor/backpack/crud/fields/url.blade.php new file mode 100644 index 0000000..f509837 --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/url.blade.php @@ -0,0 +1,21 @@ +{{-- html5 url input --}} +@include('crud::fields.inc.wrapper_start') + + @include('crud::fields.inc.translatable_icon') + + @if(isset($field['prefix']) || isset($field['suffix']))
@endif + @if(isset($field['prefix']))
{!! $field['prefix'] !!}
@endif + + @if(isset($field['suffix']))
{!! $field['suffix'] !!}
@endif + @if(isset($field['prefix']) || isset($field['suffix']))
@endif + + {{-- HINT --}} + @if (isset($field['hint'])) +

{!! $field['hint'] !!}

+ @endif +@include('crud::fields.inc.wrapper_end') diff --git a/resources/views/vendor/backpack/crud/fields/view.blade.php b/resources/views/vendor/backpack/crud/fields/view.blade.php new file mode 100644 index 0000000..c327968 --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/view.blade.php @@ -0,0 +1,4 @@ +{{-- view field --}} +@includeWhen(!isset($field['wrapper']) || $field['wrapper'] !== false, 'crud::fields.inc.wrapper_start') + @include($field['view'], ['crud' => $crud, 'entry' => $entry ?? null, 'field' => $field]) +@includeWhen(!isset($field['wrapper']) || $field['wrapper'] !== false, 'crud::fields.inc.wrapper_end') diff --git a/resources/views/vendor/backpack/crud/fields/week.blade.php b/resources/views/vendor/backpack/crud/fields/week.blade.php new file mode 100644 index 0000000..ba94757 --- /dev/null +++ b/resources/views/vendor/backpack/crud/fields/week.blade.php @@ -0,0 +1,21 @@ +{{-- html5 week input --}} +@include('crud::fields.inc.wrapper_start') + + @include('crud::fields.inc.translatable_icon') + + @if(isset($field['prefix']) || isset($field['suffix']))
@endif + @if(isset($field['prefix']))
{!! $field['prefix'] !!}
@endif + + @if(isset($field['suffix']))
{!! $field['suffix'] !!}
@endif + @if(isset($field['prefix']) || isset($field['suffix']))
@endif + + {{-- HINT --}} + @if (isset($field['hint'])) +

{!! $field['hint'] !!}

+ @endif +@include('crud::fields.inc.wrapper_end') diff --git a/resources/views/vendor/backpack/crud/form_content.blade.php b/resources/views/vendor/backpack/crud/form_content.blade.php new file mode 100644 index 0000000..73655a2 --- /dev/null +++ b/resources/views/vendor/backpack/crud/form_content.blade.php @@ -0,0 +1,233 @@ +route) }}> + +{{-- See if we're using tabs --}} +@if ($crud->tabsEnabled() && count($crud->getTabs())) + @include('crud::inc.show_tabbed_fields') + +@else +
+
+ @include('crud::inc.show_fields', ['fields' => $crud->fields()]) +
+
+@endif + + +{{-- Define blade stacks so css and js can be pushed from the fields to these sections. --}} + +@section('after_styles') + + {{-- CRUD FORM CONTENT - crud_fields_styles stack --}} + @stack('crud_fields_styles') + +@endsection + +@section('after_scripts') + + {{-- CRUD FORM CONTENT - crud_fields_scripts stack --}} + @stack('crud_fields_scripts') + + + + @include('crud::inc.form_fields_script') +@endsection diff --git a/resources/views/vendor/backpack/crud/inc/ajax_error_frame.blade.php b/resources/views/vendor/backpack/crud/inc/ajax_error_frame.blade.php new file mode 100644 index 0000000..9ab1d87 --- /dev/null +++ b/resources/views/vendor/backpack/crud/inc/ajax_error_frame.blade.php @@ -0,0 +1,60 @@ + \ No newline at end of file diff --git a/resources/views/vendor/backpack/crud/inc/button_stack.blade.php b/resources/views/vendor/backpack/crud/inc/button_stack.blade.php new file mode 100644 index 0000000..c1fb4f4 --- /dev/null +++ b/resources/views/vendor/backpack/crud/inc/button_stack.blade.php @@ -0,0 +1,5 @@ +@if ($crud->buttons()->where('stack', $stack)->count()) + @foreach ($crud->buttons()->where('stack', $stack) as $button) + {!! $button->getHtml($entry ?? null) !!} + @endforeach +@endif diff --git a/resources/views/vendor/backpack/crud/inc/datatables_logic.blade.php b/resources/views/vendor/backpack/crud/inc/datatables_logic.blade.php new file mode 100644 index 0000000..c5710bf --- /dev/null +++ b/resources/views/vendor/backpack/crud/inc/datatables_logic.blade.php @@ -0,0 +1,424 @@ + @php + // as it is possible that we can be redirected with persistent table we save the alerts in a variable + // and flush them from session, so we will get them later from localStorage. + $backpack_alerts = \Alert::getMessages(); + \Alert::flush(); + @endphp + + {{-- DATA TABLES SCRIPT --}} + + + + + + + + + @include('crud::inc.export_buttons') + + + + @include('crud::inc.details_row_logic') diff --git a/resources/views/vendor/backpack/crud/inc/details_row_logic.blade.php b/resources/views/vendor/backpack/crud/inc/details_row_logic.blade.php new file mode 100644 index 0000000..f335e57 --- /dev/null +++ b/resources/views/vendor/backpack/crud/inc/details_row_logic.blade.php @@ -0,0 +1,56 @@ + @if ($crud->get('list.detailsRow')) + +@endif \ No newline at end of file diff --git a/resources/views/vendor/backpack/crud/inc/export_buttons.blade.php b/resources/views/vendor/backpack/crud/inc/export_buttons.blade.php new file mode 100644 index 0000000..4ad9567 --- /dev/null +++ b/resources/views/vendor/backpack/crud/inc/export_buttons.blade.php @@ -0,0 +1,154 @@ +@if ($crud->exportButtons()) + + + + + + + + + +@endif diff --git a/resources/views/vendor/backpack/crud/inc/filters_navbar.blade.php b/resources/views/vendor/backpack/crud/inc/filters_navbar.blade.php new file mode 100644 index 0000000..f3f5f4f --- /dev/null +++ b/resources/views/vendor/backpack/crud/inc/filters_navbar.blade.php @@ -0,0 +1,109 @@ + + +@push('crud_list_scripts') + + +@endpush diff --git a/resources/views/vendor/backpack/crud/inc/form_fields_script.blade.php b/resources/views/vendor/backpack/crud/inc/form_fields_script.blade.php new file mode 100644 index 0000000..adb4d46 --- /dev/null +++ b/resources/views/vendor/backpack/crud/inc/form_fields_script.blade.php @@ -0,0 +1,188 @@ + \ No newline at end of file diff --git a/resources/views/vendor/backpack/crud/inc/form_save_buttons.blade.php b/resources/views/vendor/backpack/crud/inc/form_save_buttons.blade.php new file mode 100644 index 0000000..1eaee4b --- /dev/null +++ b/resources/views/vendor/backpack/crud/inc/form_save_buttons.blade.php @@ -0,0 +1,189 @@ +@if(isset($saveAction['active']) && !is_null($saveAction['active']['value'])) +
+ + + @if(!empty($saveAction['options'])) +
+ @endif + + + +
+ @if(!empty($saveAction['options'])) + + + @endif +
+ + @if(!empty($saveAction['options'])) +
+ @endif + + @if(!$crud->hasOperationSetting('showCancelButton') || $crud->getOperationSetting('showCancelButton') == true) +  {{ trans('backpack::crud.cancel') }} + @endif + + @if ($crud->get('update.showDeleteButton') && $crud->get('delete.configuration') && $crud->hasAccess('delete')) + + @endif +
+@endif + +@push('after_scripts') + + +@if ($crud->get('update.showDeleteButton') && $crud->get('delete.configuration') && $crud->hasAccess('delete')) + +@endif +@endpush diff --git a/resources/views/vendor/backpack/crud/inc/grouped_errors.blade.php b/resources/views/vendor/backpack/crud/inc/grouped_errors.blade.php new file mode 100644 index 0000000..139cf9d --- /dev/null +++ b/resources/views/vendor/backpack/crud/inc/grouped_errors.blade.php @@ -0,0 +1,14 @@ +{{-- Show the errors, if any --}} +@if ($crud->groupedErrorsEnabled() && session()->get('errors')) +
+
    + @foreach(session()->get('errors')->getBags() as $bag => $errorMessages) + @foreach($errorMessages->getMessages() as $errorMessageForInput) + @foreach($errorMessageForInput as $message) +
  • {{ $message }}
  • + @endforeach + @endforeach + @endforeach +
+
+@endif \ No newline at end of file diff --git a/resources/views/vendor/backpack/crud/inc/show_fields.blade.php b/resources/views/vendor/backpack/crud/inc/show_fields.blade.php new file mode 100644 index 0000000..74a05da --- /dev/null +++ b/resources/views/vendor/backpack/crud/inc/show_fields.blade.php @@ -0,0 +1,5 @@ +{{-- Show the inputs --}} +@foreach ($fields as $field) + @include($crud->getFirstFieldView($field['type'], $field['view_namespace'] ?? false), $field) +@endforeach + diff --git a/resources/views/vendor/backpack/crud/inc/show_tabbed_fields.blade.php b/resources/views/vendor/backpack/crud/inc/show_tabbed_fields.blade.php new file mode 100644 index 0000000..a1439b8 --- /dev/null +++ b/resources/views/vendor/backpack/crud/inc/show_tabbed_fields.blade.php @@ -0,0 +1,86 @@ +@php + $horizontalTabs = $crud->getTabsType()=='horizontal' ? true : false; + $tabWithError = (function() use ($crud) { + if(! session()->get('errors')) { + return false; + } + foreach(session()->get('errors')->getBags() as $bag => $errorMessages) { + foreach($errorMessages->getMessages() as $fieldName => $messages) { + if(array_key_exists($fieldName, $crud->getCurrentFields()) && array_key_exists('tab', $crud->getCurrentFields()[$fieldName])) { + return $crud->getCurrentFields()[$fieldName]['tab']; + } + } + } + return false; + })(); +@endphp + +@if ($crud->getFieldsWithoutATab()->filter(function ($value, $key) { return $value['type'] != 'hidden'; })->count()) +
+
+ @include('crud::inc.show_fields', ['fields' => $crud->getFieldsWithoutATab()]) +
+
+@else + @include('crud::inc.show_fields', ['fields' => $crud->getFieldsWithoutATab()]) +@endif + +
+ + +
+ +@push('crud_fields_styles') + +@endpush + diff --git a/resources/views/vendor/backpack/crud/inc/show_tabbed_table.blade.php b/resources/views/vendor/backpack/crud/inc/show_tabbed_table.blade.php new file mode 100644 index 0000000..1d0e874 --- /dev/null +++ b/resources/views/vendor/backpack/crud/inc/show_tabbed_table.blade.php @@ -0,0 +1,47 @@ +@php + $horizontalTabs = $crud->getTabsType() == 'horizontal'; + $columnsWithoutTab = $crud->getElementsWithoutATab($crud->columns()); + $columnsWithTabs = $crud->getUniqueTabNames('columns'); +@endphp + +@if($columnsWithoutTab->filter(function ($value, $key) { return $value['type'] != 'hidden'; })->count()) +
+ @include('crud::inc.show_table', ['columns' => $columnsWithoutTab, 'displayActionsColumn' => false]) +
+@else + @include('crud::inc.show_table', ['columns' => $columnsWithoutTab]) +@endif + +
+ + +
diff --git a/resources/views/vendor/backpack/crud/inc/show_table.blade.php b/resources/views/vendor/backpack/crud/inc/show_table.blade.php new file mode 100644 index 0000000..b290788 --- /dev/null +++ b/resources/views/vendor/backpack/crud/inc/show_table.blade.php @@ -0,0 +1,39 @@ +@if(count($columns)) + + + @foreach($columns as $column) + + + + + @endforeach + @if($crud->buttons()->where('stack', 'line')->count() && ($displayActionsColumn ?? true)) + + + + + @endif + +
index === 0) class="border-top-0" @endif> + {!! $column['label'] !!}: + index === 0) class="border-top-0" @endif> + @php + // create a list of paths to column blade views + // including the configured view_namespaces + $columnPaths = array_map(function($item) use ($column) { + return $item.'.'.$column['type']; + }, \Backpack\CRUD\ViewNamespaces::getFor('columns')); + + // but always fall back to the stock 'text' column + // if a view doesn't exist + if (!in_array('crud::columns.text', $columnPaths)) { + $columnPaths[] = 'crud::columns.text'; + } + @endphp + @includeFirst($columnPaths) +
+ {{ trans('backpack::crud.actions') }} + + @include('crud::inc.button_stack', ['stack' => 'line']) +
+@endif \ No newline at end of file diff --git a/resources/views/vendor/backpack/crud/list.blade.php b/resources/views/vendor/backpack/crud/list.blade.php new file mode 100644 index 0000000..7dccdb5 --- /dev/null +++ b/resources/views/vendor/backpack/crud/list.blade.php @@ -0,0 +1,170 @@ +@extends(backpack_view('blank')) + +@php + $defaultBreadcrumbs = [ + trans('backpack::crud.admin') => url(config('backpack.base.route_prefix'), 'dashboard'), + $crud->entity_name_plural => url($crud->route), + trans('backpack::crud.list') => false, + ]; + + // if breadcrumbs aren't defined in the CrudController, use the default breadcrumbs + $breadcrumbs = $breadcrumbs ?? $defaultBreadcrumbs; +@endphp + +@section('header') +
+

+ {!! $crud->getHeading() ?? $crud->entity_name_plural !!} + {!! $crud->getSubheading() ?? '' !!} +

+
+@endsection + +@section('content') + {{-- Default box --}} +
+ + {{-- THE ACTUAL CONTENT --}} +
+ +
+
+ @if ( $crud->buttons()->where('stack', 'top')->count() || $crud->exportButtons()) +
+ + @include('crud::inc.button_stack', ['stack' => 'top']) + +
+ @endif +
+
+
+
+
+ + {{-- Backpack List Filters --}} + @if ($crud->filtersEnabled()) + @include('crud::inc.filters_navbar') + @endif + + + + + {{-- Table columns --}} + @foreach ($crud->columns() as $column) + + @endforeach + + @if ( $crud->buttons()->where('stack', 'line')->count() ) + + @endif + + + + + + + {{-- Table columns --}} + @foreach ($crud->columns() as $column) + + @endforeach + + @if ( $crud->buttons()->where('stack', 'line')->count() ) + + @endif + + +
if developer forced field in table with 'visibleInTable => true' + data-visible => regular visibility of the field + data-can-be-visible-in-table => prevents the column to be loaded into the table (export-only) + data-visible-in-modal => if column apears on responsive modal + data-visible-in-export => if this field is exportable + data-force-export => force export even if field are hidden + --}} + + {{-- If it is an export field only, we are done. --}} + @if(isset($column['exportOnlyField']) && $column['exportOnlyField'] === true) + data-visible="false" + data-visible-in-table="false" + data-can-be-visible-in-table="false" + data-visible-in-modal="false" + data-visible-in-export="true" + data-force-export="true" + @else + data-visible-in-table="{{var_export($column['visibleInTable'] ?? false)}}" + data-visible="{{var_export($column['visibleInTable'] ?? true)}}" + data-can-be-visible-in-table="true" + data-visible-in-modal="{{var_export($column['visibleInModal'] ?? true)}}" + @if(isset($column['visibleInExport'])) + @if($column['visibleInExport'] === false) + data-visible-in-export="false" + data-force-export="false" + @else + data-visible-in-export="true" + data-force-export="true" + @endif + @else + data-visible-in-export="true" + data-force-export="false" + @endif + @endif + > + {{-- Bulk checkbox --}} + @if($loop->first && $crud->getOperationSetting('bulkActions')) + {!! View::make('crud::columns.inc.bulk_actions_checkbox')->render() !!} + @endif + {!! $column['label'] !!} + {{ trans('backpack::crud.actions') }}
+ {{-- Bulk checkbox --}} + @if($loop->first && $crud->getOperationSetting('bulkActions')) + {!! View::make('crud::columns.inc.bulk_actions_checkbox')->render() !!} + @endif + {!! $column['label'] !!} + {{ trans('backpack::crud.actions') }}
+ + @if ( $crud->buttons()->where('stack', 'bottom')->count() ) +
+ @include('crud::inc.button_stack', ['stack' => 'bottom']) + + +
+ @endif + +
+ +
+ +@endsection + +@section('after_styles') + {{-- DATA TABLES --}} + + + + + {{-- CRUD LIST CONTENT - crud_list_styles stack --}} + @stack('crud_list_styles') +@endsection + +@section('after_scripts') + @include('crud::inc.datatables_logic') + + {{-- CRUD LIST CONTENT - crud_list_scripts stack --}} + @stack('crud_list_scripts') +@endsection diff --git a/resources/views/vendor/backpack/crud/reorder.blade.php b/resources/views/vendor/backpack/crud/reorder.blade.php new file mode 100644 index 0000000..033dafb --- /dev/null +++ b/resources/views/vendor/backpack/crud/reorder.blade.php @@ -0,0 +1,297 @@ +@extends(backpack_view('blank')) + +@php + $defaultBreadcrumbs = [ + trans('backpack::crud.admin') => url(config('backpack.base.route_prefix'), 'dashboard'), + $crud->entity_name_plural => url($crud->route), + trans('backpack::crud.reorder') => false, + ]; + + // if breadcrumbs aren't defined in the CrudController, use the default breadcrumbs + $breadcrumbs = $breadcrumbs ?? $defaultBreadcrumbs; +@endphp + +@section('header') +
+

+ {!! $crud->getHeading() ?? $crud->entity_name_plural !!} + {!! $crud->getSubheading() ?? trans('backpack::crud.reorder').' '.$crud->entity_name_plural !!}. + + @if ($crud->hasAccess('list')) + {{ trans('backpack::crud.back_to_all') }} {{ $crud->entity_name_plural }} + @endif +

+
+@endsection + +@section('content') + tree_element_shown)) { + // mark the element as shown + $all_entries[$key]->tree_element_shown = true; + $entry->tree_element_shown = true; + + // show the tree element + echo '
  • '; + echo '
    '.object_get($entry, $crud->get('reorder.label')).'
    '; + + // see if this element has any children + $children = []; + foreach ($all_entries as $key => $subentry) { + if ($subentry->parent_id == $entry->getKey()) { + $children[] = $subentry; + } + } + + $children = collect($children)->sortBy('lft'); + + // if it does have children, show them + if (count($children)) { + echo '
      '; + foreach ($children as $key => $child) { + $children[$key] = tree_element($child, $child->getKey(), $all_entries, $crud); + } + echo '
    '; + } + echo '
  • '; + } + + return $entry; + } + + ?> + +
    +
    +
    +

    {{ trans('backpack::crud.reorder_text') }}

    + +
      + all())->sortBy('lft')->keyBy($crud->getModel()->getKeyName()); + $root_entries = $all_entries->filter(function ($item) { + return $item->parent_id == 0; + }); + foreach ($root_entries as $key => $entry) { + $root_entries[$key] = tree_element($entry, $key, $all_entries, $crud); + } + ?> +
    + +
    {{-- /.card --}} + + +
    +
    +@endsection + + +@section('after_styles') + +@endsection + +@section('after_scripts') + + + + +@endsection diff --git a/resources/views/vendor/backpack/crud/show.blade.php b/resources/views/vendor/backpack/crud/show.blade.php new file mode 100644 index 0000000..ae80388 --- /dev/null +++ b/resources/views/vendor/backpack/crud/show.blade.php @@ -0,0 +1,62 @@ +@extends(backpack_view('blank')) + +@php + $defaultBreadcrumbs = [ + trans('backpack::crud.admin') => url(config('backpack.base.route_prefix'), 'dashboard'), + $crud->entity_name_plural => url($crud->route), + trans('backpack::crud.preview') => false, + ]; + + // if breadcrumbs aren't defined in the CrudController, use the default breadcrumbs + $breadcrumbs = $breadcrumbs ?? $defaultBreadcrumbs; +@endphp + +@section('header') +
    + +

    + {!! $crud->getHeading() ?? $crud->entity_name_plural !!} + {!! $crud->getSubheading() ?? mb_ucfirst(trans('backpack::crud.preview')).' '.$crud->entity_name !!}. + @if ($crud->hasAccess('list')) + {{ trans('backpack::crud.back_to_all') }} {{ $crud->entity_name_plural }} + @endif +

    +
    +@endsection + +@section('content') +
    +
    + + {{-- Default box --}} +
    + @if ($crud->model->translationEnabled()) +
    +
    + {{-- Change translation button group --}} +
    + + +
    +
    +
    + @endif + + @if($crud->tabsEnabled() && count($crud->getUniqueTabNames('columns'))) + @include('crud::inc.show_tabbed_table') + @else +
    + @include('crud::inc.show_table', ['columns' => $crud->columns()]) +
    + @endif +
    + +
    +
    +@endsection