06081159b6
Infrastructure for a portal-wide in-app help system:
* Users have hints_enabled (default true) and dismissed_hints (JSON
array) columns. User::shouldSeeHint(key) checks both.
* app/Support/Hints.php — single-source-of-truth registry with 14
pilot hints across Service (5), CRM (3), Depozit (3), Finanțe (3).
Each entry has RO/RU/EN title + body + optional next-step + links.
* <x-hint key="wo.dashboard.overview" /> Blade component renders a
small "?" icon with Alpine.js popover; the popover shows title,
body, next-step, related links and an "X" button that POSTs to
/app/hints/{key}/dismiss.
* HintController handles dismiss (per key), toggle (global on/off)
and reset (clear dismissed + re-enable). Routes are auth:web.
* /app/faq page (Filament Page under Admin group) renders the whole
registry grouped by area with a live search box and buttons to
toggle global hints or reset dismissed ones.
* Wired 3 pilot hints into the WO dashboard: title (overview), Docs
tab PDF preview, and the Chat client card.
Follow-ups: extend registry to cover more pages and add <x-hint>
tags where useful. Filament resource fields can also reuse the same
copy via ->hint()/->helperText().
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
43 lines
1.1 KiB
PHP
43 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
|
|
class HintController extends Controller
|
|
{
|
|
public function dismiss(Request $request, string $key)
|
|
{
|
|
$user = $request->user();
|
|
abort_unless($user, 401);
|
|
$dismissed = (array) ($user->dismissed_hints ?? []);
|
|
if (! in_array($key, $dismissed, true)) {
|
|
$dismissed[] = $key;
|
|
$user->dismissed_hints = $dismissed;
|
|
$user->save();
|
|
}
|
|
return response()->json(['ok' => true]);
|
|
}
|
|
|
|
/** Toggle global hints on/off from the profile / settings page. */
|
|
public function toggle(Request $request)
|
|
{
|
|
$user = $request->user();
|
|
abort_unless($user, 401);
|
|
$user->hints_enabled = ! $user->hints_enabled;
|
|
$user->save();
|
|
return back();
|
|
}
|
|
|
|
/** Bring back all dismissed hints (used from FAQ / profile "resetează hint-uri"). */
|
|
public function reset(Request $request)
|
|
{
|
|
$user = $request->user();
|
|
abort_unless($user, 401);
|
|
$user->dismissed_hints = [];
|
|
$user->hints_enabled = true;
|
|
$user->save();
|
|
return back();
|
|
}
|
|
}
|