mirror of
https://github.com/sp-tarkov/forge.git
synced 2025-02-12 12:10:41 -05:00
More Updates
- Updates dependancies - Added time to mod component - Implement naturalSort function into homepage queries Short todo: - Migrate top navigation from old-build - Mod detail page
This commit is contained in:
parent
787f796ad7
commit
4cb739f50c
@ -57,6 +57,11 @@ REDIS_HOST=127.0.0.1
|
||||
REDIS_PASSWORD=null
|
||||
REDIS_PORT=6379
|
||||
|
||||
SCOUT_DRIVER=meilisearch
|
||||
MEILISEARCH_HOST=http://127.0.0.1:7700
|
||||
MEILISEARCH_KEY=FORGE
|
||||
MEILISEARCH_NO_ANALYTICS=true
|
||||
|
||||
MAIL_MAILER=log
|
||||
MAIL_HOST=127.0.0.1
|
||||
MAIL_PORT=2525
|
||||
|
@ -25,11 +25,21 @@ class ModController extends Controller
|
||||
return new ModResource(Mod::create($request->validated()));
|
||||
}
|
||||
|
||||
public function show(Mod $mod)
|
||||
public function show(int $modId, string $slug)
|
||||
{
|
||||
$mod = Mod::select(['id', 'user_id', 'name', 'slug', 'teaser', 'thumbnail', 'featured'])
|
||||
->withLatestSptVersion()
|
||||
->withTotalDownloads()
|
||||
->with('user:id,name')
|
||||
->find($modId);
|
||||
|
||||
if (!$mod || $mod->slug !== $slug) {
|
||||
abort(404);
|
||||
}
|
||||
|
||||
$this->authorize('view', $mod);
|
||||
|
||||
return new ModResource($mod);
|
||||
return view('mod.show', compact('mod'));
|
||||
}
|
||||
|
||||
public function update(ModRequest $request, Mod $mod)
|
||||
|
@ -5,24 +5,21 @@ namespace App\Http\Resources;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
/** @mixin \App\Models\Mod */
|
||||
class ModResource extends JsonResource
|
||||
{
|
||||
public function toArray(Request $request): array
|
||||
{
|
||||
return [
|
||||
'created_at' => $this->created_at,
|
||||
'updated_at' => $this->updated_at,
|
||||
'id' => $this->id,
|
||||
'name' => $this->name,
|
||||
'slug' => $this->slug,
|
||||
'description' => $this->description,
|
||||
'source_code_link' => $this->source_code_link,
|
||||
|
||||
'user_id' => $this->user_id,
|
||||
'license_id' => $this->license_id,
|
||||
|
||||
'license' => new LicenseResource($this->whenLoaded('license')),
|
||||
'created_at' => $this->created_at,
|
||||
'updated_at' => $this->updated_at,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class Mod extends Model
|
||||
@ -66,10 +67,10 @@ class Mod extends Model
|
||||
->orderByDesc(
|
||||
SptVersion::select('version')
|
||||
->whereColumn('mod_versions.spt_version_id', 'spt_versions.id')
|
||||
->orderByDesc('version')
|
||||
->orderByDesc(DB::raw('naturalSort(version)'))
|
||||
->take(1),
|
||||
)
|
||||
->orderByDesc('version')
|
||||
->orderByDesc(DB::raw('naturalSort(version)'))
|
||||
->take(1),
|
||||
])
|
||||
->with(['latestSptVersion', 'latestSptVersion.sptVersion']);
|
||||
|
67
app/Policies/ModPolicy.php
Normal file
67
app/Policies/ModPolicy.php
Normal file
@ -0,0 +1,67 @@
|
||||
<?php
|
||||
|
||||
namespace App\Policies;
|
||||
|
||||
use App\Models\Mod;
|
||||
use App\Models\User;
|
||||
use Illuminate\Auth\Access\Response;
|
||||
|
||||
class ModPolicy
|
||||
{
|
||||
/**
|
||||
* Determine whether the user can view any models.
|
||||
*/
|
||||
public function viewAny(User $user): bool
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine whether the user can view the model.
|
||||
*/
|
||||
public function view(?User $user, Mod $mod): bool
|
||||
{
|
||||
// Everyone can view mods.
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine whether the user can create models.
|
||||
*/
|
||||
public function create(User $user): bool
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine whether the user can update the model.
|
||||
*/
|
||||
public function update(User $user, Mod $mod): bool
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine whether the user can delete the model.
|
||||
*/
|
||||
public function delete(User $user, Mod $mod): bool
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine whether the user can restore the model.
|
||||
*/
|
||||
public function restore(User $user, Mod $mod): bool
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine whether the user can permanently delete the model.
|
||||
*/
|
||||
public function forceDelete(User $user, Mod $mod): bool
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
@ -36,7 +36,7 @@ class ModListSection extends Component
|
||||
|
||||
private function fetchLatestMods(): Collection
|
||||
{
|
||||
return Mod::select(['id', 'user_id', 'name', 'slug', 'teaser', 'thumbnail', 'featured'])
|
||||
return Mod::select(['id', 'user_id', 'name', 'slug', 'teaser', 'thumbnail', 'featured', 'created_at'])
|
||||
->withLatestSptVersion()
|
||||
->withTotalDownloads()
|
||||
->with('user:id,name')
|
||||
|
20
app/View/Components/ModListStats.php
Normal file
20
app/View/Components/ModListStats.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace App\View\Components;
|
||||
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Illuminate\View\Component;
|
||||
|
||||
class ModListStats extends Component
|
||||
{
|
||||
public function __construct(
|
||||
public $mod,
|
||||
public $modVersion
|
||||
) {
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('components.mod-list-stats');
|
||||
}
|
||||
}
|
156
composer.lock
generated
156
composer.lock
generated
@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "97244cec2c528738d97cf3b96c127b04",
|
||||
"content-hash": "ca3ac0463e2bccac87eddb5c41b29a5b",
|
||||
"packages": [
|
||||
{
|
||||
"name": "bacon/bacon-qr-code",
|
||||
@ -1565,16 +1565,16 @@
|
||||
},
|
||||
{
|
||||
"name": "laravel/framework",
|
||||
"version": "v11.8.0",
|
||||
"version": "v11.9.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/laravel/framework.git",
|
||||
"reference": "ceb892a25817c888ef3df4d1a2af9cac53978300"
|
||||
"reference": "60167ce91c59ed5eea2ad4f2a7b6d686fb103ba7"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/laravel/framework/zipball/ceb892a25817c888ef3df4d1a2af9cac53978300",
|
||||
"reference": "ceb892a25817c888ef3df4d1a2af9cac53978300",
|
||||
"url": "https://api.github.com/repos/laravel/framework/zipball/60167ce91c59ed5eea2ad4f2a7b6d686fb103ba7",
|
||||
"reference": "60167ce91c59ed5eea2ad4f2a7b6d686fb103ba7",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -1766,7 +1766,7 @@
|
||||
"issues": "https://github.com/laravel/framework/issues",
|
||||
"source": "https://github.com/laravel/framework"
|
||||
},
|
||||
"time": "2024-05-21T17:57:45+00:00"
|
||||
"time": "2024-05-28T18:16:41+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laravel/jetstream",
|
||||
@ -1837,17 +1837,17 @@
|
||||
},
|
||||
{
|
||||
"name": "laravel/nova",
|
||||
"version": "4.33.3",
|
||||
"version": "4.34.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "git@github.com:laravel/nova.git",
|
||||
"reference": "0f308ea895bb202cced2493722b40ec172e0c108"
|
||||
"reference": "4e85f31d46b70291f24ccf2162096db87e82e8b2"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://nova.laravel.com/dist/laravel/nova/laravel-nova-0f308ea895bb202cced2493722b40ec172e0c108-zip-e38c97.zip",
|
||||
"reference": "0f308ea895bb202cced2493722b40ec172e0c108",
|
||||
"shasum": "2ec5564e35e52cac368274b063880d9068a1e345"
|
||||
"url": "https://nova.laravel.com/dist/laravel/nova/laravel-nova-4e85f31d46b70291f24ccf2162096db87e82e8b2-zip-023aa4.zip",
|
||||
"reference": "4e85f31d46b70291f24ccf2162096db87e82e8b2",
|
||||
"shasum": "ad0981b85da448ecf8ffe38ef0d49c342734708e"
|
||||
},
|
||||
"require": {
|
||||
"brick/money": "^0.5|^0.6|^0.7|^0.8|^0.9",
|
||||
@ -1957,22 +1957,22 @@
|
||||
"laravel"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/laravel/nova/tree/v4.33.3"
|
||||
"source": "https://github.com/laravel/nova/tree/v4.34.2"
|
||||
},
|
||||
"time": "2024-04-18T00:44:42+00:00"
|
||||
"time": "2024-05-23T15:59:51+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laravel/prompts",
|
||||
"version": "v0.1.22",
|
||||
"version": "v0.1.23",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/laravel/prompts.git",
|
||||
"reference": "37f94de71758dbfbccc9d299b0e5eb76e02a40f5"
|
||||
"reference": "9bc4df7c699b0452c6b815e64a2d84b6d7f99400"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/laravel/prompts/zipball/37f94de71758dbfbccc9d299b0e5eb76e02a40f5",
|
||||
"reference": "37f94de71758dbfbccc9d299b0e5eb76e02a40f5",
|
||||
"url": "https://api.github.com/repos/laravel/prompts/zipball/9bc4df7c699b0452c6b815e64a2d84b6d7f99400",
|
||||
"reference": "9bc4df7c699b0452c6b815e64a2d84b6d7f99400",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -2015,22 +2015,22 @@
|
||||
"description": "Add beautiful and user-friendly forms to your command-line applications.",
|
||||
"support": {
|
||||
"issues": "https://github.com/laravel/prompts/issues",
|
||||
"source": "https://github.com/laravel/prompts/tree/v0.1.22"
|
||||
"source": "https://github.com/laravel/prompts/tree/v0.1.23"
|
||||
},
|
||||
"time": "2024-05-10T19:22:18+00:00"
|
||||
"time": "2024-05-27T13:53:20+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laravel/pulse",
|
||||
"version": "v1.2.0",
|
||||
"version": "v1.2.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/laravel/pulse.git",
|
||||
"reference": "37fcc8e77dc437c01ee1a73ba58fd70615c84855"
|
||||
"reference": "6add38347003ee602a4c5c2a7cb920c092ac3a25"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/laravel/pulse/zipball/37fcc8e77dc437c01ee1a73ba58fd70615c84855",
|
||||
"reference": "37fcc8e77dc437c01ee1a73ba58fd70615c84855",
|
||||
"url": "https://api.github.com/repos/laravel/pulse/zipball/6add38347003ee602a4c5c2a7cb920c092ac3a25",
|
||||
"reference": "6add38347003ee602a4c5c2a7cb920c092ac3a25",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -2104,7 +2104,7 @@
|
||||
"issues": "https://github.com/laravel/pulse/issues",
|
||||
"source": "https://github.com/laravel/pulse"
|
||||
},
|
||||
"time": "2024-05-17T16:22:20+00:00"
|
||||
"time": "2024-05-26T23:09:52+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laravel/sanctum",
|
||||
@ -2549,16 +2549,16 @@
|
||||
},
|
||||
{
|
||||
"name": "league/flysystem",
|
||||
"version": "3.27.0",
|
||||
"version": "3.28.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/thephpleague/flysystem.git",
|
||||
"reference": "4729745b1ab737908c7d055148c9a6b3e959832f"
|
||||
"reference": "e611adab2b1ae2e3072fa72d62c62f52c2bf1f0c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/4729745b1ab737908c7d055148c9a6b3e959832f",
|
||||
"reference": "4729745b1ab737908c7d055148c9a6b3e959832f",
|
||||
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/e611adab2b1ae2e3072fa72d62c62f52c2bf1f0c",
|
||||
"reference": "e611adab2b1ae2e3072fa72d62c62f52c2bf1f0c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -2582,10 +2582,13 @@
|
||||
"composer/semver": "^3.0",
|
||||
"ext-fileinfo": "*",
|
||||
"ext-ftp": "*",
|
||||
"ext-mongodb": "^1.3",
|
||||
"ext-zip": "*",
|
||||
"friendsofphp/php-cs-fixer": "^3.5",
|
||||
"google/cloud-storage": "^1.23",
|
||||
"guzzlehttp/psr7": "^2.6",
|
||||
"microsoft/azure-storage-blob": "^1.1",
|
||||
"mongodb/mongodb": "^1.2",
|
||||
"phpseclib/phpseclib": "^3.0.36",
|
||||
"phpstan/phpstan": "^1.10",
|
||||
"phpunit/phpunit": "^9.5.11|^10.0",
|
||||
@ -2623,32 +2626,22 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/thephpleague/flysystem/issues",
|
||||
"source": "https://github.com/thephpleague/flysystem/tree/3.27.0"
|
||||
"source": "https://github.com/thephpleague/flysystem/tree/3.28.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://ecologi.com/frankdejonge",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/frankdejonge",
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2024-04-07T19:17:50+00:00"
|
||||
"time": "2024-05-22T10:09:12+00:00"
|
||||
},
|
||||
{
|
||||
"name": "league/flysystem-local",
|
||||
"version": "3.25.1",
|
||||
"version": "3.28.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/thephpleague/flysystem-local.git",
|
||||
"reference": "61a6a90d6e999e4ddd9ce5adb356de0939060b92"
|
||||
"reference": "13f22ea8be526ea58c2ddff9e158ef7c296e4f40"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/61a6a90d6e999e4ddd9ce5adb356de0939060b92",
|
||||
"reference": "61a6a90d6e999e4ddd9ce5adb356de0939060b92",
|
||||
"url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/13f22ea8be526ea58c2ddff9e158ef7c296e4f40",
|
||||
"reference": "13f22ea8be526ea58c2ddff9e158ef7c296e4f40",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -2682,19 +2675,9 @@
|
||||
"local"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/thephpleague/flysystem-local/tree/3.25.1"
|
||||
"source": "https://github.com/thephpleague/flysystem-local/tree/3.28.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://ecologi.com/frankdejonge",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/frankdejonge",
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2024-03-15T19:58:44+00:00"
|
||||
"time": "2024-05-06T20:05:52+00:00"
|
||||
},
|
||||
{
|
||||
"name": "league/mime-type-detection",
|
||||
@ -2754,16 +2737,16 @@
|
||||
},
|
||||
{
|
||||
"name": "livewire/livewire",
|
||||
"version": "v3.4.12",
|
||||
"version": "v3.5.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/livewire/livewire.git",
|
||||
"reference": "54dd265c17f7b5200627eb9690590e7cbbad1027"
|
||||
"reference": "72e900825c560f0e4e620185b26c5441a8914435"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/livewire/livewire/zipball/54dd265c17f7b5200627eb9690590e7cbbad1027",
|
||||
"reference": "54dd265c17f7b5200627eb9690590e7cbbad1027",
|
||||
"url": "https://api.github.com/repos/livewire/livewire/zipball/72e900825c560f0e4e620185b26c5441a8914435",
|
||||
"reference": "72e900825c560f0e4e620185b26c5441a8914435",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -2818,7 +2801,7 @@
|
||||
"description": "A front-end framework for Laravel.",
|
||||
"support": {
|
||||
"issues": "https://github.com/livewire/livewire/issues",
|
||||
"source": "https://github.com/livewire/livewire/tree/v3.4.12"
|
||||
"source": "https://github.com/livewire/livewire/tree/v3.5.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -2826,7 +2809,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2024-05-02T17:10:37+00:00"
|
||||
"time": "2024-05-21T13:39:04+00:00"
|
||||
},
|
||||
{
|
||||
"name": "mobiledetect/mobiledetectlib",
|
||||
@ -2995,16 +2978,16 @@
|
||||
},
|
||||
{
|
||||
"name": "nesbot/carbon",
|
||||
"version": "3.3.1",
|
||||
"version": "3.4.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/briannesbitt/Carbon.git",
|
||||
"reference": "8ff64b92c1b1ec84fcde9f8bb9ff2ca34cb8a77a"
|
||||
"reference": "8eab8983c83c30e0bacbef8d311e3f3b8172727f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/8ff64b92c1b1ec84fcde9f8bb9ff2ca34cb8a77a",
|
||||
"reference": "8ff64b92c1b1ec84fcde9f8bb9ff2ca34cb8a77a",
|
||||
"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/8eab8983c83c30e0bacbef8d311e3f3b8172727f",
|
||||
"reference": "8eab8983c83c30e0bacbef8d311e3f3b8172727f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -3097,7 +3080,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-05-01T06:54:22+00:00"
|
||||
"time": "2024-05-24T14:26:34+00:00"
|
||||
},
|
||||
{
|
||||
"name": "nette/schema",
|
||||
@ -7440,16 +7423,16 @@
|
||||
},
|
||||
{
|
||||
"name": "larastan/larastan",
|
||||
"version": "v2.9.6",
|
||||
"version": "v2.9.7",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/larastan/larastan.git",
|
||||
"reference": "93d5b95d2e29cdb8203363d44abfdbc0bc7ef57f"
|
||||
"reference": "5c805f636095cc2e0b659e3954775cf8f1dad1bb"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/larastan/larastan/zipball/93d5b95d2e29cdb8203363d44abfdbc0bc7ef57f",
|
||||
"reference": "93d5b95d2e29cdb8203363d44abfdbc0bc7ef57f",
|
||||
"url": "https://api.github.com/repos/larastan/larastan/zipball/5c805f636095cc2e0b659e3954775cf8f1dad1bb",
|
||||
"reference": "5c805f636095cc2e0b659e3954775cf8f1dad1bb",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -7463,7 +7446,7 @@
|
||||
"illuminate/support": "^9.52.16 || ^10.28.0 || ^11.0",
|
||||
"php": "^8.0.2",
|
||||
"phpmyadmin/sql-parser": "^5.9.0",
|
||||
"phpstan/phpstan": "^1.10.66"
|
||||
"phpstan/phpstan": "^1.11.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/coding-standard": "^12.0",
|
||||
@ -7518,7 +7501,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/larastan/larastan/issues",
|
||||
"source": "https://github.com/larastan/larastan/tree/v2.9.6"
|
||||
"source": "https://github.com/larastan/larastan/tree/v2.9.7"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -7538,7 +7521,7 @@
|
||||
"type": "patreon"
|
||||
}
|
||||
],
|
||||
"time": "2024-05-09T11:53:26+00:00"
|
||||
"time": "2024-05-27T18:33:26+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laravel/pint",
|
||||
@ -8121,16 +8104,16 @@
|
||||
},
|
||||
{
|
||||
"name": "phpstan/phpstan",
|
||||
"version": "1.11.1",
|
||||
"version": "1.11.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpstan/phpstan.git",
|
||||
"reference": "e524358f930e41a2b4cca1320e3b04fc26b39e0b"
|
||||
"reference": "0d5d4294a70deb7547db655c47685d680e39cfec"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/e524358f930e41a2b4cca1320e3b04fc26b39e0b",
|
||||
"reference": "e524358f930e41a2b4cca1320e3b04fc26b39e0b",
|
||||
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/0d5d4294a70deb7547db655c47685d680e39cfec",
|
||||
"reference": "0d5d4294a70deb7547db655c47685d680e39cfec",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -8175,7 +8158,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2024-05-15T08:00:59+00:00"
|
||||
"time": "2024-05-24T13:23:04+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-code-coverage",
|
||||
@ -9588,16 +9571,16 @@
|
||||
},
|
||||
{
|
||||
"name": "spatie/flare-client-php",
|
||||
"version": "1.5.1",
|
||||
"version": "1.6.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/spatie/flare-client-php.git",
|
||||
"reference": "e27977d534eefe04c154c6fd8460217024054c05"
|
||||
"reference": "220a7c8745e9fa427d54099f47147c4b97fe6462"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/spatie/flare-client-php/zipball/e27977d534eefe04c154c6fd8460217024054c05",
|
||||
"reference": "e27977d534eefe04c154c6fd8460217024054c05",
|
||||
"url": "https://api.github.com/repos/spatie/flare-client-php/zipball/220a7c8745e9fa427d54099f47147c4b97fe6462",
|
||||
"reference": "220a7c8745e9fa427d54099f47147c4b97fe6462",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -9645,7 +9628,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/spatie/flare-client-php/issues",
|
||||
"source": "https://github.com/spatie/flare-client-php/tree/1.5.1"
|
||||
"source": "https://github.com/spatie/flare-client-php/tree/1.6.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -9653,7 +9636,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2024-05-03T15:43:14+00:00"
|
||||
"time": "2024-05-22T09:45:39+00:00"
|
||||
},
|
||||
{
|
||||
"name": "spatie/ignition",
|
||||
@ -9887,7 +9870,8 @@
|
||||
"prefer-stable": true,
|
||||
"prefer-lowest": false,
|
||||
"platform": {
|
||||
"php": "^8.3"
|
||||
"php": "^8.3",
|
||||
"ext-curl": "*"
|
||||
},
|
||||
"platform-dev": [],
|
||||
"plugin-api-version": "2.6.0"
|
||||
|
@ -14,8 +14,8 @@ return new class extends Migration
|
||||
if (config('database.default') === 'mysql') {
|
||||
// https://www.drupal.org/project/natsort
|
||||
DB::unprepared("
|
||||
DROP FUNCTION IF EXISTS naturalsort;
|
||||
CREATE FUNCTION naturalsort (s VARCHAR (255)) RETURNS VARCHAR (255) NO SQL DETERMINISTIC BEGIN
|
||||
DROP FUNCTION IF EXISTS naturalSort;
|
||||
CREATE FUNCTION naturalSort (s VARCHAR (255)) RETURNS VARCHAR (255) NO SQL DETERMINISTIC BEGIN
|
||||
DECLARE orig VARCHAR (255) DEFAULT s;
|
||||
DECLARE ret VARCHAR (255) DEFAULT '';
|
||||
IF s IS NULL THEN
|
||||
@ -58,7 +58,7 @@ return new class extends Migration
|
||||
if (config('database.default') === 'pgsql') {
|
||||
// http://www.rhodiumtoad.org.uk/junk/naturalsort.sql
|
||||
DB::unprepared('
|
||||
create or replace function naturalsort(text)
|
||||
create or replace function naturalSort(text)
|
||||
returns bytea language sql immutable strict as
|
||||
$f$ select string_agg(convert_to(coalesce(r[2],length(length(r[1])::text) || length(r[1])::text || r[1]),\'SQL_ASCII\'),\'\x00\')
|
||||
from regexp_matches($1, \'0*([0-9]+)|([^0-9]+)\', \'g\') r; $f$;
|
||||
@ -73,7 +73,7 @@ return new class extends Migration
|
||||
}
|
||||
|
||||
if (config('database.default') === 'mysql' || config('database.default') === 'pgsql') {
|
||||
DB::unprepared('DROP FUNCTION IF EXISTS naturalsort');
|
||||
DB::unprepared('DROP FUNCTION IF EXISTS naturalSort');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -22,7 +22,7 @@
|
||||
<env name="APP_MAINTENANCE_DRIVER" value="file"/>
|
||||
<env name="BCRYPT_ROUNDS" value="4"/>
|
||||
<env name="CACHE_STORE" value="array"/>
|
||||
<env name="DB_DATABASE" value="testing"/>
|
||||
<env name="DB_DATABASE" value="test"/>
|
||||
<env name="MAIL_MAILER" value="array"/>
|
||||
<env name="PULSE_ENABLED" value="false"/>
|
||||
<env name="QUEUE_CONNECTION" value="sync"/>
|
||||
|
2
public/vendor/nova/app.js
vendored
2
public/vendor/nova/app.js
vendored
File diff suppressed because one or more lines are too long
2
public/vendor/nova/app.js.map
vendored
2
public/vendor/nova/app.js.map
vendored
File diff suppressed because one or more lines are too long
4
public/vendor/nova/mix-manifest.json
vendored
4
public/vendor/nova/mix-manifest.json
vendored
@ -1,8 +1,8 @@
|
||||
{
|
||||
"/app.js": "/app.js?id=39a6748854b6a3067197328ad5a1bdbb",
|
||||
"/app.js": "/app.js?id=d5c07e2eeefdadf9650a9473ea340c89",
|
||||
"/manifest.js": "/manifest.js?id=d6d76d12b7219df564489d400c711198",
|
||||
"/app.css": "/app.css?id=3d962b859bf103c1663adb9513497f17",
|
||||
"/vendor.js": "/vendor.js?id=3a6808f0337dd41e7423cb4bc7c703d3",
|
||||
"/vendor.js": "/vendor.js?id=0b026297072f6c8be97d0c900a2d4770",
|
||||
"/fonts/snunitosansv11pe01mimslybiv1o4x1m8cce4g1pty10iurt9w6fk2a.woff2": "/fonts/snunitosansv11pe01mimslybiv1o4x1m8cce4g1pty10iurt9w6fk2a.woff2?id=c8390e146be0a3c8a5498355dec892ae",
|
||||
"/fonts/snunitosansv11pe01mimslybiv1o4x1m8cce4g1pty14iurt9w6fk2a.woff2": "/fonts/snunitosansv11pe01mimslybiv1o4x1m8cce4g1pty14iurt9w6fk2a.woff2?id=b0735c7dd6126471acbaf9d6e9f5e41a",
|
||||
"/fonts/snunitosansv11pe01mimslybiv1o4x1m8cce4g1pty1ciurt9w6fk2a.woff2": "/fonts/snunitosansv11pe01mimslybiv1o4x1m8cce4g1pty1ciurt9w6fk2a.woff2?id=7c1fb232e3050e36dcc1aee61f1d0c06",
|
||||
|
2
public/vendor/nova/vendor.js
vendored
2
public/vendor/nova/vendor.js
vendored
File diff suppressed because one or more lines are too long
2
public/vendor/nova/vendor.js.map
vendored
2
public/vendor/nova/vendor.js.map
vendored
File diff suppressed because one or more lines are too long
13
resources/views/components/mod-list-stats.blade.php
Normal file
13
resources/views/components/mod-list-stats.blade.php
Normal file
@ -0,0 +1,13 @@
|
||||
<p {{ $attributes->class(['text-slate-700 dark:text-gray-300 text-sm']) }}>
|
||||
<span>{{ Number::format($mod->total_downloads) }} downloads</span>
|
||||
@if(!is_null($mod->created_at))
|
||||
<span>
|
||||
— Created
|
||||
<time datetime="{{ $mod->created_at->format('c') }}">
|
||||
{{ $mod->created_at->diffForHumans() }}
|
||||
</time>
|
||||
</span>
|
||||
@elseif(!is_null($modVersion->updated_at))
|
||||
<span>— Updated {{ $modVersion->updated_at->diffForHumans() }}</span>
|
||||
@endif
|
||||
</p>
|
@ -21,17 +21,10 @@
|
||||
{{ $mod->{$versionScope}->sptVersion->version }}
|
||||
</span>
|
||||
</div>
|
||||
<p class="text-sm italic text-slate-600 dark:text-gray-200">By {{ $mod->user->name }}</p>
|
||||
<p class="mt-2 text-slate-500 dark:text-gray-300">{{ $mod->teaser }}</p>
|
||||
</div>
|
||||
<p class="text-slate-700 dark:text-gray-300 text-sm">
|
||||
<span>By {{ $mod->user->name }}</span>
|
||||
@if (!is_null($mod->total_downloads))
|
||||
<span>– {{ Number::format($mod->total_downloads) }} downloads</span>
|
||||
@endif
|
||||
@if(!is_null($mod->updated_at))
|
||||
<span>– updated {{ $mod->updated_at }}</span>
|
||||
@endif
|
||||
</p>
|
||||
<x-mod-list-stats :mod="$mod" :modVersion="$mod->{$versionScope}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -14,7 +14,7 @@
|
||||
</div>
|
||||
<div class="mx-auto max-w-2xl text-center">
|
||||
<h2 class="text-4xl font-bold tracking-tight text-white sm:text-6xl drop-shadow-md">Step into
|
||||
<em class="dark:text-gray-400">{{ config('app.name', 'The Forge') }}</em></h2>
|
||||
<em class="text-gray-200">{{ config('app.name', 'The Forge') }}</em></h2>
|
||||
<p class="mt-6 text-lg leading-8 text-gray-300 drop-shadow-md">The greatest resource available for Single Player Tarkov modifications. Where modding legends are made. Discover powerful tools, expert-written guides, and exclusive mods. Craft your vision. Transform the game.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
30
resources/views/mod/show.blade.php
Normal file
30
resources/views/mod/show.blade.php
Normal file
@ -0,0 +1,30 @@
|
||||
<x-app-layout>
|
||||
|
||||
<x-slot name="header">
|
||||
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
|
||||
{{ __('Mod Details') }}
|
||||
</h2>
|
||||
</x-slot>
|
||||
|
||||
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
|
||||
<div class="bg-white dark:bg-gray-900 overflow-hidden shadow-xl dark:shadow-gray-900 sm:rounded-lg">
|
||||
<div class="grid grid-cols-2 gap-6">
|
||||
<div>
|
||||
<div>
|
||||
<img src="{{ $mod->thumbnail }}" alt="{{ $mod->name }}" />
|
||||
<h2>{{ $mod->name }}</h2>
|
||||
<p>{{ $mod->latestSptVersion->sptVersion->version }}</p>
|
||||
<p>{{ $mod->user->name }}</p>
|
||||
<p>{{ $mod->total_downloads }}</p>
|
||||
</div>
|
||||
<div>
|
||||
<a href="{{ $mod->latestSptVersion->link }}">{{ __('Download') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h2>{{ __('Details') }}</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</x-app-layout>
|
@ -1,14 +1,16 @@
|
||||
<?php
|
||||
|
||||
use App\Http\Controllers\ModController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::get('/', function () {
|
||||
return view('home');
|
||||
})->name('home');
|
||||
|
||||
Route::get('/mods', function () {
|
||||
return '';
|
||||
})->name('mods');
|
||||
Route::controller(ModController::class)->group(function () {
|
||||
Route::get('/mods', 'index')->name('mods');
|
||||
Route::get('/mod/{mod}/{slug}', 'show')->where(['id' => '[0-9]+'])->name('mod.show');
|
||||
});
|
||||
|
||||
Route::middleware(['auth:sanctum', config('jetstream.auth_session'), 'verified'])->group(function () {
|
||||
Route::get('/dashboard', function () {
|
||||
|
Loading…
x
Reference in New Issue
Block a user