137 lines
4.3 KiB
PHP
137 lines
4.3 KiB
PHP
<?php
|
||
|
||
namespace Database\Seeders;
|
||
|
||
use App\Models\NewsPost;
|
||
use Illuminate\Database\Seeder;
|
||
use Illuminate\Support\Str;
|
||
|
||
class NewsPostSeeder extends Seeder
|
||
{
|
||
public function run(): void
|
||
{
|
||
// Pozor: pokud už máš v produkci data, truncate nepoužívej.
|
||
NewsPost::truncate();
|
||
|
||
$items = [
|
||
[
|
||
'title' => [
|
||
'cs' => 'Vývojová verze nového vyhodnocovacího systému VKV závodů',
|
||
'en' => 'Development version of the new VHF contest evaluation system',
|
||
],
|
||
'content' => [
|
||
'cs' => <<<MD
|
||
## Vývojová verze
|
||
|
||
Tento systém pro vyhodnocování VKV závodů je aktuálně ve vývojové verzi.
|
||
|
||
**Co to znamená:**
|
||
|
||
- mohou se objevit chyby nebo nekompletní funkce
|
||
- data a výsledky se mohou ještě měnit
|
||
- budeme rádi za zpětnou vazbu a nahlášené problémy
|
||
MD,
|
||
'en' => <<<MD
|
||
## Development version
|
||
|
||
This VHF contest evaluation system is currently a development version.
|
||
|
||
**What this means:**
|
||
|
||
- features may be incomplete and bugs may appear
|
||
- data and results may still change
|
||
- we welcome feedback and reported issues
|
||
MD,
|
||
],
|
||
'excerpt' => [
|
||
'cs' => 'Nový systém pro vyhodnocování VKV závodů je ve vývoji.',
|
||
'en' => 'The new VHF contest evaluation system is in development.',
|
||
],
|
||
'is_published' => true,
|
||
'published_at' => now()->subDays(7),
|
||
],
|
||
[
|
||
'title' => [
|
||
'cs' => 'Plánovaná údržba systému',
|
||
'en' => 'Planned system maintenance',
|
||
],
|
||
'content' => [
|
||
'cs' => <<<MD
|
||
## Plánovaná údržba
|
||
|
||
Systém bude nedostupný **15. 12. 2025** mezi *22:00–23:00 CET* z důvodu údržby databáze.
|
||
|
||
Po dobu odstávky nebude možné:
|
||
|
||
- odesílat logy
|
||
- prohlížet výsledky
|
||
MD,
|
||
'en' => <<<MD
|
||
## Planned maintenance
|
||
|
||
The system will be unavailable on **15 Dec 2025** between *22:00–23:00 CET* due to database maintenance.
|
||
|
||
During this window it will not be possible to:
|
||
|
||
- submit logs
|
||
- view results
|
||
MD,
|
||
],
|
||
'excerpt' => [
|
||
'cs' => 'Plánovaná odstávka systému 15. 12. 2025 mezi 22:00–23:00 CET.',
|
||
'en' => 'Planned downtime on 15 Dec 2025 between 22:00–23:00 CET.',
|
||
],
|
||
'is_published' => false,
|
||
'published_at' => now()->subDays(3),
|
||
],
|
||
[
|
||
'title' => [
|
||
'cs' => 'Testovací novinka pouze v češtině',
|
||
'en' => 'Test news item (Czech only translation)',
|
||
],
|
||
'content' => [
|
||
'cs' => <<<MD
|
||
## Testovací novinka
|
||
|
||
Tato novinka slouží k otestování zobrazení lokalizovaného obsahu v uživatelském rozhraní.
|
||
MD,
|
||
'en' => <<<MD
|
||
## Test news item
|
||
|
||
This news entry is used to test localized content rendering in the user interface.
|
||
MD,
|
||
],
|
||
'excerpt' => [
|
||
'cs' => 'Testovací novinka pro ověření lokalizace.',
|
||
'en' => 'Test news item for localization checks.',
|
||
],
|
||
'is_published' => false,
|
||
'published_at' => now()->subDay(),
|
||
],
|
||
];
|
||
|
||
foreach ($items as $item) {
|
||
// slug vygenerujeme z českého titulku (nebo fallback na en)
|
||
$titleForSlug = $item['title']['cs']
|
||
?? $item['title']['en']
|
||
?? reset($item['title']);
|
||
|
||
$slug = Str::slug($titleForSlug);
|
||
|
||
$news = new NewsPost();
|
||
|
||
// lokalizované položky nastavíme explicitně jako překlady
|
||
$news->setTranslations('title', $item['title']);
|
||
$news->setTranslations('content', $item['content']);
|
||
$news->setTranslations('excerpt', $item['excerpt']);
|
||
|
||
$news->slug = $slug;
|
||
$news->is_published = $item['is_published'];
|
||
$news->published_at = $item['published_at'];
|
||
$news->author_id = null; // nebo nějaký konkrétní user_id
|
||
|
||
$news->save();
|
||
}
|
||
}
|
||
}
|