diff --git a/frontend/src/utils/navbar/navbar.js b/frontend/src/utils/navbar/navbar.js index 4cd12ca8d..28264963b 100644 --- a/frontend/src/utils/navbar/navbar.js +++ b/frontend/src/utils/navbar/navbar.js @@ -67,7 +67,6 @@ export class NavHeaderContainerUtil { close() { this.radioButton.checked = false; - this.closeButton.checked = true; this.throttleUpdateWasOpen(); } diff --git a/src/Foundation.hs b/src/Foundation.hs index f6a8ec719..f5db6a93d 100644 --- a/src/Foundation.hs +++ b/src/Foundation.hs @@ -1703,7 +1703,7 @@ siteLayout' headingOverride widget = do -- ^ highlight last route in breadcrumbs, favorites taking priority highlight = (highR ==) . Just . urlRoute where crumbs = mcons mcurrentRoute $ view _1 <$> reverse parents - navItems = map (view _2) favourites ++ toListOf (folded . _1 . _navLink . to urlRoute) nav + navItems = map (view _2) favourites ++ toListOf (folded . typesUsing @NavChildren @NavLink . to urlRoute) nav highR = find (`elem` navItems) . uncurry (++) $ partition (`elem` map (view _2) favourites) crumbs highlightNav = (||) <$> navForceActive <*> highlight favouriteTerms :: [TermIdentifier] @@ -2299,88 +2299,152 @@ defaultLinks = fmap catMaybes . mapM runMaybeT $ -- Define the menu items of the , navForceActive = False } } + , return NavHeader + { navHeaderRole = NavHeaderPrimary + , navIcon = IconMenuCourseList + , navLink = NavLink + { navLabel = MsgMenuCourseList + , navRoute = CourseListR + , navAccess' = return True + , navType = NavTypeLink { navModal = False } + , navQuick = False + , navForceActive = False + } + } + , return NavHeader + { navHeaderRole = NavHeaderPrimary + , navIcon = IconMenuCorrections + , navLink = NavLink + { navLabel = MsgMenuCorrections + , navRoute = CorrectionsR + , navAccess' = return True + , navType = NavTypeLink { navModal = False } + , navQuick = False + , navForceActive = False + } + } + , return NavHeader + { navHeaderRole = NavHeaderPrimary + , navIcon = IconMenuExams + , navLink = NavLink + { navLabel = MsgMenuExamOfficeExams + , navRoute = ExamOfficeR EOExamsR + , navAccess' = return True + , navType = NavTypeLink { navModal = False } + , navQuick = False + , navForceActive = False + } + } + , return NavHeaderContainer + { navHeaderRole = NavHeaderPrimary + , navLabel = SomeMessage MsgAdminHeading + , navIcon = IconMenuAdmin + , navChildren = + [ NavLink + { navLabel = MsgMenuUsers + , navRoute = UsersR + , navAccess' = return True + , navType = NavTypeLink { navModal = False } + , navQuick = False + , navForceActive = False + } + , NavLink + { navLabel = MsgMenuSchoolList + , navRoute = SchoolListR + , navAccess' = return True + , navType = NavTypeLink { navModal = False } + , navQuick = False + , navForceActive = False + } + , NavLink + { navLabel = MsgAdminFeaturesHeading + , navRoute = AdminFeaturesR + , navAccess' = return True + , navType = NavTypeLink { navModal = False } + , navQuick = False + , navForceActive = False + } + , NavLink + { navLabel = MsgMenuMessageList + , navRoute = MessageListR + , navAccess' = return True + , navType = NavTypeLink { navModal = False } + , navQuick = False + , navForceActive = False + } + , NavLink + { navLabel = MsgMenuAdminErrMsg + , navRoute = AdminErrMsgR + , navAccess' = return True + , navType = NavTypeLink { navModal = False } + , navQuick = False + , navForceActive = False + } + , NavLink + { navLabel = MsgMenuAdminTest + , navRoute = AdminTestR + , navAccess' = return True + , navType = NavTypeLink { navModal = False } + , navQuick = False + , navForceActive = False + } + ] + } + , return NavHeaderContainer + { navHeaderRole = NavHeaderPrimary + , navLabel = SomeMessage (mempty :: Text) + , navIcon = IconMenuExtra + , navChildren = + [ NavLink + { navLabel = MsgMenuCourseNew + , navRoute = CourseNewR + , navAccess' = return True + , navType = NavTypeLink { navModal = False } + , navQuick = False + , navForceActive = False + } + , NavLink + { navLabel = MsgMenuExternalExamList + , navRoute = EExamListR + , navAccess' = return True + , navType = NavTypeLink { navModal = False } + , navQuick = False + , navForceActive = False + } + , NavLink + { navLabel = MsgMenuTermShow + , navRoute = TermShowR + , navAccess' = return True + , navType = NavTypeLink { navModal = False } + , navQuick = False + , navForceActive = False + } + , NavLink + { navLabel = MsgMenuAllocationList + , navRoute = AllocationListR + , navAccess' = return True + , navType = NavTypeLink { navModal = False } + , navQuick = False + , navForceActive = False + } + , NavLink + { navLabel = MsgInfoLecturerTitle + , navRoute = InfoLecturerR + , navAccess' = return True + , navType = NavTypeLink { navModal = False } + , navQuick = False + , navForceActive = False + } + ] + } ] - -- , return MenuItem - -- { menuItemType = NavbarAside - -- , menuItemLabel = MsgMenuTermShow - -- , menuItemIcon = Just "calendar-alt" -- SJ wrote: calendar icon, since Term will be repleaced with TimeTable in the future; arguably Term is more calendar-like than courses anyway!!! - -- , menuItemRoute = SomeRoute TermShowR - -- , menuItemModal = False - -- , menuItemAccessCallback' = return True - -- } - -- , return MenuItem - -- { menuItemType = NavbarAside - -- , menuItemLabel = MsgMenuCourseList - -- , menuItemIcon = Just "graduation-cap" - -- , menuItemRoute = SomeRoute CourseListR - -- , menuItemModal = False - -- , menuItemAccessCallback' = return True - -- } - -- , return MenuItem - -- { menuItemType = NavbarAside - -- , menuItemLabel = MsgMenuCorrections - -- , menuItemIcon = Just "check" - -- , menuItemRoute = SomeRoute CorrectionsR - -- , menuItemModal = False - -- , menuItemAccessCallback' = return True - -- } - -- , return MenuItem - -- { menuItemType = NavbarAside - -- , menuItemLabel = MsgMenuExamOfficeExams - -- , menuItemIcon = Just "poll-h" - -- , menuItemRoute = SomeRoute $ ExamOfficeR EOExamsR - -- , menuItemModal = False - -- , menuItemAccessCallback' = return True - -- } - -- , return MenuItem - -- { menuItemType = NavbarAside - -- , menuItemLabel = MsgMenuUsers - -- , menuItemIcon = Just "users" - -- , menuItemRoute = SomeRoute UsersR - -- , menuItemModal = False - -- , menuItemAccessCallback' = return True -- Creates a LOOP: (Authorized ==) <$> isAuthorized UsersR False - -- } - -- , return MenuItem - -- { menuItemType = NavbarAside - -- , menuItemLabel = MsgAdminHeading - -- , menuItemIcon = Just "screwdriver" - -- , menuItemRoute = SomeRoute AdminR - -- , menuItemModal = False - -- , menuItemAccessCallback' = return True - -- } - -- ] -- pageActions :: (MonadHandler m, HandlerSite m ~ UniWorX) => Route UniWorX -> m [Nav] pageActions :: _ pageActions _ = return [] -- pageActions (NewsR) = --- [ --- MenuItem --- { menuItemType = PageActionPrime --- , menuItemLabel = MsgInfoLecturerTitle --- , menuItemIcon = Nothing --- , menuItemRoute = SomeRoute InfoLecturerR --- , menuItemModal = False --- , menuItemAccessCallback' = return True --- } --- , MenuItem --- { menuItemType = PageActionPrime --- , menuItemLabel = MsgMenuCourseNew --- , menuItemIcon = Just "book" --- , menuItemRoute = SomeRoute CourseNewR --- , menuItemModal = False --- , menuItemAccessCallback' = return True --- } --- , MenuItem --- { menuItemType = PageActionSecondary --- , menuItemLabel = MsgMenuExternalExamList --- , menuItemIcon = Nothing --- , menuItemRoute = SomeRoute EExamListR --- , menuItemModal = False --- , menuItemAccessCallback' = return True --- } --- , MenuItem +-- [ MenuItem -- { menuItemType = PageActionPrime -- , menuItemLabel = MsgMenuOpenCourses -- , menuItemIcon = Nothing diff --git a/src/Utils/Icon.hs b/src/Utils/Icon.hs index 199042d3c..309857823 100644 --- a/src/Utils/Icon.hs +++ b/src/Utils/Icon.hs @@ -75,6 +75,11 @@ data Icon | IconMenuProfile | IconMenuLogin | IconMenuLogout | IconBreadcrumbsHome + | IconMenuExtra + | IconMenuCourseList + | IconMenuCorrections + | IconMenuExams + | IconMenuAdmin deriving (Eq, Ord, Enum, Bounded, Show, Read, Generic, Typeable) iconText :: Icon -> Text @@ -126,6 +131,11 @@ iconText = \case IconMenuLogin -> "sign-in-alt" IconMenuLogout -> "sign-out-alt" IconBreadcrumbsHome -> "home" + IconMenuExtra -> "ellipsis-h" + IconMenuCourseList -> "graduation-cap" + IconMenuCorrections -> "check" + IconMenuExams -> "poll-h" + IconMenuAdmin -> "screwdriver" instance Universe Icon instance Finite Icon