mirror of https://github.com/4xmen/xshop.git
parent
4ef0238dce
commit
aa974c76c3
@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Controllers\XController;
|
||||
use App\Http\Requests\AdminLogSaveRequest;
|
||||
use App\Models\Access;
|
||||
use App\Models\AdminLog;
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Helper;
|
||||
use function App\Helpers\hasCreateRoute;
|
||||
|
||||
class AdminLogController extends XController
|
||||
{
|
||||
|
||||
// protected $_MODEL_ = AdminLog::class;
|
||||
// protected $SAVE_REQUEST = AdminLogSaveRequest::class;
|
||||
|
||||
protected $cols = ['action','user_id'];
|
||||
protected $extra_cols = ['id','loggable_type','loggable_id'];
|
||||
|
||||
protected $searchable = ['action'];
|
||||
|
||||
protected $listView = 'admin.commons.adminlogs';
|
||||
|
||||
|
||||
protected $buttons = [];
|
||||
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct(AdminLog::class);
|
||||
}
|
||||
|
||||
|
||||
public function log(User $item){
|
||||
return redirect()->route('admin.adminlogs.index',['filter[user_id]'=> '['.$item->id.']']);
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,202 @@
|
||||
@extends('admin.templates.panel-list-template-raw')
|
||||
|
||||
@section('table')
|
||||
<table class="table-list">
|
||||
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<div
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-placement="top"
|
||||
data-bs-custom-class="custom-tooltip"
|
||||
data-bs-title="{{__("Check all")}}"
|
||||
class="form-check form-switch mt-1 mx-2">
|
||||
<input class="form-check-input chkall"
|
||||
type="checkbox" role="switch">
|
||||
</div>
|
||||
</th>
|
||||
@foreach($cols as $col)
|
||||
<th>
|
||||
<a href="?sort={{$col}}{{sortSuffix($col)}}&{{queryBuilder('sort')}}">
|
||||
{{__($col)}}
|
||||
</a>
|
||||
</th>
|
||||
@endforeach
|
||||
<th>
|
||||
{{__("Subject")}}
|
||||
</th>
|
||||
<th>
|
||||
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@if(count($items) == 0)
|
||||
<tr>
|
||||
<td colspan="100%">
|
||||
{{__("There is nothing to show!")}}
|
||||
</td>
|
||||
</tr>
|
||||
@else
|
||||
@foreach($items as $item)
|
||||
<tr>
|
||||
<td>
|
||||
<input type="checkbox" id="chk-{{$item->id}}" class="chkbox"
|
||||
name="id[{{$item->id}}]" value="{{$item->id}}">
|
||||
<label for="chk-{{$item->id}}">
|
||||
{{$item->id}}
|
||||
</label>
|
||||
</td>
|
||||
@foreach($cols as $k => $col)
|
||||
@if($k == 0 && hasRoute('edit'))
|
||||
<td>
|
||||
<a href="{{getRoute('edit',$item->{$item->getRouteKeyName()})}}">
|
||||
<b>
|
||||
{{$item?->{$cols[0]} }}
|
||||
</b>
|
||||
</a>
|
||||
</td>
|
||||
@else
|
||||
<td>
|
||||
@switch($col)
|
||||
@case($col == 'user_id')
|
||||
<a href="{{route('admin.user.edit',$item->user?->email)}}">
|
||||
{{ $item->user?->name??'-' }}
|
||||
</a>
|
||||
@break
|
||||
@case($col == 'action')
|
||||
{{ getAction($item->$col) }}
|
||||
@break
|
||||
@default
|
||||
{{$item->$col}}
|
||||
@endswitch
|
||||
</td>
|
||||
@endif
|
||||
@endforeach
|
||||
<td>
|
||||
<a href="{{getModelLink($item->loggable_type,$item->loggable_id)}}">
|
||||
{{getModelName($item->loggable_type,$item->loggable_id)}}
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
|
||||
@if(strpos(request()->url(),'trashed') != false && hasRoute('restore'))
|
||||
<a href="{{getRoute('restore',$item->{$item->getRouteKeyName()})}}"
|
||||
class="btn btn-success btn-sm mx-1 d-xl-none d-xxl-none"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-placement="top"
|
||||
data-bs-custom-class="custom-tooltip"
|
||||
data-bs-title="{{__("Restore")}}">
|
||||
<i class="ri-recycle-line"></i>
|
||||
</a>
|
||||
@else
|
||||
|
||||
<div class="dropdown d-xl-none d-xxl-none">
|
||||
<a class="btn btn-outline-secondary dropdown-toggle" href="#"
|
||||
role="button"
|
||||
data-bs-toggle="dropdown" aria-expanded="false">
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
@foreach($buttons as $btn => $btnData)
|
||||
<li>
|
||||
<a class="dropdown-item {{$btnData['class']}}"
|
||||
href="{{getRoute($btn,$item->{$item->getRouteKeyName()})}}">
|
||||
<i class="{{$btnData['icon']}}"></i>
|
||||
|
||||
{{__($btnData['title'])}}
|
||||
</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
<div class="d-none d-xl-block d-xxl-block">
|
||||
@foreach($buttons as $btn => $btnData)
|
||||
|
||||
@if(strpos($btnData['class'],'delete') == false )
|
||||
@if(strpos(request()->url(),'trashed') == false)
|
||||
|
||||
<a href="{{getRoute($btn,$item->{$item->getRouteKeyName()})}}"
|
||||
class="btn {{$btnData['class']}} btn-sm mx-1"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-placement="top"
|
||||
data-bs-custom-class="custom-tooltip"
|
||||
data-bs-title="{{__($btnData['title'])}}">
|
||||
<i class="{{$btnData['icon']}}"></i>
|
||||
</a>
|
||||
@endif
|
||||
@else
|
||||
@if( hasRoute('restore') && $item->trashed())
|
||||
<a class="btn btn-success btn-sm mx-1"
|
||||
href="{{getRoute('restore',$item->id)}}" {{--dont change this id to getRouteKeyName --}}
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-placement="top"
|
||||
data-bs-custom-class="custom-tooltip"
|
||||
data-bs-title="{{__("Restore")}}">
|
||||
<i class="ri-recycle-line"></i>
|
||||
</a>
|
||||
@else
|
||||
<a href="{{getRoute($btn,$item->{$item->getRouteKeyName()})}}"
|
||||
class="btn {{$btnData['class']}} btn-sm mx-1"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-placement="top"
|
||||
data-bs-custom-class="custom-tooltip"
|
||||
data-bs-title="{{__($btnData['title'])}}">
|
||||
<i class="{{$btnData['icon']}}"></i>
|
||||
</a>
|
||||
@endif
|
||||
@endif
|
||||
@endforeach
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@endforeach
|
||||
@endif
|
||||
|
||||
</tbody>
|
||||
|
||||
|
||||
{{-- pagination and toggle button start --}}
|
||||
<tfoot>
|
||||
<tr>
|
||||
<th colspan="100%">
|
||||
<div class="row">
|
||||
<div class="col-md-3 text-start">
|
||||
<div
|
||||
id="toggle-select"
|
||||
class="btn btn-outline-light mx-2"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-placement="top"
|
||||
data-bs-custom-class="custom-tooltip"
|
||||
data-bs-title="{{__("Toggle selection")}}">
|
||||
<i class="ri-toggle-line"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
{{$items->withQueryString()->links()}}
|
||||
</div>
|
||||
<div class="col-md-3 text-center">
|
||||
</div>
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
</tfoot>
|
||||
{{-- pagination and toggle button end --}}
|
||||
</table>
|
||||
@endsection
|
||||
|
||||
@section('filter')
|
||||
<h2>
|
||||
<i class="ri-shield-check-line"></i>
|
||||
{{__("User filter")}}:
|
||||
</h2>
|
||||
<searchable-multi-select
|
||||
:items='{{\App\Models\User::all('id','name')}}'
|
||||
title-field="name"
|
||||
value-field="id"
|
||||
xname="filter[user_id]"
|
||||
:xvalue='{{request()->input('filter.user_id','[]')}}'
|
||||
:close-on-Select="true"></searchable-multi-select>
|
||||
@endsection
|
@ -0,0 +1,125 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="mb-5 pb-5">
|
||||
<div class="row">
|
||||
|
||||
{{-- list side bar start--}}
|
||||
<div class="col-xl-3">
|
||||
@include('components.err')
|
||||
<div class="item-list mb-3">
|
||||
<div class="row">
|
||||
<div class="col-8">
|
||||
<h1>
|
||||
@yield('list-title')
|
||||
</h1>
|
||||
</div>
|
||||
<div class="col-4 pt-3 text-end">
|
||||
@if(hasRoute('trashed'))
|
||||
<a class="btn btn-outline-danger me-3"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-placement="top"
|
||||
data-bs-custom-class="custom-tooltip"
|
||||
data-bs-title="{{__("Trashed items")}}"
|
||||
href="{{getRoute('trashed')}}"
|
||||
>
|
||||
<i class="ri-delete-bin-6-line"></i>
|
||||
</a>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<form action="" class="p-3">
|
||||
<div class="input-group mb-3">
|
||||
<span class="btn btn-outline-secondary" type="button" id="button-addon2">
|
||||
<i class="ri-search-2-line"></i>
|
||||
</span>
|
||||
<input type="text" name="q" class="form-control" placeholder="{{__("Search")}}..."
|
||||
aria-label="{{__("Search")}}..." aria-describedby="button-addon2"
|
||||
value="{{request()->input('q','')}}">
|
||||
</div>
|
||||
@yield('filter')
|
||||
<button class="btn btn-primary w-100">
|
||||
{{__("Search & Filter")}}
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="item-list mb-3 py-3">
|
||||
<div class="grid-equal text-center p-1">
|
||||
<span>
|
||||
{{__("Totol")}}
|
||||
</span>
|
||||
<span>
|
||||
({{$items->total()}})
|
||||
</span>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="grid-equal text-center p-1">
|
||||
<span>
|
||||
{{__("From - To")}}
|
||||
</span>
|
||||
<span>
|
||||
@paginated($items)
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if(hasRoute('bulk'))
|
||||
|
||||
<div class="item-list mb-3">
|
||||
<h3 class="p-3">
|
||||
<i class="ri-check-double-line"></i>
|
||||
{{__("Bulk actions:")}}
|
||||
</h3>
|
||||
<form action="{{getRoute('bulk',[])}}" id="bulk-from" method="post">
|
||||
|
||||
<div class="p-3">
|
||||
|
||||
@csrf
|
||||
<select class="form-control mb-3" name="action" required>
|
||||
<option value=""></option>
|
||||
@if(strpos(request()->url(),'trashed') != false)
|
||||
<option value="restore"> {{__("Batch restore")}} </option>
|
||||
@else
|
||||
<option value="delete"> {{__("Batch delete")}} </option>
|
||||
@endif
|
||||
@yield('bulk')
|
||||
</select>
|
||||
|
||||
<button class="btn btn-primary w-100">
|
||||
{{__("Do it")}}
|
||||
</button>
|
||||
<div id="bulk-idz"></div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
|
||||
</div>
|
||||
{{-- list side bar end--}}
|
||||
|
||||
|
||||
{{-- list content start--}}
|
||||
<div class="col-xl-9 ps-xl-0">
|
||||
<form class="item-list" id="main-form">
|
||||
@yield('table')
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{{-- list content end--}}
|
||||
</div>
|
||||
|
||||
@if(hasRoute('create'))
|
||||
<a class="action-btn circle-btn"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-placement="top"
|
||||
data-bs-custom-class="custom-tooltip"
|
||||
data-bs-title="{{__("Add another one")}}"
|
||||
href="{{getRoute('create')}}"
|
||||
>
|
||||
<i class="ri-add-line"></i>
|
||||
</a>
|
||||
@endif
|
||||
@endsection
|
Loading…
Reference in New Issue