A lot of things

- Added Database page.
- Added Xenforo API compatibility
- Added Hovercard
- Added Notifications
This commit is contained in:
2026-05-24 11:47:20 +02:00
parent 7cd6dfddda
commit a778222564
51 changed files with 3228 additions and 38 deletions

View File

@@ -0,0 +1,35 @@
<?php
namespace App\View\Components;
use Closure;
use Illuminate\Contracts\View\View;
use Illuminate\View\Component;
class DatabaseFilterWithMode extends Component
{
/**
* Create a new component instance.
*/
public function __construct(
public string $title,
public $items,
public string $model,
public string $modeModel,
public string $selectedMode,
public string $idProperty = 'id',
public string $nameProperty = 'name',
)
{
//
}
/**
* Get the view / contents that represent the component.
*/
public function render(): View|Closure|string
{
return view('components.database-filter-with-mode');
}
}

View File

@@ -0,0 +1,35 @@
<?php
namespace App\View\Components;
use Closure;
use Illuminate\Contracts\View\View;
use Illuminate\View\Component;
class DatabaseFilterWithModeSearch extends Component
{
/**
* Create a new component instance.
*/
public function __construct(
public string $title,
public $items,
public string $model,
public string $modeModel,
public string $selectedMode,
public string $idProperty = 'id',
public string $nameProperty = 'name',
)
{
//
}
/**
* Get the view / contents that represent the component.
*/
public function render(): View|Closure|string
{
return view('components.database-filter-with-mode-search');
}
}

View File

@@ -0,0 +1,33 @@
<?php
namespace App\View\Components;
use Closure;
use Illuminate\Contracts\View\View;
use Illuminate\View\Component;
class DatabaseFilterWithoutMode extends Component
{
/**
* Create a new component instance.
*/
public function __construct(
public string $title,
public $items,
public string $model,
public string $idProperty = 'id',
public string $nameProperty = 'name',
)
{
//
}
/**
* Get the view / contents that represent the component.
*/
public function render(): View|Closure|string
{
return view('components.database-filter-without-mode');
}
}

View File

@@ -0,0 +1,33 @@
<?php
namespace App\View\Components;
use Closure;
use Illuminate\Contracts\View\View;
use Illuminate\View\Component;
class DatabaseFilterWithoutModeSearch extends Component
{
/**
* Create a new component instance.
*/
public function __construct(
public string $title,
public $items,
public string $model,
public string $idProperty = 'id',
public string $nameProperty = 'name',
)
{
//
}
/**
* Get the view / contents that represent the component.
*/
public function render(): View|Closure|string
{
return view('components.database-filter-without-mode-search');
}
}

View File

@@ -0,0 +1,44 @@
<?php
namespace App\View\Components;
use App\Models\Entry;
use Closure;
use Illuminate\Contracts\View\View;
use Illuminate\View\Component;
class EntryCard extends Component
{
/**
* Acronym for entry badge.
* TODO: Add in common.css other colors.
*/
public const array ENTRY_TYPES_BADGE = [
'translations' => "Trans",
'romhacks' => 'Hack',
'homebrew' => 'HBrew',
'utilities' => 'Util',
'documents' => 'Doc',
'lua-scripts' => 'Lua',
'tutorials' => 'Tuto'
];
/**
* Create a new component instance.
*/
public function __construct(
public Entry $entry,
)
{
//
}
/**
* Get the view / contents that represent the component.
*/
public function render(): View|Closure|string
{
return view('components.entry-card');
}
}

View File

@@ -0,0 +1,35 @@
<?php
namespace App\View\Components;
use App\Auth\XenForoUser;
use App\Services\XenforoService;
use Closure;
use Illuminate\Contracts\View\View;
use Illuminate\View\Component;
class XfUsernameLink extends Component
{
/**
* Create a new component instance.
*/
public function __construct(
public ?XenForoUser $user = null,
public ?int $userId = null
)
{
if( $this->user === null && $this->userId !== null ){
$this->user = app(XenforoService::class)->getXfUser($this->userId);
}
}
/**
* Get the view / contents that represent the component.
*/
public function render(): View|Closure|string
{
return view('components.xf-username-link');
}
}