feat: restore & improve navbar contents

This commit is contained in:
Gregor Kleen 2020-01-24 17:23:12 +01:00
parent 18ae75890a
commit 51fc6dc541
3 changed files with 150 additions and 77 deletions

View File

@ -67,7 +67,6 @@ export class NavHeaderContainerUtil {
close() {
this.radioButton.checked = false;
this.closeButton.checked = true;
this.throttleUpdateWasOpen();
}

View File

@ -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

View File

@ -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