Skip to content

Commit 1896819

Browse files
committed
Merge branch 'master' into rpenido/fal-4068/add-unit-collections-support
2 parents 604d19f + a43027b commit 1896819

95 files changed

Lines changed: 1985 additions & 628 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

package-lock.json

Lines changed: 15 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
"@openedx-plugins/course-app-wiki": "file:plugins/course-apps/wiki",
6161
"@openedx-plugins/course-app-xpert_unit_summary": "file:plugins/course-apps/xpert_unit_summary",
6262
"@openedx/frontend-build": "^14.3.3",
63+
"@openedx/frontend-slot-footer": "^1.2.0",
6364
"@openedx/frontend-plugin-framework": "^1.6.0",
6465
"@openedx/paragon": "^22.16.0",
6566
"@redux-devtools/extension": "^3.3.0",

src/CourseAuthoringPage.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { useDispatch, useSelector } from 'react-redux';
55
import {
66
useLocation,
77
} from 'react-router-dom';
8-
import { StudioFooter } from '@edx/frontend-component-footer';
8+
import { StudioFooterSlot } from '@openedx/frontend-slot-footer';
99
import Header from './header';
1010
import { fetchCourseDetail, fetchWaffleFlags } from './data/thunks';
1111
import { useModel } from './generic/model-store';
@@ -66,7 +66,7 @@ const CourseAuthoringPage = ({ courseId, children }) => {
6666
)
6767
)}
6868
{children}
69-
{!inProgress && !isEditor && <StudioFooter />}
69+
{!inProgress && !isEditor && <StudioFooterSlot />}
7070
</div>
7171
);
7272
};

src/CourseAuthoringRoutes.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import ScheduleAndDetails from './schedule-and-details';
1717
import { GradingSettings } from './grading-settings';
1818
import CourseTeam from './course-team/CourseTeam';
1919
import { CourseUpdates } from './course-updates';
20-
import { CourseUnit, IframeProvider } from './course-unit';
20+
import { CourseUnit } from './course-unit';
2121
import { Certificates } from './certificates';
2222
import CourseExportPage from './export-page/CourseExportPage';
2323
import CourseOptimizerPage from './optimizer-page/CourseOptimizerPage';
@@ -26,6 +26,7 @@ import { DECODED_ROUTES } from './constants';
2626
import CourseChecklist from './course-checklist';
2727
import GroupConfigurations from './group-configurations';
2828
import { CourseLibraries } from './course-libraries';
29+
import { IframeProvider } from './generic/hooks/context/iFrameContext';
2930

