From 1696936f3a8f751956bc0a58386f27fb9a0aa5cb Mon Sep 17 00:00:00 2001 From: Rida Hummdan Date: Mon, 12 Aug 2024 11:11:23 -0700 Subject: [PATCH] Create the AssignmentTeacherView component closes EGG-5 flag=assignment_enhancements_teacher_view Test Plan: - Go to RootAccount -> Settings -> Feature Options - Enable the "Assignment Enhancements Teacher View" feature flag. - Select a course and go to its assignments. - Select an individual assignment (not one that uses an external tool) - Ensure that the assignment name is displayed at the top left of the page. - Nothing else will be displayed on the page. It is still in the works. Change-Id: I84fc911730d8fb5d925173b33e58594058d6a8a0 Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/354662 Tested-by: Service Cloud Jenkins Reviewed-by: Angela Gomba QA-Review: Angela Gomba Product-Review: Sam Garza --- app/controllers/assignments_controller.rb | 8 + .../assignment_enhancements_teacher_view.scss | 20 +++ .../_teacher_view.scss | 0 .../assignments_controller_spec.rb | 12 ++ ...ge_v2.rb => teacher_assignment_page_v2.rb} | 10 +- .../assignments_v2/teacher_assignment_spec.rb | 58 +++++++ ui/featureBundles.ts | 2 + .../graphql/AssignmentTeacherTypes.ts | 138 ++++++++++++++++ .../graphql/Mutations.ts | 31 ++++ .../graphql/Queries.ts | 147 ++++++++++++++++++ ui/features/assignments_show_teacher/index.ts | 25 +++ .../assignments_show_teacher/package.json | 2 +- .../react/components/AssignmentHeader.tsx | 37 +++++ .../react/components/TeacherQuery.tsx | 50 ++++++ .../react/components/TeacherSavedView.tsx | 31 ++++ .../__tests__/AssignmentHeader.test.tsx | 31 ++++ .../assignments_show_teacher/react/index.tsx | 37 +++++ .../react/test-utils.ts | 84 ++++++++++ .../index.js | 0 .../package.json | 6 + .../react/AssignentFieldValidator.js | 0 .../__tests__/AssignentFieldValidator.test.js | 0 .../react/api.js | 0 .../react/assignmentData.js | 0 .../components/AddHorizontalRuleButton.jsx | 0 .../components/AssignmentDescription.jsx | 0 .../react/components/ConfirmDialog.jsx | 0 .../react/components/ContentTabs.jsx | 0 .../react/components/Details.jsx | 0 .../components/Editables/AssignmentDate.jsx | 0 .../components/Editables/AssignmentGroup.jsx | 0 .../Editables/AssignmentModules.jsx | 0 .../components/Editables/AssignmentName.jsx | 0 .../components/Editables/AssignmentPoints.jsx | 0 .../components/Editables/AssignmentType.jsx | 0 .../components/Editables/EditableDateTime.jsx | 0 .../components/Editables/EditableHeading.jsx | 0 .../components/Editables/EditableNumber.jsx | 0 .../components/Editables/EditableRichText.jsx | 0 .../components/Editables/SelectableText.jsx | 0 .../__tests__/AssignmentDate.test.jsx | 0 .../__tests__/AssignmentGroup.test.jsx | 0 .../__tests__/AssignmentModules.test.jsx | 0 .../__tests__/AssignmentName.test.jsx | 0 .../__tests__/AssignmentPoints.test.jsx | 0 .../__tests__/AssignmentType.test.jsx | 0 .../__tests__/EditableDateTime.test.jsx | 0 .../__tests__/EditableHeading.test.jsx | 0 .../__tests__/EditableNumber.test.jsx | 0 .../__tests__/EditableRichText.test.jsx | 0 .../__tests__/SelectableText.test.jsx | 0 .../react/components/Header.jsx | 0 .../components/MessageStudentsWhoDialog.jsx | 0 .../components/MessageStudentsWhoForm.jsx | 0 .../components/Overrides/EveryoneElse.jsx | 0 .../components/Overrides/ExternalToolType.jsx | 0 .../react/components/Overrides/FileType.jsx | 0 .../components/Overrides/NonCanvasType.jsx | 0 .../components/Overrides/OperatorType.jsx | 0 .../react/components/Overrides/Override.jsx | 0 .../components/Overrides/OverrideAssignTo.jsx | 0 .../components/Overrides/OverrideAttempts.jsx | 0 .../components/Overrides/OverrideDates.jsx | 0 .../components/Overrides/OverrideDetail.jsx | 0 .../Overrides/OverrideSubmissionTypes.jsx | 0 .../components/Overrides/OverrideSummary.jsx | 0 .../react/components/Overrides/Overrides.jsx | 0 .../react/components/Overrides/SimpleType.jsx | 0 .../components/Overrides/SubmitOptionShape.js | 0 .../Overrides/__tests__/EveryoneElse.test.jsx | 0 .../Overrides/__tests__/Override.test.jsx | 0 .../__tests__/OverrideAssignTo.test.jsx | 0 .../__tests__/OverrideAttempts.test.jsx | 0 .../__tests__/OverrideDates.test.jsx | 0 .../__tests__/OverrideDetail.test.jsx | 0 .../OverrideSubmissionTypes.test.jsx | 0 .../__tests__/OverrideSummary.test.jsx | 0 .../react/components/StudentsTab/Filters.jsx | 0 .../StudentsTab/StudentSearchQuery.jsx | 0 .../components/StudentsTab/StudentTray.jsx | 0 .../StudentsTab/StudentsSearcher.jsx | 0 .../components/StudentsTab/StudentsTable.jsx | 0 .../StudentsTab/__tests__/Filters.test.jsx | 0 .../__tests__/StudentTray.test.jsx | 0 .../__tests__/StudentsSearcher.test.jsx | 0 .../__tests__/StudentsTable.test.jsx | 0 .../react/components/TeacherFooter.jsx | 0 .../react/components/TeacherQuery.jsx | 0 .../react/components/TeacherView.jsx | 0 .../react/components/TeacherViewContext.jsx | 0 .../react/components/Toolbox.jsx | 0 .../AddHorizontalRuleButton.test.jsx | 0 .../__tests__/AssignmentDescription.test.jsx | 0 .../__tests__/ConfirmDialog.test.jsx | 0 .../components/__tests__/ContentTabs.test.jsx | 0 .../components/__tests__/Details.test.jsx | 0 .../components/__tests__/Header.test.jsx | 0 .../MessageStudentsWhoDialog.test.jsx | 0 .../components/__tests__/TeacherQuery.test.js | 0 .../components/__tests__/TeacherView.test.js | 0 .../components/__tests__/Toolbox.test.jsx | 0 .../__tests__/fixtures/AssignmentMockup.js | 0 .../integration/AssignmentGroup.test.jsx | 0 .../integration/AssignmentModules.test.jsx | 0 .../integration/DeleteDialog.test.js | 0 .../integration/MessageStudentsWho.test.js | 0 .../integration/TeacherView.test.jsx | 0 .../integration/integration-utils.jsx | 0 .../react/index.jsx | 0 .../react/test-utils.js | 0 110 files changed, 726 insertions(+), 3 deletions(-) create mode 100644 app/stylesheets/bundles/assignment_enhancements_teacher_view.scss create mode 100644 app/stylesheets/pages/assignment_enhancements_teacher_view/_teacher_view.scss rename spec/selenium/assignments_v2/page_objects/{teacher_view_page_v2.rb => teacher_assignment_page_v2.rb} (82%) create mode 100644 spec/selenium/assignments_v2/teacher_assignment_spec.rb create mode 100644 ui/features/assignments_show_teacher/graphql/AssignmentTeacherTypes.ts create mode 100644 ui/features/assignments_show_teacher/graphql/Mutations.ts create mode 100644 ui/features/assignments_show_teacher/graphql/Queries.ts create mode 100644 ui/features/assignments_show_teacher/index.ts create mode 100644 ui/features/assignments_show_teacher/react/components/AssignmentHeader.tsx create mode 100644 ui/features/assignments_show_teacher/react/components/TeacherQuery.tsx create mode 100644 ui/features/assignments_show_teacher/react/components/TeacherSavedView.tsx create mode 100644 ui/features/assignments_show_teacher/react/components/__tests__/AssignmentHeader.test.tsx create mode 100644 ui/features/assignments_show_teacher/react/index.tsx create mode 100644 ui/features/assignments_show_teacher/react/test-utils.ts rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/index.js (100%) create mode 100644 ui/features/assignments_show_teacher_deprecated/package.json rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/AssignentFieldValidator.js (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/__tests__/AssignentFieldValidator.test.js (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/api.js (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/assignmentData.js (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/AddHorizontalRuleButton.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/AssignmentDescription.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/ConfirmDialog.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/ContentTabs.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Details.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Editables/AssignmentDate.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Editables/AssignmentGroup.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Editables/AssignmentModules.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Editables/AssignmentName.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Editables/AssignmentPoints.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Editables/AssignmentType.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Editables/EditableDateTime.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Editables/EditableHeading.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Editables/EditableNumber.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Editables/EditableRichText.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Editables/SelectableText.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Editables/__tests__/AssignmentDate.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Editables/__tests__/AssignmentGroup.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Editables/__tests__/AssignmentModules.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Editables/__tests__/AssignmentName.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Editables/__tests__/AssignmentPoints.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Editables/__tests__/AssignmentType.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Editables/__tests__/EditableDateTime.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Editables/__tests__/EditableHeading.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Editables/__tests__/EditableNumber.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Editables/__tests__/EditableRichText.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Editables/__tests__/SelectableText.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Header.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/MessageStudentsWhoDialog.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/MessageStudentsWhoForm.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Overrides/EveryoneElse.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Overrides/ExternalToolType.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Overrides/FileType.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Overrides/NonCanvasType.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Overrides/OperatorType.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Overrides/Override.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Overrides/OverrideAssignTo.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Overrides/OverrideAttempts.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Overrides/OverrideDates.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Overrides/OverrideDetail.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Overrides/OverrideSubmissionTypes.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Overrides/OverrideSummary.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Overrides/Overrides.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Overrides/SimpleType.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Overrides/SubmitOptionShape.js (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Overrides/__tests__/EveryoneElse.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Overrides/__tests__/Override.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Overrides/__tests__/OverrideAssignTo.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Overrides/__tests__/OverrideAttempts.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Overrides/__tests__/OverrideDates.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Overrides/__tests__/OverrideDetail.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Overrides/__tests__/OverrideSubmissionTypes.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Overrides/__tests__/OverrideSummary.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/StudentsTab/Filters.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/StudentsTab/StudentSearchQuery.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/StudentsTab/StudentTray.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/StudentsTab/StudentsSearcher.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/StudentsTab/StudentsTable.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/StudentsTab/__tests__/Filters.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/StudentsTab/__tests__/StudentTray.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/StudentsTab/__tests__/StudentsSearcher.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/StudentsTab/__tests__/StudentsTable.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/TeacherFooter.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/TeacherQuery.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/TeacherView.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/TeacherViewContext.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/Toolbox.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/__tests__/AddHorizontalRuleButton.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/__tests__/AssignmentDescription.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/__tests__/ConfirmDialog.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/__tests__/ContentTabs.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/__tests__/Details.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/__tests__/Header.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/__tests__/MessageStudentsWhoDialog.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/__tests__/TeacherQuery.test.js (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/__tests__/TeacherView.test.js (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/__tests__/Toolbox.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/__tests__/fixtures/AssignmentMockup.js (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/__tests__/integration/AssignmentGroup.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/__tests__/integration/AssignmentModules.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/__tests__/integration/DeleteDialog.test.js (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/__tests__/integration/MessageStudentsWho.test.js (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/__tests__/integration/TeacherView.test.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/components/__tests__/integration/integration-utils.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/index.jsx (100%) rename ui/features/{assignments_show_teacher => assignments_show_teacher_deprecated}/react/test-utils.js (100%) diff --git a/app/controllers/assignments_controller.rb b/app/controllers/assignments_controller.rb index cdb2f39ceeb..9851536def2 100644 --- a/app/controllers/assignments_controller.rb +++ b/app/controllers/assignments_controller.rb @@ -403,6 +403,14 @@ class AssignmentsController < ApplicationController (!params.key?(:assignments_2) || value_to_boolean(params[:assignments_2])) && can_do(@context, @current_user, :read_as_admin) css_bundle :assignments_2_teacher + js_bundle :assignments_show_teacher_deprecated + render html: "", layout: true + return + end + + if @context.root_account.feature_enabled?(:assignment_enhancements_teacher_view) && + can_do(@context, @current_user, :read_as_admin) + css_bundle :assignment_enhancements_teacher_view js_bundle :assignments_show_teacher render html: "", layout: true return diff --git a/app/stylesheets/bundles/assignment_enhancements_teacher_view.scss b/app/stylesheets/bundles/assignment_enhancements_teacher_view.scss new file mode 100644 index 00000000000..a1a09a8f7d5 --- /dev/null +++ b/app/stylesheets/bundles/assignment_enhancements_teacher_view.scss @@ -0,0 +1,20 @@ +/* + * Copyright (C) 2024 - present Instructure, Inc. + * + * This file is part of Canvas. + * + * Canvas is free software: you can redistribute it and/or modify it under + * the terms of the GNU Affero General Public License as published by the Free + * Software Foundation, version 3 of the License. + * + * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more + * details. + * + * You should have received a copy of the GNU Affero General Public License along + * with this program. If not, see . + */ + + @import "base/environment"; + @import "pages/assignment_enhancements_teacher_view/teacher_view.scss"; diff --git a/app/stylesheets/pages/assignment_enhancements_teacher_view/_teacher_view.scss b/app/stylesheets/pages/assignment_enhancements_teacher_view/_teacher_view.scss new file mode 100644 index 00000000000..e69de29bb2d diff --git a/spec/controllers/assignments_controller_spec.rb b/spec/controllers/assignments_controller_spec.rb index 0ecbc7e8aea..6439bd17175 100644 --- a/spec/controllers/assignments_controller_spec.rb +++ b/spec/controllers/assignments_controller_spec.rb @@ -1224,6 +1224,18 @@ describe AssignmentsController do end end + describe "assignment_enhancements_teacher_view" do + before do + @course.root_account.enable_feature!(:assignment_enhancements_teacher_view) + @course.save! + end + + it "does not render the 'old' assignment page layout" do + get :show, params: { course_id: @course.id, id: @assignment.id } + expect(response).not_to render_template("assignments/show") + end + end + it "does not show locked external tool assignments" do user_session(@student) diff --git a/spec/selenium/assignments_v2/page_objects/teacher_view_page_v2.rb b/spec/selenium/assignments_v2/page_objects/teacher_assignment_page_v2.rb similarity index 82% rename from spec/selenium/assignments_v2/page_objects/teacher_view_page_v2.rb rename to spec/selenium/assignments_v2/page_objects/teacher_assignment_page_v2.rb index 8db88a8adb2..757e3d2787f 100644 --- a/spec/selenium/assignments_v2/page_objects/teacher_view_page_v2.rb +++ b/spec/selenium/assignments_v2/page_objects/teacher_assignment_page_v2.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true # -# Copyright (C) 2019 - present Instructure, Inc. +# Copyright (C) 2024 - present Instructure, Inc. # # This file is part of Canvas. # @@ -17,6 +17,8 @@ # You should have received a copy of the GNU Affero General Public License along # with this program. If not, see . +require_relative "../../common" + class TeacherViewPageV2 class << self include SeleniumDependencies @@ -32,11 +34,15 @@ class TeacherViewPageV2 # Methods & Actions def visit(course, assignment) - course.account.enable_feature!(:assignments_2_teacher) + course.account.enable_feature!(:assignment_enhancements_teacher_view) get "/courses/#{course.id}/assignments/#{assignment.id}" wait_for(method: nil, timeout: 1) do assignment_type end end + + def assignment_title(title) + fj("h1:contains(#{title})") + end end end diff --git a/spec/selenium/assignments_v2/teacher_assignment_spec.rb b/spec/selenium/assignments_v2/teacher_assignment_spec.rb new file mode 100644 index 00000000000..59a04be29d2 --- /dev/null +++ b/spec/selenium/assignments_v2/teacher_assignment_spec.rb @@ -0,0 +1,58 @@ +# frozen_string_literal: true + +# +# Copyright (C) 2024 - present Instructure, Inc. +# +# This file is part of Canvas. +# +# Canvas is free software: you can redistribute it and/or modify it under +# the terms of the GNU Affero General Public License as published by the Free +# Software Foundation, version 3 of the License. +# +# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more +# details. +# +# You should have received a copy of the GNU Affero General Public License along +# with this program. If not, see . + +require_relative "page_objects/teacher_assignment_page_v2" +require_relative "../common" +require_relative "../rcs/pages/rce_next_page" + +describe "as a teacher" do + specs_require_sharding + include RCENextPage + include_context "in-process server selenium tests" + + context "on assignments 2 page" do + before(:once) do + Account.default.enable_feature!(:assignment_enhancements_teacher_view) + @course = course_factory(name: "course", active_course: true) + @student = student_in_course(name: "Student", course: @course, enrollment_state: :active).user + @teacher = teacher_in_course(name: "teacher", course: @course, enrollment_state: :active).user + end + + context "assignment details" do + before(:once) do + @assignment = @course.assignments.create!( + name: "assignment", + due_at: 5.days.ago, + points_possible: 10, + submission_types: "online_text_entry" + ) + end + + before do + user_session(@teacher) + TeacherViewPageV2.visit(@course, @assignment) + wait_for_ajaximations + end + + it "shows assignment title" do + expect(TeacherViewPageV2.assignment_title(@assignment.title)).to_not be_nil + end + end + end +end diff --git a/ui/featureBundles.ts b/ui/featureBundles.ts index db7adbbe26f..7967ce9eb2c 100644 --- a/ui/featureBundles.ts +++ b/ui/featureBundles.ts @@ -40,6 +40,8 @@ const featureBundles: { assignment_show: () => import('./features/assignment_show/index'), assignments_peer_reviews: () => import('./features/assignments_peer_reviews/index'), assignments_show_student: () => import('./features/assignments_show_student/index'), + assignments_show_teacher_deprecated: () => + import('./features/assignments_show_teacher_deprecated/index'), assignments_show_teacher: () => import('./features/assignments_show_teacher/index'), authentication_providers: () => import('./features/authentication_providers/index'), available_pronouns_list: () => import('./features/available_pronouns_list/index'), diff --git a/ui/features/assignments_show_teacher/graphql/AssignmentTeacherTypes.ts b/ui/features/assignments_show_teacher/graphql/AssignmentTeacherTypes.ts new file mode 100644 index 00000000000..2f9435ad522 --- /dev/null +++ b/ui/features/assignments_show_teacher/graphql/AssignmentTeacherTypes.ts @@ -0,0 +1,138 @@ +/* + * Copyright (C) 2024 - present Instructure, Inc. + * + * This file is part of Canvas. + * + * Canvas is free software: you can redistribute it and/or modify it under + * the terms of the GNU Affero General Public License as published by the Free + * Software Foundation, version 3 of the License. + * + * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more + * details. + * + * You should have received a copy of the GNU Affero General Public License along + * with this program. If not, see . + */ + +export type CourseType = { + lid: string +} + +export type ModuleType = { + lid: string + name: string +} + +export type AssignmentGroupType = { + lid: string + name: string +} + +export type LockInfoType = { + isLocked: boolean +} + +type SetType = { + lid?: string + name?: string + __typename?: 'Section' | 'Group' | 'AdhocStudents' +} + +export type OverrideType = { + id?: string + lid?: string + title?: string + dueAt?: string + lockAt?: string + unlockAt?: string + submissionTypes?: string[] + allowedAttempts?: number + allowedExtensions?: string[] + set?: SetType +} + +export type UserType = { + lid?: string + gid?: string + name?: string + shortName?: string + sortableName?: string + avatarUrl?: string + email?: string +} + +export type SubmissionHistoryType = { + attempt?: number + score?: number + submittedAt?: string +} + +export type SubmissionDraftType = { + submissionAttempt?: string +} + +type SubmissionHistoriesConnectionType = { + nodes?: SubmissionHistoryType[] +} + +export type SubmissionType = { + gid?: string + lid?: string + attempt?: number + submissionStatus?: 'resubmitted' | 'missing' | 'late' | 'submitted' | 'unsubmitted' + grade?: string + gradingStatus?: null | 'excused' | 'needs_review' | 'needs_grading' | 'graded' + score?: number + state?: 'submitted' | 'unsubmitted' | 'pending_review' | 'graded' | 'deleted' + excused?: boolean + latePolicyStatus?: null | 'missing' + submittedAt?: string + user?: UserType + submissionHistoriesConnection?: SubmissionHistoriesConnectionType + submissionDraft?: SubmissionDraftType +} + +type PageInfoType = { + startCursor?: string + endCursor?: string + hasNextPage?: boolean + hasPreviousPage?: boolean +} + +type AssignmentOverridesType = { + pageInfo: PageInfoType + nodes: OverrideType[] +} + +type SubmissionsType = { + pageInfo: PageInfoType + nodes: SubmissionType[] +} + +export type TeacherAssignmentType = { + __typename: string + id: string + gid: string + lid: string + name: string + pointsPossible?: number | string + dueAt?: string + lockAt?: string + unlockAt?: string + description?: string + state: 'published' | 'unpublished' | 'deleted' + needsGradingCount?: number + onlyVisibleToOverrides?: boolean + assignmentGroup?: AssignmentGroupType + modules: ModuleType[] + course: CourseType + lockInfo: LockInfoType + submissionTypes: string[] + allowedExtensions: string[] + allowedAttempts?: number + anonymizeStudents?: boolean + assignmentOverrides: AssignmentOverridesType + submissions: SubmissionsType +} diff --git a/ui/features/assignments_show_teacher/graphql/Mutations.ts b/ui/features/assignments_show_teacher/graphql/Mutations.ts new file mode 100644 index 00000000000..be9f08b2013 --- /dev/null +++ b/ui/features/assignments_show_teacher/graphql/Mutations.ts @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2024 - present Instructure, Inc. + * + * This file is part of Canvas. + * + * Canvas is free software: you can redistribute it and/or modify it under + * the terms of the GNU Affero General Public License as published by the Free + * Software Foundation, version 3 of the License. + * + * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more + * details. + * + * You should have received a copy of the GNU Affero General Public License along + * with this program. If not, see . + */ + +import gql from 'graphql-tag' + +export const SET_WORKFLOW = gql` + mutation SetWorkflow($id: ID!, $workflow: AssignmentState!) { + updateAssignment(input: {id: $id, state: $workflow}) { + assignment { + __typename + id + state + } + } + } +` diff --git a/ui/features/assignments_show_teacher/graphql/Queries.ts b/ui/features/assignments_show_teacher/graphql/Queries.ts new file mode 100644 index 00000000000..c35ab7f13c6 --- /dev/null +++ b/ui/features/assignments_show_teacher/graphql/Queries.ts @@ -0,0 +1,147 @@ +/* + * Copyright (C) 2024 - present Instructure, Inc. + * + * This file is part of Canvas. + * + * Canvas is free software: you can redistribute it and/or modify it under + * the terms of the GNU Affero General Public License as published by the Free + * Software Foundation, version 3 of the License. + * + * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more + * details. + * + * You should have received a copy of the GNU Affero General Public License along + * with this program. If not, see . + */ + +import gql from 'graphql-tag' + +const userFields = gql` + fragment UserFields on User { + __typename + gid: id + lid: _id + name + shortName + sortableName + avatarUrl + email + } +` + +const assignmentOverridesNodes = gql` + fragment AssignmentOverrides on AssignmentOverrideConnection { + nodes { + gid: id + lid: _id + title + dueAt + lockAt + unlockAt + set { + __typename + ... on Section { + lid: _id + sectionName: name + } + ... on Group { + lid: _id + groupName: name + } + ... on AdhocStudents { + students { + lid: _id + studentName: name + } + } + } + } + } +` + +export const TEACHER_QUERY = gql` + query GetAssignment($assignmentLid: ID!) { + assignment(id: $assignmentLid) { + __typename + id + lid: _id + gid: id + name + description + dueAt(applyOverrides: false) + unlockAt(applyOverrides: false) + lockAt(applyOverrides: false) + pointsPossible + state + needsGradingCount + onlyVisibleToOverrides + lockInfo { + isLocked + } + assignmentGroup { + lid: _id + name + } + modules { + lid: _id + name + } + submissionTypes + allowedExtensions + allowedAttempts + anonymizeStudents + course { + lid: _id + modulesConnection(first: 0) { + pageInfo { + hasNextPage + } + } + assignmentGroupsConnection(first: 0) { + pageInfo { + hasNextPage + } + } + } + assignmentOverrides { + pageInfo { + startCursor + endCursor + hasNextPage + hasPreviousPage + } + ...AssignmentOverrides + } + submissions: submissionsConnection( + filter: {states: [submitted, unsubmitted, graded, ungraded, pending_review]} + ) { + pageInfo { + startCursor + endCursor + hasNextPage + hasPreviousPage + } + nodes { + gid: id + lid: _id + attempt + submissionStatus + grade + gradingStatus + score + state + excused + latePolicyStatus + submittedAt + user { + ...UserFields + } + } + } + } + } + ${userFields} + ${assignmentOverridesNodes} +` diff --git a/ui/features/assignments_show_teacher/index.ts b/ui/features/assignments_show_teacher/index.ts new file mode 100644 index 00000000000..8587b3dafad --- /dev/null +++ b/ui/features/assignments_show_teacher/index.ts @@ -0,0 +1,25 @@ +/* + * Copyright (C) 2024 - present Instructure, Inc. + * + * This file is part of Canvas. + * + * Canvas is free software: you can redistribute it and/or modify it under + * the terms of the GNU Affero General Public License as published by the Free + * Software Foundation, version 3 of the License. + * + * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more + * details. + * + * You should have received a copy of the GNU Affero General Public License along + * with this program. If not, see . + */ + +import renderAssignmentsApp from './react/index' +import ready from '@instructure/ready' + +ready(() => { + const elt: HTMLElement | null = document.getElementById('content') + renderAssignmentsApp(elt) +}) diff --git a/ui/features/assignments_show_teacher/package.json b/ui/features/assignments_show_teacher/package.json index 57660248cd7..4c64b2eca28 100644 --- a/ui/features/assignments_show_teacher/package.json +++ b/ui/features/assignments_show_teacher/package.json @@ -2,5 +2,5 @@ "name": "@canvas-features/assignments_show_teacher", "private": true, "version": "1.0.0", - "owner": "EVAL" + "owner": "EGG" } \ No newline at end of file diff --git a/ui/features/assignments_show_teacher/react/components/AssignmentHeader.tsx b/ui/features/assignments_show_teacher/react/components/AssignmentHeader.tsx new file mode 100644 index 00000000000..e5b50c71274 --- /dev/null +++ b/ui/features/assignments_show_teacher/react/components/AssignmentHeader.tsx @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2024 - present Instructure, Inc. + * + * This file is part of Canvas. + * + * Canvas is free software: you can redistribute it and/or modify it under + * the terms of the GNU Affero General Public License as published by the Free + * Software Foundation, version 3 of the License. + * + * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more + * details. + * + * You should have received a copy of the GNU Affero General Public License along + * with this program. If not, see . + */ + +import React from 'react' +import {Heading} from '@instructure/ui-heading' +import type {TeacherAssignmentType} from '../../graphql/AssignmentTeacherTypes' + +interface HeaderProps { + assignment: TeacherAssignmentType +} + +const AssignmentHeader: React.FC = props => { + return ( +
+ + {props.assignment?.name} + +
+ ) +} + +export default AssignmentHeader diff --git a/ui/features/assignments_show_teacher/react/components/TeacherQuery.tsx b/ui/features/assignments_show_teacher/react/components/TeacherQuery.tsx new file mode 100644 index 00000000000..bc1db8db45a --- /dev/null +++ b/ui/features/assignments_show_teacher/react/components/TeacherQuery.tsx @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2024 - present Instructure, Inc. + * + * This file is part of Canvas. + * + * Canvas is free software: you can redistribute it and/or modify it under + * the terms of the GNU Affero General Public License as published by the Free + * Software Foundation, version 3 of the License. + * + * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more + * details. + * + * You should have received a copy of the GNU Affero General Public License along + * with this program. If not, see . + */ + +import React from 'react' +import {useQuery} from 'react-apollo' +import {Spinner} from '@instructure/ui-spinner' +import {View} from '@instructure/ui-view' +import {useScope as useI18nScope} from '@canvas/i18n' +import {TEACHER_QUERY} from '../../graphql/Queries' +import TeacherSavedView from './TeacherSavedView' + +const I18n = useI18nScope('assignments_2') + +interface TeacherQueryProps { + assignmentLid: string +} + +const TeacherQuery: React.FC = ({assignmentLid}) => { + const {loading, error, data} = useQuery(TEACHER_QUERY, { + variables: {assignmentLid}, + }) + + if (loading) { + return ( + + + + ) + } + if (error) return
Error: {JSON.stringify(error, null, 2)}
+ + return +} + +export default TeacherQuery diff --git a/ui/features/assignments_show_teacher/react/components/TeacherSavedView.tsx b/ui/features/assignments_show_teacher/react/components/TeacherSavedView.tsx new file mode 100644 index 00000000000..f0717c73b50 --- /dev/null +++ b/ui/features/assignments_show_teacher/react/components/TeacherSavedView.tsx @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2024 - present Instructure, Inc. + * + * This file is part of Canvas. + * + * Canvas is free software: you can redistribute it and/or modify it under + * the terms of the GNU Affero General Public License as published by the Free + * Software Foundation, version 3 of the License. + * + * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more + * details. + * + * You should have received a copy of the GNU Affero General Public License along + * with this program. If not, see . + */ + +import React from 'react' +import type {TeacherAssignmentType} from '../../graphql/AssignmentTeacherTypes' +import AssignmentHeader from './AssignmentHeader' + +interface TeacherViewProps { + assignment: TeacherAssignmentType +} + +const TeacherSavedView: React.FC = props => { + return +} + +export default TeacherSavedView diff --git a/ui/features/assignments_show_teacher/react/components/__tests__/AssignmentHeader.test.tsx b/ui/features/assignments_show_teacher/react/components/__tests__/AssignmentHeader.test.tsx new file mode 100644 index 00000000000..a589a83231d --- /dev/null +++ b/ui/features/assignments_show_teacher/react/components/__tests__/AssignmentHeader.test.tsx @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2024 - present Instructure, Inc. + * + * This file is part of Canvas. + * + * Canvas is free software: you can redistribute it and/or modify it under + * the terms of the GNU Affero General Public License as published by the Free + * Software Foundation, version 3 of the License. + * + * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more + * details. + * + * You should have received a copy of the GNU Affero General Public License along + * with this program. If not, see . + */ + +import React from 'react' +import {render} from '@testing-library/react' +import {mockAssignment} from '../../test-utils' +import AssignmentHeader from '../AssignmentHeader' + +describe('assignment enhancement teacher view header', () => { + it('renders assignment name', () => { + const assignment = mockAssignment() + const getByTestId = render().getByTestId + expect(getByTestId('assignment-name')).toBeInTheDocument() + expect(getByTestId('assignment-name')).toHaveTextContent(assignment.name) + }) +}) diff --git a/ui/features/assignments_show_teacher/react/index.tsx b/ui/features/assignments_show_teacher/react/index.tsx new file mode 100644 index 00000000000..375d6a0cb62 --- /dev/null +++ b/ui/features/assignments_show_teacher/react/index.tsx @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2024 - present Instructure, Inc. + * + * This file is part of Canvas. + * + * Canvas is free software: you can redistribute it and/or modify it under + * the terms of the GNU Affero General Public License as published by the Free + * Software Foundation, version 3 of the License. + * + * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more + * details. + * + * You should have received a copy of the GNU Affero General Public License along + * with this program. If not, see . + */ + +import React from 'react' +import ReactDOM from 'react-dom' +import {ApolloProvider} from 'react-apollo' +import TeacherQuery from './components/TeacherQuery' +import {createClient} from '@canvas/apollo' +import {ApolloClient} from 'apollo-client' +import type {InMemoryCache} from 'apollo-cache-inmemory' + +export default function renderAssignmentsApp(elt: HTMLElement | null) { + const client: ApolloClient = createClient() + if (ENV.ASSIGNMENT_ID) { + ReactDOM.render( + + + , + elt + ) + } +} diff --git a/ui/features/assignments_show_teacher/react/test-utils.ts b/ui/features/assignments_show_teacher/react/test-utils.ts new file mode 100644 index 00000000000..09b88208dd8 --- /dev/null +++ b/ui/features/assignments_show_teacher/react/test-utils.ts @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2024 - present Instructure, Inc. + * + * This file is part of Canvas. + * + * Canvas is free software: you can redistribute it and/or modify it under + * the terms of the GNU Affero General Public License as published by the Free + * Software Foundation, version 3 of the License. + * + * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more + * details. + * + * You should have received a copy of the GNU Affero General Public License along + * with this program. If not, see . + */ + +import type {TeacherAssignmentType} from '../graphql/AssignmentTeacherTypes' + +export function mockCourse(overrides = {}) { + return { + lid: 'course-lid', + assignmentGroupsConnection: { + pageInfo: mockPageInfo(), + nodes: [], + }, + modulesConnection: { + pageInfo: mockPageInfo(), + nodes: [], + }, + ...overrides, + } +} + +export function mockPageInfo(overrides = {}) { + return { + startCursor: 'startCursor', + endCursor: 'endCursor', + hasNextPage: false, + hasPreviousPage: false, + ...overrides, + } +} + +export function mockAssignment(overrides = {}): TeacherAssignmentType { + return { + __typename: 'Assignment', + id: 'assignment-gid', + gid: 'assignment-gid', + lid: 'assignment-lid', + name: 'Basic Mock Assignment', + pointsPossible: 5, + dueAt: '2018-11-28T13:00-05:00', + lockAt: '2018-11-29T13:00-05:00', + unlockAt: '2018-11-27T13:00-05:00', + description: 'assignment description', + state: 'published', + needsGradingCount: 0, + course: mockCourse(), + modules: [ + {lid: '1', name: 'module 1'}, + {lid: '2', name: 'module 2'}, + ], + assignmentGroup: {lid: '1', name: 'assignment group'}, + lockInfo: { + isLocked: false, + }, + submissionTypes: ['online_text_entry'], + allowedExtensions: [], + allowedAttempts: undefined, + anonymizeStudents: false, + onlyVisibleToOverrides: false, + assignmentOverrides: { + pageInfo: mockPageInfo(), + nodes: [], + }, + submissions: { + pageInfo: mockPageInfo(), + nodes: [], + }, + ...overrides, + } +} diff --git a/ui/features/assignments_show_teacher/index.js b/ui/features/assignments_show_teacher_deprecated/index.js similarity index 100% rename from ui/features/assignments_show_teacher/index.js rename to ui/features/assignments_show_teacher_deprecated/index.js diff --git a/ui/features/assignments_show_teacher_deprecated/package.json b/ui/features/assignments_show_teacher_deprecated/package.json new file mode 100644 index 00000000000..2d180917cb4 --- /dev/null +++ b/ui/features/assignments_show_teacher_deprecated/package.json @@ -0,0 +1,6 @@ +{ + "name": "@canvas-features/assignments_show_teacher_deprecated", + "private": true, + "version": "1.0.0", + "owner": "EVAL" +} \ No newline at end of file diff --git a/ui/features/assignments_show_teacher/react/AssignentFieldValidator.js b/ui/features/assignments_show_teacher_deprecated/react/AssignentFieldValidator.js similarity index 100% rename from ui/features/assignments_show_teacher/react/AssignentFieldValidator.js rename to ui/features/assignments_show_teacher_deprecated/react/AssignentFieldValidator.js diff --git a/ui/features/assignments_show_teacher/react/__tests__/AssignentFieldValidator.test.js b/ui/features/assignments_show_teacher_deprecated/react/__tests__/AssignentFieldValidator.test.js similarity index 100% rename from ui/features/assignments_show_teacher/react/__tests__/AssignentFieldValidator.test.js rename to ui/features/assignments_show_teacher_deprecated/react/__tests__/AssignentFieldValidator.test.js diff --git a/ui/features/assignments_show_teacher/react/api.js b/ui/features/assignments_show_teacher_deprecated/react/api.js similarity index 100% rename from ui/features/assignments_show_teacher/react/api.js rename to ui/features/assignments_show_teacher_deprecated/react/api.js diff --git a/ui/features/assignments_show_teacher/react/assignmentData.js b/ui/features/assignments_show_teacher_deprecated/react/assignmentData.js similarity index 100% rename from ui/features/assignments_show_teacher/react/assignmentData.js rename to ui/features/assignments_show_teacher_deprecated/react/assignmentData.js diff --git a/ui/features/assignments_show_teacher/react/components/AddHorizontalRuleButton.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/AddHorizontalRuleButton.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/AddHorizontalRuleButton.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/AddHorizontalRuleButton.jsx diff --git a/ui/features/assignments_show_teacher/react/components/AssignmentDescription.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/AssignmentDescription.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/AssignmentDescription.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/AssignmentDescription.jsx diff --git a/ui/features/assignments_show_teacher/react/components/ConfirmDialog.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/ConfirmDialog.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/ConfirmDialog.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/ConfirmDialog.jsx diff --git a/ui/features/assignments_show_teacher/react/components/ContentTabs.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/ContentTabs.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/ContentTabs.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/ContentTabs.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Details.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Details.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Details.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Details.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Editables/AssignmentDate.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Editables/AssignmentDate.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Editables/AssignmentDate.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Editables/AssignmentDate.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Editables/AssignmentGroup.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Editables/AssignmentGroup.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Editables/AssignmentGroup.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Editables/AssignmentGroup.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Editables/AssignmentModules.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Editables/AssignmentModules.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Editables/AssignmentModules.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Editables/AssignmentModules.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Editables/AssignmentName.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Editables/AssignmentName.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Editables/AssignmentName.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Editables/AssignmentName.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Editables/AssignmentPoints.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Editables/AssignmentPoints.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Editables/AssignmentPoints.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Editables/AssignmentPoints.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Editables/AssignmentType.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Editables/AssignmentType.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Editables/AssignmentType.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Editables/AssignmentType.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Editables/EditableDateTime.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Editables/EditableDateTime.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Editables/EditableDateTime.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Editables/EditableDateTime.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Editables/EditableHeading.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Editables/EditableHeading.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Editables/EditableHeading.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Editables/EditableHeading.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Editables/EditableNumber.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Editables/EditableNumber.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Editables/EditableNumber.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Editables/EditableNumber.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Editables/EditableRichText.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Editables/EditableRichText.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Editables/EditableRichText.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Editables/EditableRichText.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Editables/SelectableText.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Editables/SelectableText.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Editables/SelectableText.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Editables/SelectableText.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Editables/__tests__/AssignmentDate.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Editables/__tests__/AssignmentDate.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Editables/__tests__/AssignmentDate.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Editables/__tests__/AssignmentDate.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Editables/__tests__/AssignmentGroup.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Editables/__tests__/AssignmentGroup.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Editables/__tests__/AssignmentGroup.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Editables/__tests__/AssignmentGroup.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Editables/__tests__/AssignmentModules.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Editables/__tests__/AssignmentModules.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Editables/__tests__/AssignmentModules.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Editables/__tests__/AssignmentModules.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Editables/__tests__/AssignmentName.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Editables/__tests__/AssignmentName.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Editables/__tests__/AssignmentName.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Editables/__tests__/AssignmentName.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Editables/__tests__/AssignmentPoints.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Editables/__tests__/AssignmentPoints.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Editables/__tests__/AssignmentPoints.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Editables/__tests__/AssignmentPoints.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Editables/__tests__/AssignmentType.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Editables/__tests__/AssignmentType.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Editables/__tests__/AssignmentType.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Editables/__tests__/AssignmentType.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Editables/__tests__/EditableDateTime.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Editables/__tests__/EditableDateTime.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Editables/__tests__/EditableDateTime.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Editables/__tests__/EditableDateTime.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Editables/__tests__/EditableHeading.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Editables/__tests__/EditableHeading.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Editables/__tests__/EditableHeading.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Editables/__tests__/EditableHeading.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Editables/__tests__/EditableNumber.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Editables/__tests__/EditableNumber.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Editables/__tests__/EditableNumber.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Editables/__tests__/EditableNumber.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Editables/__tests__/EditableRichText.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Editables/__tests__/EditableRichText.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Editables/__tests__/EditableRichText.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Editables/__tests__/EditableRichText.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Editables/__tests__/SelectableText.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Editables/__tests__/SelectableText.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Editables/__tests__/SelectableText.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Editables/__tests__/SelectableText.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Header.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Header.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Header.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Header.jsx diff --git a/ui/features/assignments_show_teacher/react/components/MessageStudentsWhoDialog.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/MessageStudentsWhoDialog.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/MessageStudentsWhoDialog.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/MessageStudentsWhoDialog.jsx diff --git a/ui/features/assignments_show_teacher/react/components/MessageStudentsWhoForm.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/MessageStudentsWhoForm.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/MessageStudentsWhoForm.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/MessageStudentsWhoForm.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Overrides/EveryoneElse.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Overrides/EveryoneElse.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Overrides/EveryoneElse.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Overrides/EveryoneElse.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Overrides/ExternalToolType.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Overrides/ExternalToolType.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Overrides/ExternalToolType.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Overrides/ExternalToolType.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Overrides/FileType.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Overrides/FileType.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Overrides/FileType.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Overrides/FileType.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Overrides/NonCanvasType.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Overrides/NonCanvasType.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Overrides/NonCanvasType.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Overrides/NonCanvasType.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Overrides/OperatorType.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Overrides/OperatorType.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Overrides/OperatorType.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Overrides/OperatorType.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Overrides/Override.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Overrides/Override.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Overrides/Override.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Overrides/Override.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Overrides/OverrideAssignTo.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Overrides/OverrideAssignTo.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Overrides/OverrideAssignTo.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Overrides/OverrideAssignTo.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Overrides/OverrideAttempts.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Overrides/OverrideAttempts.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Overrides/OverrideAttempts.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Overrides/OverrideAttempts.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Overrides/OverrideDates.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Overrides/OverrideDates.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Overrides/OverrideDates.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Overrides/OverrideDates.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Overrides/OverrideDetail.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Overrides/OverrideDetail.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Overrides/OverrideDetail.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Overrides/OverrideDetail.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Overrides/OverrideSubmissionTypes.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Overrides/OverrideSubmissionTypes.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Overrides/OverrideSubmissionTypes.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Overrides/OverrideSubmissionTypes.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Overrides/OverrideSummary.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Overrides/OverrideSummary.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Overrides/OverrideSummary.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Overrides/OverrideSummary.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Overrides/Overrides.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Overrides/Overrides.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Overrides/Overrides.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Overrides/Overrides.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Overrides/SimpleType.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Overrides/SimpleType.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Overrides/SimpleType.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Overrides/SimpleType.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Overrides/SubmitOptionShape.js b/ui/features/assignments_show_teacher_deprecated/react/components/Overrides/SubmitOptionShape.js similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Overrides/SubmitOptionShape.js rename to ui/features/assignments_show_teacher_deprecated/react/components/Overrides/SubmitOptionShape.js diff --git a/ui/features/assignments_show_teacher/react/components/Overrides/__tests__/EveryoneElse.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Overrides/__tests__/EveryoneElse.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Overrides/__tests__/EveryoneElse.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Overrides/__tests__/EveryoneElse.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Overrides/__tests__/Override.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Overrides/__tests__/Override.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Overrides/__tests__/Override.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Overrides/__tests__/Override.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Overrides/__tests__/OverrideAssignTo.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Overrides/__tests__/OverrideAssignTo.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Overrides/__tests__/OverrideAssignTo.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Overrides/__tests__/OverrideAssignTo.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Overrides/__tests__/OverrideAttempts.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Overrides/__tests__/OverrideAttempts.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Overrides/__tests__/OverrideAttempts.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Overrides/__tests__/OverrideAttempts.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Overrides/__tests__/OverrideDates.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Overrides/__tests__/OverrideDates.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Overrides/__tests__/OverrideDates.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Overrides/__tests__/OverrideDates.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Overrides/__tests__/OverrideDetail.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Overrides/__tests__/OverrideDetail.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Overrides/__tests__/OverrideDetail.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Overrides/__tests__/OverrideDetail.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Overrides/__tests__/OverrideSubmissionTypes.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Overrides/__tests__/OverrideSubmissionTypes.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Overrides/__tests__/OverrideSubmissionTypes.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Overrides/__tests__/OverrideSubmissionTypes.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Overrides/__tests__/OverrideSummary.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Overrides/__tests__/OverrideSummary.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Overrides/__tests__/OverrideSummary.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Overrides/__tests__/OverrideSummary.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/StudentsTab/Filters.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/StudentsTab/Filters.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/StudentsTab/Filters.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/StudentsTab/Filters.jsx diff --git a/ui/features/assignments_show_teacher/react/components/StudentsTab/StudentSearchQuery.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/StudentsTab/StudentSearchQuery.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/StudentsTab/StudentSearchQuery.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/StudentsTab/StudentSearchQuery.jsx diff --git a/ui/features/assignments_show_teacher/react/components/StudentsTab/StudentTray.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/StudentsTab/StudentTray.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/StudentsTab/StudentTray.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/StudentsTab/StudentTray.jsx diff --git a/ui/features/assignments_show_teacher/react/components/StudentsTab/StudentsSearcher.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/StudentsTab/StudentsSearcher.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/StudentsTab/StudentsSearcher.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/StudentsTab/StudentsSearcher.jsx diff --git a/ui/features/assignments_show_teacher/react/components/StudentsTab/StudentsTable.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/StudentsTab/StudentsTable.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/StudentsTab/StudentsTable.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/StudentsTab/StudentsTable.jsx diff --git a/ui/features/assignments_show_teacher/react/components/StudentsTab/__tests__/Filters.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/StudentsTab/__tests__/Filters.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/StudentsTab/__tests__/Filters.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/StudentsTab/__tests__/Filters.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/StudentsTab/__tests__/StudentTray.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/StudentsTab/__tests__/StudentTray.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/StudentsTab/__tests__/StudentTray.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/StudentsTab/__tests__/StudentTray.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/StudentsTab/__tests__/StudentsSearcher.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/StudentsTab/__tests__/StudentsSearcher.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/StudentsTab/__tests__/StudentsSearcher.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/StudentsTab/__tests__/StudentsSearcher.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/StudentsTab/__tests__/StudentsTable.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/StudentsTab/__tests__/StudentsTable.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/StudentsTab/__tests__/StudentsTable.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/StudentsTab/__tests__/StudentsTable.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/TeacherFooter.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/TeacherFooter.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/TeacherFooter.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/TeacherFooter.jsx diff --git a/ui/features/assignments_show_teacher/react/components/TeacherQuery.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/TeacherQuery.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/TeacherQuery.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/TeacherQuery.jsx diff --git a/ui/features/assignments_show_teacher/react/components/TeacherView.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/TeacherView.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/TeacherView.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/TeacherView.jsx diff --git a/ui/features/assignments_show_teacher/react/components/TeacherViewContext.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/TeacherViewContext.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/TeacherViewContext.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/TeacherViewContext.jsx diff --git a/ui/features/assignments_show_teacher/react/components/Toolbox.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/Toolbox.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/Toolbox.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/Toolbox.jsx diff --git a/ui/features/assignments_show_teacher/react/components/__tests__/AddHorizontalRuleButton.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/__tests__/AddHorizontalRuleButton.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/__tests__/AddHorizontalRuleButton.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/__tests__/AddHorizontalRuleButton.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/__tests__/AssignmentDescription.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/__tests__/AssignmentDescription.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/__tests__/AssignmentDescription.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/__tests__/AssignmentDescription.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/__tests__/ConfirmDialog.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/__tests__/ConfirmDialog.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/__tests__/ConfirmDialog.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/__tests__/ConfirmDialog.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/__tests__/ContentTabs.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/__tests__/ContentTabs.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/__tests__/ContentTabs.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/__tests__/ContentTabs.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/__tests__/Details.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/__tests__/Details.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/__tests__/Details.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/__tests__/Details.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/__tests__/Header.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/__tests__/Header.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/__tests__/Header.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/__tests__/Header.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/__tests__/MessageStudentsWhoDialog.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/__tests__/MessageStudentsWhoDialog.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/__tests__/MessageStudentsWhoDialog.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/__tests__/MessageStudentsWhoDialog.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/__tests__/TeacherQuery.test.js b/ui/features/assignments_show_teacher_deprecated/react/components/__tests__/TeacherQuery.test.js similarity index 100% rename from ui/features/assignments_show_teacher/react/components/__tests__/TeacherQuery.test.js rename to ui/features/assignments_show_teacher_deprecated/react/components/__tests__/TeacherQuery.test.js diff --git a/ui/features/assignments_show_teacher/react/components/__tests__/TeacherView.test.js b/ui/features/assignments_show_teacher_deprecated/react/components/__tests__/TeacherView.test.js similarity index 100% rename from ui/features/assignments_show_teacher/react/components/__tests__/TeacherView.test.js rename to ui/features/assignments_show_teacher_deprecated/react/components/__tests__/TeacherView.test.js diff --git a/ui/features/assignments_show_teacher/react/components/__tests__/Toolbox.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/__tests__/Toolbox.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/__tests__/Toolbox.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/__tests__/Toolbox.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/__tests__/fixtures/AssignmentMockup.js b/ui/features/assignments_show_teacher_deprecated/react/components/__tests__/fixtures/AssignmentMockup.js similarity index 100% rename from ui/features/assignments_show_teacher/react/components/__tests__/fixtures/AssignmentMockup.js rename to ui/features/assignments_show_teacher_deprecated/react/components/__tests__/fixtures/AssignmentMockup.js diff --git a/ui/features/assignments_show_teacher/react/components/__tests__/integration/AssignmentGroup.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/__tests__/integration/AssignmentGroup.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/__tests__/integration/AssignmentGroup.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/__tests__/integration/AssignmentGroup.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/__tests__/integration/AssignmentModules.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/__tests__/integration/AssignmentModules.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/__tests__/integration/AssignmentModules.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/__tests__/integration/AssignmentModules.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/__tests__/integration/DeleteDialog.test.js b/ui/features/assignments_show_teacher_deprecated/react/components/__tests__/integration/DeleteDialog.test.js similarity index 100% rename from ui/features/assignments_show_teacher/react/components/__tests__/integration/DeleteDialog.test.js rename to ui/features/assignments_show_teacher_deprecated/react/components/__tests__/integration/DeleteDialog.test.js diff --git a/ui/features/assignments_show_teacher/react/components/__tests__/integration/MessageStudentsWho.test.js b/ui/features/assignments_show_teacher_deprecated/react/components/__tests__/integration/MessageStudentsWho.test.js similarity index 100% rename from ui/features/assignments_show_teacher/react/components/__tests__/integration/MessageStudentsWho.test.js rename to ui/features/assignments_show_teacher_deprecated/react/components/__tests__/integration/MessageStudentsWho.test.js diff --git a/ui/features/assignments_show_teacher/react/components/__tests__/integration/TeacherView.test.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/__tests__/integration/TeacherView.test.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/__tests__/integration/TeacherView.test.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/__tests__/integration/TeacherView.test.jsx diff --git a/ui/features/assignments_show_teacher/react/components/__tests__/integration/integration-utils.jsx b/ui/features/assignments_show_teacher_deprecated/react/components/__tests__/integration/integration-utils.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/components/__tests__/integration/integration-utils.jsx rename to ui/features/assignments_show_teacher_deprecated/react/components/__tests__/integration/integration-utils.jsx diff --git a/ui/features/assignments_show_teacher/react/index.jsx b/ui/features/assignments_show_teacher_deprecated/react/index.jsx similarity index 100% rename from ui/features/assignments_show_teacher/react/index.jsx rename to ui/features/assignments_show_teacher_deprecated/react/index.jsx diff --git a/ui/features/assignments_show_teacher/react/test-utils.js b/ui/features/assignments_show_teacher_deprecated/react/test-utils.js similarity index 100% rename from ui/features/assignments_show_teacher/react/test-utils.js rename to ui/features/assignments_show_teacher_deprecated/react/test-utils.js