update: dependencies

This commit is contained in:
HDVinnie
2022-02-08 23:34:35 -05:00
parent fa9c383d65
commit 1fc7c75eaa
60 changed files with 1172 additions and 3515 deletions

View File

@@ -13,7 +13,7 @@
namespace App\Http\Controllers;
use andkab\LaravelJoyPixels\LaravelJoyPixels;
use hdvinnie\LaravelJoyPixels\LaravelJoyPixels;
use App\Helpers\Bbcode;
use App\Helpers\Bencode;
use App\Helpers\Linkify;

View File

@@ -34,7 +34,7 @@ class Kernel extends HttpKernel
\Fruitcake\Cors\HandleCors::class,
// Extra
\Bepsvpt\SecureHeaders\SecureHeadersMiddleware::class,
\HDVinnie\SecureHeaders\SecureHeadersMiddleware::class,
\App\Http\Middleware\Http2ServerPush::class,
];

View File

@@ -13,7 +13,7 @@
namespace App\Http\Resources;
use andkab\LaravelJoyPixels\LaravelJoyPixels;
use hdvinnie\LaravelJoyPixels\LaravelJoyPixels;
use App\Helpers\Bbcode;
use Illuminate\Http\Resources\Json\JsonResource;

View File

@@ -15,31 +15,10 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Kyslik\ColumnSortable\Sortable;
class History extends Model
{
use HasFactory;
use Sortable;
/**
* The Columns That Are Sortable.
*/
public array $sortable = [
'id',
'agent',
'active',
'seeder',
'uploaded',
'downloaded',
'seedtime',
'created_at',
'updated_at',
'completed_at',
'prewarn',
'hitrun',
'immune',
];
/**
* The Database Table Used By The Model.

View File

@@ -15,25 +15,10 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Kyslik\ColumnSortable\Sortable;
class Peer extends Model
{
use HasFactory;
use Sortable;
/**
* The Columns That Are Sortable.
*/
public array $sortable = [
'id',
'agent',
'uploaded',
'downloaded',
'left',
'seeder',
'created_at',
];
/**
* Belongs To A User.

View File

@@ -23,29 +23,14 @@ use App\Traits\Auditable;
use Hootlex\Moderation\Moderatable;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Kyslik\ColumnSortable\Sortable;
use voku\helper\AntiXSS;
class Torrent extends Model
{
use HasFactory;
use Moderatable;
use Sortable;
use Auditable;
/**
* The Columns That Are Sortable.
*/
public array $sortable = [
'id',
'name',
'size',
'seeders',
'leechers',
'times_completed',
'created_at',
];
/**
* Belongs To A User.
*/

View File

@@ -13,47 +13,41 @@
"ext-json": "*",
"ext-libxml": "*",
"ext-zip": "*",
"andkab/laravel-joypixels": "^1.0",
"appstract/laravel-opcache": "^4.0",
"arcanedev/log-viewer": "^8.0",
"assada/laravel-achievements": "^2.3",
"bepsvpt/secure-headers": "^7.0",
"doctrine/dbal": "^2.10",
"fruitcake/laravel-cors": "^2.0.5",
"gabrielelana/byte-units": "^0.5.0",
"guzzlehttp/guzzle": "^7.2",
"hdvinnie/laravel-html-purifier": "^1.0",
"hdvinnie/laravel-joypixel-emojis": "^1.0",
"hdvinnie/laravel-security-headers": "^1.0",
"hootlex/laravel-moderation": "^1.0",
"intervention/image": "^2.5",
"joypixels/assets": "^6.0",
"kyslik/column-sortable": "^6.0",
"laravel/framework": "9.x-dev",
"laravel/framework": "^9.0",
"laravel/tinker": "^2.7",
"laravel/ui": "^3.1.0",
"league/flysystem-sftp": "~1.0",
"livewire/livewire": "^2.0",
"marcreichel/igdb-laravel": "^3.1.2",
"mews/purifier": "^3.2",
"paragonie/constant_time_encoding": "^2.0",
"predis/predis": "^1.1",
"spatie/laravel-backup": "^7.0",
"spatie/laravel-backup": "^8.0.1",
"spatie/laravel-cookie-consent": "^3.0",
"spatie/laravel-image-optimizer": "^1.6",
"spatie/ssl-certificate": "^1.12",
"symfony/dom-crawler": "^6.0",
"theodorejb/polycast": "^1.0",
"voku/anti-xss": "^4.1",
"vstelmakh/url-highlight": "^3.0",
"laravel/sanctum": "^2.14"
"vstelmakh/url-highlight": "^3.0"
},
"require-dev": {
"brianium/paratest": "^6.3",
"fakerphp/faker": "^1.16",
"jasonmccreary/laravel-test-assertions": "^2.0",
"mockery/mockery": "^1.4.4",
"nunomaduro/collision": "^6.0",
"phpunit/phpunit": "^9.5.10",
"styleci/cli": "^1.2",
"symplify/changelog-linker": "^8.0",
"spatie/laravel-ignition": "^1.0",
"laravel/sail": "^1.0.1"
},
@@ -92,7 +86,7 @@
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover --ansi",
"@php artisan vendor:publish --force --tag=livewire:assets --ansi",
"@php artisan vendor:publish --tag=public --provider=\"andkab\\LaravelJoyPixels\\LaravelJoyPixelsServiceProvider\""
"@php artisan vendor:publish --tag=public --provider=\"hdvinnie\\LaravelJoyPixels\\LaravelJoyPixelsServiceProvider\""
],
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""

