@@ -296,7 +296,7 @@ function Sidebar({ active, setActive, user, onLogout, unreadMsgs=0, hexWarsTurns
}
// ── Mobile Bottom Navigation ──────────────────────────────────────────────────
-function BottomNav({ active, setActive, user, onLogout, unreadMsgs=0, hexWarsTurns=0, whiteboardUnread=0, isAdmin=false }) {
+function BottomNav({ active, setActive, user, onLogout, unreadMsgs=0, hexWarsTurns=0, whiteboardUnread=0, isAdmin=false, hiddenTools=[] }) {
const [menuOpen, setMenuOpen] = useState(false);
const [appsOpen, setAppsOpen] = useState(false);
const [mobileCollapsedGroups, setMobileCollapsedGroups] = useState({});
@@ -360,7 +360,7 @@ function BottomNav({ active, setActive, user, onLogout, unreadMsgs=0, hexWarsTur
{/* Apps Sheet mit Gruppenüberschriften */}
setAppsOpen(false)}>
- {getGroupedTools(user?.role==='admin').map(([group, tools]) => {
+ {getGroupedTools(user?.role==='admin', hiddenTools).map(([group, tools]) => {
const isGrpCollapsed = !!mobileCollapsedGroups[group];
return (
@@ -2380,6 +2380,8 @@ function UserManagement({ toast }) {
const [resetId, setResetId] = useState(null);
const [resetPw, setResetPw] = useState('');
const [delId, setDelId] = useState(null);
+ const [visId, setVisId] = useState(null);
+ const [visSelection, setVisSelection] = useState([]);
const { confirm, ConfirmDialog } = useConfirm();
const load = () => {
@@ -2411,6 +2413,24 @@ function UserManagement({ toast }) {
} catch(e) { toast(e.message,'error'); }
};
+ const openVisibility = (u) => {
+ setVisId(u.id);
+ setVisSelection(u.hidden_tools || []);
+ };
+
+ const toggleVisTool = (toolId) => {
+ setVisSelection(prev => prev.includes(toolId) ? prev.filter(t=>t!==toolId) : [...prev, toolId]);
+ };
+
+ const saveVisibility = async () => {
+ try {
+ await api(`/admin/users/${visId}/hidden-tools`,{method:'PUT',body:{hidden_tools:visSelection}});
+ setUsers(p=>p.map(x=>x.id===visId?{...x,hidden_tools:visSelection}:x));
+ toast('Sichtbarkeit gespeichert');
+ setVisId(null);
+ } catch(e) { toast(e.message,'error'); }
+ };
+
return (
@@ -2448,6 +2468,51 @@ function UserManagement({ toast }) {
)}
+ {/* Sidebar-Sichtbarkeit Modal */}
+ {visId && (() => {
+ const grouped = {};
+ for (const t of TOOLS) {
+ const g = t.group || 'Allgemein';
+ if (!grouped[g]) grouped[g] = [];
+ grouped[g].push(t);
+ }
+ const target = users.find(u=>u.id===visId);
+ return (
+
+
+
+ Sichtbare Bereiche{target ? ` — ${target.username}` : ''}
+
+
+ Angehakt = ausgeblendet für diesen Nutzer
+
+ {Object.entries(grouped).map(([group, tools]) => (
+
+
{group}
+ {tools.map(t => (
+
+ ))}
+
+ ))}
+
+
+
+
+
+
+ );
+ })()}
+
{/* Benutzerliste */}
{loading && Lädt…
}
@@ -2508,6 +2573,11 @@ function UserManagement({ toast }) {
)}
+