File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -14,6 +14,7 @@ export default function Header() {
1414 < Slot id = "org.openedx.frontend.slot.header.mobile.v1" />
1515 </ nav >
1616 </ header >
17+ < Slot id = "org.openedx.frontend.slot.header.masqueradeBar.v1" />
1718 < Slot id = "org.openedx.frontend.slot.header.courseNavigationBar.v1" />
1819 </ >
1920 ) ;
Original file line number Diff line number Diff line change @@ -13,7 +13,9 @@ import MobileNavLinks from './mobile/MobileNavLinks';
1313
1414import messages from '../Shell.messages' ;
1515import CourseTabsNavigation from './course-navigation-bar/CourseTabsNavigation' ;
16+ import MasqueradeBar from './masquerade-bar/MasqueradeBar' ;
1617import { isCourseNavigationRoute } from './course-navigation-bar/utils' ;
18+ import { isMasqueradeBarRoute } from './masquerade-bar/utils' ;
1719import { appId } from './constants' ;
1820import './app.scss' ;
1921
@@ -147,6 +149,15 @@ const config: App = {
147149 condition : {
148150 callback : ( ) => isCourseNavigationRoute ( ) ,
149151 }
152+ } ,
153+ {
154+ slotId : 'org.openedx.frontend.slot.header.masqueradeBar.v1' ,
155+ id : 'org.openedx.frontend.widget.header.masqueradeBar.v1' ,
156+ op : WidgetOperationTypes . APPEND ,
157+ component : MasqueradeBar ,
158+ condition : {
159+ callback : ( ) => isMasqueradeBarRoute ( ) ,
160+ }
150161 }
151162 ]
152163} ;
Original file line number Diff line number Diff line change 11export const appId = 'org.openedx.frontend.app.header' ;
22export const providesCourseNavigationRolesId = 'org.openedx.frontend.provides.courseNavigationRoles.v1' ;
3+ export const providesMasqueradeBarRolesId = 'org.openedx.frontend.provides.masqueradeBarRoles.v1' ;
Original file line number Diff line number Diff line change 1+ const MasqueradeBar = ( ) => < div > </ div > ;
2+
3+ export default MasqueradeBar ;
Original file line number Diff line number Diff line change 1+ import { defineMessages } from '../../../runtime' ;
2+
3+ const messages = defineMessages ( {
4+ titleViewCourseIn : {
5+ id : 'masqueradeBar.viewCourse' ,
6+ defaultMessage : 'View course in:' ,
7+ description : 'Button to view the course in the studio' ,
8+ } ,
9+ titleStudio : {
10+ id : 'masqueradeBar.studio' ,
11+ defaultMessage : 'Studio' ,
12+ description : 'Button to view in studio' ,
13+ } ,
14+ titleInsights : {
15+ id : 'masqueradeBar.insights' ,
16+ defaultMessage : 'Insights' ,
17+ description : 'Button Insights' ,
18+ } ,
19+ } ) ;
20+
21+ export default messages ;
Original file line number Diff line number Diff line change 1+ import { getActiveRoles , getProvidesAsStrings } from '../../../runtime' ;
2+ import { providesMasqueradeBarRolesId } from '../constants' ;
3+
4+ /*
5+ * Collects route role strings from all apps that opted into the course
6+ * navigation bar feature. Each app declares its roles as a string array:
7+ *
8+ * provides: {
9+ * [providesMasqueradeBarRolesId]: ['org.openedx.frontend.role.learning'],
10+ * }
11+ */
12+ function getMasqueradeBarRoles ( ) : string [ ] {
13+ return getProvidesAsStrings ( providesMasqueradeBarRolesId ) ;
14+ }
15+
16+ export function isMasqueradeBarRoute ( ) : boolean {
17+ const activeRoles = getActiveRoles ( ) ;
18+ return getMasqueradeBarRoles ( ) . some ( role => activeRoles . includes ( role ) ) ;
19+ }
You can’t perform that action at this time.
0 commit comments