Skip to content

Commit 0c7526b

Browse files
committed
Disable create course when under exam mode, hide exam mode toggle when not an official course, remove exam mode toggle when creating new course
1 parent 2d837c1 commit 0c7526b

File tree

6 files changed

+28
-30
lines changed

6 files changed

+28
-30
lines changed

src/commons/application/types/SessionTypes.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ export type SessionState = {
4444
readonly sourceVariant?: Variant;
4545
readonly moduleHelpText?: string;
4646
readonly assetsPrefix?: string;
47+
readonly isOfficialCourse?: boolean;
4748

4849
readonly assessmentConfigurations?: AssessmentConfiguration[];
4950
readonly userCourseRegistrations?: AdminPanelCourseRegistration[];
@@ -111,6 +112,7 @@ export type CourseConfiguration = {
111112
sourceVariant: Variant;
112113
moduleHelpText: string;
113114
assetsPrefix: string;
115+
isOfficialCourse: boolean;
114116
};
115117

116118
export type AdminPanelCourseRegistration = {

src/commons/dropdown/Dropdown.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ const Dropdown: React.FC = () => {
2424

2525
const { t } = useTranslation('commons', { keyPrefix: 'dropdown' });
2626

27-
const { isLoggedIn, name, courses, courseId } = useSession();
27+
const { isLoggedIn, name, courses, courseId, enableExamMode } = useSession();
2828
const dispatch = useDispatch();
2929
const handleLogOut = () => dispatch(logOut());
3030

@@ -49,9 +49,10 @@ const Dropdown: React.FC = () => {
4949
<MenuItem icon={IconNames.PROPERTIES} onClick={toggleMyCoursesOpen} text={t('My Courses')} />
5050
) : null;
5151

52-
const createCourse = isLoggedIn ? (
53-
<MenuItem icon={IconNames.ADD} onClick={toggleCreateCourseOpen} text={t('Create Course')} />
54-
) : null;
52+
const createCourse =
53+
isLoggedIn && !enableExamMode ? (
54+
<MenuItem icon={IconNames.ADD} onClick={toggleCreateCourseOpen} text={t('Create Course')} />
55+
) : null;
5556

5657
const logout = isLoggedIn ? (
5758
<MenuItem icon={IconNames.LOG_OUT} text={t('Logout')} onClick={handleLogOut} />

src/commons/dropdown/DropdownCreateCourse.tsx

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -235,18 +235,6 @@ const DropdownCreateCourse: React.FC<Props> = props => {
235235
})
236236
}
237237
/>
238-
239-
<Switch
240-
checked={courseConfig.enableExamMode}
241-
inline
242-
label="Enable Exam Mode"
243-
onChange={e =>
244-
setCourseConfig({
245-
...courseConfig,
246-
enableExamMode: (e.target as HTMLInputElement).checked
247-
})
248-
}
249-
/>
250238
</div>
251239
</div>
252240
<div>

src/commons/mocks/UserMocks.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -377,7 +377,8 @@ export const mockCourseConfigurations: CourseConfiguration[] = [
377377
sourceChapter: Chapter.SOURCE_1,
378378
sourceVariant: Variant.DEFAULT,
379379
moduleHelpText: '',
380-
assetsPrefix: ''
380+
assetsPrefix: '',
381+
isOfficialCourse: false
381382
},
382383
{
383384
courseName: `CS2040S Data Structures and Algorithms (AY20/21 Sem 2)`,
@@ -391,7 +392,8 @@ export const mockCourseConfigurations: CourseConfiguration[] = [
391392
sourceChapter: Chapter.SOURCE_2,
392393
sourceVariant: Variant.DEFAULT,
393394
moduleHelpText: 'Help Text!',
394-
assetsPrefix: ''
395+
assetsPrefix: '',
396+
isOfficialCourse: false
395397
}
396398
];
397399

src/pages/academy/adminPanel/AdminPanel.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,8 @@ const AdminPanel: React.FC = () => {
6464
enableSourcecast: session.enableSourcecast,
6565
enableStories: session.enableStories,
6666
enableExamMode: session.enableExamMode,
67-
moduleHelpText: session.moduleHelpText
67+
moduleHelpText: session.moduleHelpText,
68+
isOfficialCourse: session.isOfficialCourse
6869
});
6970
}, [
7071
session.courseName,
@@ -75,6 +76,7 @@ const AdminPanel: React.FC = () => {
7576
session.enableStories,
7677
session.enableExamMode,
7778
session.moduleHelpText,
79+
session.isOfficialCourse,
7880
session.viewable
7981
]);
8082

src/pages/academy/adminPanel/subcomponents/CourseConfigPanel.tsx

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ const CourseConfigPanel: React.FC<Props> = props => {
3939
enableSourcecast,
4040
enableStories,
4141
enableExamMode,
42-
moduleHelpText
42+
moduleHelpText,
43+
isOfficialCourse
4344
} = props.courseConfiguration;
4445

4546
const writePanel = (
@@ -187,16 +188,18 @@ const CourseConfigPanel: React.FC<Props> = props => {
187188
})
188189
}
189190
/>
190-
<Switch
191-
checked={enableExamMode}
192-
label="Enable Exam Mode"
193-
onChange={e =>
194-
props.setCourseConfiguration({
195-
...props.courseConfiguration,
196-
enableExamMode: (e.target as HTMLInputElement).checked
197-
})
198-
}
199-
/>
191+
{isOfficialCourse && (
192+
<Switch
193+
checked={enableExamMode}
194+
label="Enable Exam Mode"
195+
onChange={e =>
196+
props.setCourseConfiguration({
197+
...props.courseConfiguration,
198+
enableExamMode: (e.target as HTMLInputElement).checked
199+
})
200+
}
201+
/>
202+
)}
200203
</div>
201204
</div>
202205
</div>

0 commit comments

Comments
 (0)