diff --git a/.gitea/workflows/build-image.yaml b/.gitea/workflows/build-image.yaml
index 7f0997f..04f7e29 100644
--- a/.gitea/workflows/build-image.yaml
+++ b/.gitea/workflows/build-image.yaml
@@ -7,7 +7,7 @@ jobs:
env:
IMAGE_NAME: tladle
REGISTRY_NAME: gitea.sc0tt.org
- GIT_TAG: 1.2
+ GIT_TAG: 1.3
runs-on: ubuntu-latest
steps:
- name: Checkout
diff --git a/app/Filament/Resources/TlaSuggestions/Pages/ManageTlaSuggestions.php b/app/Filament/Resources/TlaSuggestions/Pages/ManageTlaSuggestions.php
new file mode 100644
index 0000000..f834575
--- /dev/null
+++ b/app/Filament/Resources/TlaSuggestions/Pages/ManageTlaSuggestions.php
@@ -0,0 +1,19 @@
+components([
+ TextInput::make('acronym')
+ ->required(),
+ TextInput::make('hint')
+ ->default(null),
+ Select::make('language')
+ ->options(['hu' => 'Hu', 'en' => 'En'])
+ ->required(),
+ Textarea::make('context')
+ ->default(null)
+ ->columnSpanFull(),
+ TextInput::make('submitter')
+ ->default(null),
+ ]);
+ }
+
+ public static function table(Table $table): Table
+ {
+ return $table
+ ->recordTitleAttribute('Suggestions')
+ ->columns([
+ TextColumn::make('acronym')
+ ->searchable(),
+ TextColumn::make('hint')
+ ->searchable(),
+ TextColumn::make('language')
+ ->badge(),
+ TextColumn::make('submitter')
+ ->searchable(),
+ TextColumn::make('created_at')
+ ->dateTime()
+ ->sortable()
+ ->toggleable(isToggledHiddenByDefault: true),
+ TextColumn::make('updated_at')
+ ->dateTime()
+ ->sortable()
+ ->toggleable(isToggledHiddenByDefault: true),
+ ])
+ ->filters([
+ //
+ ])
+ ->recordActions([
+ EditAction::make(),
+ DeleteAction::make(),
+ Action::make('Approve')
+ ->action(fn (TlaSuggestion $record) => $record->ApproveTla($record))
+ ->requiresConfirmation()
+ ->modalHeading('Approve TLA')
+ ->modalDescription('Are you sure you want to approve this TLA?')
+ ])
+ ->toolbarActions([
+ BulkActionGroup::make([
+ DeleteBulkAction::make(),
+ ]),
+ ]);
+ }
+
+ public static function getPages(): array
+ {
+ return [
+ 'index' => ManageTlaSuggestions::route('/'),
+ ];
+ }
+}
diff --git a/app/Filament/Resources/Tlas/TlaResource.php b/app/Filament/Resources/Tlas/TlaResource.php
index 1636213..4b84973 100644
--- a/app/Filament/Resources/Tlas/TlaResource.php
+++ b/app/Filament/Resources/Tlas/TlaResource.php
@@ -25,7 +25,7 @@ class TlaResource extends Resource
protected static string|BackedEnum|null $navigationIcon = Heroicon::OutlinedRectangleStack;
- protected static ?string $recordTitleAttribute = 'tla';
+ protected static ?string $recordTitleAttribute = 'Tla';
public static function form(Schema $schema): Schema
{
@@ -42,13 +42,23 @@ class TlaResource extends Resource
Textarea::make('context')
->default(null)
->columnSpanFull(),
+ TextInput::make('submitter')
+ ->default(null),
+ TextInput::make('likes')
+ ->required()
+ ->numeric()
+ ->default(0),
+ TextInput::make('dislikes')
+ ->required()
+ ->numeric()
+ ->default(0),
]);
}
public static function table(Table $table): Table
{
return $table
- ->recordTitleAttribute('tla')
+ ->recordTitleAttribute('Tla')
->columns([
TextColumn::make('acronym')
->searchable(),
@@ -59,6 +69,14 @@ class TlaResource extends Resource
TextColumn::make('used')
->date()
->sortable(),
+ TextColumn::make('submitter')
+ ->searchable(),
+ TextColumn::make('likes')
+ ->numeric()
+ ->sortable(),
+ TextColumn::make('dislikes')
+ ->numeric()
+ ->sortable(),
TextColumn::make('created_at')
->dateTime()
->sortable()
diff --git a/app/Http/Controllers/TlaController.php b/app/Http/Controllers/TlaController.php
index e9e657f..d3ec374 100644
--- a/app/Http/Controllers/TlaController.php
+++ b/app/Http/Controllers/TlaController.php
@@ -3,37 +3,17 @@
namespace App\Http\Controllers;
use App\Models\Tla;
+use App\Models\TlaSuggestion;
use Illuminate\Http\Request;
class TlaController extends Controller
{
- public function store(Request $request): RedirectResponse
- {
- $request->validate([
- 'title' => 'required',
- 'body' => 'required',
- ]);
-
- $tla = new Tla($requestData);
-
- $tla->save();
-
- return redirect()->route('admin')->with('success', 'Record added!');
- } //
-
- public function destroy(Tla $tla): RedirectResponse
- {
- $tla->delete();
-
- return redirect()->route('admin')->with('success', 'Record deleted');
- }
-
public function session_flush(Request $request, string $language)
{
$session = $request->session();
if ($session->get('date-'.$language, NULL) != date('Y-m-d'))
{
- $session->forget('guesses--'.$language);
+ $session->forget('guesses-'.$language);
$session->forget('tla-'.$language);
$session->forget('correct-'.$language);
$session->forget('review-'.$language);
@@ -53,10 +33,11 @@ class TlaController extends Controller
return response()->json([
'hint' => $tla->hint,
- 'guesses' => $session->get('guesses--'.$language, []),
- 'date' => $session->get('date--'.$language),
+ 'guesses' => $session->get('guesses-'.$language, []),
+ 'date' => $session->get('date-'.$language),
'tla' => $session->get('tla-'.$language) == $tla->acronym ? $tla->acronym : NULL,
'context' => $session->get('tla-'.$language) == $tla->acronym ? $tla->context : NULL,
+ 'submitter' => $tla->submitter,
'correct' => $session->get('correct-'.$language),
]);
}
@@ -107,8 +88,8 @@ class TlaController extends Controller
$score += $guess_array[$i + 3];
}
- $session->push('guesses--'.$language, $guess_array);
- $guesses = $session->get('guesses--'.$language, NULL);
+ $session->push('guesses-'.$language, $guess_array);
+ $guesses = $session->get('guesses-'.$language, NULL);
if ($score == 12 || count($guesses) == env('MAX_GUESSES', 10)) {
$session->put('tla-'.$language, $tla_object->acronym);
@@ -125,8 +106,19 @@ class TlaController extends Controller
]);
}
- public function suggestion(?String $language = "en") {
-
+ public function suggestion(Request $request, ?String $language = "en") {
+ $request->validate([
+ 'acronym' => 'required',
+ 'hint' => 'required',
+ 'context' => 'required',
+ ]);
+
+ $requestData = $request->input();
+ $tla = new TlaSuggestion($requestData);
+
+ $tla->save();
+
+ return response($tla);
}
public function review(Request $request, String $language, int $type) {
@@ -161,20 +153,4 @@ class TlaController extends Controller
else return response(null, 403);
}
-
- public function update(Request $request, Tla $tla): RedirectResponse
- {
- $request->validate([
- 'title' => 'required',
- 'body' => 'required',
- ]);
-
- $requestData = $request->all();
-
- $tla->update($requestData);
-
- $tla->save();
-
- return redirect()->route('admin')->with('success', 'Record updated!');
- }
}
diff --git a/app/Models/Tla.php b/app/Models/Tla.php
index 0b26bcc..366c5f4 100644
--- a/app/Models/Tla.php
+++ b/app/Models/Tla.php
@@ -11,7 +11,7 @@ class Tla extends Model
use HasFactory;
- protected $fillable = ['acronym', 'hint', 'language', 'used', 'context', 'likes', 'dislikes'];
+ protected $fillable = ['acronym', 'hint', 'language', 'used', 'context', 'submitter', 'likes', 'dislikes'];
public static function GetCurrentTla( string $language ) : Tla {
$tla = Tla::where('used', date("Y-m-d"))
diff --git a/app/Models/TlaSuggestion.php b/app/Models/TlaSuggestion.php
index f455d2d..deddc94 100644
--- a/app/Models/TlaSuggestion.php
+++ b/app/Models/TlaSuggestion.php
@@ -3,10 +3,18 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\Factories\HasFactory;
class TlaSuggestion extends Model
{
+ use HasFactory;
protected $table = 'tla_suggestion';
- protected $fillable = ['acronym', 'hint', 'language', 'context'];
+ protected $fillable = ['acronym', 'hint', 'language', 'context', 'submitter'];
+
+ public static function ApproveTla(TlaSuggestion $record) {
+ $tla = new Tla($record->toArray());
+ $record->delete();
+ $tla->save();
+ }
}
diff --git a/database/migrations/2026_08_21_065241_add_suggestion_submitter.php b/database/migrations/2026_08_21_065241_add_suggestion_submitter.php
new file mode 100644
index 0000000..80cf944
--- /dev/null
+++ b/database/migrations/2026_08_21_065241_add_suggestion_submitter.php
@@ -0,0 +1,29 @@
+string('submitter')->nullable()->after('context');
+ });
+ Schema::table('tla', function (Blueprint $table){
+ $table->string('submitter')->nullable()->after('context');
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ //
+ }
+};
diff --git a/resources/js/pages/HomeView.vue b/resources/js/pages/HomeView.vue
index f2c3739..cc566f1 100644
--- a/resources/js/pages/HomeView.vue
+++ b/resources/js/pages/HomeView.vue
@@ -2,7 +2,7 @@
import axios from 'axios';
import GuessWord from '../components/GuessWord.vue';
import Modal from '../components/Modal.vue';
-import Review from '../components/Review.vue';
+ import Review from '../components/Review.vue';
+
TLA suggestion form
-
+
+ Disclaimer: I'm going through these manually, approving them or even changing the context or motto for them, if I feel it's necessary. I don't guarantee, that your suggestion will be approved and even if it is, it may not be next days TLA.
+
+ If you wish, you can submit adnother TLA by exiting this alert.
+