closes OUT-6560
flag=rce_lite_enabled_speedgrader_comments
Test Plan:
- Create an assignment in a Course with at least one student
- Open Speedgrader for that assignment
- Observe the RCE Lite is present
- Create a comment that uses different formatting options
provided by RCE Lite
- Submit the comment and observe it submits successfully and
is formatted as expected
- Start typing a comment with formatting and then
refresh the page
- Observe the text became a draft comment
- Observe the newly added pencil icon on the draft comment
- Click the pencil icon and observe the text is added and
properly formatted in the RCE text editor
Change-Id: I9b6549f1becbb26483ef0d1eddd1531c38580027
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/353855
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Martin Yosifov <martin.yosifov@instructure.com>
QA-Review: Martin Yosifov <martin.yosifov@instructure.com>
Product-Review: Sam Garza <sam.garza@instructure.com>
This is part 1 of 2, only this commit is meant to be hot fixed. In production we do not yet have the code to display what courses are using a grading scheme as default, so we should not be considering a grading scheme as "used" (and thus un-deletable) if users cannot view the courses they are used on.
Also re-orders checks for performance and only considers a grading scheme as used for an assignment if it has been graded with (the same logic Canvas has always used)
flag=archived_grading_schemes
test plan:
- Set GS as course default but do not use for grading an assignment
- Delete the GS
Change-Id: I71571ef83eca1b203db2cf543101cf891745243e
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/355433
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Kai Bjorkman <kbjorkman@instructure.com>
Reviewed-by: Sleyder Zuleta <sleyder.zuleta@instructure.com>
QA-Review: Cameron Ray <cameron.ray@instructure.com>
Product-Review: Cameron Ray <cameron.ray@instructure.com>
test plan:
- create multiple pages in a course
- add them to a module
- view one of the pages
- note the comparable module sequence footer UI
Change-Id: Ie334ccd05893120114315df46161d06b2ae3bba6
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/355383
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Drake Harper <drake.harper@instructure.com>
QA-Review: Drake Harper <drake.harper@instructure.com>
Product-Review: Drake Harper <drake.harper@instructure.com>
This commit enhances the Password Complexity feature by
adding a front-end implementation for configurable forbidden
password terms.
Note that PasswordComplexityConfiguration.tsx currently
uses a placeholder method, pending resolution of FOO-4640.
This commit depends on an update to doFetchApi ensure FormData
is handled correctly: g/354978
The corresponding back-end work is in g/354987.
closes FOO-4648
flag=password_complexity
test plan:
- enable password complexity feature for account
- /accounts/<id>/settings#tab-features
- choose “Enhance password options” and set to “Enabled”
- go to authentication page of admin
- /accounts/<id>/authentication_providers
- within the “Canvas” authentication provider
- click “View Options” for “Password Options”
- in password options tray that opens
- check the “Customize forbidden words/terms list”
- EXPECT to NOT see “Current Custom List” table
test A:
- click the “Upload” button
- click “Cancel” button to close modal
- EXPECT no UI changes
test B:
- click the “Upload” button
- drag/drop a text file OR click to upload a text file with
contents (one string per line):
abc
efg
- click “Cancel” button to close modal
- EXPECT no UI changes
test C:
- click the “Upload” button
- drag/drop a text file OR click to upload a text file with
contents (one string per line):
abc
efg
- click the “Upload” button
- EXPECT modal to close
- EXPECT “Current Custom List” to appear in the password
options tray
- EXPECT the uploaded text file to appear as a link
- EXPECT the uploaded text file to be navigable in a new tab
test D:
- repeat test B above
- click the trash icon in “Current Custom List”
- EXPECT text file to be removed and a toast to appear reading
“Forbidden words list deleted successfully.”
[skip-crystalball]
Change-Id: I6f69eac3f09bc7c8fd2f978e8dfa7b106defb33b
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/354985
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Michael Hulse <michael.hulse@instructure.com>
QA-Review: AJ Esa <ajmal.esa@instructure.com>
Product-Review: Michael Hulse <michael.hulse@instructure.com>
Reviewed-by: AJ Esa <ajmal.esa@instructure.com>
there were a few bugs where the state of the cards was not
being consistent. Especially with empty cards - in particular
empty cards disappearing when editing other cards. There was
also a bug where 'everyone' would get added back after saving
overrides with dates on them. This is also fixed.
closes LX-1984
flag=selective_release_edit_page
test plan:
- create a new classic quiz. Change the 'everyone' card to be
assigned to a student and add a date to it. Save and then
check the assign to cards - ensure that the override saved
properly and 'everyone' is no longer assigned.
- repeat with an assignment
- with a new or existing assignment, add a new card and keep it
empty. Mess around with other cards - adding and deleting cards,
changing assignees, dates, etc.
- Ensure that in all cases, changing one card does not affect
another. Empty cards should not disappear.
- Overall just click around and try to mess with the cards in any
ways you can think of - the cards should stay consistent with
whatever changes you make.
Change-Id: Ib498a238bc76b752f2c0f044b0bc9492fb133b5f
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/355305
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Robin Kuss <rkuss@instructure.com>
QA-Review: Robin Kuss <rkuss@instructure.com>
Product-Review: Sarah Gerard <sarah.gerard@instructure.com>
Fixes two N+1 that are causing pain on page load, especially at scale.
test plan:
- specs pass
Change-Id: Id53e4c505e87d6a3ba27b1daf2ea8221189c3271
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/355361
Reviewed-by: Charley Kline <ckline@instructure.com>
QA-Review: Charley Kline <ckline@instructure.com>
Product-Review: Charley Kline <ckline@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
closes RCX-2213
flag=block_editor
test plan:
- create a page with an image block
> expect the default Constraint to be Match Aspect Ratio
- upload an image
> expect the image to be in its natural aspect ratio
- resize using the mouse
> expect the image to remain in its aspect ratio
- resize using the keyboard (opt-arror or shift-opt-arrow)
> expect the image to remain in its aspect ratio
- resize using the popup from the toolbar
> expect the image to remain in its aspect ratio
- change the constraint to something else
- resize the image
> expect it to resize to the requested size, ignoring the aspect ratio
- try the above with a tall image and with a wide image
Change-Id: I2ea1cc0cd4f6958d0b091a27d8fede05a7895caf
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/355308
Reviewed-by: Jacob DeWar <jacob.dewar@instructure.com>
QA-Review: Jacob DeWar <jacob.dewar@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Product-Review: Ed Schiebel <eschiebel@instructure.com>
closes FOO-4659
flag = none
test plan |
- permissions should behave as before
- we now have a single source of truth for permissions
that is much more obvious and understandable
- don't clutter role overrides with permissions
- registration has be refactored to be more DRY
- /permissions should work as before and plugins should
be able to register permissions in the same way,
however we settled on one uniform way to do it
Change-Id: I9e2f541643713065dfada692b4eb30230a9896e7
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/355239
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Reviewed-by: Michael Hulse <michael.hulse@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: August Thornton <august@instructure.com>
This reverts commit 45c63d9939.
Reason for revert: Better solution in g/355352
Change-Id: I6d9815af0ffb0b8235807c48fd124076e54849e0
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/355041
Reviewed-by: Eric Saupe <eric.saupe@instructure.com>
QA-Review: Eric Saupe <eric.saupe@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Product-Review: Jacob DeWar <jacob.dewar@instructure.com>
fixes RCX-2192
flag=top_navigation_placement
Test Plan:
- Have FF on
- Have 60+ Pages in a course
- Load course > go to Pages
- Scroll down
* It keeps loading pages as you scrolling
- Have FF off
- Infinite scroll still works
Change-Id: I072815a43e73527a14303fb3712d3fb8b47d6830
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/355352
Reviewed-by: Eric Saupe <eric.saupe@instructure.com>
QA-Review: Eric Saupe <eric.saupe@instructure.com>
Product-Review: Jacob DeWar <jacob.dewar@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
This makes it so the form will, in the absence of data
in the time inputs, behave as it did before g/350203 when
those weren't a thing
fixes RCX-2185
flag=none
Test plan:
- Go to course or user files
- Upload a file if you have none
- Click the publish status icon
- Select schedule availability
- Ignore the date fields and only fill
the date ones
- Save and check the availability
was properly saved
Change-Id: Ic9ce7fda4ad0a7bd67476d9e2a56df3648f95d72
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/355274
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Eric Saupe <eric.saupe@instructure.com>
QA-Review: Eric Saupe <eric.saupe@instructure.com>
Product-Review: Luis Oliveira <luis.oliveira@instructure.com>
flag=discussion_checkpoints
fixes VICE-4514
note:
- as i was working on this, i found a bug where
if you had a late policy for the course, your entered
grade will change to the grade where the policy is applied
to fix this: we now use the entered_grade for checkpoint
grades, and the real grade only for current total
test plan:
- visit speedgrader on a checkpointed discussion
submission
- turn on VoiceOver
- grade either reply to topic or reply to entry, press enter
- verify that Current Total Updated: [Grade] is announced
- verify that Current Total is displayed correctly
- apply a late policy to the course
- mark a checkpoint late with days late
- verify that your entered grade is the one you put in
and the current total applied deductions based on late policy
Change-Id: Ia797ff36101e250bb024a9111a8e54996941178f
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/354822
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Omar Soto-Fortuño <omar.soto@instructure.com>
QA-Review: Jason Gillett <jason.gillett@instructure.com>
Product-Review: Caleb Guanzon <cguanzon@instructure.com>
It is no longer a default gem in Ruby 3.4
flag=none
closes AE-1117
test plan:
- tests pass
Change-Id: I713705e8e20bf08833023e87209a5a403ef10969
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/355338
Reviewed-by: Cody Cutrer <cody@instructure.com>
Build-Review: Cody Cutrer <cody@instructure.com>
QA-Review: Isaac Moore <isaac.moore@instructure.com>
Product-Review: Isaac Moore <isaac.moore@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Adding role: "complementary" and an aria-label makes this button a
landmark and thus increases its accessibility.
closes LX-1745
flag = none
Test plan:
- Go to any page with the "View as Student" button at the top (like
the assignments index page)
- Open VoiceOver
- Press VoiceOverKey+U to open the rotor, then press left/right arrows
until you're in the landmarks section
- Expect the "View as Student" button to show up in that list
Change-Id: I61593b05dbafd05812e213f3182315c7f3eec98c
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/355309
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Juan Chavez <juan.chavez@instructure.com>
QA-Review: Juan Chavez <juan.chavez@instructure.com>
Product-Review: Jackson Howe <jackson.howe@instructure.com>
This commit enables the ability to add headers to the default fetch
options, so a user can add headers to the default headers for a specific
request.
test plan: N/A as this doesn't change any behavior
refs INTEROP-8787
flag=lti_registrations_next
Change-Id: I36d61040c245f6797e3b8651fcd6b76c632a92d4
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/355225
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Ryan Hawkins <ryan.hawkins@instructure.com>
QA-Review: Ryan Hawkins <ryan.hawkins@instructure.com>
Product-Review: Paul Gray <paul.gray@instructure.com>
This commit adds a new `ApiResult` subtype that accounts for
unsuccessful statuses from the backend. This is necessary to
account for the fact that the backend may return a 4xx and the
frontend needs to distinguish between those statuses.
test plan:
1. Run through Dynamic Registration and ensure a registration gets
created properly.
refs INTEROP-8787
flag=lti_registrations_next
Change-Id: I7587a504ead855a79ffaca0c70f5b145c2d837a0
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/355224
Reviewed-by: Xander Moffatt <xmoffatt@instructure.com>
Reviewed-by: Ryan Hawkins <ryan.hawkins@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Ryan Hawkins <ryan.hawkins@instructure.com>
Product-Review: Paul Gray <paul.gray@instructure.com>
This commit removes some LTI placements that are not used internally
in our data model.
test plan:
1. Launch Dynamic Registration with Yaltt, choose the standard 1Edtech
names of the RichTextEditor, and ContentArea placements.
2. Verify that the placements are mapped to editor_button and
link_selection internally.
refs INTEROP-8787
flag=lti_registrations_next
Change-Id: I16941d2f4b4385471179032fe6ec2cb2f171e632
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/355223
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Xander Moffatt <xmoffatt@instructure.com>
Reviewed-by: Ryan Hawkins <ryan.hawkins@instructure.com>
QA-Review: Ryan Hawkins <ryan.hawkins@instructure.com>
Product-Review: Paul Gray <paul.gray@instructure.com>
This is a small change that moves the i18n from the actual model files
to separate files. This is done to make the model files more modular,
as the @canvas/i18n package throws an error if it doesn't have access
to the window object.
test plan:
- Run through the Dynamic Registration wizard from the Apps screen
and make sure placements, privacy levels, and scopes are all
translated correctly.
refs INTEROP-8787
flag=lti_registrations_next
Change-Id: Ic8f1e48ac5cb459180994dd6f80e32028b06170d
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/355222
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Ryan Hawkins <ryan.hawkins@instructure.com>
Reviewed-by: Xander Moffatt <xmoffatt@instructure.com>
QA-Review: Ryan Hawkins <ryan.hawkins@instructure.com>
Product-Review: Paul Gray <paul.gray@instructure.com>
closes RCX-1900
flag=rce_linked_file_urls
Test plan
- Have InstFS running and enabled with Canvas
- Run API calls to api/v1/rce_linked_file_urls
- Send an arbitrary "location" parameter
- Send a user_uuid parameter (with access, without, see
what happens)
- Send an array of file_urls with various types of
Canvas files that aren't previewable with quizzes
(should be media and documents that aren't)
- Verify that you get a new InstFS uuid for the files
- Extra credit if you check that the location is saved
properly on the new file in InstFS's DynamoDB
Change-Id: I4d7eb1aeb62a515360fc4668acbe38caa8f94ed8
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/354570
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: James Logan <james.logan@instructure.com>
Reviewed-by: Eric Saupe <eric.saupe@instructure.com>
QA-Review: James Logan <james.logan@instructure.com>
Product-Review: Mysti Lilla <mysti@instructure.com>
why:
* to have a single source of truth for the shape of 1.3 JSON config,
both external (LtiConfiguration), and internal (InternalLtiConfiguration)
* update current schema for LtiConfiguration to match the format
of the new InternalLtiConfiguration schema
* provide transformation methods between the two formats
* use newer version of LtiConfiguration schema validator
in place of Schemas::Lti::ToolConfiguration
* expose transformation and validation via API endpoints
closes INTEROP-8762
flag=none
test plan:
* installing a 1.3 developer key still succeeds in every scenario that
it did before this commit
* specific things to test:
* not including required properties in the config, like extensions,
settings, scopes
* including vendor extensions (not the canvas platform)
* including every possible config option, and a bunch of different
placements
* make API requests to the new /configuration/validate endpoint with
both valid and invalid configurations, and with both url and
lti_configuration
Change-Id: I3fa5b6f7c5010a4a1fc16a80e198dc979569e282
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/354802
Reviewed-by: Paul Gray <paul.gray@instructure.com>
QA-Review: Paul Gray <paul.gray@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Product-Review: Xander Moffatt <xmoffatt@instructure.com>
closes EVAL-4483
flag=archived_grading_schemes
Test Plan:
1. Go to grading scheme management page
2. validate the list is loading well
3. Go to course's settings page
4. Validate the grading scheme list is loading
5. Go to assignment's settings page
6. Validate the grading scheme list is loading
Change-Id: I5c55f956b6e70a1ffc8fc1b5cba2f155fe0c6b3f
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/355278
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Kai Bjorkman <kbjorkman@instructure.com>
Reviewed-by: Spencer Olson <solson@instructure.com>
QA-Review: Sleyder Zuleta <sleyder.zuleta@instructure.com>
Product-Review: Cameron Ray <cameron.ray@instructure.com>
closes: RCX-2201
flag=block_editor
test plan:
- create a page with an image, text, and/or heading blocks
- select a block
- drag one of the blue drag handles
> expect the block to be resized
- resize an image block
- change the image
> expect the new image to be put inside the existing box
- with a block selected, use opt- arrow keys
> expect the block to be resized by 1px each click
- same with opt-shift-arrow
> expect the block to be resized by 10px each click
> expect arrow keys w/o opt to move the text cursor
around in a text or heading block
Change-Id: I68c4a587f42d933f6b6c5e398552e0c807ecfc16
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/354839
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jacob DeWar <jacob.dewar@instructure.com>
QA-Review: Jacob DeWar <jacob.dewar@instructure.com>
Product-Review: Ed Schiebel <eschiebel@instructure.com>
fix emoji picker in SG2 so that an empty array is passed if there are
no excluded emojis instead of an array with an empty string
closes EVAL-4435
flag=platform_service_speedgrader
test plan:
- ensure SG2 emoji picker shows all emojis and categories
Change-Id: I694b503ec249ae4703bba16b0d33298beb29118f
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/354655
QA-Review: Drake Harper <drake.harper@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Product-Review: Cameron Ray <cameron.ray@instructure.com>
Reviewed-by: Spencer Olson <solson@instructure.com>
Reviewed-by: Derek Williams <derek.williams@instructure.com>
fixes RCX-2192
flag=none
Test Plan:
- Have course with lots of pages
- Go to Pages
- Scroll to bottom, see Load More button
- click button, more pages load
- Repeat until no more pages to load
- Button is hidden
- Click a sort field
- Button is displayed
- Have course with 0 pages
- Go to Pages
- Button is hidden
Change-Id: I55ccfc0cff6283e634922b01ab4b1f2763b77707
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/355273
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Eric Saupe <eric.saupe@instructure.com>
QA-Review: Eric Saupe <eric.saupe@instructure.com>
Product-Review: Jacob DeWar <jacob.dewar@instructure.com>
this code turns out to have been redundant
ever since this was merged in 2018:
https://gerrit.instructure.com/c/canvas-lms/+/158759/3/app/models/importers/wiki_page_importer.rb#111
so it can be removed and the course copy wiki specs still pass
test plan:
- course copy specs pass
flag=none
refs CANVAS-N7CV
Change-Id: If694a0b1975c266cccfa663798ee33fce750b6a4
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/353069
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Mysti Lilla <mysti@instructure.com>
QA-Review: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
closes VICE-3917
flag=discussion_checkpoints
Test plan:
- Test passes.
- Go to SpeedGrader.
- If a student has a partial submission or full submission
the Previous and Next buttons should show on the right side.
Change-Id: I129d3be6856879d6fbaa29fdd8677deb16024d36
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/355240
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Martin Yosifov <martin.yosifov@instructure.com>
QA-Review: Caleb Guanzon <cguanzon@instructure.com>
Product-Review: Sam Garza <sam.garza@instructure.com>
test plan:
- load the student roster in a course
- note that the InstUI Spinner is now used
Change-Id: I7f7be5f5241a9770c3051fadd2741cc6d873b51c
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/355245
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Spencer Olson <solson@instructure.com>
QA-Review: Aaron Shafovaloff <ashafovaloff@instructure.com>
Product-Review: Aaron Shafovaloff <ashafovaloff@instructure.com>
When editing a Developer Key in the UI, removing the Text field saves
the value as an empty string. This breaks the tool label fallback logic
and results in the empty string being used. This commit fixes that.
fixes ADV-171
flag=top_navigation_placement
Test plan:
- PreReqs:
- A tool with top_navigation placement
- Set the placement text to an empty string
- This can be done by editing the key in JSON mode or by adding text,
saving it, and then removing and saving again in the UI.
- Verify that the key title is used in the Top Navigation placement.
Change-Id: I5680fbc1516062c0453e268cd673f7f56f21857d
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/353065
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Xander Moffatt <xmoffatt@instructure.com>
Reviewed-by: Tucker Mcknight <tmcknight@instructure.com>
QA-Review: Xander Moffatt <xmoffatt@instructure.com>
Product-Review: Dustin Cowles <dustin.cowles@instructure.com>