diff --git a/src/components/Diagnostic.tsx b/src/components/Diagnostic.tsx
index b38215d6..142436a0 100644
--- a/src/components/Diagnostic.tsx
+++ b/src/components/Diagnostic.tsx
@@ -43,7 +43,7 @@ export default function Diagnostic({onFinish}: Props) {
if (exams.every((x) => !!x)) {
setExams(exams.map((x) => x!));
setSelectedModules(exams.map((x) => x!.module));
- router.push("/exercises");
+ router.push("/exam");
}
});
};
diff --git a/src/components/High/Layout.tsx b/src/components/High/Layout.tsx
index b4a3dbc6..fefe4fb6 100644
--- a/src/components/High/Layout.tsx
+++ b/src/components/High/Layout.tsx
@@ -1,3 +1,4 @@
+import { EntityWithRoles } from "@/interfaces/entity";
import {User} from "@/interfaces/user";
import clsx from "clsx";
import {useRouter} from "next/router";
@@ -7,6 +8,7 @@ import Sidebar from "../Sidebar";
interface Props {
user: User;
+ entities?: EntityWithRoles[]
children: React.ReactNode;
className?: string;
navDisabled?: boolean;
@@ -16,7 +18,17 @@ interface Props {
onFocusLayerMouseEnter?: () => void;
}
-export default function Layout({user, children, className, bgColor="bg-white", hideSidebar, navDisabled = false, focusMode = false, onFocusLayerMouseEnter}: Props) {
+export default function Layout({
+ user,
+ entities = [],
+ children,
+ className,
+ bgColor="bg-white",
+ hideSidebar,
+ navDisabled = false,
+ focusMode = false,
+ onFocusLayerMouseEnter
+}: Props) {
const router = useRouter();
return (
@@ -40,6 +52,7 @@ export default function Layout({user, children, className, bgColor="bg-white", h
onFocusLayerMouseEnter={onFocusLayerMouseEnter}
className="-md:hidden"
user={user}
+ entities={entities}
/>
)}
= ({
.sort(sortByModule)
.map((x) => x!.module),
);
- router.push("/exercises");
+ router.push("/exam");
}
});
}
diff --git a/src/components/MobileMenu.tsx b/src/components/MobileMenu.tsx
index df55e6d6..0d3a9ffa 100644
--- a/src/components/MobileMenu.tsx
+++ b/src/components/MobileMenu.tsx
@@ -105,16 +105,6 @@ export default function MobileMenu({
>
Exams
-
- Exercises
-
>
)}
void;
className?: string;
user: User;
+ entities?: EntityWithRoles[]
}
interface NavProps {
@@ -76,7 +76,15 @@ const Nav = ({ Icon, label, path, keyPath, disabled = false, isMinimized = false
);
};
-export default function Sidebar({ path, navDisabled = false, focusMode = false, user, onFocusLayerMouseEnter, className }: Props) {
+export default function Sidebar({
+ path,
+ entities = [],
+ navDisabled = false,
+ focusMode = false,
+ user,
+ onFocusLayerMouseEnter,
+ className
+}: Props) {
const router = useRouter();
const [isMinimized, toggleMinimize] = usePreferencesStore((state) => [state.isSidebarMinimized, state.toggleSidebarMinimized]);
@@ -84,6 +92,10 @@ export default function Sidebar({ path, navDisabled = false, focusMode = false,
const { totalAssignedTickets } = useTicketsListener(user.id);
const { permissions } = usePermissions(user.id);
+ const entitiesAllowGeneration = useAllowedEntitiesSomePermissions(user, entities, [
+ "generate_reading", "generate_listening", "generate_writing", "generate_speaking", "generate_level"
+ ])
+
const logout = async () => {
axios.post("/api/logout").finally(() => {
setTimeout(() => router.reload(), 500);
@@ -104,9 +116,6 @@ export default function Sidebar({ path, navDisabled = false, focusMode = false,
{checkAccess(user, ["student", "teacher", "developer"], permissions, "viewExams") && (
)}
- {checkAccess(user, ["student", "teacher", "developer"], permissions, "viewExercises") && (
-
- )}
{checkAccess(user, getTypesOfUser(["agent"]), permissions, "viewStats") && (
)}
@@ -157,7 +166,7 @@ export default function Sidebar({ path, navDisabled = false, focusMode = false,
badge={totalAssignedTickets}
/>
)}
- {checkAccess(user, ["developer", "admin", "corporate", "mastercorporate"]) && (
+ {entitiesAllowGeneration.length > 0 && (
)}