flag = none
closes LF-775
Test plan (regression testing the feature):
- Open an RCE
- Create a course link to a page/assignment/etc
- Click "Edit link"
- Expect to see the edit course link tray
- Switch the link and hit save
- Expect the link to be updated
Change-Id: I8481fb2a7a461849ee39114e514dd44c12d94ad4
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/329843
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jake Oeding <jake.oeding@instructure.com>
QA-Review: Jake Oeding <jake.oeding@instructure.com>
Product-Review: Jackson Howe <jackson.howe@instructure.com>
closes LF-776
flag = none
Test plan (regression test the feature):
- Open the course link tray in an RCE
- Expand a category that doesn't have any items (like no assignments)
- Expect to see messaging about creating a first assignment
Change-Id: I3752ec06991f60960083dec3cb64bc20a9e1f03b
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/329833
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jake Oeding <jake.oeding@instructure.com>
QA-Review: Jake Oeding <jake.oeding@instructure.com>
Product-Review: Jackson Howe <jackson.howe@instructure.com>
closes VICE-3858
flag=discussion_checkpoints
Test Plan:
- Go to the "Feature Options" page for the SiteAdmin account
(/site_admin/settings#tab-features)
- Verify the "Discussion Checkpoints" feature flag is listed under the
"Accounts" section (indicating a Root Account feature flag), shows
"hidden" in the Status column (indicating this feature flag is hidden
to accounts until enabled at the SiteAdmin level), and has a state of
disabled and locked.
Change-Id: Ibb0e67db23147440cdc6d0dec8de56195aa2dae5
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/329832
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Drake Harper <drake.harper@instructure.com>
Product-Review: Drake Harper <drake.harper@instructure.com>
Reviewed-by: Jason Gillett <jason.gillett@instructure.com>
closes LF-675
flag=differentiated_modules
test plan:
- with the flag on
- have a course with multiple students
- have an assignment with an ADHOC override and a course override
- ADHOC overrides can be created in the ui
- to create a course override for the assignment,
override = assignment.assignment_overrides.create!
override.update_attribute(:set_type, "Course")
override.update_attribute(:set_id, course.id)
- run EffectiveDueDates.for_course(course, assignment).to_hash
- the students with the ADHOC override should have that override,
the rest of the students should have the course override
Change-Id: I2b57f294a46cce5aedcff8caf22e888358646e3f
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/329520
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jackson Howe <jackson.howe@instructure.com>
QA-Review: Jackson Howe <jackson.howe@instructure.com>
Product-Review: Jackson Howe <jackson.howe@instructure.com>
now you can just wrap pgvector queries inside `with_pgvector`
instead of quoting the operator name (and creating a brakeman
exception)
closes ADV-45
Change-Id: Ifcb8d7d95f4c45b16dd34cfbbd784c10922548c7
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/329632
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jonathan Featherstone <jfeatherstone@instructure.com>
QA-Review: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
why:
This commit adds support for the oidc-configuration endpoint. LTI tools
will use this endpoint to discover Canvas's LTI support, and install
themselves in the platform.
test plan:
Initiate a registration request by visiting:
```
{canvas}/api/lti/register?registration_url=https://www.google.com
```
Canvas will redirect you to the `registration_url`, along with a jwt in
the `registration_token` parameter. Copy that parameter, and send a
request to the oidc-configuration endpoint:
```
curl "{canvas}/api/lti/security/openid-configuration?\
registration_token={registration_token}"
```
Verify that the information is correct.
flag=lti_dynamic_registration
closes INTEROP-7956
Change-Id: Id109cb96991543ec3446e22e7eea807296e8c477
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/328230
Reviewed-by: Xander Moffatt <xmoffatt@instructure.com>
QA-Review: Xander Moffatt <xmoffatt@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Product-Review: Paul Gray <paul.gray@instructure.com>
closes INTEROP-8239
flag=lti_resource_link_id_speedgrader_launches_reference_assignment
Why:
* Some places (notably, launching an LTI assignment) override the
resource_link_title to have the Assignment's title (cf.
app/controllers/application_controller.rb:2120).
* But when launching from
SpeedGrader (e.g. when grade passback has returned a LTI launch for a
submission), this code path is not followed, so resource_link_title is
not overridden, and it falls back to the tool name.
* Because we actually have an assignment context in this launch, we
should use the Assignment's title.
* This also expands a fix in 59674c92 which set the resource_link_id,
but only for New Quizzes tool launches (unclear why)
* Note: this does not affect LTI 1.3 -- when launched in speed grader,
the https://purl.imsglobal.org/spec/lti/claim/resource_link claim
(and similar title claim) are still the course. But LTI 1.3 tools can
use the $ResourceLink.id and $ResourceLink.title expansions to get the
assignment info.
Test plan:
- Have an LTI 1.1 tool with assignment_selection placement (for
ContentItemSelectionRequest)
- create an LTI 1.1 assignment
- create an LTI 1.1. launch submission. I did this by:
* save to a file the example XML under "LTI Launch URL" at
https://canvas.instructure.com/doc/api/file.assignment_tools.html
* launch the LTI 1.1 tool, and in devtools, grab the sourcedid in the payload.
put this into the XML file to replace the dummy sourcedid there.
* send a passback request, e.g., from a rails console (replace your
host, tool ID, and filename):
def grade_passback(host, tool_id, xml)
tool = ContextExternalTool.find(tool_id)
consumer = OAuth::Consumer.new(tool.consumer_key, tool.shared_secret)
client = OAuth::AccessToken.new(consumer)
url = "http://#{host}/api/lti/v1/tools/#{tool.id}/grade_passback"
client.post(url, xml, 'Content-Type' => 'application/xml')
end
grade_passback("web.canvas-lms.docker", 123, File.read("gradepassback.xml"))
# where 123 is the tool id
- view the submission and speedgrader
- with the feature flag off, lti_resource_link_id and
lti_resource_link_title should correspond to the tool
- with the feature flag on, lti_resource_link_id and
lti_resource_link_title should correspond to the assignment
- optional: test a non-assignment launch to make sure resource_link_title
is still the tool name.
- optional: test a module item launch to make sure resource_link_title
is still the module item name.
Change-Id: I71940c88581edb0255c020a882abfeca228537c1
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/327925
Reviewed-by: Xander Moffatt <xmoffatt@instructure.com>
Product-Review: Alexis Nast <alexis.nast@instructure.com>
QA-Review: Xander Moffatt <xmoffatt@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Implementation of the instui_nav feature flag.
This will help toggle the new navbar created with ReactRouter
in mind.
closes FOO-3878
flag=instui_nav
test plan:
- Log in to canvas as an admin
- Turn on the "This is a new navbar being implemented with
react router in mind" flag
- Refresh the browser
- Expect new navbar to appear and replace the old side navbar
Change-Id: I6e1ca999d1b92054eaa23c6bb8517a54e12015af
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/329411
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Martin Ochoa <martin.ochoa@instructure.com>
Product-Review: Martin Ochoa <martin.ochoa@instructure.com>
If feature flag 'enhanced_docviewer_url_security'
(Enhanced DocViewer URL Security) is on, when requesting
DocViewer to create a token for the view url, pass a
parameter that tells DocViewer to create a single use
launch token with a JTI claim (nonce). This JTI claim is
used by DocViewer to prevent reuse of the launch url.
closes CAS-1510
flag = enhanced_docviewer_url_security
Test Plan:
Tests pass
Change-Id: Idb0d7b0af0ddf457261e000e174449bec028b683
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/329045
Reviewed-by: Weston Dransfield <wdransfield@instructure.com>
Reviewed-by: Alex Slaughter <aslaughter@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Juan Leyva <juan.leyva@instructure.com>
Product-Review: Juan Leyva <juan.leyva@instructure.com>
Returns an assignment or quiz's date-related information and a paginated
list of assignment overrides. This new api will allow us to avoid
including a bunch of extra information about the assignment in the
request, use the same API for assignments and quizzes, and paginates the
included overrides.
closes LF-849
flag = none
Test plan:
- Create an assignment with some overrides (including at least 1 ADHOC
override)
- GET /api/v1/courses/:course_id/assignments/:id/date_details
- Expect to see the assignment's id, lock_at, unlock_at, due_at, and
only_visible_to_overrides columns
- Expect a list of overrides
- For the ADHOC override, expect to see an attribute "students" with
a list of student id and name objects
- Repeat for a classic quiz using
GET /api/v1/courses/:course_id/quizzes/:id/date_details
Change-Id: I31182438cec272651b245a69ff646429a92bf50f
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/329225
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: Jackson Howe <jackson.howe@instructure.com>