refactor: torrent list page to livewire

- grouping view and card view are next
This commit is contained in:
HDVinnie
2021-05-25 19:41:55 -04:00
parent 2dbadb0b75
commit 6aec71e20c
7 changed files with 862 additions and 813 deletions
+17
View File
@@ -107,3 +107,20 @@ if (! function_exists('modalStyle')) {
return (auth()->user()->style == 0) ? '' : ' modal-dark';
}
}
if (! function_exists('ratingColor')) {
function rating_color($number)
{
if ($number > 0 && $number <= 3.9) {
return 'text-danger';
}
if ($number >= 4 && $number <= 6.9) {
return 'text-warning';
}
if ($number >= 7 && $number <= 10) {
return 'text-success';
}
}
}
+1 -21
View File
@@ -99,27 +99,7 @@ class TorrentController extends Controller
*/
public function torrents(Request $request): \Illuminate\Contracts\View\Factory | \Illuminate\View\View
{
$user = $request->user();
$repository = $this->torrentFacetedRepository;
$torrents = Torrent::with(['user:id,username,group_id', 'category', 'type', 'resolution'])
->withCount(['thanks', 'comments'])
->orderBy('sticky', 'desc')
->orderBy('bumped_at', 'desc')
->paginate(25);
$personalFreeleech = PersonalFreeleech::where('user_id', '=', $user->id)->first();
$bookmarks = Bookmark::where('user_id', $user->id)->get();
return \view('torrent.torrents', [
'personal_freeleech' => $personalFreeleech,
'repository' => $repository,
'bookmarks' => $bookmarks,
'torrents' => $torrents,
'user' => $user,
'sorting' => '',
'direction' => 1,
'links' => null,
]);
return \view('torrent.torrents');
}
/**
+225
View File
@@ -0,0 +1,225 @@
<?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
*/
namespace App\Http\Livewire;
use App\Models\Torrent;
use App\Models\User;
use Livewire\Component;
use App\Models\Keyword;
use Livewire\WithPagination;
use App\Models\PersonalFreeleech;
use Illuminate\Support\Facades\DB;
class TorrentListSearch extends Component
{
use WithPagination;
public $name = '';
public $description = '';
public $mediainfo = '';
public $uploader = '';
public $keywords = [];
public $startYear = '';
public $endYear = '';
public $categories = [];
public $types = [];
public $resolutions = [];
public $genres = [];
public $tmdbId = '';
public $imdbId = '';
public $tvdbId = '';
public $malId = '';
public $free;
public $doubleup;
public $featured;
public $stream;
public $sd;
public $highspeed;
public $internal;
public $personalRelease;
public $perPage = 25;
public $sortField = 'bumped_at';
public $sortDirection = 'desc';
protected $queryString = [
'name' => ['except' => ''],
'description' => ['except' => ''],
'mediainfo' => ['except' => ''],
'uploader' => ['except' => ''],
'keywords' => ['except' => []],
'startYear' => ['except' => ''],
'endYear' => ['except' => ''],
'categories' => ['except' => []],
'types' => ['except' => []],
'resolutions' => ['except' => []],
'genres' => ['except' => []],
'tmdbId' => ['except' => ''],
'imdbId' => ['except' => ''],
'tvdbId' => ['except' => ''],
'malId' => ['except' => ''],
'free' => ['except' => false],
'doubleup' => ['except' => false],
'featured' => ['except' => false],
'stream' => ['except' => false],
'sd' => ['except' => false],
'highspeed' => ['except' => false],
'internal' => ['except' => false],
'personalRelease' => ['except' => false],
'sortField' => ['except' => 'bumped_at'],
'sortDirection' => ['except' => 'desc'],
'page' => ['except' => 1],
'perPage' => ['except' => ''],
];
final public function paginationView(): string
{
return 'vendor.pagination.livewire-pagination';
}
final public function updatingName(): void
{
$this->resetPage();
}
final public function getTorrentsStatProperty()
{
return DB::table('torrents')
->selectRaw('count(*) as total')
->selectRaw('count(case when seeders > 0 then 1 end) as alive')
->selectRaw('count(case when seeders = 0 then 1 end) as dead')
->first();
}
final public function getPersonalFreeleechProperty()
{
return PersonalFreeleech::where('user_id', '=', \auth()->user()->id)->first();
}
final public function getTorrentsProperty(): \Illuminate\Contracts\Pagination\LengthAwarePaginator
{
return Torrent::with(['category', 'type', 'resolution'])
->withCount(['thanks', 'comments'])
->when($this->name, function ($query) {
$terms = \explode(' ', $this->name);
$search = '';
foreach ($terms as $term) {
$search .= '%'.$term.'%';
}
$query->where('name', 'LIKE', $search);
})
->when($this->description, function ($query) {
$query->where('description', 'LIKE', '%'.$this->description.'%');
})
->when($this->mediainfo, function ($query) {
$query->where('mediainfo', 'LIKE', '%'.$this->mediainfo.'%');
})
->when($this->uploader, function ($query) {
$match = User::where('username', 'LIKE', '%'.$this->uploader.'%')->orderBy('username', 'ASC')->first();
if ($match) {
$query->where('user_id', '=', $match->id)->where('anon', '=', 0);
}
})
->when($this->keywords, function ($query) {
$keywords = self::parseKeywords($this->keywords);
$keyword = Keyword::select(['torrent_id'])->whereIn('name', $keywords)->get();
$query->whereIn('id', $keyword->torrent_id);
})
->when($this->startYear && $this->endYear, function ($query) {
$query->whereBetween('release_year', [$this->startYear, $this->endYear]);
})
->when($this->categories, function ($query) {
$query->whereIn('category_id', $this->categories);
})
->when($this->types, function ($query) {
$query->whereIn('type_id', $this->types);
})
->when($this->resolutions, function ($query) {
$query->whereIn('resolution_id', $this->resolutions);
})
->when($this->tmdbId, function ($query) {
$query->where('tmdb', '=', $this->tmdbId);
})
->when($this->imdbId, function ($query) {
$query->where('imdb', '=', $this->imdbId);
})
->when($this->tvdbId, function ($query) {
$query->where('tvdb', '=', $this->tvdbId);
})
->when($this->malId, function ($query) {
$query->where('mal', '=', $this->malId);
})
->when($this->free, function ($query) {
$query->where('free', '=', 1);
})
->when($this->doubleup, function ($query) {
$query->where('doubleup', '=', 1);
})
->when($this->featured, function ($query) {
$query->where('featured', '=', 1);
})
->when($this->stream, function ($query) {
$query->where('stream', '=', 1);
})
->when($this->sd, function ($query) {
$query->where('sd', '=', 1);
})
->when($this->highspeed, function ($query) {
$query->where('highspeed', '=', 1);
})
->when($this->internal, function ($query) {
$query->where('internal', '=', 1);
})
->when($this->personalRelease, function ($query) {
$query->where('personal_release', '=', 1);
})
->orderBy('sticky', 'desc')
->orderBy($this->sortField, $this->sortDirection)
->paginate($this->perPage);
}
private static function parseKeywords($text): array
{
$parts = \explode(', ', $text);
$result = [];
foreach ($parts as $part) {
$part = \trim($part);
if ($part != '') {
$result[] = $part;
}
}
return $result;
}
final public function sortBy($field): void
{
if ($this->sortField === $field) {
$this->sortDirection = $this->sortDirection === 'asc' ? 'desc' : 'asc';
} else {
$this->sortDirection = 'asc';
}
$this->sortField = $field;
}
final public function render(): \Illuminate\Contracts\View\Factory | \Illuminate\Contracts\View\View | \Illuminate\Contracts\Foundation\Application
{
return \view('livewire.torrent-list-search', [
'user' => User::with('history')->findOrFail(\auth()->user()->id),
'torrents' => $this->torrents,
'torrentsStat' => $this->torrentsStat,
'personalFreeleech' => $this->personalFreeleech,
]);
}
}
@@ -6,9 +6,8 @@
<div class="card_body">
<div class="body_poster">
@if ($torrent->category->movie_meta || $torrent->category->tv_meta)
<img src="{{ $meta->poster ?? 'https://via.placeholder.com/600x900' }}" class="show-poster"
data-image='<img src="{{ $meta->poster ?? 'https://via.placeholder.com/600x900' }}" alt="@lang('torrent.poster')" style="height: 1000px;">'
class="torrent-poster-img-small show-poster" alt="@lang('torrent.poster')">
<img src="{{ \tmdb_image('poster_big', $meta->poster) ?? 'https://via.placeholder.com/600x900' }}"
class="show-poster" alt="@lang('torrent.poster')">
@endif
@if ($torrent->category->game_meta && isset($meta) && $meta->cover->image_id && $meta->name)
@@ -0,0 +1,615 @@
<div>
<div class="container-fluid">
<style>
.form-group {
margin-bottom: 5px !important;
}
.badge-extra {
margin-bottom: 0;
}
</style>
<div x-data="{ open: false }" class="container box" id="torrent-list-search" style="margin-bottom: 0; padding: 10px 100px; border-radius: 5px;">
<div class="mt-5">
<div class="row">
<div class="form-group col-xs-9">
<input wire:model="name" type="search" class="form-control" placeholder="Name" />
</div>
<div class="form-group col-xs-3">
<button class="btn btn-md btn-primary" @click="open = ! open" x-text="open ? 'Hide Advanced Search' : 'Advanced Search...'"></button>
</div>
</div>
<div x-show="open">
<div class="row">
<div class="form-group col-sm-3 col-xs-6">
<label for="description" class="label label-default">@lang('torrent.description')</label>
<input wire:model="description" type="text" class="form-control" placeholder="Description">
</div>
<div class="form-group col-sm-3 col-xs-6">
<label for="mediainfo" class="label label-default">@lang('torrent.media-info')</label>
<input wire:model="mediainfo" type="text" class="form-control" placeholder="Mediainfo">
</div>
<div class="form-group col-sm-3 col-xs-6">
<label for="keywords" class="label label-default">@lang('torrent.keywords')</label>
<input wire:model="description" type="text" class="form-control" placeholder="Keywords">
</div>
<div class="form-group col-sm-3 col-xs-6">
<label for="uploader" class="label label-default">@lang('torrent.uploader')</label>
<input wire:model="uploader" type="text" class="form-control" placeholder="Uploader">
</div>
</div>
<div class="row">
<div class="form-group col-sm-3 col-xs-6">
<label for="tmdbId" class="label label-default">TMDb</label>
<input wire:model="tmdbId" type="text" class="form-control" placeholder="TMDb ID">
</div>
<div class="form-group col-sm-3 col-xs-6">
<label for="imdbId" class="label label-default">IMDb</label>
<input wire:model="imdbId" type="text" class="form-control" placeholder="IMDb ID">
</div>
<div class="form-group col-sm-3 col-xs-6">
<label for="tvdbId" class="label label-default">TVDb</label>
<input wire:model="tvdbId" type="text" class="form-control" placeholder="TVDb ID">
</div>
<div class="form-group col-sm-3 col-xs-6">
<label for="malId" class="label label-default">MAL</label>
<input wire:model="malId" type="text" class="form-control" placeholder="MAL ID">
</div>
</div>
<div class="row">
<div class="form-group col-sm-6 col-xs-6">
<label for="description" class="label label-default">@lang('torrent.start-year')</label>
<input wire:model="startYear" type="text" class="form-control" placeholder="Year Range">
</div>
<div class="form-group col-sm-6 col-xs-6">
<label for="mediainfo" class="label label-default">@lang('torrent.end-year')</label>
<input wire:model="endYear" type="text" class="form-control" placeholder="Year Range">
</div>
</div>
<div class="row">
<div class="form-group col-sm-12 col-xs-6">
<label for="categories" class="label label-default">@lang('common.category')</label>
@foreach (App\Models\Category::select(['id', 'name', 'position'])->get()->sortBy('position') as $category)
<span class="badge-user">
<label class="inline">
<input type="checkbox" wire:model="categories" value="{{ $category->id }}"> {{ $category->name }}
</label>
</span>
@endforeach
</div>
</div>
<div class="row">
<div class="form-group col-sm-12 col-xs-6">
<label for="types" class="label label-default">@lang('common.type')</label>
@foreach (App\Models\Type::select(['id', 'name', 'position'])->get()->sortBy('position') as $type)
<span class="badge-user">
<label class="inline">
<input type="checkbox" wire:model="types" value="{{ $type->id }}"> {{ $type->name }}
</label>
</span>
@endforeach
</div>
</div>
<div class="row">
<div class="form-group col-sm-12 col-xs-6">
<label for="resolutions" class="label label-default">@lang('common.resolution')</label>
@foreach (App\Models\Resolution::select(['id', 'name', 'position'])->get()->sortBy('position') as $resolution)
<span class="badge-user">
<label class="inline">
<input type="checkbox" wire:model="resolutions" value="{{ $resolution->id }}"> {{ $resolution->name }}
</label>
</span>
@endforeach
</div>
</div>
<div class="row">
<div class="form-group col-sm-12 col-xs-6">
<label for="extra" class="label label-default">Buff</label>
<span class="badge-user">
<label class="inline">
<input wire:model="free" type="checkbox" value="1">
Freeleech
</label>
</span>
<span class="badge-user">
<label class="inline">
<input wire:model="doubleup" type="checkbox" value="1">
Double Upload
</label>
</span>
<span class="badge-user">
<label class="inline">
<input wire:model="featured" type="checkbox" value="1">
Featured
</label>
</span>
</div>
</div>
<div class="row">
<div class="form-group col-sm-12 col-xs-6">
<label for="extra" class="label label-default">Tags</label>
<span class="badge-user">
<label class="inline">
<input wire:model="stream" type="checkbox" value="1">
Stream Optimized
</label>
</span>
<span class="badge-user">
<label class="inline">
<input wire:model="sd" type="checkbox" value="1">
SD Content
</label>
</span>
<span class="badge-user">
<label class="inline">
<input wire:model="highspeed" type="checkbox" value="1">
Highspeed
</label>
</span>
</div>
</div>
<div class="row">
<div class="form-group col-sm-12 col-xs-6">
<label for="extra" class="label label-default">@lang('common.extra')</label>
<span class="badge-user">
<label class="inline">
<input wire:model="internal" type="checkbox" value="1">
Internal
</label>
</span>
<span class="badge-user">
<label class="inline">
<input wire:model="personalRelease" type="checkbox" value="1">
Personal Release
</label>
</span>
</div>
</div>
<div class="row">
<div class="form-group col-sm-12 col-xs-6">
<label for="page" class="label label-default">@lang('common.quantity')</label>
<span>
<label class="inline">
<select wire:model="perPage" class="form-control">
<option value="25">25</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
</label>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
<br>
<div class="text-center">
{{ $torrents->links() }}
</div>
<br>
<div class="table-responsive block">
<span class="badge-user" style="float: right;">
<strong>Total:</strong> {{ \number_format($torrentsStat->total) }} |
<strong>Alive:</strong> {{ \number_format($torrentsStat->alive) }} |
<strong>Dead:</strong> {{ \number_format($torrentsStat->dead) }} |
</span>
<div class="dropdown">
<a class="dropdown btn btn-xs btn-success" data-toggle="dropdown" href="#" aria-expanded="true">
@lang('common.publish') @lang('torrent.torrent')
<i class="fas fa-caret-circle-right"></i>
</a>
<ul class="dropdown-menu">
@php $categories = App\Models\Category::all(); @endphp
@foreach($categories as $category)
<li role="presentation">
<a role="menuitem" tabindex="-1" target="_blank" href="{{ route('upload_form', ['category_id' => $category->id]) }}">
<span class="menu-text">{{ $category->name }}</span>
<span class="selected"></span>
</a>
</li>
@endforeach
</ul>
</div>
<div class="header gradient green" style="margin-top: 10px;">
<div class="inner_content">
<h5 style="font-weight: 900; font-size: 20px; margin: 8px;">
@lang('torrent.torrents')
</h5>
</div>
</div>
<table class="table table-condensed table-striped table-bordered" id="torrent-list-table">
<thead>
<tr>
<th></th>
<th></th>
<th class="torrents-filename">
<div sortable wire:click="sortBy('name')" :direction="$sortField === 'name' ? $sortDirection : null" role="button">
@lang('common.name')
@include('livewire.includes._sort-icon', ['field' => 'name'])
</div>
</th>
<th>
<div>
<i class="{{ config('other.font-awesome') }} fa-download"></i>
</div>
</th>
<th>
<div>
<i class="{{ config('other.font-awesome') }} fa-id-badge"></i>
</div>
</th>
<th>
<div sortable wire:click="sortBy('size')" :direction="$sortField === 'size' ? $sortDirection : null" role="button">
<i class="{{ config('other.font-awesome') }} fa-database"></i>
@include('livewire.includes._sort-icon', ['field' => 'size'])
</div>
</th>
<th>
<div sortable wire:click="sortBy('seeders')" :direction="$sortField === 'seeders' ? $sortDirection : null" role="button">
<i class="{{ config('other.font-awesome') }} fa-arrow-alt-circle-up"></i>
@include('livewire.includes._sort-icon', ['field' => 'seeders'])
</div>
</th>
<th>
<div sortable wire:click="sortBy('leechers')" :direction="$sortField === 'leechers' ? $sortDirection : null" role="button">
<i class="{{ config('other.font-awesome') }} fa-arrow-alt-circle-down"></i>
@include('livewire.includes._sort-icon', ['field' => 'leechers'])
</div>
</th>
<th>
<div sortable wire:click="sortBy('times_completed')" :direction="$sortField === 'times_completed' ? $sortDirection : null" role="button">
<i class="{{ config('other.font-awesome') }} fa-check-circle"></i>
@include('livewire.includes._sort-icon', ['field' => 'times_completed'])
</div>
</th>
<th>
<div sortable wire:click="sortBy('created_at')" :direction="$sortField === 'created_at' ? $sortDirection : null" role="button">
@lang('common.created_at')
@include('livewire.includes._sort-icon', ['field' => 'created_at'])
</div>
</th>
</tr>
</thead>
<tbody>
@foreach($torrents as $torrent)
@php $meta = null; @endphp
@if ($torrent->category->tv_meta)
@if ($torrent->tmdb || $torrent->tmdb != 0)
@php $meta = App\Models\Tv::with('genres')->where('id', '=', $torrent->tmdb)->first(); @endphp
@endif
@endif
@if ($torrent->category->movie_meta)
@if ($torrent->tmdb || $torrent->tmdb != 0)
@php $meta = App\Models\Movie::with('genres')->where('id', '=', $torrent->tmdb)->first(); @endphp
@endif
@endif
@if ($torrent->sticky == 1)
<tr class="success">
@else
<tr>
@endif
<td style="width: 1%;">
@if ($user->show_poster == 1)
<div class="torrent-poster pull-left">
@if ($torrent->category->movie_meta || $torrent->category->tv_meta)
<img loading="lazy" src="{{ isset($meta->poster) ? \tmdb_image('poster_small', $meta->poster) : 'https://via.placeholder.com/90x135' }}"
class="torrent-poster-img-small" alt="@lang('torrent.poster')">
@endif
@if ($torrent->category->game_meta && isset($meta) && $meta->cover->image_id && $meta->name)
<img loading="lazy" src="https://images.igdb.com/igdb/image/upload/t_cover_small/{{ $meta->cover->image_id }}.jpg"
class="torrent-poster-img-small" alt="@lang('torrent.poster')">
@endif
@if ($torrent->category->no_meta || $torrent->category->music_meta)
<img loading="lazy" src="https://via.placeholder.com/90x135"
class="torrent-poster-img-small" alt="@lang('torrent.poster')">
@endif
</div>
@else
<div class="torrent-poster pull-left"></div>
@endif
</td style="width: 1%;">
<td style="width: 5%; text-align: center;">
<a href="{{ route('categories.show', ['id' => $torrent->category->id]) }}">
<div class="text-center">
<i class="{{ $torrent->category->icon }} torrent-icon" style="padding-top: 1px; font-size: 24px;"></i>
</div>
</a>
<div class="text-center">
<span class="label label-success" style="font-size: 13px">
{{ $torrent->type->name }}
</span>
</div>
<div class="text-center" style="padding-top: 5px;">
<span class="label label-success" style="font-size: 13px">
{{ $torrent->resolution->name ?? 'N/A' }}
</span>
</div>
</td>
<td style="vertical-align: middle;">
<a class="view-torrent" style="font-size: 16px;" href="{{ route('torrent', ['id' => $torrent->id]) }}">
{{ $torrent->name }}
</a>
@if ($current = $user->history->where('info_hash', $torrent->info_hash)->first())
@if ($current->seeder == 1 && $current->active == 1)
<button class="btn btn-success btn-circle" type="button" data-toggle="tooltip"
data-original-title="@lang('torrent.currently-seeding')!">
<i class="{{ config('other.font-awesome') }} fa-arrow-up"></i>
</button>
@endif
@if ($current->seeder == 0 && $current->active == 1)
<button class="btn btn-warning btn-circle" type="button" data-toggle="tooltip"
data-original-title="@lang('torrent.currently-leeching')!">
<i class="{{ config('other.font-awesome') }} fa-arrow-down"></i>
</button>
@endif
@if ($current->seeder == 0 && $current->active == 0 && $current->completed_at == null)
<button class="btn btn-info btn-circle" type="button" data-toggle="tooltip"
data-original-title="@lang('torrent.not-completed')!">
<i class="{{ config('other.font-awesome') }} fa-spinner"></i>
</button>
@endif
@if ($current->seeder == 1 && $current->active == 0 && $current->completed_at != null)
<button class="btn btn-danger btn-circle" type="button" data-toggle="tooltip"
data-original-title="@lang('torrent.completed-not-seeding')!">
<i class="{{ config('other.font-awesome') }} fa-thumbs-down"></i>
</button>
@endif
@endif
<br>
@if ($torrent->anon === 0)
<span class="badge-extra">
<i class="{{ config('other.font-awesome') }} {{ $torrent->user->group->icon }}"></i>
<a href="{{ route('users.show', ['username' => $torrent->user->username]) }}">
{{ $torrent->user->username }}
</a>
</span>
@else
<span class="badge-extra">
<i class="{{ config('other.font-awesome') }} fa-ghost"></i>
{{ strtoupper(trans('common.anonymous')) }}
@if ($user->group->is_modo || $torrent->user->username === $user->username)
<a href="{{ route('users.show', ['username' => $torrent->user->username]) }}">
({{ $torrent->user->username }})
</a>
@endif
</span>
@endif
<span class='badge-extra text-pink'>
<i class="{{ config('other.font-awesome') }} fa-heartbeat"></i> {{ $torrent->thanks_count }}
</span>
<span class='badge-extra text-green'>
<i class="{{ config('other.font-awesome') }} fa-comment-alt-lines"></i> {{ $torrent->comments_count }}
</span>
@if ($torrent->internal == 1)
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-magic' data-toggle='tooltip' title=''
data-original-title='@lang('torrent.internal-release')' style="color: #baaf92;"></i>
</span>
@endif
@if ($torrent->personal_release == 1)
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-user-plus' data-toggle='tooltip' title=''
data-original-title='Personal Release' style="color: #865be9;"></i>
</span>
@endif
@if ($torrent->stream == 1)
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-play text-red' data-toggle='tooltip'
title='' data-original-title='@lang('torrent.stream-optimized')'></i>
</span>
@endif
@if ($torrent->featured == 0)
@if ($torrent->doubleup == 1)
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-gem text-green' data-toggle='tooltip'
title='' data-original-title='@lang('torrent.double-upload')'></i>
</span>
@endif
@if ($torrent->free == 1)
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-star text-gold' data-toggle='tooltip'
title='' data-original-title='@lang('torrent.freeleech')'></i>
</span>
@endif
@endif
@if ($personalFreeleech)
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-id-badge text-orange' data-toggle='tooltip'
title='' data-original-title='@lang('torrent.personal-freeleech')'></i>
</span>
@endif
@if ($user->freeleechTokens->where('torrent_id', $torrent->id)->first())
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-star text-bold' data-toggle='tooltip'
title='' data-original-title='@lang('torrent.freeleech-token')'></i>
</span>
@endif
@if ($torrent->featured == 1)
<span class='badge-extra text-bold' style='background-image:url(/img/sparkels.gif);'>
<i class='{{ config('other.font-awesome') }} fa-certificate text-pink' data-toggle='tooltip'
title='' data-original-title='@lang('torrent.featured')'></i>
</span>
@endif
@if ($user->group->is_freeleech == 1)
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-trophy text-purple' data-toggle='tooltip'
title='' data-original-title='@lang('torrent.special-freeleech')'></i>
</span>
@endif
@if (config('other.freeleech') == 1)
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-globe text-blue' data-toggle='tooltip'
title='' data-original-title='@lang('torrent.global-freeleech')'></i>
</span>
@endif
@if (config('other.doubleup') == 1)
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-globe text-green' data-toggle='tooltip'
title='' data-original-title='@lang('torrent.global-double-upload')'></i>
</span>
@endif
@if ($user->group->is_double_upload == 1)
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-trophy text-purple'
data-toggle='tooltip' title='' data-original-title='@lang('torrent.special-double_upload')'></i>
</span>
@endif
@if ($torrent->leechers >= 5)
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-fire text-orange' data-toggle='tooltip'
title='' data-original-title='@lang('common.hot')'></i>
</span>
@endif
@if ($torrent->sticky == 1)
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-thumbtack text-black' data-toggle='tooltip'
title='' data-original-title='@lang('torrent.sticky')'></i>
</span>
@endif
@if ($torrent->highspeed == 1)
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-tachometer text-red' data-toggle='tooltip'
title='' data-original-title='@lang('common.high-speeds')'></i>
</span>
@endif
@if ($torrent->sd == 1)
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-ticket text-orange' data-toggle='tooltip'
title='' data-original-title='@lang('torrent.sd-content')'></i>
</span>
@endif
@if ($torrent->bumped_at != $torrent->created_at && $torrent->bumped_at < Carbon\Carbon::now()->addDay(2))
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-level-up-alt text-gold' data-toggle='tooltip'
title='' data-original-title='@lang('torrent.recent-bumped')'></i>
</span>
@endif
</td>
<td style="vertical-align: middle;">
@if (config('torrent.download_check_page') == 1)
<a href="{{ route('download_check', ['id' => $torrent->id]) }}">
<button class="btn btn-primary btn-circle" type="button" data-toggle="tooltip"
data-original-title="@lang('common.download')">
<i class="{{ config('other.font-awesome') }} fa-download"></i>
</button>
</a>
@else
<a href="{{ route('download', ['id' => $torrent->id]) }}">
<button class="btn btn-primary btn-circle" type="button" data-toggle="tooltip"
data-original-title="@lang('common.download')">
<i class="{{ config('other.font-awesome') }} fa-download"></i>
</button>
</a>
@endif
@if (config('torrent.magnet') == 1)
<a href="magnet:?dn={{ $torrent->name }}&xt=urn:btih:{{ $torrent->info_hash }}&as={{ route('torrent.download.rsskey', ['id' => $torrent->id, 'rsskey' => $user->rsskey ]) }}&tr={{ route('announce', ['passkey' => $user->passkey]) }}&xl={{ $torrent->size }}">
<button class="btn btn-primary btn-circle" type="button" data-toggle="tooltip"
data-original-title="@lang('common.magnet')">
<i class="{{ config('other.font-awesome') }} fa-magnet"></i>
</button>
</a>
@endif
</td>
<td style="vertical-align: middle;">
<span class='badge-extra'>
<a href="{{ route('torrents.similar', ['category_id' => $torrent->category_id, 'tmdb' => $torrent->tmdb]) }}">
<img src="{{ url('img/tmdb_small.png') }}" alt="tmdb_id" style="margin-left: -5px;" width="24px" height="24px"> {{ $torrent->tmdb }}
</a>
<br>
<span class="{{ \rating_color($meta->vote_average ?? 'text-white') }}"><i class="{{ config('other.font-awesome') }} fa-star-half-alt"></i> {{ $meta->vote_average ?? 0 }}/10 </span>
</span>
</td>
<td style="vertical-align: middle;">
<span class='badge-extra'>
{{ $torrent->getSize() }}
</span>
</td>
<td style="vertical-align: middle;">
<a href="{{ route('peers', ['id' => $torrent->id]) }}">
<span class='badge-extra text-green'>
{{ $torrent->seeders }}
</span>
</a>
</td>
<td style="vertical-align: middle;">
<a href="{{ route('peers', ['id' => $torrent->id]) }}">
<span class='badge-extra text-red'>
{{ $torrent->leechers }}
</span>
</a>
</td>
<td style="vertical-align: middle;">
<a href="{{ route('history', ['id' => $torrent->id]) }}">
<span class='badge-extra text-orange'>
{{ $torrent->times_completed }}
</span>
</a>
</td>
<td style="vertical-align: middle;">
<span class='badge-extra'>
{{ $torrent->created_at->diffForHumans() }}
</span>
</td>
</tr>
@endforeach
</tbody>
</table>
@if (! $torrents->count())
<div class="margin-10">
@lang('common.no-result')
</div>
@endif
<br>
<div class="text-center">
{{ $torrents->links() }}
</div>
<br>
<div class="container-fluid well">
<div class="text-center">
<strong>@lang('common.legend'):</strong>
<button class='btn btn-success btn-circle' type='button' data-toggle='tooltip' title=''
data-original-title='@lang('torrent.currently-seeding')!'>
<i class='{{ config('other.font-awesome') }} fa-arrow-up'></i>
</button>
<button class='btn btn-warning btn-circle' type='button' data-toggle='tooltip' title=''
data-original-title='@lang('torrent.currently-leeching')!'>
<i class='{{ config('other.font-awesome') }} fa-arrow-down'></i>
</button>
<button class='btn btn-info btn-circle' type='button' data-toggle='tooltip' title=''
data-original-title='@lang('torrent.not-completed')!'>
<i class='{{ config('other.font-awesome') }} fa-spinner'></i>
</button>
<button class='btn btn-danger btn-circle' type='button' data-toggle='tooltip' title=''
data-original-title='@lang('torrent.completed-not-seeding')!'>
<i class='{{ config('other.font-awesome') }} fa-thumbs-down'></i>
</button>
</div>
</div>
</div>
</div>
</div>
-437
View File
@@ -1,437 +0,0 @@
<div class="table-responsive">
<div class="text-center">
@if($links)
{{ $links->links() }}
@else
@if($torrents->links())
{{ $torrents->links() }}
@endif
@endif
</div>
<table class="table table-condensed table-bordered table-striped table-hover">
<thead>
<tr>
@if ($user->show_poster == 1)
<th>@lang('torrent.poster')</th>
@else
<th></th>
@endif
<th>@lang('torrent.category')</th>
<th>@lang('torrent.type')/@lang('torrent.resolution')</th>
<th style="white-space: nowrap !important;">@sortablelink('name', trans('common.name'), '',
['id'=>'name','class'=>'facetedSearch facetedSort','trigger'=>'sort','state'=> ($sorting && $sorting
== "name" ? $direction : 0)])</th>
<th><i class="{{ config('other.font-awesome') }} fa-download"></i>
<th><i class="{{ config('other.font-awesome') }} fa-bookmark"></i>
<th style="white-space: nowrap !important;"><i class="{{ config('other.font-awesome') }} fa-clock"></i>
@sortablelink('created_at', (trans('torrent.created_at')), '',
['id'=>'created_at','class'=>'facetedSearch facetedSort','trigger'=>'sort','state'=> ($sorting &&
$sorting == "created_at" ? $direction : 0)])</th>
<th style="white-space: nowrap !important;"><i class="{{ config('other.font-awesome') }} fa-file"></i>
@sortablelink('size', (trans('torrent.size')), '', ['id'=>'size','class'=>'facetedSearch
facetedSort','trigger'=>'sort','state'=> ($sorting && $sorting == "size" ? $direction : 0)])</th>
<th style="white-space: nowrap !important;"><i
class="{{ config('other.font-awesome') }} fa-arrow-circle-up"></i> @sortablelink('seeders', 'S',
'', ['id'=>'seeders','class'=>'facetedSearch facetedSort','trigger'=>'sort','state'=> ($sorting &&
$sorting == "seeders" ? $direction : 0)])</th>
<th style="white-space: nowrap !important;"><i
class="{{ config('other.font-awesome') }} fa-arrow-circle-down"></i> @sortablelink('leechers',
'L', '', ['id'=>'leechers','class'=>'facetedSearch facetedSort','trigger'=>'sort','state'=>
($sorting && $sorting == "leechers" ? $direction : 0)])</th>
<th style="white-space: nowrap !important;"><i
class="{{ config('other.font-awesome') }} fa-check-square"></i> @sortablelink('times_completed',
'C', '', ['id'=>'times_completed','class'=>'facetedSearch facetedSort','trigger'=>'sort','state'=>
($sorting && $sorting == "times_completed" ? $direction : 0)])</th>
</tr>
</thead>
<tbody>
@foreach ($torrents as $torrent)
@php $meta = null; @endphp
@if ($torrent->category->tv_meta)
@if ($torrent->tmdb || $torrent->tmdb != 0)
@php $meta = App\Models\Tv::with('genres')->where('id', '=', $torrent->tmdb)->first(); @endphp
@endif
@endif
@if ($torrent->category->movie_meta)
@if ($torrent->tmdb || $torrent->tmdb != 0)
@php $meta = App\Models\Movie::with('genres')->where('id', '=', $torrent->tmdb)->first(); @endphp
@endif
@endif
@if ($torrent->category->game_meta)
@if ($torrent->igdb || $torrent->igdb != 0)
@php $meta = MarcReichel\IGDBLaravel\Models\Game::with(['cover' => ['url','image_id'], 'genres' => ['name']])->find($torrent->igdb); @endphp
@endif
@endif
@if ($torrent->sticky == 1)
<tr class="success">
@else
<tr>
@endif
<td style="width: 1%;">
@if ($user->show_poster == 1)
<div class="torrent-poster pull-left">
@if ($torrent->category->movie_meta || $torrent->category->tv_meta)
<img loading="lazy" src="{{ isset($meta->poster) ? \tmdb_image('poster_small', $meta->poster) : 'https://via.placeholder.com/90x135' }}"
class="torrent-poster-img-small" alt="@lang('torrent.poster')">
@endif
@if ($torrent->category->game_meta && isset($meta) && $meta->cover->image_id && $meta->name)
<img loading="lazy" src="https://images.igdb.com/igdb/image/upload/t_cover_small/{{ $meta->cover->image_id }}.jpg"
class="torrent-poster-img-small" alt="@lang('torrent.poster')">
@endif
@if ($torrent->category->no_meta || $torrent->category->music_meta)
<img loading="lazy" src="https://via.placeholder.com/90x135"
class="torrent-poster-img-small" alt="@lang('torrent.poster')">
@endif
</div>
@else
<div class="torrent-poster pull-left"></div>
@endif
</td>
<td style="width: 1%;">
@if ($torrent->category->image != null)
<a href="{{ route('categories.show', ['id' => $torrent->category->id]) }}">
<div class="text-center">
<img src="{{ url('files/img/' . $torrent->category->image) }}" data-toggle="tooltip"
data-original-title="{{ $torrent->category->name }} {{ strtolower(trans('torrent.torrent')) }}"
style="padding-top: 10px;" alt="{{ $torrent->category->name }}">
</div>
</a>
@else
<a href="{{ route('categories.show', ['id' => $torrent->category->id]) }}">
<div class="text-center">
<i class="{{ $torrent->category->icon }} torrent-icon" data-toggle="tooltip"
data-original-title="{{ $torrent->category->name }} {{ strtolower(trans('torrent.torrent')) }}"
style="padding-top: 10px;"></i>
</div>
</a>
@endif
</td>
<td style="width: 1%;">
<div class="text-center" style="padding-top: 15px;">
<span class="label label-success" data-toggle="tooltip"
data-original-title="@lang('torrent.type')">
{{ $torrent->type->name }}
</span>
</div>
<div class="text-center" style="padding-top: 8px;">
<span class="label label-success" data-toggle="tooltip"
data-original-title="@lang('torrent.resolution')">
{{ $torrent->resolution->name ?? 'No Res' }}
</span>
</div>
</td>
<td>
<a class="view-torrent" href="{{ route('torrent', ['id' => $torrent->id]) }}">
{{ $torrent->name }}
</a>
@if ($current = $user->history->where('info_hash', $torrent->info_hash)->first())
@if ($current->seeder == 1 && $current->active == 1)
<button class="btn btn-success btn-circle" type="button" data-toggle="tooltip"
data-original-title="@lang('torrent.currently-seeding')!">
<i class="{{ config('other.font-awesome') }} fa-arrow-up"></i>
</button>
@endif
@if ($current->seeder == 0 && $current->active == 1)
<button class="btn btn-warning btn-circle" type="button" data-toggle="tooltip"
data-original-title="@lang('torrent.currently-leeching')!">
<i class="{{ config('other.font-awesome') }} fa-arrow-down"></i>
</button>
@endif
@if ($current->seeder == 0 && $current->active == 0 && $current->completed_at == null)
<button class="btn btn-info btn-circle" type="button" data-toggle="tooltip"
data-original-title="@lang('torrent.not-completed')!">
<i class="{{ config('other.font-awesome') }} fa-spinner"></i>
</button>
@endif
@if ($current->seeder == 1 && $current->active == 0 && $current->completed_at != null)
<button class="btn btn-danger btn-circle" type="button" data-toggle="tooltip"
data-original-title="@lang('torrent.completed-not-seeding')!">
<i class="{{ config('other.font-awesome') }} fa-thumbs-down"></i>
</button>
@endif
@endif
<br>
@if ($torrent->anon == 1)
<span class="badge-extra text-bold">
<i class="{{ config('other.font-awesome') }} fa-upload" data-toggle="tooltip"
data-original-title="@lang('torrent.uploader')"></i> @lang('common.anonymous')
@if ($user->id == $torrent->user->id || $user->group->is_modo)
<a href="{{ route('users.show', ['username' => $torrent->user->username]) }}">
({{ $torrent->user->username }})
</a>
@endif
</span>
@else
<span class="badge-extra text-bold">
<i class="{{ config('other.font-awesome') }} fa-upload" data-toggle="tooltip"
data-original-title="@lang('torrent.uploader')"></i>
<a href="{{ route('users.show', ['username' => $torrent->user->username]) }}">
{{ $torrent->user->username }}
</a>
</span>
@endif
@if ($torrent->category->movie_meta || $torrent->category->tv_meta)
<span class="badge-extra text-bold">
<span class="text-gold movie-rating-stars">
<i class="{{ config('other.font-awesome') }} fa-thumbs-up" data-toggle="tooltip"
data-original-title="@lang('torrent.rating')"></i>
</span>
{{ $meta->vote_average ?? 0 }}/10 ({{ $meta->vote_count ?? 0 }} @lang('torrent.votes'))
</span>
@endif
@if ($torrent->category->game_meta && isset($meta))
<span class="badge-extra text-bold">@lang('torrent.rating'):
<span class="text-gold movie-rating-stars">
<i class="{{ config('other.font-awesome') }} fa-star"></i>
</span>
{{ $meta->rating ? \round($meta->rating) : '0' }}/100 ({{ $meta->rating_count }} @lang('torrent.votes'))
</span>
@endif
<span class="badge-extra text-bold text-pink">
<i class="{{ config('other.font-awesome') }} fa-heart" data-toggle="tooltip"
data-original-title="@lang('torrent.thanks-given')"></i>
{{ $torrent->thanks_count }}
</span>
<a href="{{ route('torrent', ['id' => $torrent->id, 'hash' => '#comments']) }}">
<span class="badge-extra text-bold text-green">
<i class="{{ config('other.font-awesome') }} fa-comment" data-toggle="tooltip"
data-original-title="@lang('common.comments')"></i>
{{ $torrent->comments_count }}
</span>
</a>
@if ($torrent->internal == 1)
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-magic' data-toggle='tooltip' title=''
data-original-title='@lang('torrent.internal-release')' style="color: #baaf92;"></i>
</span>
@endif
@if ($torrent->stream == 1)
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-play text-red' data-toggle='tooltip'
title='' data-original-title='@lang('torrent.stream-optimized')'></i>
</span>
@endif
@if ($torrent->featured == 0)
@if ($torrent->doubleup == 1)
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-gem text-green' data-toggle='tooltip'
title='' data-original-title='@lang('torrent.double-upload')'></i>
</span>
@endif
@if ($torrent->free == 1)
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-star text-gold' data-toggle='tooltip'
title='' data-original-title='@lang('torrent.freeleech')'></i>
</span>
@endif
@endif
@if ($personal_freeleech)
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-id-badge text-orange' data-toggle='tooltip'
title='' data-original-title='@lang('torrent.personal-freeleech')'></i>
</span>
@endif
@if ($user->freeleechTokens->where('torrent_id', $torrent->id)->first())
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-star text-bold' data-toggle='tooltip'
title='' data-original-title='@lang('torrent.freeleech-token')'></i>
</span>
@endif
@if ($torrent->featured == 1)
<span class='badge-extra text-bold' style='background-image:url(/img/sparkels.gif);'>
<i class='{{ config('other.font-awesome') }} fa-certificate text-pink' data-toggle='tooltip'
title='' data-original-title='@lang('torrent.featured')'></i>
</span>
@endif
@if ($user->group->is_freeleech == 1)
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-trophy text-purple' data-toggle='tooltip'
title='' data-original-title='@lang('torrent.special-freeleech')'></i>
</span>
@endif
@if (config('other.freeleech') == 1)
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-globe text-blue' data-toggle='tooltip'
title='' data-original-title='@lang('torrent.global-freeleech')'></i>
</span>
@endif
@if (config('other.doubleup') == 1)
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-globe text-green' data-toggle='tooltip'
title='' data-original-title='@lang('torrent.global-double-upload')'></i>
</span>
@endif
@if ($user->group->is_double_upload == 1)
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-trophy text-purple'
data-toggle='tooltip' title='' data-original-title='@lang('torrent.special-double_upload')'></i>
</span>
@endif
@if ($torrent->leechers >= 5)
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-fire text-orange' data-toggle='tooltip'
title='' data-original-title='@lang('common.hot')'></i>
</span>
@endif
@if ($torrent->sticky == 1)
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-thumbtack text-black' data-toggle='tooltip'
title='' data-original-title='@lang('torrent.sticky')'></i>
</span>
@endif
@if ($user->updated_at->getTimestamp() < $torrent->created_at->getTimestamp())
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-magic text-black' data-toggle='tooltip'
title='' data-original-title='@lang('common.new')'></i>
</span>
@endif
@if ($torrent->highspeed == 1)
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-tachometer text-red' data-toggle='tooltip'
title='' data-original-title='@lang('common.high-speeds')'></i>
</span>
@endif
@if ($torrent->sd == 1)
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-ticket text-orange' data-toggle='tooltip'
title='' data-original-title='@lang('torrent.sd-content')'></i>
</span>
@endif
@if ($torrent->bumped_at != $torrent->created_at && $torrent->bumped_at < Carbon\Carbon::now()->addDay(2))
<span class='badge-extra text-bold'>
<i class='{{ config('other.font-awesome') }} fa-level-up-alt text-gold' data-toggle='tooltip'
title='' data-original-title='@lang('torrent.recent-bumped')'></i>
</span>
@endif
<br>
@if ($torrent->category->game_meta)
@if (isset($meta) && $meta->genres)
@foreach ($meta->genres as $genre)
<span class="badge-extra text-bold">
<i class='{{ config('other.font-awesome') }} fa-tag' data-toggle='tooltip' title=''
data-original-title='@lang('torrent.genre')'></i> {{ $genre->name }}
</span>
@endforeach
@endif
@endif
@if ($torrent->category->movie_meta || $torrent->category->tv_meta)
@if (isset($meta) && $meta->genres)
@foreach($meta->genres as $genre)
<span class="badge-extra text-bold">
<i class='{{ config('other.font-awesome') }} fa-tag' data-toggle='tooltip' title=''
data-original-title='@lang('torrent.genre')'></i> {{ $genre->name }}
</span>
@endforeach
@endif
@endif
</td>
<td>
@if (config('torrent.download_check_page') == 1)
<a href="{{ route('download_check', ['id' => $torrent->id]) }}">
<button class="btn btn-primary btn-circle" type="button" data-toggle="tooltip"
data-original-title="@lang('common.download')">
<i class="{{ config('other.font-awesome') }} fa-download"></i>
</button>
</a>
@else
<a href="{{ route('download', ['id' => $torrent->id]) }}">
<button class="btn btn-primary btn-circle" type="button" data-toggle="tooltip"
data-original-title="@lang('common.download')">
<i class="{{ config('other.font-awesome') }} fa-download"></i>
</button>
</a>
@endif
@if (config('torrent.magnet') == 1)
<a href="magnet:?dn={{ $torrent->name }}&xt=urn:btih:{{ $torrent->info_hash }}&as={{ route('torrent.download.rsskey', ['id' => $torrent->id, 'rsskey' => $user->rsskey ]) }}&tr={{ route('announce', ['passkey' => $user->passkey]) }}&xl={{ $torrent->size }}">
<button class="btn btn-primary btn-circle" type="button" data-toggle="tooltip"
data-original-title="@lang('common.magnet')">
<i class="{{ config('other.font-awesome') }} fa-magnet"></i>
</button>
</a>
@endif
</td>
<td>
<span data-toggle="tooltip" data-original-title="Bookmark" id="torrentBookmark{{ $torrent->id }}"
torrent="{{ $torrent->id }}"
state="{{ $bookmarks->where('torrent_id', $torrent->id)->first() ? 1 : 0 }}"
class="torrentBookmark"></span>
</td>
<td>
<time>{{ $torrent->created_at->diffForHumans() }}</time>
</td>
<td>
<span class='badge-extra text-blue text-bold'>{{ $torrent->getSize() }}</span>
</td>
<td>
<a href="{{ route('peers', ['id' => $torrent->id]) }}">
<span class='badge-extra text-green text-bold'>
{{ $torrent->seeders }}
</span>
</a>
</td>
<td>
<a href="{{ route('peers', ['id' => $torrent->id]) }}">
<span class='badge-extra text-red text-bold'>
{{ $torrent->leechers }}
</span>
</a>
</td>
<td>
<a href="{{ route('history', ['id' => $torrent->id]) }}">
<span class='badge-extra text-orange text-bold'>
{{ $torrent->times_completed }} @lang('common.times')
</span>
</a>
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="text-center">
@if($links)
{{ $links->links() }}
@else
@if($torrents->links())
{{ $torrents->links() }}
@endif
@endif
</div>
</div>
+2 -352
View File
@@ -17,357 +17,7 @@
@endsection
@section('content')
<div class="container-fluid">
<div class="block">
@include('torrent.buttons')
<div class="header gradient blue">
<div class="inner_content">
<h1>
@lang('torrent.torrents')
</h1>
</div>
</div>
<div id="facetedDefault" style="{{ $user->torrent_filters ? 'display: none;' : '' }}">
<div class="box">
<div class="container mt-5">
<div class="mx-0 mt-5 form-group fatten-me">
<div>
<label for="query"></label><input type="text" class="form-control facetedSearch"
trigger="keyup" id="query" placeholder="@lang('torrent.search')">
</div>
</div>
</div>
<hr style="padding: 0; margin: 0;">
</div>
</div>
<div id="facetedFilters" style="{{ $user->torrent_filters ? '' : 'display: none;' }}">
<div class="box">
<div class="container well search mt-5 fatten-me">
<form role="form" method="GET" action="TorrentController@torrents"
class="form-horizontal form-condensed form-torrent-search form-bordered">
@csrf
<div class="mx-0 mt-5 form-group fatten-me">
<label for="name"
class="mt-5 col-sm-1 label label-default fatten-me">@lang('torrent.name')</label>
<div class="col-sm-9 fatten-me">
<label for="search"></label><input type="text" class="form-control facetedSearch"
trigger="keyup" id="search" placeholder="@lang('torrent.name')">
</div>
</div>
<div class="mx-0 mt-5 form-group fatten-me">
<label for="name"
class="mt-5 col-sm-1 label label-default fatten-me">@lang('torrent.description')</label>
<div class="col-sm-9 fatten-me">
<label for="description"></label><input type="text" class="form-control facetedSearch"
trigger="keyup" id="description" placeholder="@lang('torrent.description')">
</div>
</div>
<div class="mx-0 mt-5 form-group fatten-me">
<label for="keywords"
class="mt-5 col-sm-1 label label-default fatten-me">@lang('torrent.keywords')</label>
<div class="col-sm-9 fatten-me">
<label for="keywaords"></label>
<input type="text" class="form-control facetedSearch"
trigger="keyup" id="keywords" placeholder="@lang('torrent.keywords')">
</div>
</div>
<div class="mx-0 mt-5 form-group fatten-me">
<label for="uploader"
class="mt-5 col-sm-1 label label-default fatten-me">@lang('torrent.uploader')</label>
<div class="col-sm-9 fatten-me">
<input type="text" class="form-control facetedSearch" trigger="keyup" id="uploader"
placeholder="@lang('torrent.uploader')">
</div>
</div>
<div class="mx-0 mt-5 form-group fatten-me">
<label for="imdb" class="mt-5 col-sm-1 label label-default fatten-me">ID</label>
<div class="col-sm-2">
<input type="text" class="form-control facetedSearch" trigger="keyup" id="imdb"
placeholder="IMDB #">
</div>
<div class="col-sm-2">
<label for="tvdb"></label><input type="text" class="form-control facetedSearch"
trigger="keyup" id="tvdb" placeholder="TVDB #">
</div>
<div class="col-sm-2">
<label for="tmdb"></label><input type="text" class="form-control facetedSearch"
trigger="keyup" id="tmdb" placeholder="TMDB #">
</div>
<div class="col-sm-2">
<label for="mal"></label><input type="text" class="form-control facetedSearch"
trigger="keyup" id="mal" placeholder="MAL #">
</div>
<div class="col-sm-2">
<label for="igdb"></label><input type="text" class="form-control facetedSearch"
trigger="keyup" id="igdb" placeholder="IGDB #">
</div>
</div>
<div class="mx-0 mt-5 form-group fatten-me">
<label for="release_year"
class="mt-5 col-sm-1 label label-default fatten-me">@lang('torrent.year-range')
</label>
<div class="col-sm-2">
<label for="start_year"></label><input type="text" class="form-control facetedSearch"
trigger="keyup" id="start_year" placeholder="@lang('torrent.start-year')">
</div>
<div class="col-sm-2">
<label for="end_year"></label><input type="text" class="form-control facetedSearch"
trigger="keyup" id="end_year" placeholder="@lang('torrent.end-year')">
</div>
</div>
<div class="mx-0 mt-5 form-group fatten-me">
<label for="category"
class="mt-5 col-sm-1 label label-default fatten-me">@lang('torrent.category')</label>
<div class="col-sm-10">
@foreach ($repository->categories() as $id => $category)
<span class="badge-user">
<label class="inline">
<input type="checkbox" value="{{ $id }}"
class="category facetedSearch" trigger="click"> {{ $category }}
</label>
</span>
@endforeach
</div>
</div>
<div class="mx-0 mt-5 form-group fatten-me">
<label for="type"
class="mt-5 col-sm-1 label label-default fatten-me">@lang('torrent.type')</label>
<div class="col-sm-10">
@foreach ($repository->types() as $id => $type)
<span class="badge-user">
<label class="inline">
<input type="checkbox" value="{{ $id }}"
class="type facetedSearch" trigger="click"> {{ $type }}
</label>
</span>
@endforeach
</div>
</div>
<div class="mx-0 mt-5 form-group fatten-me">
<label for="resolution_id" class="mt-5 col-sm-1 label label-default fatten-me">@lang('torrent.resolution')</label>
<div class="col-sm-10">
@foreach ($repository->resolutions() as $id => $resolution)
<span class="badge-user">
<label class="inline">
<input type="checkbox" value="{{ $id }}"
class="resolution facetedSearch" trigger="click"> {{ $resolution }}
</label>
</span>
@endforeach
</div>
</div>
<div class="mx-0 mt-5 form-group fatten-me">
<label for="genre"
class="mt-5 col-sm-1 label label-default fatten-me">@lang('torrent.genre')</label>
<div class="col-sm-10">
@foreach ($repository->genres() as $id => $genre)
<span class="badge-user">
<label class="inline">
<input type="checkbox" value="{{ $id }}"
class="genre facetedSearch" trigger="click"> {{ $genre }}
</label>
</span>
@endforeach
</div>
</div>
<div class="mx-0 mt-5 form-group fatten-me">
<label for="type"
class="mt-5 col-sm-1 label label-default fatten-me">@lang('torrent.discounts')</label>
<div class="col-sm-10">
<span class="badge-user">
<label class="inline">
<input type="checkbox" id="freeleech" value="1" class="facetedSearch"
trigger="click"> <span
class="{{ config('other.font-awesome') }} fa-star text-gold"></span>
@lang('torrent.freeleech')
</label>
</span>
<span class="badge-user">
<label class="inline">
<input type="checkbox" id="doubleupload" value="1" class="facetedSearch"
trigger="click"> <span
class="{{ config('other.font-awesome') }} fa-gem text-green"></span>
@lang('torrent.double-upload')
</label>
</span>
<span class="badge-user">
<label class="inline">
<input type="checkbox" id="featured" value="1" class="facetedSearch"
trigger="click"> <span
class="{{ config('other.font-awesome') }} fa-certificate text-pink"></span>
@lang('torrent.featured')
</label>
</span>
</div>
</div>
<div class="mx-0 mt-5 form-group fatten-me">
<label for="type"
class="mt-5 col-sm-1 label label-default fatten-me">@lang('torrent.special')</label>
<div class="col-sm-10">
<span class="badge-user">
<label class="inline">
<input type="checkbox" id="stream" value="1" class="facetedSearch"
trigger="click"> <span
class="{{ config('other.font-awesome') }} fa-play text-red"></span>
@lang('torrent.stream-optimized')
</label>
</span>
<span class="badge-user">
<label class="inline">
<input type="checkbox" id="highspeed" value="1" class="facetedSearch"
trigger="click"> <span
class="{{ config('other.font-awesome') }} fa-tachometer text-red"></span>
@lang('common.high-speeds')
</label>
</span>
<span class="badge-user">
<label class="inline">
<input type="checkbox" id="sd" value="1" class="facetedSearch" trigger="click">
<span class="{{ config('other.font-awesome') }} fa-ticket text-orange"></span>
@lang('torrent.sd-content')
</label>
</span>
<span class="badge-user">
<label class="inline">
<input type="checkbox" id="internal" value="1" class="facetedSearch"
trigger="click"> <span class="{{ config('other.font-awesome') }} fa-magic"
style="color: #baaf92;"></span> @lang('torrent.internal')
</label>
</span>
</div>
</div>
<div class="mx-0 mt-5 form-group fatten-me">
<label for="type"
class="mt-5 col-sm-1 label label-default fatten-me">@lang('torrent.health')</label>
<div class="col-sm-10">
<span class="badge-user">
<label class="inline">
<input type="checkbox" id="alive" value="1" class="facetedSearch"
trigger="click"> <span
class="{{ config('other.font-awesome') }} fa-smile text-green"></span>
@lang('torrent.alive')
</label>
</span>
<span class="badge-user">
<label class="inline">
<input type="checkbox" id="dying" value="1" class="facetedSearch"
trigger="click"> <span
class="{{ config('other.font-awesome') }} fa-meh text-orange"></span>
@lang('torrent.dying-torrent')
</label>
</span>
<span class="badge-user">
<label class="inline">
<input type="checkbox" id="dead" value="0" class="facetedSearch"
trigger="click"> <span
class="{{ config('other.font-awesome') }} fa-frown text-red"></span>
@lang('torrent.dead-torrent')
</label>
</span>
</div>
</div>
<div class="mx-0 mt-5 form-group fatten-me">
<label for="type"
class="mt-5 col-sm-1 label label-default fatten-me">@lang('torrent.activity')</label>
<div class="col-sm-10">
<span class="badge-user">
<label class="inline">
<input type="checkbox" id="seeding" value="1" class="facetedSearch"
trigger="click"> <span
class="{{ config('other.font-awesome') }} fa-hdd text-purple"></span>
@lang('torrent.seeding')
</label>
</span>
<span class="badge-user">
<label class="inline">
<input type="checkbox" id="leeching" value="1" class="facetedSearch"
trigger="click"> <span
class="{{ config('other.font-awesome') }} fa-hdd text-purple"></span>
@lang('torrent.leeching')
</label>
</span>
<span class="badge-user">
<label class="inline">
<input type="checkbox" id="downloaded" value="1" class="facetedSearch"
trigger="click"> <span
class="{{ config('other.font-awesome') }} fa-hdd text-purple"></span>
@lang('torrent.have-completed')
</label>
</span>
<span class="badge-user">
<label class="inline">
<input type="checkbox" id="idling" value="1" class="facetedSearch"
trigger="click"> <span
class="{{ config('other.font-awesome') }} fa-hdd text-purple"></span>
@lang('torrent.have-not-completed')
</label>
</span>
<span class="badge-user">
<label class="inline">
<input type="checkbox" id="notdownloaded" value="1" class="facetedSearch"
trigger="click"> <span
class="{{ config('other.font-awesome') }} fa-hdd text-red"></span>
@lang('torrent.have-not-downloaded')
</label>
</span>
</div>
</div>
<div class="mx-0 mt-5 form-group fatten-me">
<label for="qty"
class="mt-5 col-sm-1 label label-default fatten-me">@lang('common.quantity')</label>
<div class="col-sm-2">
<select id="qty" name="qty" trigger="change" class="form-control facetedSearch">
<option value="25">25</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
</div>
</div>
</form>
</div>
</div>
</div>
<span id="facetedHeader"></span>
<div id="facetedSearch" type="list" font-awesome="{{ config('other.font-awesome') }}">
@include('torrent.results')
</div>
<div class="container-fluid well">
<div class="text-center">
<strong>@lang('common.legend'):</strong>
<button class='btn btn-success btn-circle' type='button' data-toggle='tooltip' title=''
data-original-title='@lang('torrent.currently-seeding')!'>
<i class='{{ config('other.font-awesome') }} fa-arrow-up'></i>
</button>
<button class='btn btn-warning btn-circle' type='button' data-toggle='tooltip' title=''
data-original-title='@lang('torrent.currently-leeching')!'>
<i class='{{ config('other.font-awesome') }} fa-arrow-down'></i>
</button>
<button class='btn btn-info btn-circle' type='button' data-toggle='tooltip' title=''
data-original-title='@lang('torrent.not-completed')!'>
<i class='{{ config('other.font-awesome') }} fa-spinner'></i>
</button>
<button class='btn btn-danger btn-circle' type='button' data-toggle='tooltip' title=''
data-original-title='@lang('torrent.completed-not-seeding')!'>
<i class='{{ config('other.font-awesome') }} fa-thumbs-down'></i>
</button>
</div>
</div>
</div>
<div>
@livewire('torrent-list-search')
</div>
@endsection