]> BookStack Code Mirror - bookstack/blob - resources/views/settings/audit.blade.php
Audit Log: Fixed bad reference to linked entity item
[bookstack] / resources / views / settings / audit.blade.php
1 @extends('layouts.simple')
2
3 @section('body')
4     <div class="container">
5
6         @include('settings.parts.navbar', ['selected' => 'audit'])
7
8         <div class="card content-wrap auto-height">
9             <h1 class="list-heading">{{ trans('settings.audit') }}</h1>
10             <p class="text-muted">{{ trans('settings.audit_desc') }}</p>
11
12             <form action="{{ url('/settings/audit') }}" method="get"
13                   class="flex-container-row wrap justify-flex-start gap-x-m gap-y-xs">
14
15                 @foreach(request()->only(['order', 'sort']) as $key => $val)
16                     <input type="hidden" name="{{ $key }}" value="{{ $val }}">
17                 @endforeach
18
19                 <div component="dropdown" class="list-sort-type dropdown-container relative">
20                     <label for="">{{ trans('settings.audit_event_filter') }}</label>
21                     <button refs="dropdown@toggle"
22                             type="button"
23                             aria-haspopup="true"
24                             aria-expanded="false"
25                             aria-label="{{ trans('common.sort_options') }}"
26                             class="input-base text-left">{{ $filters['event'] ?: trans('settings.audit_event_filter_no_filter') }}</button>
27                     <ul refs="dropdown@menu" class="dropdown-menu">
28                         <li @if($filters['event'] === '') class="active" @endif><a
29                                     href="{{ sortUrl('/settings/audit', array_filter(request()->except('page')), ['event' => '']) }}"
30                                     class="text-item">{{ trans('settings.audit_event_filter_no_filter') }}</a></li>
31                         @foreach($activityTypes as $type)
32                             <li @if($type === $filters['event']) class="active" @endif><a
33                                         href="{{ sortUrl('/settings/audit', array_filter(request()->except('page')), ['event' => $type]) }}"
34                                         class="text-item">{{ $type }}</a></li>
35                         @endforeach
36                     </ul>
37                 </div>
38
39                 @if(!empty($filters['event']))
40                     <input type="hidden" name="event" value="{{ $filters['event'] }}">
41                 @endif
42
43                 @foreach(['date_from', 'date_to'] as $filterKey)
44                     <div class=>
45                         <label for="audit_filter_{{ $filterKey }}">{{ trans('settings.audit_' . $filterKey) }}</label>
46                         <input id="audit_filter_{{ $filterKey }}"
47                                component="submit-on-change"
48                                type="date"
49                                name="{{ $filterKey }}"
50                                value="{{ $filters[$filterKey] ?? '' }}">
51                     </div>
52                 @endforeach
53
54                 <div class="form-group"
55                      component="submit-on-change"
56                      option:submit-on-change:filter='[name="user"]'>
57                     <label for="owner">{{ trans('settings.audit_table_user') }}</label>
58                     @include('form.user-select', ['user' => $filters['user'] ? \BookStack\Users\Models\User::query()->find($filters['user']) : null, 'name' => 'user'])
59                 </div>
60
61
62                 <div class="form-group">
63                     <label for="ip">{{ trans('settings.audit_table_ip') }}</label>
64                     @include('form.text', ['name' => 'ip', 'model' => (object) $filters])
65                     <input type="submit" style="display: none">
66                 </div>
67             </form>
68
69             <hr class="mt-m mb-s">
70
71             <div class="flex-container-row justify-space-between items-center wrap">
72                 <div class="flex-2 min-width-xl">{{ $activities->links() }}</div>
73                 <div class="flex-none min-width-m py-m">
74                     @include('common.sort', array_merge($listOptions->getSortControlData(), ['useQuery' => true]))
75                 </div>
76             </div>
77
78             <div class="item-list">
79                 <div class="item-list-row flex-container-row items-center bold hide-under-m">
80                     <div class="flex-2 px-m py-xs flex-container-row items-center">{{ trans('settings.audit_table_user') }}</div>
81                     <div class="flex-2 px-m py-xs">{{ trans('settings.audit_table_event') }}</div>
82                     <div class="flex-3 px-m py-xs">{{ trans('settings.audit_table_related') }}</div>
83                     <div class="flex-container-row flex-3">
84                         <div class="flex px-m py-xs">{{ trans('settings.audit_table_ip') }}</div>
85                         <div class="flex-2 px-m py-xs text-right">{{ trans('settings.audit_table_date') }}</div>
86                     </div>
87                 </div>
88                 @foreach($activities as $activity)
89                     <div class="item-list-row flex-container-row items-center wrap py-xxs">
90                         <div class="flex-2 px-m py-xxs flex-container-row items-center min-width-m">
91                             @include('settings.parts.table-user', ['user' => $activity->user, 'user_id' => $activity->user_id])
92                         </div>
93                         <div class="flex-2 px-m py-xxs min-width-m"><strong
94                                     class="mr-xs hide-over-m">{{ trans('settings.audit_table_event') }}
95                                 :</strong> {{ $activity->type }}</div>
96                         <div class="flex-3 px-m py-xxs min-width-l">
97                             @if($activity->loggable instanceof \BookStack\Entities\Models\Entity)
98                                 @include('entities.icon-link', ['entity' => $activity->loggable])
99                             @elseif($activity->detail && $activity->isForEntity())
100                                 <div>
101                                     {{ trans('settings.audit_deleted_item') }} <br>
102                                     {{ trans('settings.audit_deleted_item_name', ['name' => $activity->detail]) }}
103                                 </div>
104                             @elseif($activity->detail)
105                                 <div>{{ $activity->detail }}</div>
106                             @endif
107                         </div>
108                         <div class="flex-container-row flex-3 min-width-m">
109                             <div class="flex-2 px-m py-xxs min-width-xs break-text"><strong
110                                         class="mr-xs hide-over-m">{{ trans('settings.audit_table_ip') }}
111                                     :<br></strong> {{ $activity->ip }}</div>
112                             <div class="flex-3 px-m py-xxs text-m-right min-width-xs"><strong
113                                         class="mr-xs hide-over-m">{{ trans('settings.audit_table_date') }}
114                                     :<br></strong> {{ $activity->created_at }}</div>
115                         </div>
116                     </div>
117                 @endforeach
118             </div>
119
120             <div class="py-m">
121                 {{ $activities->links() }}
122             </div>
123         </div>
124
125     </div>
126 @stop