Skip to content

Redesign: rename gameboards to question decks #1381

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 14 commits into from
Apr 14, 2025
Merged
2 changes: 1 addition & 1 deletion src/app/components/elements/ConceptGameboardButton.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,6 @@ export interface ConceptGameboardButtonProps {
// Currently PHY doesn't use this
export const ConceptGameboardButton = ({conceptId, className} : ConceptGameboardButtonProps) => {
return <Link className={classNames(className, "btn btn-sm btn-primary")} to={`${PATHS.GAMEBOARD_BUILDER}?concepts=${conceptId}`} >
Generate a {siteSpecific("gameboard", "quiz")}
Generate a {siteSpecific("question deck", "quiz")}
</Link>;
};
4 changes: 2 additions & 2 deletions src/app/components/elements/StudentDashboard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -195,8 +195,8 @@ const MyIsaacPanel = ({assignmentsCount, quizzesCount}: MyIsaacPanelProps) => {
return <div className='w-100 dashboard-panel'>
<h4>More in My Isaac</h4>
<div className="d-flex flex-column">
<Link to="/my_gameboards" className="panel-my-isaac-link">
My question packs
<Link to={PATHS.MY_GAMEBOARDS} className="panel-my-isaac-link">
My question decks
</Link>
<Link to="/assignments" className="panel-my-isaac-link">
My assignments
Expand Down
6 changes: 3 additions & 3 deletions src/app/components/elements/cards/BoardCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ const HexagonGroupsButton = ({toggleAssignModal, boardSubjects, assignees, id}:
{isDefined(assignees) &&
<UncontrolledTooltip placement={"top"} target={"#" + id}>{assignees.length === 0 ?
"No groups have been assigned."
: (`${siteSpecific("Gameboard", "Quiz")} assigned to: ` + assignees.map(g => g.groupName).join(", "))}
: (`${siteSpecific("Question Deck", "Quiz")} assigned to: ` + assignees.map(g => g.groupName).join(", "))}
</UncontrolledTooltip>}
</span>
</div>
Expand Down Expand Up @@ -159,9 +159,9 @@ export const BoardCard = ({user, board, boardView, assignees, toggleAssignModal,
function confirmDeleteBoard() {
if (hasAssignedGroups) {
if (isAdminOrEventManager(user)) {
alert(`Warning: You currently have groups assigned to this gameboard. If you delete this your groups will still be assigned but you won't be able to unassign them or see the ${siteSpecific("gameboard", "quiz")} in your assigned ${siteSpecific("gameboards", "quizzes")} or '${siteSpecific("My gameboards", "My quizzes")}' page.`);
alert(`Warning: You currently have groups assigned to this ${siteSpecific("question deck", "quiz")}. If you delete this your groups will still be assigned but you won't be able to unassign them or see the ${siteSpecific("question deck", "quiz")} in your assigned ${siteSpecific("question decks", "quizzes")} or '${siteSpecific("My question decks", "My quizzes")}' page.`);
} else {
dispatch(showErrorToast(`${siteSpecific("Gameboard", "Quiz")} Deletion Not Allowed`, `You have groups assigned to this gameboard. To delete this ${siteSpecific("gameboard", "quiz")}, you must unassign all groups.`));
dispatch(showErrorToast(`${siteSpecific("Question Deck", "Quiz")} Deletion Not Allowed`, `You have groups assigned to this gameboard. To delete this ${siteSpecific("question deck", "quiz")}, you must unassign all groups.`));
return;
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/app/components/elements/inputs/UserContextPicker.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import classNames from "classnames";
const contextExplanationMap: {[key in CONTEXT_SOURCE]: string} = {
[CONTEXT_SOURCE.TRANSIENT]: "these context picker settings",
[CONTEXT_SOURCE.REGISTERED]: "your account settings",
[CONTEXT_SOURCE.GAMEBOARD]: `the ${siteSpecific("gameboard", "quiz")} settings`,
[CONTEXT_SOURCE.GAMEBOARD]: `the ${siteSpecific("question deck", "quiz")} settings`,
[CONTEXT_SOURCE.DEFAULT]: `${SITE_TITLE_SHORT}'s default settings`,
[CONTEXT_SOURCE.NOT_IMPLEMENTED]: "the site's settings"
};
Expand Down
6 changes: 3 additions & 3 deletions src/app/components/elements/layout/SidebarLayout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -683,7 +683,7 @@ export const MyGameboardsSidebar = (props: MyGameboardsSidebarProps) => {

return <ContentSidebar {...rest} className={classNames(rest.className, "pt-0")}>
{above["lg"](deviceSize) && <div className="section-divider"/>}
<h5>Search gameboards</h5>
<h5>Search question decks</h5>
<Input
className='search--filter-input my-3'
type="search" value={boardTitleFilter || ""}
Expand Down Expand Up @@ -735,7 +735,7 @@ export const SetAssignmentsSidebar = (props: SetAssignmentsSidebarProps) => {

return <ContentSidebar {...rest} className={classNames(rest.className, "pt-0")}>
{above["lg"](deviceSize) && <div className="section-divider"/>}
<h5>Search gameboards</h5>
<h5>Search question decks</h5>
<Input
className='search--filter-input my-3'
type="search" value={boardTitleFilter || ""}
Expand Down Expand Up @@ -770,7 +770,7 @@ export const SetAssignmentsSidebar = (props: SetAssignmentsSidebarProps) => {
).map(order => <option key={order} value={order}>{BOARD_ORDER_NAMES[order]}</option>)}
</Input>
{sortDisabled && <div className="small text-muted mt-2">
Sorting is disabled if some gameboards are hidden. Increase the display limit to show all gameboards.
Sorting is disabled if some question decks are hidden. Increase the display limit to show all question decks.
</div>}
</ContentSidebar>;
};
Expand Down
6 changes: 3 additions & 3 deletions src/app/components/elements/list-groups/ListView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import React from "react";
import { AbstractListViewItem, AbstractListViewItemProps, ListViewTagProps } from "./AbstractListViewItem";
import { ShortcutResponse, ViewingContext } from "../../../../IsaacAppTypes";
import { determineAudienceViews } from "../../../services/userViewingContext";
import { DOCUMENT_TYPE, documentTypePathPrefix, getThemeFromContextAndTags, SEARCH_RESULT_TYPE, Subject, TAG_ID, TAG_LEVEL, tags } from "../../../services";
import { DOCUMENT_TYPE, documentTypePathPrefix, getThemeFromContextAndTags, PATHS, SEARCH_RESULT_TYPE, Subject, TAG_ID, TAG_LEVEL, tags } from "../../../services";
import { ListGroup, ListGroupItem, ListGroupItemProps, ListGroupProps } from "reactstrap";
import { TitleIconProps } from "../PageTitle";
import { AffixButton } from "../AffixButton";
Expand Down Expand Up @@ -109,7 +109,7 @@ export const QuizListViewItem = ({item, isQuizSetter, ...rest}: {item: QuizSumma
export const QuestionPackListViewItem = ({item, ...rest}: {item: ShortcutResponse}) => {
const breadcrumb = tags.getByIdsAsHierarchy((item.tags || []) as TAG_ID[]).map(tag => tag.title);
const itemSubject = tags.getSpecifiedTag(TAG_LEVEL.subject, item.tags as TAG_ID[])?.id as Subject;
const url = `/gameboards#${item.id}`;
const url = `${PATHS.GAMEBOARD}#${item.id}`;

return <AbstractListViewItem
icon={{type: "hex", icon: "icon-question", size: "lg"}}
Expand All @@ -126,7 +126,7 @@ export const QuickQuizListViewItem = ({item, ...rest}: {item: ShortcutResponse})
const breadcrumb = tags.getByIdsAsHierarchy((item.tags || []) as TAG_ID[]).map(tag => tag.title);
const audienceViews: ViewingContext[] = determineAudienceViews(item.audience);
const itemSubject = tags.getSpecifiedTag(TAG_LEVEL.subject, item.tags as TAG_ID[])?.id as Subject;
const url = `/gameboards#${item.id}`;
const url = `${PATHS.GAMEBOARD}#${item.id}`;

return <AbstractListViewItem
icon={{type: "hex", icon: "icon-question", size: "lg"}}
Expand Down
8 changes: 4 additions & 4 deletions src/app/components/elements/modals/GameboardCreatedModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {PATHS, siteSpecific} from "../../../services";
const GameboardNotFound = ({errorMessage}: {errorMessage: string}) =>
<Row className="mb-2">
<Label className="mx-3">
Your {siteSpecific("gameboard", "quiz")} was not successfully created.
Your {siteSpecific("question deck", "quiz")} was not successfully created.
<br/>
{errorMessage}
</Label>
Expand All @@ -18,7 +18,7 @@ const GameboardNotFound = ({errorMessage}: {errorMessage: string}) =>
const GameboardSuccessfullyCreated = () =>
<Row className="mb-2">
<Label className="mx-3">
Your {siteSpecific("gameboard", "quiz")} has been created. You can now set it as an assignment, create another {siteSpecific("board", "quiz")} or view all of your {siteSpecific("boards", "quizzes")}.
Your {siteSpecific("question deck", "quiz")} has been created. You can now set it as an assignment, create another {siteSpecific("board", "quiz")} or view all of your {siteSpecific("boards", "quizzes")}.
</Label>
</Row>;

Expand All @@ -39,15 +39,15 @@ const GameboardCreatedModalButtons = ({gameboardId, resetBuilder}: {gameboardId:
className="w-100 h-100" color="primary" outline
onClick={() => {resetBuilder(); closeModal();}}
>
Create another {siteSpecific("board", "quiz")}
Create another {siteSpecific("question deck", "quiz")}
</Button>
</Col>
<Col sm={12} lg={4} className="mb-1">
<Button
className="w-100 h-100" tag={Link} to={PATHS.SET_ASSIGNMENTS} color="primary" outline
onClick={closeModal}
>
View all of your {siteSpecific("boards", "quizzes")}
View all of your {siteSpecific("question decks", "quizzes")}
</Button>
</Col>
</Row>;
Expand Down
2 changes: 1 addition & 1 deletion src/app/components/elements/modals/QuestionSearchModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ export const QuestionSearchModal = (
<div>
<Input
type="button"
value={siteSpecific("Add Selections to Gameboard", "Add selections to quiz")}
value={siteSpecific("Add Selections to Question Deck", "Add selections to quiz")}
disabled={isEqual(new Set(modalQuestions.selectedQuestions.keys()), new Set(currentQuestions.selectedQuestions.keys()))}
className={classNames("btn w-100", siteSpecific("btn-keyline", "btn-secondary border-0"))}
onClick={() => {
Expand Down
4 changes: 2 additions & 2 deletions src/app/components/elements/svg/DifficultyFilter.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ export function DifficultyFilter({difficultyOptions, difficulties, setDifficulti
tabIndex={0} onClick={selectValue} onKeyPress={ifKeyIsEnter(selectValue)}
>
<title>
{`${isSelected ? "Remove" : "Add"} difficulty ${difficultyOption.label} ${isSelected ? "from" : "to"} your ${siteSpecific("gameboard", "quiz")} filter`}
{`${isSelected ? "Remove" : "Add"} difficulty ${difficultyOption.label} ${isSelected ? "from" : "to"} your ${siteSpecific("question deck", "quiz")} filter`}
</title>
</Hexagon>
{[1, 0, -1].slice(0, getDifficultyLevel(difficultyOption.value)).map((n) =>
Expand Down Expand Up @@ -89,7 +89,7 @@ export function DifficultyFilter({difficultyOptions, difficulties, setDifficulti
tabIndex={0} onClick={selectValue} onKeyPress={ifKeyIsEnter(selectValue)}
>
<title>
{`${isSelected ? "Remove" : "Add"} difficulty ${difficultyOption.label} ${isSelected ? "from" : "to"} your ${siteSpecific("gameboard", "quiz")} filter`}
{`${isSelected ? "Remove" : "Add"} difficulty ${difficultyOption.label} ${isSelected ? "from" : "to"} your ${siteSpecific("question deck", "quiz")} filter`}
</title>
</Rectangle>
{[0, 1, 2].slice(0, getDifficultyLevel(difficultyOption.value)).map((n) =>
Expand Down
2 changes: 1 addition & 1 deletion src/app/components/handlers/AddGameboard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,6 @@ export const AddGameboard = ({user}: {user: PotentialUser}) => {
}, [dispatch, saveGameboard, gameboardId]);

return <Container className={"text-center"}>
<IsaacSpinner size={"lg"} displayText={`Adding ${siteSpecific("gameboard", "quiz")}...`}/>
<IsaacSpinner size={"lg"} displayText={`Adding ${siteSpecific("question deck", "quiz")}...`}/>
</Container>;
};
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import React from "react";
import {SeguePageDTO} from "../../../IsaacApiTypes";
import {RenderNothing} from "../elements/RenderNothing";
import {goToSupersededByQuestion, selectors, useAppDispatch, useAppSelector} from "../../state";
import {isAQuestionLikeDoc, isStudent, isTutorOrAbove} from "../../services";
import {isAQuestionLikeDoc, isStudent, isTutorOrAbove, siteSpecific} from "../../services";
import { UncontrolledTooltip, Alert, Button } from "reactstrap";

export function SupersededDeprecatedWarningBanner({doc}: {doc: SeguePageDTO}) {
Expand Down Expand Up @@ -31,7 +31,7 @@ export function SupersededDeprecatedWarningBanner({doc}: {doc: SeguePageDTO}) {
<div className="text-start">
{supersededBy && <>
We periodically update questions into new formats.<br />
If this question appears on one of your gameboards, you may want to update the gameboard.<br />
If this question appears on one of your <>{siteSpecific("question decks", "quizzes")}</>, you may want to update the <>{siteSpecific("question deck", "quiz")}</>.<br />
You can find help for this at Help and support &gt; Teacher Support &gt; Assigning Work.<br /><br />
Students will not see this message, but will see a smaller note at the bottom of the page.{doc.deprecated && <br/>}
</>}
Expand Down
Loading
Loading