3446
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -178,8 +178,6 @@ return [
Assada\Achievements\AchievementsServiceProvider::class,
Spatie\CookieConsent\CookieConsentServiceProvider::class,
Hootlex\Moderation\ModerationServiceProvider::class,
Arcanedev\LogViewer\LogViewerServiceProvider::class,
Kyslik\ColumnSortable\ColumnSortableServiceProvider::class,
Intervention\Image\ImageServiceProvider::class,
/*

View File

@@ -1,107 +0,0 @@
<?php
/**
* NOTICE OF LICENSE.
*
* UNIT3D Community Edition is open-sourced software licensed under the GNU Affero General Public License v3.0
* The details is bundled with this project in the file LICENSE.txt.
*
* @project UNIT3D Community Edition
*
* @author HDVinnie <hdinnovations@protonmail.com>
* @license https://www.gnu.org/licenses/agpl-3.0.en.html/ GNU Affero General Public License v3.0
*/
return [
/*
spec columns
*/
'columns' => [
'alpha' => [
'rows' => ['description', 'name', 'slug', 'agent'],
'class' => 'fal fa-sort-alpha',
],
'amount' => [
'rows' => ['amount', 'price'],
'class' => 'fal fa-sort-amount',
],
'numeric' => [
'rows' => ['created_at', 'updated_at', 'id', 'seeders', 'leechers', 'times_completed', 'size', 'uploaded', 'downloaded', 'left', 'seeder',
'active', 'seedtime', 'updated_at', 'completed_at', 'hitrun', 'prewarn', ],
'class' => 'fal fa-sort-numeric',
],
],
/*
defines icon set to use when sorted data is none above (alpha nor amount nor numeric)
*/
'default_icon_set' => 'fal fa-sort',
/*
icon that shows when generating sortable link while column is not sorted
*/
'sortable_icon' => 'fal fa-sort',
/*
generated icon is clickable non-clickable (default)
*/
'clickable_icon' => false,
/*
icon and text separator (any string)
in case of 'clickable_icon' => true; separator creates possibility to style icon and anchor-text properly
*/
'icon_text_separator' => ' ',
/*
suffix class that is appended when ascending order is applied
*/
'asc_suffix' => '-up',
/*
suffix class that is appended when descending order is applied
*/
'desc_suffix' => '-down',
/*
default anchor class, if value is null none is added
*/
'anchor_class' => null,
/*
relation - column separator ex: detail.phone_number means relation "detail" and column "phone_number"
*/
'uri_relation_column_separator' => '.',
/*
formatting function applied to name of column, use null to turn formatting off
*/
'formatting_function' => 'ucfirst',
/*
inject title parameter in query strings, use null to turn injection off
example: 'inject_title' => 't' will result in ..user/?t="formatted title of sorted column"
*/
'inject_title_as' => null,
/*
allow request modification, when default sorting is set but is not in URI (first load)
*/
'allow_request_modification' => true,
/*
default order for: $user->sortable('id') usage
*/
'default_direction' => 'asc',
/*
default order for non-sorted columns
*/
'default_direction_unsorted' => 'asc',
/*
join type: join vs leftJoin (default join)
for more information see https://github.com/Kyslik/column-sortable/issues/59
*/
'join_type' => 'join',
];

View File

@@ -1,141 +0,0 @@
<?php
use Arcanedev\LogViewer\Contracts\Utilities\Filesystem;
return [
/* -----------------------------------------------------------------
| Log files storage path
| -----------------------------------------------------------------
*/
'storage-path' => storage_path('logs'),
/* -----------------------------------------------------------------
| Log files pattern
| -----------------------------------------------------------------
*/
'pattern' => [
'prefix' => Filesystem::PATTERN_PREFIX, // 'laravel-'
'date' => Filesystem::PATTERN_DATE, // '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]'
'extension' => Filesystem::PATTERN_EXTENSION, // '.log'
],
/* -----------------------------------------------------------------
| Locale
| -----------------------------------------------------------------
| Supported locales :
| 'auto', 'ar', 'bg', 'de', 'en', 'es', 'et', 'fa', 'fr', 'hu', 'hy', 'id', 'it', 'ja', 'ko', 'nl',
| 'pl', 'pt-BR', 'ro', 'ru', 'sv', 'th', 'tr', 'zh-TW', 'zh'
*/
'locale' => 'en',
/* -----------------------------------------------------------------
| Theme
| -----------------------------------------------------------------
| Supported themes :
| 'bootstrap-4'
| Make your own theme by adding a folder to the views directory and specifying it here.
*/
'theme' => 'bootstrap-4',
/* -----------------------------------------------------------------
| Route settings
| -----------------------------------------------------------------
*/
'route' => [
'enabled' => true,
'attributes' => [
'prefix' => 'staff/log-viewer',
'namespace' => 'Staff',
'middleware' => ['web', 'auth', 'owner'],
],
],
/* -----------------------------------------------------------------
| Log entries per page
| -----------------------------------------------------------------
| This defines how many logs & entries are displayed per page.
*/
'per-page' => 30,
/* -----------------------------------------------------------------
| Download settings
| -----------------------------------------------------------------
*/
'download' => [
'prefix' => 'laravel-',
'extension' => 'log',
],
/* -----------------------------------------------------------------
| Menu settings
| -----------------------------------------------------------------
*/
'menu' => [
'filter-route' => 'log-viewer::logs.filter',
'icons-enabled' => true,
],
/* -----------------------------------------------------------------
| Icons
| -----------------------------------------------------------------
*/
'icons' => [
/*
* Font awesome >= 4.3
* http://fontawesome.io/icons/.
*/
'all' => 'fa fa-fw fa-list', // http://fontawesome.io/icon/list/
'emergency' => 'fa fa-fw fa-bug', // http://fontawesome.io/icon/bug/
'alert' => 'fa fa-fw fa-bullhorn', // http://fontawesome.io/icon/bullhorn/
'critical' => 'fa fa-fw fa-heartbeat', // http://fontawesome.io/icon/heartbeat/
'error' => 'fa fa-fw fa-times-circle', // http://fontawesome.io/icon/times-circle/
'warning' => 'fa fa-fw fa-exclamation-triangle', // http://fontawesome.io/icon/exclamation-triangle/
'notice' => 'fa fa-fw fa-exclamation-circle', // http://fontawesome.io/icon/exclamation-circle/
'info' => 'fa fa-fw fa-info-circle', // http://fontawesome.io/icon/info-circle/
'debug' => 'fa fa-fw fa-life-ring', // http://fontawesome.io/icon/life-ring/
],
/* -----------------------------------------------------------------
| Colors
| -----------------------------------------------------------------
*/
'colors' => [
'levels' => [
'empty' => '#D1D1D1',
'all' => '#8A8A8A',
'emergency' => '#B71C1C',
'alert' => '#D32F2F',
'critical' => '#F44336',
'error' => '#FF5722',
'warning' => '#FF9100',
'notice' => '#4CAF50',
'info' => '#1976D2',
'debug' => '#90CAF9',
],
],
/* -----------------------------------------------------------------
| Strings to highlight in stack trace
| -----------------------------------------------------------------
*/
'highlight' => [
'^#\d+',
'^Stack trace:',
],
];

View File

@@ -591,11 +591,7 @@ return [
'report-sample' => false,
'allow' => [
'https://cdn.jsdelivr.net/gh/alpinejs/alpine@v2.8.2/dist/alpine.min.js',
'https://code.jquery.com/jquery-3.2.1.min.js',
'https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js',
'https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js',
'https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.1/Chart.min.js',
],
'schemes' => [
@@ -645,8 +641,6 @@ return [
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-src
'style-src' => [
'https://fonts.googleapis.com/',
'https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css',
'https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css',
],
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-src-attr

BIN
database/schema.pdf Normal file

Binary file not shown.

View File

@@ -51,7 +51,7 @@
@endsection
@section('javascripts')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
$(document).ready(function () {
$('#content').wysibb({})
})

View File

@@ -54,7 +54,7 @@
@endsection
@section('javascripts')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
$(document).ready(function () {
$('#content').wysibb({})
})

View File

@@ -1,7 +1,7 @@
@extends('layout.default')
@section('content')
<style nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('style') }}">
<style nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('style') }}">
.stack {
font-size: 0.85em;
}

