From 1edcb53a3e6ac08586fa35ad15520c33f1daf3c1 Mon Sep 17 00:00:00 2001 From: Marius Susanu Date: Thu, 30 Jan 2025 16:15:06 +0200 Subject: [PATCH] Create quick-confirm.blade.php --- .../crud/buttons/quick-confirm.blade.php | 163 ++++++++++++++++++ 1 file changed, 163 insertions(+) create mode 100644 src/resources/views/crud/buttons/quick-confirm.blade.php diff --git a/src/resources/views/crud/buttons/quick-confirm.blade.php b/src/resources/views/crud/buttons/quick-confirm.blade.php new file mode 100644 index 0000000000..c3badc660a --- /dev/null +++ b/src/resources/views/crud/buttons/quick-confirm.blade.php @@ -0,0 +1,163 @@ +@php + $access = (function() use ($crud, $button) { + if (isset($button->meta['access']) && $button->meta['access'] !== null && $button->meta['access'] !== false) { + return $button->meta['access']; + } + return !is_null($crud->get(Str::of($button->name)->studly().'.access')) ? Str::of($button->name)->studly() : $button->name; + })(); + $icon = $button->meta['icon'] ?? ''; + $label = $button->meta['label'] ?? Str::of($button->name)->headline(); + + $defaultHref = url($crud->route. ($entry?->getKey() ? '/'.$entry?->getKey().'/' : '/') . Str::of($button->name)->kebab()); + $defaultClass = match ($button->stack) { + 'line' => 'btn btn-sm btn-link', + 'top' => 'btn btn-outline-primary', + 'bottom' => 'btn btn-sm btn-secondary', + default => 'btn btn-outline-primary', + }; + + $wrapper = $button->meta['wrapper'] ?? []; + $wrapper['element'] = $wrapper['element'] ?? 'a'; + $wrapper['href'] = $wrapper['href'] ?? $defaultHref; + if (is_a($wrapper['href'], \Closure::class, true)) { + $wrapper['href'] = ($wrapper['href'])($entry, $crud); + } + $wrapper['class'] = $wrapper['class'] ?? $defaultClass; + //if ajax enabled + $buttonAjaxConfiguration = $button->meta['ajax'] ?? false; + if($buttonAjaxConfiguration) { + $wrapper['data-route'] = $wrapper['href']; + $wrapper['data-method'] = $button->meta['ajax']['method'] ?? 'GET'; + $wrapper['data-refresh-table'] = $button->meta['ajax']['refreshCrudTable'] ?? false; + + $wrapper['href'] = 'javascript:void(0)'; + $wrapper['onclick'] = 'sendQuickConfirmButtonAjaxRequest(this)'; + $wrapper['data-button-type'] = 'quick-confirm-ajax'; + + //success message + $wrapper['data-success-title'] = $button->meta['ajax']['success_title'] ?? trans('backpack::crud.quick_button_ajax_success_title'); + $wrapper['data-success-message'] = $button->meta['ajax']['success_message'] ?? trans('backpack::crud.quick_button_ajax_success_message'); + //error message + $wrapper['data-error-title'] = $button->meta['ajax']['error_title'] ?? trans('backpack::crud.quick_button_ajax_error_title'); + $wrapper['data-error-message'] = $button->meta['ajax']['error_message'] ?? trans('backpack::crud.quick_button_ajax_error_message'); + + $wrapper['data-confirm'] = false; + if (isset($button->meta['ajax']['confirm'])) { + $wrapper['data-confirm'] = boolval($button->meta['ajax']['confirm']); + } + } + //endif ajax enabled +@endphp + +@if ($access === true || $crud->hasAccess($access, isset($entry) ? $entry : null)) + <{{ $wrapper['element'] }} + bp-button="{{ $button->name }}" + @foreach ($wrapper as $attribute => $value) + @if (is_string($attribute)) + {{ $attribute }}="{{ $value }}" + @endif + @endforeach + > + @if ($icon) @endif + {{ $label }} + +@endif + + +@if($buttonAjaxConfiguration) +{{-- Button Javascript --}} +{{-- Pushed to the end of the page, after jQuery is loaded --}} +@push('after_scripts') @if (request()->ajax()) @endpush @endif +@bassetBlock('backpack/crud/buttons/quick-confirm-button.js') + +@endBassetBlock +@if (!request()->ajax()) @endpush @endif +@endif