Compare commits

...

12 Commits

25 changed files with 183 additions and 55 deletions
+1
View File
@@ -12,3 +12,4 @@ npm-debug.log
/public/rldbadm /public/rldbadm
/stats /stats
/.well-known /.well-known
.DS_Store
Binary file not shown.

After

Width:  |  Height:  |  Size: 353 KiB

+17
View File
@@ -52,6 +52,23 @@ The Laravel framework is open-sourced software licensed under the [MIT license](
## Changelog ## Changelog
### [tablar-theme] - 2026-05-02
#### Added
- **Searchable Dropdowns:** Integrated `TomSelect` across various forms (Checkout, Reprint Receipt, etc.) for enhanced usability.
- **Self-Checkout Flow:** Added a prominent self-checkout link for bidders, integrated with North Embedded Checkout.
- **Pickup Instructions:** Added clear instructions for bidders on the checkout completion page to proceed to the Item Pickup Table.
#### Fixed
- **Logo Integration:** Corrected logo sizing issues using inline styles to override theme constraints.
- **User Menu:** Restored "Admin" and "Link OIDC Account" entries to match the legacy theme.
- **Manual Checkout:** Fixed broken `/checkout` route by aligning form field names with controller expectations and restoring payment method logic.
- **Data Restoration:** Re-added bidder information and itemized winning lists to the checkout completion views.
#### Changed
- **UI Cleanup:** Disabled default Tablar footers and notifications across all layout templates to maintain a focused auction interface.
- **Theme Consistency:** Updated various partials to ensure a seamless transition from the previous custom theme to Tablar.
### [bidder-facing-checkout] - 2026-04-24 ### [bidder-facing-checkout] - 2026-04-24
#### Added #### Added
+67 -17
View File
@@ -16,33 +16,67 @@
<div class="col-12"> <div class="col-12">
<div class="card"> <div class="card">
<div class="card-body"> <div class="card-body">
@foreach($checkout_info_results as $info)
<form method="POST" action="/checkout" class="row g-3"> <form method="POST" action="/checkout" class="row g-3">
{{ csrf_field() }} {{ csrf_field() }}
<input type="hidden" name="bidder_num" value="{{ $bidder->idbidders }}"> <input type="hidden" name="checkoutbiddernum" value="{{ $info->idbidders }}">
<input type="hidden" name="winnertotal" value="{{ $info->total_cost }}">
<h3 class="mb-3">Winning Items for {{ $bidder->bidder_fname }} {{ $bidder->bidder_lname }}</h3> <h3 class="mb-3">Winning Items for {{ $info->bidder_fname }} {{ $info->bidder_lname }} (Bidder #{{ $info->bidder_assigned_number }})</h3>
<ul class="list-group mb-4">
@foreach($winnings as $item) <div class="table-responsive mb-4">
<li class="list-group-item d-flex justify-content-between align-items-center"> <table class="table table-vcenter">
{{ $item->items->item_desc }} <thead>
<span class="badge bg-primary rounded-pill">${{ number_format($item->winning_cost, 2) }}</span> <tr>
</li> <th>Item #</th>
@endforeach <th>Description</th>
</ul> <th class="text-end">Amount</th>
</tr>
</thead>
<tbody>
@foreach($checkout_list_results as $item)
<tr>
<td>{{ $item->item_assigned_num }}</td>
<td>{{ $item->item_desc }}</td>
<td class="text-end">${{ number_format($item->winning_cost, 2) }}</td>
</tr>
@endforeach
</tbody>
<tfoot>
<tr>
<th colspan="2" class="text-end">Total Due</th>
<th class="text-end h3">${{ number_format($info->total_cost, 2) }}</th>
</tr>
</tfoot>
</table>
</div>
<div class="col-md-4"> <div class="col-md-4">
<label for="payment_method" class="form-label">Payment Method</label> <label for="payment_method" class="form-label">Payment Method</label>
<select name="payment_method" id="payment_method" class="form-select" required> <select name="checkout_payment_method" id="payment_method" class="form-select" required onchange="togglePaymentFields()">
@foreach($paymentMethods as $pm) {!! \App\Helpers\PaymentMethodSelectList::paymentShowMethods() !!}
<option value="{{ $pm->pm_id }}">{{ $pm->pm_name }}</option>
@endforeach
</select> </select>
</div> </div>
<div class="col-12"> <div id="check_fields" class="col-md-4" style="display:none;">
<button type="submit" class="btn btn-success">Complete Checkout</button> <label for="check_number" class="form-label">Check Number</label>
<input type="text" name="check_number" id="check_number" class="form-control">
</div>
<div id="cc_fields" class="col-md-4" style="display:none;">
<label for="cc_transaction" class="form-label">Transaction ID / Last 4</label>
<input type="text" name="cc_transaction" id="cc_transaction" class="form-control">
<input type="hidden" name="cc_amount" value="{{ $info->total_cost }}">
</div>
<div class="col-12 mt-4">
<button type="submit" class="btn btn-success">
<i class="ti ti-check me-2"></i>Complete Checkout
</button>
<a href="/checkout" class="btn btn-link">Cancel and Start Over</a>
</div> </div>
</form> </form>
@endforeach
</div> </div>
</div> </div>
</div> </div>
@@ -50,6 +84,22 @@
</div> </div>
</div> </div>
@endsection @endsection
@include('components.tomselect')
@push('js') @push('js')
<script>
function togglePaymentFields() {
const method = document.getElementById('payment_method').value;
const checkFields = document.getElementById('check_fields');
const ccFields = document.getElementById('cc_fields');
checkFields.style.display = 'none';
ccFields.style.display = 'none';
if (method === '2') { // Check
checkFields.style.display = 'block';
} else if (method === '3') { // Credit Card
ccFields.style.display = 'block';
}
}
</script>
@endpush @endpush
+72 -6
View File
@@ -14,13 +14,79 @@
<div class="container-xl"> <div class="container-xl">
<div class="row row-cards"> <div class="row row-cards">
<div class="col-12"> <div class="col-12">
<div class="card"> <div class="card mb-3">
<div class="card-body text-center"> <div class="card-body text-center py-4">
<h2 class="card-title">Success!</h2> <h2 class="text-success mb-2">Success!</h2>
<p class="text-muted">The checkout has been successfully processed.</p> <p class="text-muted">The checkout has been successfully processed.</p>
<a href="{{ route('receiptpdf', ['checkout_id' => $checkout_result]) }}" class="btn btn-primary" target="_blank">Print Receipt</a> <p class="strong text-azure">Please proceed to the Item Pickup Table and show the page below or the pdf receipt on your device!</p>
<a href="{{ route('download_receipt', ['checkout_id' => $checkout_result]) }}" class="btn btn-success">Save PDF Receipt</a> <div class="mt-3">
<a href="/home" class="btn btn-secondary">Back to Dashboard</a> <a href="{{ route('receiptpdf', ['checkout_id' => $checkout_result]) }}" class="btn btn-primary" target="_blank">
<i class="ti ti-printer me-2"></i>Print Receipt
</a>
<a href="{{ route('download_receipt', ['checkout_id' => $checkout_result]) }}" class="btn btn-success">
<i class="ti ti-download me-2"></i>Save PDF Receipt
</a>
<a href="/home" class="btn btn-secondary">
<i class="ti ti-dashboard me-2"></i>Back to Dashboard
</a>
</div>
</div>
</div>
@foreach($checkout_info_results as $info)
<div class="card mb-3">
<div class="card-header">
<h3 class="card-title">Bidder Information</h3>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-6">
<p><strong>Name:</strong> {{ $info->bidder_fname }} {{ $info->bidder_lname }}</p>
<p><strong>Bidder Number:</strong> {{ $info->bidder_assigned_number }}</p>
</div>
<div class="col-md-6 text-md-end">
<p><strong>Total Paid:</strong> <span class="h2 text-primary">${{ number_format($info->total_cost, 2) }}</span></p>
<p><strong>Payment Method:</strong>
@if($payment_method == 1) Cash
@elseif($payment_method == 2) Check ({{ $check_number }})
@else Credit Card ({{ $cc_transaction }})
@endif
</p>
</div>
</div>
</div>
</div>
@endforeach
<div class="card">
<div class="card-header">
<h3 class="card-title">Items Won</h3>
</div>
<div class="table-responsive">
<table class="table table-vcenter card-table">
<thead>
<tr>
<th>Item #</th>
<th>Description</th>
<th class="text-end">Amount</th>
</tr>
</thead>
<tbody>
@foreach($checkout_list_results as $item)
<tr>
<td>{{ $item->item_assigned_num }}</td>
<td>{{ $item->item_desc }}</td>
<td class="text-end">${{ number_format($item->winning_cost, 2) }}</td>
</tr>
@endforeach
</tbody>
<tfoot>
<tr>
<th colspan="2" class="text-end">Total</th>
<th class="text-end">${{ number_format($info->total_cost ?? 0, 2) }}</th>
</tr>
</tfoot>
</table>
</div> </div>
</div> </div>
</div> </div>
@@ -20,7 +20,7 @@
{{ csrf_field() }} {{ csrf_field() }}
<div class="col-md-6"> <div class="col-md-6">
<label for="bidder_num" class="form-label">Bidder</label> <label for="bidder_num" class="form-label">Bidder</label>
<select name="bidder_num" id="bidder_num" class="form-select" required> <select name="checkoutbiddernum" id="bidder_num" class="form-select" required>
@foreach($bidders as $bidder) @foreach($bidders as $bidder)
<option value="{{ $bidder->idbidders }}">{{ $bidder->bidder_assigned_number }} - {{ $bidder->bidder_fname }} {{ $bidder->bidder_lname }}</option> <option value="{{ $bidder->idbidders }}">{{ $bidder->bidder_assigned_number }} - {{ $bidder->bidder_fname }} {{ $bidder->bidder_lname }}</option>
@endforeach @endforeach
+1 -1
View File
@@ -10,7 +10,7 @@
@endif @endif
<!-- Page Error --> <!-- Page Error -->
@include('tablar::error') @include('tablar::error')
@include('tablar::partials.footer.bottom') {{-- @include('tablar::partials.footer.bottom') --}}
</div> </div>
</div> </div>
</body> </body>
+1 -1
View File
@@ -14,7 +14,7 @@
@endif @endif
<!-- Page Error --> <!-- Page Error -->
@include('tablar::error') @include('tablar::error')
@include('tablar::partials.footer.bottom') {{-- @include('tablar::partials.footer.bottom') --}}
</div> </div>
</div> </div>
</body> </body>
+1 -1
View File
@@ -14,7 +14,7 @@
@endif @endif
<!-- Page Error --> <!-- Page Error -->
@include('tablar::error') @include('tablar::error')
@include('tablar::partials.footer.bottom') {{-- @include('tablar::partials.footer.bottom') --}}
</div> </div>
</div> </div>
</body> </body>
@@ -14,7 +14,7 @@
@endif @endif
<!-- Page Error --> <!-- Page Error -->
@include('tablar::error') @include('tablar::error')
@include('tablar::partials.footer.bottom') {{-- @include('tablar::partials.footer.bottom') --}}
</div> </div>
</div> </div>
</body> </body>
+1 -1
View File
@@ -14,7 +14,7 @@
@endif @endif
<!-- Page Error --> <!-- Page Error -->
@include('tablar::error') @include('tablar::error')
@include('tablar::partials.footer.bottom') {{-- @include('tablar::partials.footer.bottom') --}}
</div> </div>
</div> </div>
</body> </body>
+1 -1
View File
@@ -14,7 +14,7 @@
@endif @endif
<!-- Page Error --> <!-- Page Error -->
@include('tablar::error') @include('tablar::error')
@include('tablar::partials.footer.bottom') {{-- @include('tablar::partials.footer.bottom') --}}
</div> </div>
</div> </div>
</body> </body>
@@ -13,7 +13,7 @@
@endif @endif
<!-- Page Error --> <!-- Page Error -->
@include('tablar::error') @include('tablar::error')
@include('tablar::partials.footer.bottom') {{-- @include('tablar::partials.footer.bottom') --}}
</div> </div>
</div> </div>
</body> </body>
@@ -15,7 +15,7 @@
@endif @endif
<!-- Page Error --> <!-- Page Error -->
@include('tablar::error') @include('tablar::error')
@include('tablar::partials.footer.bottom') {{-- @include('tablar::partials.footer.bottom') --}}
</div> </div>
</div> </div>
</body> </body>
+1 -1
View File
@@ -14,7 +14,7 @@
@endif @endif
<!-- Page Error --> <!-- Page Error -->
@include('tablar::error') @include('tablar::error')
@include('tablar::partials.footer.bottom') {{-- @include('tablar::partials.footer.bottom') --}}
</div> </div>
</div> </div>
</body> </body>
@@ -13,7 +13,7 @@
@endif @endif
<!-- Page Error --> <!-- Page Error -->
@include('tablar::error') @include('tablar::error')
@include('tablar::partials.footer.bottom') {{-- @include('tablar::partials.footer.bottom') --}}
</div> </div>
</div> </div>
</body> </body>
@@ -13,7 +13,7 @@
@endif @endif
<!-- Page Error --> <!-- Page Error -->
@include('tablar::error') @include('tablar::error')
@include('tablar::partials.footer.bottom') {{-- @include('tablar::partials.footer.bottom') --}}
</div> </div>
</div> </div>
</body> </body>
+1 -1
View File
@@ -13,7 +13,7 @@
@endif @endif
<!-- Page Error --> <!-- Page Error -->
@include('tablar::error') @include('tablar::error')
@include('tablar::partials.footer.bottom') {{-- @include('tablar::partials.footer.bottom') --}}
</div> </div>
</div> </div>
</body> </body>
@@ -9,7 +9,7 @@
<div class="navbar-nav flex-row order-md-last"> <div class="navbar-nav flex-row order-md-last">
<div class="d-none d-md-flex"> <div class="d-none d-md-flex">
@include('tablar::partials.header.theme-mode') @include('tablar::partials.header.theme-mode')
@include('tablar::partials.header.notifications') {{-- @include('tablar::partials.header.notifications') --}}
</div> </div>
@include('tablar::partials.header.top-right') @include('tablar::partials.header.top-right')
</div> </div>
@@ -14,7 +14,7 @@
<div class="d-none d-md-flex"> <div class="d-none d-md-flex">
@include('tablar::partials.header.theme-mode') @include('tablar::partials.header.theme-mode')
@include('tablar::partials.header.notifications') {{-- @include('tablar::partials.header.notifications') --}}
</div> </div>
@include('tablar::partials.header.top-right') @include('tablar::partials.header.top-right')
@@ -1,5 +1,5 @@
<a href="#"> <a href="#">
<img src="{{asset('assets/auction_logo_small.jpg')}}" width="110" height="32" <img src="{{asset('assets/auction_logo.png')}}" width="220" height="64"
alt="{{asset(config('tablar.title','Tablar'))}}" alt="{{asset(config('tablar.title','Tablar'))}}"
class="navbar-brand-image"> class="navbar-brand-image" style="height: 64px !important; width: 220px !important;">
</a> </a>
@@ -7,7 +7,7 @@
<div class="navbar-nav flex-row order-md-last"> <div class="navbar-nav flex-row order-md-last">
<div class="d-none d-md-flex"> <div class="d-none d-md-flex">
@include('tablar::partials.header.theme-mode') @include('tablar::partials.header.theme-mode')
@include('tablar::partials.header.notifications') {{-- @include('tablar::partials.header.notifications') --}}
</div> </div>
@include('tablar::partials.header.top-right') @include('tablar::partials.header.top-right')
</div> </div>
@@ -2,33 +2,23 @@
<div class="nav-item dropdown"> <div class="nav-item dropdown">
<a href="#" class="nav-link d-flex lh-1 text-reset p-0" data-bs-toggle="dropdown" <a href="#" class="nav-link d-flex lh-1 text-reset p-0" data-bs-toggle="dropdown"
aria-label="Open user menu"> aria-label="Open user menu">
<span class="avatar">SE</span>
<div class="d-none d-xl-block ps-2"> <div class="d-none d-xl-block ps-2">
<div>{{Auth()->user()->name}}</div> <div>{{Auth()->user()->name}}</div>
<div class="mt-1 small text-muted">Software Engineer</div>
</div> </div>
</a> </a>
<div class="dropdown-menu dropdown-menu-end dropdown-menu-arrow"> <div class="dropdown-menu dropdown-menu-end dropdown-menu-arrow">
@php( $logout_url = View::getSection('logout_url') ?? config('tablar.logout_url', 'logout') ) @php( $logout_url = View::getSection('logout_url') ?? config('tablar.logout_url', 'logout') )
@php( $profile_url = View::getSection('profile_url') ?? config('tablar.profile_url', 'logout') )
@php( $setting_url = View::getSection('setting_url') ?? config('tablar.setting_url', 'home') )
@if (config('tablar.use_route_url', true)) @if (config('tablar.use_route_url', true))
@php( $profile_url = $profile_url ? route($profile_url) : '' )
@php( $logout_url = $logout_url ? route($logout_url) : '' ) @php( $logout_url = $logout_url ? route($logout_url) : '' )
@php( $setting_url = $setting_url ? route($setting_url) : '' )
@else @else
@php( $profile_url = $profile_url ? url($profile_url) : '' )
@php( $logout_url = $logout_url ? url($logout_url) : '' ) @php( $logout_url = $logout_url ? url($logout_url) : '' )
@php( $setting_url = $setting_url ? url($setting_url) : '' )
@endif @endif
<a href="#" class="dropdown-item">Status</a> <a href="{{ url('admin') }}" class="dropdown-item">Admin</a>
<a href="{{$profile_url}}" class="dropdown-item">Profile</a> <a href="{{ url('auth/social/oidc') }}" class="dropdown-item">Link OIDC Account</a>
<a href="#" class="dropdown-item">Feedback</a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a href="{{$setting_url}}" class="dropdown-item">Settings</a>
<a class="dropdown-item" <a class="dropdown-item"
href="#" onclick="event.preventDefault(); document.getElementById('logout-form').submit();"> href="#" onclick="event.preventDefault(); document.getElementById('logout-form').submit();">
<i class="fa fa-fw fa-power-off text-red"></i> <i class="fa fa-fw fa-power-off text-red"></i>
@@ -44,4 +34,8 @@
</div> </div>
</div> </div>
@else
<div class="nav-item">
<a class="nav-link" href="{{ route('login') }}">Login</a>
</div>
@endif @endif
@@ -17,7 +17,7 @@
<div class="d-none d-md-flex"> <div class="d-none d-md-flex">
@include('tablar::partials.header.theme-mode') @include('tablar::partials.header.theme-mode')
@include('tablar::partials.header.notifications') {{-- @include('tablar::partials.header.notifications') --}}
</div> </div>
@include('tablar::partials.header.top-right') @include('tablar::partials.header.top-right')
@@ -19,7 +19,7 @@
</div> </div>
<div class="d-none d-lg-flex"> <div class="d-none d-lg-flex">
@include('tablar::partials.header.theme-mode') @include('tablar::partials.header.theme-mode')
@include('tablar::partials.header.notifications') {{-- @include('tablar::partials.header.notifications') --}}
</div> </div>
@include('tablar::partials.header.top-right') @include('tablar::partials.header.top-right')
</div> </div>