3031
/**
3132
* As of this writing, these routes are mounted at a path prefixed with the following:

src/accessibility-page/AccessibilityPage.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React from 'react';
22
import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
33
import { Helmet } from 'react-helmet';
44
import { Container } from '@openedx/paragon';
5-
import { StudioFooter } from '@edx/frontend-component-footer';
5+
import { StudioFooterSlot } from '@openedx/frontend-slot-footer';
66

77
import Header from '../header';
88
import messages from './messages';
@@ -29,7 +29,7 @@ const AccessibilityPage = ({
2929
<AccessibilityBody {...{ email, communityAccessibilityLink }} />
3030
<AccessibilityForm accessibilityEmail={email} />
3131
</Container>
32-
<StudioFooter />
32+
<StudioFooterSlot />
3333
</>
3434
);
3535
};

src/constants.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,3 +92,17 @@ export const REGEX_RULES = {
9292
export const IFRAME_FEATURE_POLICY = (
9393
'microphone *; camera *; midi *; geolocation *; encrypted-media *; clipboard-write *'
9494
);
95+
96+
export const iframeStateKeys = {
97+
iframeHeight: 'iframeHeight',
98+
hasLoaded: 'hasLoaded',
99+
showError: 'showError',
100+
windowTopOffset: 'windowTopOffset',
101+
};
102+
103+
export const iframeMessageTypes = {
104+
modal: 'plugin.modal',
105+
resize: 'plugin.resize',
106+
videoFullScreen: 'plugin.videoFullScreen',
107+
xblockEvent: 'xblock-event',
108+
};

src/course-outline/CourseOutline.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import {
2222
verticalListSortingStrategy,
2323
} from '@dnd-kit/sortable';
2424
import { useLocation } from 'react-router-dom';
25+
import { CourseAuthoringOutlineSidebarSlot } from '../plugin-slots/CourseAuthoringOutlineSidebarSlot';
2526

2627
import { LoadingSpinner } from '../generic/Loading';
2728
import { getProcessingNotification } from '../generic/processing-notification/data/selectors';
@@ -35,7 +36,6 @@ import AlertMessage from '../generic/alert-message';
3536
import getPageHeadTitle from '../generic/utils';
3637
import { getCurrentItem, getProctoredExamsFlag } from './data/selectors';
3738
import { COURSE_BLOCK_NAMES } from './constants';
38-
import OutlineSideBar from './outline-sidebar/OutlineSidebar';
3939
import StatusBar from './status-bar/StatusBar';
4040
import EnableHighlightsModal from './enable-highlights-modal/EnableHighlightsModal';
4141
import SectionCard from './section-card/SectionCard';
@@ -453,7 +453,7 @@ const CourseOutline = ({ courseId }) => {
453453
</article>
454454
</Layout.Element>
455455
<Layout.Element>
456-
<OutlineSideBar courseId={courseId} />
456+
<CourseAuthoringOutlineSidebarSlot courseId={courseId} />
457457
</Layout.Element>
458458
</Layout>
459459
<EnableHighlightsModal

src/course-outline/outline-sidebar/OutlineSidebar.jsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ const OutlineSideBar = ({ courseId }) => {
2626

2727
return (
2828
<HelpSidebar
29-
intl={intl}
3029
courseId={courseId}
3130
showOtherSettings={false}
3231
className="outline-sidebar mt-4"

src/course-rerun/index.jsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ import {
77
ActionRow,
88
Button,
99
} from '@openedx/paragon';
10-
import { StudioFooter } from '@edx/frontend-component-footer';
10+
import { StudioFooterSlot } from '@openedx/frontend-slot-footer';
11+
1112
import { useNavigate, useParams } from 'react-router-dom';
1213

1314
import Header from '../header';
@@ -88,7 +89,7 @@ const CourseRerun = () => {
8889
isQueryPending={savingStatus === RequestStatus.PENDING}
8990
/>
9091
</div>
91-
<StudioFooter />
92+
<StudioFooterSlot />
9293
</>
9394
);
9495
};

src/course-unit/CourseUnit.jsx

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ import { useParams } from 'react-router-dom';
55
import {
66
Container, Layout, Stack, Button, TransitionReplace,
77
} from '@openedx/paragon';
8-
import { getConfig } from '@edx/frontend-platform';
9-
import { useIntl, injectIntl } from '@edx/frontend-platform/i18n';
8+
import { useIntl } from '@edx/frontend-platform/i18n';
109
import {
1110
Warning as WarningIcon,
1211
CheckCircle as CheckCircleIcon,
1312
} from '@openedx/paragon/icons';
13+
import { CourseAuthoringUnitSidebarSlot } from '../plugin-slots/CourseAuthoringUnitSidebarSlot';
1414

1515
import { getProcessingNotification } from '../generic/processing-notification/data/selectors';
1616
import SubHeader from '../generic/sub-header/SubHeader';
@@ -30,9 +30,6 @@ import Sidebar from './sidebar';
3030
import SplitTestSidebarInfo from './sidebar/SplitTestSidebarInfo';
3131
import { useCourseUnit, useLayoutGrid, useScrollToLastPosition } from './hooks';
3232
import messages from './messages';
33-
import PublishControls from './sidebar/PublishControls';
34-
import LocationInfo from './sidebar/LocationInfo';
35-
import TagsSidebarControls from '../content-tags-drawer/tags-sidebar-controls';
3633
import { PasteNotificationAlert } from './clipboard';
3734
import XBlockContainerIframe from './xblock-container-iframe';
3835
import MoveModal from './move-modal';
@@ -225,19 +222,11 @@ const CourseUnit = ({ courseId }) => {
225222
<Layout.Element>
226223
<Stack gap={3}>
227224
{isUnitVerticalType && (
228-
<>
229-
<Sidebar data-testid="course-unit-sidebar">
230-
<PublishControls blockId={blockId} />
231-
</Sidebar>
232-
{getConfig().ENABLE_TAGGING_TAXONOMY_PAGES === 'true' && (
233-
<Sidebar className="tags-sidebar">
234-
<TagsSidebarControls />
235-
</Sidebar>
236-
)}
237-
<Sidebar data-testid="course-unit-location-sidebar">
238-
<LocationInfo />
239-
</Sidebar>
240-
</>
225+
<CourseAuthoringUnitSidebarSlot
226+
courseId={courseId}
227+
blockId={blockId}
228+
unitTitle={unitTitle}
229+
/>
241230
)}
242231
{isSplitTestType && (
243232
<Sidebar data-testid="course-split-test-sidebar">
@@ -267,4 +256,4 @@ CourseUnit.propTypes = {
267256
courseId: PropTypes.string.isRequired,
268257
};
269258

270-
export default injectIntl(CourseUnit);
259+
export default CourseUnit;

0 commit comments

Comments
 (0)