mirror of
https://github.com/HDInnovations/UNIT3D.git
synced 2026-01-31 01:35:31 +01:00
update: dependencies
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
];
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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
3446
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -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,
|
||||
|
||||
/*
|
||||
|
||||
@@ -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',
|
||||
];
|
||||
@@ -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:',
|
||||
],
|
||||
|
||||
];
|
||||
@@ -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
BIN
database/schema.pdf
Normal file
Binary file not shown.
@@ -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({})
|
||||
})
|
||||
|
||||
@@ -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({})
|
||||
})
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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({})
|
||||
})
|
||||
|
||||
@@ -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({})
|
||||
})
|
||||
|
||||
@@ -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({})
|
||||
})
|
||||
|
||||
@@ -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') ?>"
|
||||
|
||||
|
||||
@@ -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') }} "
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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({})
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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({
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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()
|
||||
})
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -207,7 +207,7 @@
|
||||
@endsection
|
||||
|
||||
@section('javascripts')
|
||||
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce() }}">
|
||||
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce() }}">
|
||||
$(document).ready(function () {
|
||||
$('#content').wysibb({})
|
||||
})
|
||||
|
||||
@@ -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()
|
||||
})
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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') }}
|
||||
|
||||
@@ -366,7 +366,7 @@
|
||||
@endsection
|
||||
|
||||
@section('javascripts')
|
||||
<script nonce="{{ Bepsvpt\SecureHeaders\SecureHeaders::nonce() }}">
|
||||
<script nonce="{{ HDVinnie\SecureHeaders\SecureHeaders::nonce() }}">
|
||||
$(document).ready(function () {
|
||||
$('#content').wysibb({})
|
||||
})
|
||||
|
||||
@@ -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({})
|
||||
})
|
||||
|
||||
@@ -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({})
|
||||
})
|
||||
|
||||
@@ -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({})
|
||||
})
|
||||
|
||||
@@ -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({})
|
||||
})
|
||||
|
||||
@@ -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()
|
||||
})
|
||||
|
||||
@@ -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({})
|
||||
})
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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({})
|
||||
})
|
||||
|
||||
@@ -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()
|
||||
})
|
||||
|
||||
@@ -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()
|
||||
})
|
||||
|
||||
@@ -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()
|
||||
})
|
||||
|
||||
@@ -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 () {
|
||||
|
||||
|
||||
@@ -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>©</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>
|
||||
@@ -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
|
||||
@@ -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">×</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') }}…">{{ __('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
|
||||
@@ -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">×</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') }}…">{{ __('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
|
||||
Reference in New Issue
Block a user