/* eslint-disable jsx-a11y/control-has-associated-label */ /* eslint-disable jsx-a11y/anchor-has-content */ import PropTypes from 'prop-types'; import React, { useContext } from 'react'; import Responsive from 'react-responsive'; import { AppContext } from '@edx/frontend-platform/react'; import { ensureConfig } from '@edx/frontend-platform'; import { OverlayTrigger, Tooltip } from '@edx/paragon'; import { injectIntl, intlShape, } from '@edx/frontend-platform/i18n'; import DesktopHeader from './DesktopHeader'; import MobileHeader from './MobileHeader'; import messages from './Header.messages'; ensureConfig([ 'STUDIO_BASE_URL', 'LOGOUT_URL', 'LOGIN_URL', 'LOGO_URL', ], 'Header component'); const Header = ({ courseId, courseNumber, courseOrg, courseTitle, intl, }) => { const { authenticatedUser, config } = useContext(AppContext); const getPagePath = (isMfePageEnabled, urlParameter) => { if (isMfePageEnabled === 'true') { if (urlParameter === 'tabs') { return `/course/${courseId}/pages-and-resources`; } return `/course/${courseId}/${urlParameter}`; } return `${config.STUDIO_BASE_URL}/${urlParameter}/${courseId}`; }; const mainMenu = [ { type: 'submenu', content: intl.formatMessage(messages['header.links.content']), submenuContent: ( <>
{intl.formatMessage(messages['header.links.outline'])}
{intl.formatMessage(messages['header.links.updates'])}
{intl.formatMessage(messages['header.links.pages'])}
{intl.formatMessage(messages['header.links.filesAndUploads'])}
{intl.formatMessage(messages['header.links.textbooks'])}
{intl.formatMessage(messages['header.links.videoUploads'])}
), }, { type: 'submenu', content: intl.formatMessage(messages['header.links.settings']), submenuContent: ( <>
{intl.formatMessage(messages['header.links.scheduleAndDetails'])}
{intl.formatMessage(messages['header.links.grading'])}
{intl.formatMessage(messages['header.links.courseTeam'])}
{intl.formatMessage(messages['header.links.groupConfigurations'])}
{intl.formatMessage(messages['header.links.advancedSettings'])}
{intl.formatMessage(messages['header.links.certificates'])}
), }, { type: 'submenu', content: intl.formatMessage(messages['header.links.tools']), submenuContent: ( <>
{intl.formatMessage(messages['header.links.import'])}
{intl.formatMessage(messages['header.links.export'])}
{intl.formatMessage(messages['header.links.checklists'])}
), }, ]; const studioHomeItem = { type: 'item', href: config.STUDIO_BASE_URL, content: intl.formatMessage(messages['header.user.menu.studio']), }; const logoutItem = { type: 'item', href: config.LOGOUT_URL, content: intl.formatMessage(messages['header.user.menu.logout']), }; let userMenu = []; if (authenticatedUser !== null) { if (authenticatedUser.administrator) { userMenu = [ studioHomeItem, { type: 'item', href: `${config.STUDIO_BASE_URL}/maintenance`, content: intl.formatMessage(messages['header.user.menu.maintenance']), }, logoutItem, ]; } else { userMenu = [ studioHomeItem, logoutItem, ]; } } const courseLockUp = ( {courseTitle} )} > {courseOrg} {courseNumber} {courseTitle} ); const props = { logo: config.LOGO_URL, logoAltText: 'Studio edX', siteName: 'edX', logoDestination: process.env.ENABLE_NEW_HOME_PAGE === 'true' ? '/home' : config.STUDIO_BASE_URL, courseLockUp, courseId, username: authenticatedUser !== null ? authenticatedUser.username : null, avatar: authenticatedUser !== null ? authenticatedUser.avatar : null, mainMenu, userMenu, }; return ( <> ); }; Header.propTypes = { courseId: PropTypes.string.isRequired, courseNumber: PropTypes.string, courseOrg: PropTypes.string, courseTitle: PropTypes.string.isRequired, intl: intlShape.isRequired, }; Header.defaultProps = { courseNumber: null, courseOrg: null, }; export default injectIntl(Header);