View File

@@ -44,7 +44,7 @@
@endsection
@section('javascripts')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
$(document).ready(function () {
$('#message').wysibb({})
})

View File

@@ -51,7 +51,7 @@
@endsection
@section('javascripts')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
$(document).ready(function () {
$('#content').wysibb({})
})

View File

@@ -46,7 +46,7 @@
@endsection
@section('javascripts')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
$(document).ready(function () {
$('#content').wysibb({})
})

View File

@@ -53,7 +53,7 @@
</form>
@section('javascripts')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
let options = 2
const langOption = "<?php echo __('poll.option') ?>"

View File

@@ -52,7 +52,7 @@
</form>
@section('javascripts')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
let options = parseInt({{ $poll->options->count() }}) // Get the size of options passing in
const langOption = "{{ __('poll.option') }} "

View File

@@ -92,7 +92,7 @@
@endsection
@section('javascripts')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
$('.show-image').click(function (e) {
e.preventDefault()

View File

@@ -142,7 +142,7 @@
@endsection
@section('javascripts')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
$(document).ready(function () {
$('#content').wysibb({})

View File

@@ -171,7 +171,7 @@
<script src="{{ mix('js/app.js') }}" crossorigin="anonymous"></script>
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
let images = 2
$('#addImg').on('click', function (e) {
@@ -191,7 +191,7 @@
</script>
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
let links = 2
$('#addLink').on('click', function (e) {
@@ -213,7 +213,7 @@
@foreach (['warning', 'success', 'info'] as $key)
@if (Session::has($key))
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
const Toast = Swal.mixin({
toast: true,
position: 'top-end',
@@ -231,7 +231,7 @@
@endforeach
@if (Session::has('errors'))
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
Swal.fire({
title: '<strong style=" color: rgb(17,17,17);">Error</strong>',
icon: 'error',

View File

@@ -109,7 +109,7 @@
<script src="{{ mix('js/app.js') }}" crossorigin="anonymous"></script>
@foreach (['warning', 'success', 'info'] as $key)
@if (Session::has($key))
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
const Toast = Swal.mixin({
toast: true,
position: 'top-end',
@@ -127,7 +127,7 @@
@endforeach
@if (Session::has('errors'))
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
Swal.fire({
title: '<strong style=" color: rgb(17,17,17);">Error</strong>',
icon: 'error',

View File

@@ -83,7 +83,7 @@
@foreach (['warning', 'success', 'info'] as $key)
@if (Session::has($key))
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
const Toast = Swal.mixin({
toast: true,
position: 'top-end',
@@ -101,7 +101,7 @@
@endforeach
@if (Session::has('errors'))
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
Swal.fire({
title: '<strong style=" color: rgb(17,17,17);">Error</strong>',
icon: 'error',

View File

@@ -96,7 +96,7 @@
<script src="{{ mix('js/app.js') }}" crossorigin="anonymous"></script>
@foreach (['warning', 'success', 'info'] as $key)
@if (Session::has($key))
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
const Toast = Swal.mixin({
toast: true,
position: 'top-end',
@@ -114,7 +114,7 @@
@endforeach
@if (Session::has('errors'))
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
Swal.fire({
title: '<strong style=" color: rgb(17,17,17);">Error</strong>',
icon: 'error',

View File

@@ -100,7 +100,7 @@
<script src="{{ mix('js/app.js') }}" crossorigin="anonymous"></script>
@foreach (['warning', 'success', 'info'] as $key)
@if (Session::has($key))
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
const Toast = Swal.mixin({
toast: true,
position: 'top-end',
@@ -118,7 +118,7 @@
@endforeach
@if (Session::has('errors'))
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
Swal.fire({
title: '<strong style=" color: rgb(17,17,17);">Error</strong>',
icon: 'error',

View File

@@ -163,7 +163,7 @@
@endsection
@section('javascripts')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce() }}" crossorigin="anonymous">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce() }}" crossorigin="anonymous">
$(function () {
// Check for on keypress
$('input').on('keyup', function (event) {
@@ -208,7 +208,7 @@
</script>
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce() }}" crossorigin="anonymous">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce() }}" crossorigin="anonymous">
$('.code-inputs').on('webkitAnimationEnd oanimationend msAnimationEnd animationend', function (e) {
$('.code-inputs').delay(200).removeClass('invalid-shake')
})
@@ -288,7 +288,7 @@
</script>
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce() }}" crossorigin="anonymous">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce() }}" crossorigin="anonymous">
$('#resend_code_trigger').click(function (event) {
event.preventDefault()
$.ajaxSetup({

View File

@@ -84,7 +84,7 @@
@foreach (['warning', 'success', 'info'] as $key)
@if (Session::has($key))
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
const Toast = Swal.mixin({
toast: true,
position: 'top-end',
@@ -102,7 +102,7 @@
@endforeach
@if (Session::has('errors'))
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
Swal.fire({
title: '<strong style=" color: rgb(17,17,17);">Error</strong>',
icon: 'error',

View File

@@ -52,7 +52,7 @@
@endsection
@section('javascripts')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
$(document).ready(function () {
const title = '{{ $title }}'
if (title.length != 0) {

View File

@@ -58,7 +58,7 @@
@endsection
@section('javascripts')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
$(document).ready(function () {
$('#content').wysibb()
})

View File

@@ -403,13 +403,13 @@
@endsection
@section('javascripts')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce() }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce() }}">
$(document).ready(function () {
$('#topic-response').wysibb()
})
</script>
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
$(document).ready(function () {
$('.profil').on('click', 'button#quote', function () {
let author = $(this).closest('.profil').find('.post-info-username').first().text()

View File

@@ -43,7 +43,7 @@
<script src="{{ mix('js/virtual-select.js') }}" crossorigin="anonymous"></script>
@if (config('other.freeleech') == true || config('other.invite-only') == false || config('other.doubleup') == true)
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
function timer () {
return {
seconds: '00',
@@ -87,14 +87,14 @@
@endif
@if (Session::has('achievement'))
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
$('#modal-achievement').modal('show')
</script>
@endif
@foreach (['warning', 'success', 'info'] as $key)
@if (Session::has($key))
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
const Toast = Swal.mixin({
toast: true,
position: 'top-end',
@@ -112,7 +112,7 @@
@endforeach
@if (Session::has('errors'))
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
Swal.fire({
title: '<strong style=" color: rgb(17,17,17);">Error</strong>',
icon: 'error',
@@ -126,7 +126,7 @@
</script>
@endif
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
window.addEventListener('success', event => {
const Toast = Swal.mixin({
toast: true,
@@ -142,7 +142,7 @@
})
</script>
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
window.addEventListener('error', event => {
Swal.fire({
title: '<strong style=" color: rgb(17,17,17);">Error</strong>',
@@ -155,9 +155,9 @@
@yield('javascripts')
@yield('scripts')
@livewireScripts(['nonce' => Bepsvpt\SecureHeaders\SecureHeaders::nonce()])
@livewireScripts(['nonce' => HDVinnie\SecureHeaders\SecureHeaders::nonce()])
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
Livewire.on('paginationChanged', () => {
window.scrollTo({
top: 15,

View File

@@ -140,7 +140,7 @@
</div>
</div>
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
document.addEventListener('livewire:load', function () {
const Toast = Swal.mixin({
toast: true,

View File

@@ -353,7 +353,7 @@
@section('javascripts')
@if ($user->group->is_modo)
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
window.addEventListener('swal:modal', event => {
Swal.fire({
title: event.detail.message,

View File

@@ -613,7 +613,7 @@
</div>
</div>
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
document.addEventListener('livewire:load', function () {
let myOptions = [
@foreach($regions as $region)

View File

@@ -898,7 +898,7 @@
</div>
</div>
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
document.addEventListener('livewire:load', function () {
let myOptions = [
@foreach($regions as $region)

View File

@@ -207,7 +207,7 @@
@endsection
@section('javascripts')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce() }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce() }}">
$(document).ready(function () {
$('#content').wysibb({})
})

View File

@@ -188,14 +188,14 @@
@endsection
@section('javascripts')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
$('.filter-checkbox').on('change', function () {
$('.filter-checkbox').not(this).prop('checked', false)
})
</script>
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
let xhr = new XMLHttpRequest()
function faceted (page) {
@@ -336,12 +336,12 @@
</script>
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
$(window).on('load', faceted())
</script>
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
$('#bon_gifts, #comment, #comment_tags, #followers, #posts, #post_tags, #post_tips, #request_bounties, #request_claims, #request_fills, #request_approvals, #request_rejections, #request_unclaims, #reseed_requests, #thanks, #upload_tips, #topics, #unfollows, #uploads')
.on('click', function () {
faceted()
@@ -349,7 +349,7 @@
</script>
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
$(document).on('click', '.pagination a', function (e) {
e.preventDefault()
const url = $(this).attr('href')
@@ -360,7 +360,7 @@
</script>
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
$(document).ajaxComplete(function () {
$('[data-toggle="tooltip"]').tooltip()
})

View File

@@ -20,7 +20,7 @@
@section('javascripts')
@if(request()->url() === config('other.rules_url') && auth()->user()->read_rules == 0)
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
window.onscroll = function () {
let scrollHeight, totalHeight
scrollHeight = document.body.scrollHeight

View File

@@ -209,13 +209,6 @@
<i class="{{ config('other.font-awesome') }} fa-file"></i> {{ __('staff.user-notes') }}
</a>
</li>
@if (auth()->user()->group->is_owner)
<li>
<a href="/staff/log-viewer">
<i class="{{ config('other.font-awesome') }} fa-file"></i> {{ __('staff.laravel-log') }}
</a>
</li>
@endif
<li>
<a href="{{ route('staff.reports.index') }}">
<i class="{{ config('other.font-awesome') }} fa-file"></i> {{ __('staff.reports-log') }}

View File

@@ -366,7 +366,7 @@
@endsection
@section('javascripts')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce() }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce() }}">
$(document).ready(function () {
$('#content').wysibb({})
})

View File

@@ -73,7 +73,7 @@
@endsection
@section('javascripts')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
$(document).ready(function () {
$('#message').wysibb({})
})

View File

@@ -54,7 +54,7 @@
@endsection
@section('javascripts')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
$(document).ready(function () {
$('#message').wysibb({})
})

View File

@@ -169,7 +169,7 @@
@endsection
@section('javascripts')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
$(document).ready(function () {
$('#request-form-description').wysibb({})
})

View File

@@ -192,7 +192,7 @@
@endsection
@section('javascripts')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
$(document).ready(function () {
$('#request-form-description').wysibb({})
})

View File

@@ -212,7 +212,7 @@
</div>
@endsection
@section('javascripts')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
$(window).on('load', function () {
loadTab()
})

View File

@@ -310,7 +310,7 @@
@endsection
@section('javascripts')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
$(document).ready(function () {
$('#upload-form-description').wysibb({})
})

View File

@@ -107,14 +107,14 @@
@endsection
@section('javascripts')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce() }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce() }}">
$(document).ready(function () {
$('#content').wysibb({})
})
</script>
@if (isset($trailer))
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce() }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce() }}">
$('.show-trailer').each(function () {
$(this).off('click')
$(this).on('click', function (e) {

View File

@@ -412,7 +412,7 @@
@section('javascripts')
<script src="{{ mix('js/imgbb.js') }}" crossorigin="anonymous"></script>
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
$('#preview').on('click', function () {
var text = $('#upload-form-description').bbcode().trim()

View File

@@ -75,7 +75,7 @@
@endsection
@section('javascripts')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
$(document).ready(function () {
$('#about, #signature').wysibb({})
})

View File

@@ -833,7 +833,7 @@
</div>
@endsection
@section('javascripts')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
$(window).on('load', function () {
loadTab()
})

View File

@@ -807,7 +807,7 @@
</div>
@endsection
@section('javascripts')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
$(window).on('load', function () {
loadTab()
})

View File

@@ -188,7 +188,7 @@
</div>
@endsection
@section('javascripts')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
$(window).on('load', function () {
loadTab()
})

View File

@@ -2,7 +2,7 @@
@include('cookie-consent::dialogContents')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce('script') }}">
window.laravelCookieConsent = (function () {

View File

@@ -1,280 +0,0 @@
<!doctype html>
<html lang="{{ app()->getLocale() }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="LogViewer">
<meta name="author" content="ARCANEDEV">
<title>LogViewer - Created by ARCANEDEV</title>
{{-- Styles --}}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"
crossorigin="anonymous">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
<link href='https://fonts.googleapis.com/css?family=Montserrat:400,700|Source+Sans+Pro:400,600' rel='stylesheet'
type='text/css'>
<style>
html {
position: relative;
min-height: 100%;
}
body {
font-size: .875rem;
margin-bottom: 60px;
}
.main-footer {
position: absolute;
bottom: 0;
width: 100%;
height: 60px;
line-height: 60px;
background-color: #E8EAF6;
}
.main-footer p {
margin-bottom: 0;
}
.main-footer .fa.fa-heart {
color: #C62828;
}
.page-header {
border-bottom: 1px solid #8a8a8a;
}
/*
* Navbar
*/
.navbar-brand {
padding: .75rem 1rem;
font-size: 1rem;
}
.navbar-nav .nav-link {
padding-right: .5rem;
padding-left: .5rem;
}
/*
* Boxes
*/
.box {
display: block;
padding: 0;
min-height: 70px;
background: #fff;
width: 100%;
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
border-radius: .25rem;
}
.box > .box-icon > i,
.box .box-content .box-text,
.box .box-content .box-number {
color: #FFF;
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.3);
}
.box > .box-icon {
border-radius: 2px 0 0 2px;
display: block;
float: left;
height: 70px;
width: 70px;
text-align: center;
font-size: 40px;
line-height: 70px;
background: rgba(0, 0, 0, 0.2);
}
.box .box-content {
padding: 5px 10px;
margin-left: 70px;
}
.box .box-content .box-text {
display: block;
font-size: 1rem;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
font-weight: 600;
}
.box .box-content .box-number {
display: block;
}
.box .box-content .progress {
background: rgba(0, 0, 0, 0.2);
margin: 5px -10px 5px -10px;
}
.box .box-content .progress .progress-bar {
background-color: #FFF;
}
/*
* Log Menu
*/
.log-menu .list-group-item.disabled {
cursor: not-allowed;
}
.log-menu .list-group-item.disabled .level-name {
color: #D1D1D1;
}
/*
* Log Entry
*/
.stack-content {
color: #AE0E0E;
font-family: consolas, Menlo, Courier, monospace;
white-space: pre-line;
font-size: .8rem;
}
/*
* Colors: Badge & Infobox
*/
.badge.badge-env,
.badge.badge-level-all,
.badge.badge-level-emergency,
.badge.badge-level-alert,
.badge.badge-level-critical,
.badge.badge-level-error,
.badge.badge-level-warning,
.badge.badge-level-notice,
.badge.badge-level-info,
.badge.badge-level-debug,
.badge.empty {
color: #FFF;
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.3);
}
.badge.badge-level-all,
.box.level-all {
background-color: {{ log_styler()->color('all') }};
}
.badge.badge-level-emergency,
.box.level-emergency {
background-color: {{ log_styler()->color('emergency') }};
}
.badge.badge-level-alert,
.box.level-alert {
background-color: {{ log_styler()->color('alert') }};
}
.badge.badge-level-critical,
.box.level-critical {
background-color: {{ log_styler()->color('critical') }};
}
.badge.badge-level-error,
.box.level-error {
background-color: {{ log_styler()->color('error') }};
}
.badge.badge-level-warning,
.box.level-warning {
background-color: {{ log_styler()->color('warning') }};
}
.badge.badge-level-notice,
.box.level-notice {
background-color: {{ log_styler()->color('notice') }};
}
.badge.badge-level-info,
.box.level-info {
background-color: {{ log_styler()->color('info') }};
}
.badge.badge-level-debug,
.box.level-debug {
background-color: {{ log_styler()->color('debug') }};
}
.badge.empty,
.box.empty {
background-color: {{ log_styler()->color('empty') }};
}
.badge.badge-env {
background-color: #6A1B9A;
}
#entries {
overflow-wrap: anywhere;
}
</style>
</head>
<body>
<nav class="navbar navbar-expand-md navbar-dark sticky-top bg-dark p-0">
<a href="{{ route('log-viewer::dashboard') }}" class="navbar-brand mr-0">
<i class="fa fa-fw fa-book"></i> LogViewer
</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="{{ __('Toggle navigation') }}">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav mr-auto">
<li class="nav-item {{ Route::is('log-viewer::dashboard') ? 'active' : '' }}">
<a href="{{ route('log-viewer::dashboard') }}" class="nav-link">
<i class="fa fa-dashboard"></i> {{ __('Dashboard') }}
</a>
</li>
<li class="nav-item {{ Route::is('log-viewer::logs.list') ? 'active' : '' }}">
<a href="{{ route('log-viewer::logs.list') }}" class="nav-link">
<i class="fa fa-archive"></i> {{ __('Logs') }}
</a>
</li>
<li class="nav-item">
<a href="{{ route('staff.dashboard.index') }}" class="nav-link">
<i class="fa fa-home"></i> Return To Staff Panel
</a>
</li>
</ul>
</div>
</nav>
<div class="container-fluid">
<main role="main" class="pt-3">
@yield('content')
</main>
</div>
{{-- Footer --}}
<footer class="main-footer">
<div class="container-fluid">
<p class="text-muted pull-left">
LogViewer - <span class="badge badge-info">version {{ log_viewer()->version() }}</span>
</p>
<p class="text-muted pull-right">
Created with <i class="fa fa-heart"></i> by ARCANEDEV <sup>&copy;</sup>
</p>
</div>
</footer>
{{-- Scripts --}}
<script src="https://code.jquery.com/jquery-3.2.1.min.js" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"
crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.1/Chart.min.js"></script>
@yield('modals')
@yield('scripts')
</body>
</html>

View File

@@ -1,53 +0,0 @@
@extends('log-viewer::bootstrap-4._master')
@section('content')
<div class="page-header mb-4">
<h1>{{ __('Dashboard') }}</h1>
</div>
<div class="row">
<div class="col-md-6 col-lg-3">
<canvas id="stats-doughnut-chart" height="300" class="mb-3"></canvas>
</div>
<div class="col-md-6 col-lg-9">
<div class="row">
@foreach($percents as $level => $item)
<div class="col-sm-6 col-md-12 col-lg-4 mb-3">
<div class="box level-{{ $level }} {{ $item['count'] === 0 ? 'empty' : '' }}">
<div class="box-icon">
{!! log_styler()->icon($level) !!}
</div>
<div class="box-content">
<span class="box-text">{{ $item['name'] }}</span>
<span class="box-number">
{{ $item['count'] }} {{ __('entries') }} - {!! $item['percent'] !!} %
</span>
<div class="progress" style="height: 3px;">
<div class="progress-bar" style="width: {{ $item['percent'] }}%;"></div>
</div>
</div>
</div>
</div>
@endforeach
</div>
</div>
</div>
@endsection
@section('scripts')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
$(function () {
new Chart(document.getElementById('stats-doughnut-chart'), {
type: 'doughnut',
data: {!! $chartData !!},
options: {
legend: {
position: 'bottom'
}
}
})
})
</script>
@endsection

View File

@@ -1,153 +0,0 @@
@extends('log-viewer::bootstrap-4._master')
<?php /** @var Illuminate\Pagination\LengthAwarePaginator $rows */ ?>
@section('content')
<div class="page-header mb-4">
<h1>{{ __('Logs') }}</h1>
</div>
<div class="table-responsive">
<table class="table table-sm table-hover">
<thead>
<tr>
@foreach($headers as $key => $header)
<th scope="col" class="{{ $key == 'date' ? 'text-left' : 'text-center' }}">
@if ($key == 'date')
<span class="badge badge-info">{{ $header }}</span>
@else
<span class="badge badge-level-{{ $key }}">
{{ log_styler()->icon($key) }} {{ $header }}
</span>
@endif
</th>
@endforeach
<th scope="col" class="text-right">{{ __('Actions') }}</th>
</tr>
</thead>
<tbody>
@forelse($rows as $date => $row)
<tr>
@foreach($row as $key => $value)
<td class="{{ $key == 'date' ? 'text-left' : 'text-center' }}">
@if ($key == 'date')
<span class="badge badge-primary">{{ $value }}</span>
@elseif ($value == 0)
<span class="badge empty">{{ $value }}</span>
@else
<a href="{{ route('log-viewer::logs.filter', [$date, $key]) }}">
<span class="badge badge-level-{{ $key }}">{{ $value }}</span>
</a>
@endif
</td>
@endforeach
<td class="text-right">
<a href="{{ route('log-viewer::logs.show', [$date]) }}" class="btn btn-sm btn-info">
<i class="fa fa-search"></i>
</a>
<a href="{{ route('log-viewer::logs.download', [$date]) }}" class="btn btn-sm btn-success">
<i class="fa fa-download"></i>
</a>
<a href="#delete-log-modal" class="btn btn-sm btn-danger" data-log-date="{{ $date }}">
<i class="fa fa-trash-o"></i>
</a>
</td>
</tr>
@empty
<tr>
<td colspan="11" class="text-center">
<span class="badge badge-secondary">{{ __('The list of logs is empty!') }}</span>
</td>
</tr>
@endforelse
</tbody>
</table>
</div>
{{ $rows->render() }}
@endsection
@section('modals')
{{-- DELETE MODAL --}}
<div id="delete-log-modal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<form id="delete-log-form" action="{{ route('log-viewer::logs.delete') }}" method="POST">
@method('DELETE')
@csrf
<input type="hidden" name="date" value="">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">{{ __('Delete log file') }}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<p></p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-sm btn-secondary mr-auto"
data-dismiss="modal">{{ __('Cancel') }}</button>
<button type="submit" class="btn btn-sm btn-danger"
data-loading-text="{{ __('Loading') }}&hellip;">{{ __('Delete') }}</button>
</div>
</div>
</form>
</div>
</div>
@endsection
@section('scripts')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
$(function () {
const deleteLogModal = $('div#delete-log-modal'),
deleteLogForm = $('form#delete-log-form'),
submitBtn = deleteLogForm.find('button[type=submit]')
$('a[href=\'#delete-log-modal\']').on('click', function (event) {
event.preventDefault()
const date = $(this).data('log-date'),
message = "{{ __('Are you sure you want to delete this log file: :date ?') }}"
deleteLogForm.find('input[name=date]').val(date)
deleteLogModal.find('.modal-body p').html(message.replace(':date', date))
deleteLogModal.modal('show')
})
deleteLogForm.on('submit', function (event) {
event.preventDefault()
submitBtn.button('loading')
$.ajax({
url: $(this).attr('action'),
type: $(this).attr('method'),
dataType: 'json',
data: $(this).serialize(),
success: function (data) {
submitBtn.button('reset')
if (data.result === 'success') {
deleteLogModal.modal('hide')
location.reload()
} else {
alert('AJAX ERROR ! Check the console !')
console.error(data)
}
},
error: function (xhr, textStatus, errorThrown) {
alert('AJAX ERROR ! Check the console !')
console.error(errorThrown)
submitBtn.button('reset')
}
})
return false
})
deleteLogModal.on('hidden.bs.modal', function () {
deleteLogForm.find('input[name=date]').val('')
deleteLogModal.find('.modal-body p').html('')
})
})
</script>
@endsection

View File

@@ -1,281 +0,0 @@
<?php
/**
* @var Arcanedev\LogViewer\Entities\Log $log
* @var Illuminate\Pagination\LengthAwarePaginator $entries
* @var string|null $query
*/
?>
@extends('log-viewer::bootstrap-4._master')
@section('content')
<div class="page-header mb-4">
<h1>{{ __('Log') }} [{{ $log->date }}]</h1>
</div>
<div class="row">
<div class="col-lg-2">
{{-- Log Menu --}}
<div class="card mb-4">
<div class="card-header"><i class="fa fa-fw fa-flag"></i> {{ __('Levels') }}</div>
<div class="list-group list-group-flush log-menu">
@foreach($log->menu() as $levelKey => $item)
@if ($item['count'] === 0)
<a class="list-group-item list-group-item-action d-flex justify-content-between align-items-center disabled">
<span class="level-name">{!! $item['icon'] !!} {{ $item['name'] }}</span>
<span class="badge empty">{{ $item['count'] }}</span>
</a>
@else
<a href="{{ $item['url'] }}"
class="list-group-item list-group-item-action d-flex justify-content-between align-items-center level-{{ $levelKey }}{{ $level === $levelKey ? ' active' : ''}}">
<span class="level-name">{!! $item['icon'] !!} {{ $item['name'] }}</span>
<span class="badge badge-level-{{ $levelKey }}">{{ $item['count'] }}</span>
</a>
@endif
@endforeach
</div>
</div>
</div>
<div class="col-lg-10">
{{-- Log Details --}}
<div class="card mb-4">
<div class="card-header">
{{ __('Log info') }} :
<div class="group-btns pull-right">
<a href="{{ route('log-viewer::logs.download', [$log->date]) }}" class="btn btn-sm btn-success">
<i class="fa fa-download"></i> {{ __('Download') }}
</a>
<a href="#delete-log-modal" class="btn btn-sm btn-danger" data-toggle="modal">
<i class="fa fa-trash-o"></i> {{ __('Delete') }}
</a>
</div>
</div>
<div class="table-responsive">
<table class="table table-condensed mb-0">
<tbody>
<tr>
<td>{{ __('File path') }} :</td>
<td colspan="7">{{ $log->getPath() }}</td>
</tr>
<tr>
<td>{{ __('Log entries') }} :</td>
<td>
<span class="badge badge-primary">{{ $entries->total() }}</span>
</td>
<td>{{ __('Size') }} :</td>
<td>
<span class="badge badge-primary">{{ $log->size() }}</span>
</td>
<td>{{ __('Created at') }} :</td>
<td>
<span class="badge badge-primary">{{ $log->createdAt() }}</span>
</td>
<td>{{ __('Updated at') }} :</td>
<td>
<span class="badge badge-primary">{{ $log->updatedAt() }}</span>
</td>
</tr>
</tbody>
</table>
</div>
<div class="card-footer">
{{-- Search --}}
<form action="{{ route('log-viewer::logs.search', [$log->date, $level]) }}" method="GET">
<div class="form-group">
<div class="input-group">
<input id="query" name="query" class="form-control" value="{{ $query }}"
placeholder="{{ __('Type here to search') }}">
<div class="input-group-append">
@unless (is_null($query))
<a href="{{ route('log-viewer::logs.show', [$log->date]) }}"
class="btn btn-secondary">
(@lang(':count results', ['count' => $entries->count()])) <i
class="fa fa-fw fa-times"></i>
</a>
@endunless
<button id="search-btn" class="btn btn-primary">
<span class="fa fa-fw fa-search"></span>
</button>
</div>
</div>
</div>
</form>
</div>
</div>
{{-- Log Entries --}}
<div class="card mb-4">
@if ($entries->hasPages())
<div class="card-header">
<span class="badge badge-info float-right">
{{ __('Page :current of :last', ['current' => $entries->currentPage(), 'last' => $entries->lastPage()]) }}
</span>
</div>
@endif
<div class="table-responsive">
<table id="entries" class="table mb-0">
<thead>
<tr>
<th>{{ __('ENV') }}</th>
<th style="width: 120px;">{{ __('Level') }}</th>
<th style="width: 65px;">{{ __('Time') }}</th>
<th>{{ __('Header') }}</th>
<th class="text-right">{{ __('Actions') }}</th>
</tr>
</thead>
<tbody>
@forelse($entries as $key => $entry)
<?php /** @var Arcanedev\LogViewer\Entities\LogEntry $entry */ ?>
<tr>
<td>
<span class="badge badge-env">{{ $entry->env }}</span>
</td>
<td>
<span class="badge badge-level-{{ $entry->level }}">
{!! $entry->level() !!}
</span>
</td>
<td>
<span class="badge badge-secondary">
{{ $entry->datetime->format('H:i:s') }}
</span>
</td>
<td>
{{ $entry->header }}
</td>
<td class="text-right">
@if ($entry->hasStack())
<a class="btn btn-sm btn-light" role="button" data-toggle="collapse"
href="#log-stack-{{ $key }}" aria-expanded="false"
aria-controls="log-stack-{{ $key }}">
<i class="fa fa-toggle-on"></i> {{ __('Stack') }}
</a>
@endif
@if ($entry->hasContext())
<a class="btn btn-sm btn-light" role="button" data-toggle="collapse"
href="#log-context-{{ $key }}" aria-expanded="false"
aria-controls="log-context-{{ $key }}">
<i class="fa fa-toggle-on"></i> {{ __('Context') }}
</a>
@endif
</td>
</tr>
@if ($entry->hasStack() || $entry->hasContext())
<tr>
<td colspan="5" class="stack py-0">
@if ($entry->hasStack())
<div class="stack-content collapse" id="log-stack-{{ $key }}">
{!! $entry->stack() !!}
</div>
@endif
@if ($entry->hasContext())
<div class="stack-content collapse" id="log-context-{{ $key }}">
<pre>{{ $entry->context() }}</pre>
</div>
@endif
</td>
</tr>
@endif
@empty
<tr>
<td colspan="5" class="text-center">
<span class="badge badge-secondary">{{ __('The list of logs is empty!') }}</span>
</td>
</tr>
@endforelse
</tbody>
</table>
</div>
</div>
{!! $entries->appends(compact('query'))->render() !!}
</div>
</div>
@endsection
@section('modals')
{{-- DELETE MODAL --}}
<div id="delete-log-modal" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<form id="delete-log-form" action="{{ route('log-viewer::logs.delete') }}" method="POST">
@method('DELETE')
@csrf
<input type="hidden" name="date" value="{{ $log->date }}">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">{{ __('Delete log file') }}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<p>{{ __('Are you sure you want to delete this log file: :date ?', ['date' => $log->date]) }}</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-sm btn-secondary mr-auto"
data-dismiss="modal">{{ __('Cancel') }}</button>
<button type="submit" class="btn btn-sm btn-danger"
data-loading-text="{{ __('Loading') }}&hellip;">{{ __('Delete') }}</button>
</div>
</div>
</form>
</div>
</div>
@endsection
@section('scripts')
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce('script') }}">
$(function () {
const deleteLogModal = $('div#delete-log-modal'),
deleteLogForm = $('form#delete-log-form'),
submitBtn = deleteLogForm.find('button[type=submit]')
deleteLogForm.on('submit', function (event) {
event.preventDefault()
submitBtn.button('loading')
$.ajax({
url: $(this).attr('action'),
type: $(this).attr('method'),
dataType: 'json',
data: $(this).serialize(),
success: function (data) {
submitBtn.button('reset')
if (data.result === 'success') {
deleteLogModal.modal('hide')
location.replace("{{ route('log-viewer::logs.list') }}")
} else {
alert('OOPS ! This is a lack of coffee exception !')
}
},
error: function (xhr, textStatus, errorThrown) {
alert('AJAX ERROR ! Check the console !')
console.error(errorThrown)
submitBtn.button('reset')
}
})
return false
})
@unless (empty(log_styler()->toHighlight()))
@php
$htmlHighlight = version_compare(PHP_VERSION, '7.4.0') >= 0
? join('|', log_styler()->toHighlight())
: join(log_styler()->toHighlight(), '|')
@endphp
$('.stack-content').each(function () {
const $this = $(this)
const html = $this.html().trim()
.replace(/({!! $htmlHighlight !!})/gm, '<strong>$1</strong>')
$this.html(html)
})
@endunless
})
</script>
@endsection