we should be able to lock availability dates for pages in
blueprint courses, and availability dates should copy over
when doing course copy, and they should be able to be shifted
when adjusted dates is requested.
closes LX-1849
flag=selective_release_backend
test plan:
- For blue print locking:
- create a blue print course by checking Enable course
as a Blueprint Course in the settings page
- under 'Locked Objects by Type', under pages,
check the 'availability dates' check box
- create a page and add availability dates, and then lock
the page by clicking the blueprint button on the show page
- associate and sync a course
- in the associated course, check any place where the assign to
tray is and ensure that you cannot edit the availability
dates
- For course copy:
- create a course that has a page with availability dates
- copy the course, ensure that the page in the copied course
has availability dates
- copy the course again, this time checking the 'adjust events
and due dates' box, and enter dates to shift the copied
course to. Ensure that the dates of the page are shifted in
the copied course
- copy the original course one more time, this time checking
the 'adjust events and due dates' box, and checking 'remove
dates'. Ensure that the page's availability dates have been
removed in the copied course.
Change-Id: I932dbabc968316b5be367ea02d6dd7af255af35a
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/356510
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Robin Kuss <rkuss@instructure.com>
Reviewed-by: Robin Kuss <rkuss@instructure.com>
Product-Review: Sarah Gerard <sarah.gerard@instructure.com>
fixes RCX-2121
flag=none
Test plan
- Set up a quiz with a link to an image in the RCE
- Export the quiz as a QTI
- Import the quiz to a new course and ensure
the image is properly linked
Change-Id: Ifca00347d673f8eb8306ce09c0a8a3a56a4b321e
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/353272
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Product-Review: Mysti Lilla <mysti@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Jacob DeWar <jacob.dewar@instructure.com>
fixes RCX-1833
flag=none
Test plan:
- Create a new course
- In course settings, check the file storage
- If it is an old account, it will show 524MB
- If it is a new account, it will show 500MB
Change-Id: Idea02d4b12f1fcb3e1754d990f44dfb7ee575a39
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/349916
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: Murilo Paiva <murilo.paiva@instructure.com>
closes QUIZ-13486
flag = common_cartridge_qti_new_quizzes_import
Test plan: specs should pass
Change-Id: Ib370b8e0a32a1e503a10b0798e8861e4ee0c3e8e
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/343664
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: James Logan <james.logan@instructure.com>
QA-Review: James Logan <james.logan@instructure.com>
Product-Review: Marissa Pio Roda <marissa.pioroda@instructure.com>
closes CLAB-26
flag=none
Test plan:
- Create a course, enable Discussions Redesign FF
- Go to Discussion page and:
-- Turn off Report replies
-- Turn on Create anonymous discussion topics
- Save settings
- Now create another course, enable Discussions Redesign FF
- Go to second course import page, and copy over the first course
- See if the discussion page has the similar settings
Change-Id: I887cdfc811b93491d2a6ce87d525a156a4facad9
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/345150
QA-Review: Omar Soto-Fortuño <omar.soto@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Product-Review: Kata Virag Keri <kata.keri@instructure.com>
Reviewed-by: Mysti Lilla <mysti@instructure.com>
flag=points_based_grading_schemes
closes EVAL-3553
Test Plan:
Prerequisites: - Two courses (src and dest) with grading schemes
enabled in the course settings.
- Points Based FF turned ON
- In src create a points based grading scheme.
- Go to dest and run a course copy to copy all of the contents of src
into dest (or just the course settings).
- Ensure that the points based grading scheme from src has imported as
a points based grading scheme in dest with the correct scaling factor.
Change-Id: I4f6e096f8bc1c4231055296843be5eea542c0846
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/329755
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Christopher Soto <christopher.soto@instructure.com>
Reviewed-by: Derek Williams <derek.williams@instructure.com>
QA-Review: Christopher Soto <christopher.soto@instructure.com>
Product-Review: Ravi Koll <ravi.koll@instructure.com>
flag=restrict_quantitative_data
closes EVAL-3585
Test Plan:
- Enable restrict_quantitative_data flag
- create a course
- go to courses/:course_id/settings#tab-details
- check 'Restrict view of quantitative data' and click update
- copy the course
- the copy should has 'Restrict view of quantitative data'
checked
Change-Id: I6e5ad1bd34a20ddfb73fa2eef27a73a7da72b77f
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/330507
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Derek Williams <derek.williams@instructure.com>
Reviewed-by: Samuel Lee <samuel.lee@instructure.com>
QA-Review: Kai Bjorkman <kbjorkman@instructure.com>
Product-Review: Ravi Koll <ravi.koll@instructure.com>
fixes LF-720
flag=none
Test Plan:
- Create several recurring course calendar events
- Export the course and import it into another
- Check that the recurring events made it correctly
to the destination course
- Try the same with Blueprint Syncs and Course copies
- Ensure the recurring events are properly linked in
their destinations
Change-Id: I16297906bcabc7c23620f6cf4467baecb37f9615
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/327058
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Robin Kuss <rkuss@instructure.com>
Reviewed-by: Mysti Lilla <mysti@instructure.com>
QA-Review: Robin Kuss <rkuss@instructure.com>
Product-Review: Luis Oliveira <luis.oliveira@instructure.com>
creating a new database field to track the orignal outcome id in
copied outcomes with the course copy process, adding the new param
in the live event message to outcome service.
closes OUT-5561
closes OUT-5562
closes OUT-5571
flag=none
test plan:
- Tests pass
Change-Id: If53821426a115a0f6635d22cf59026c14892bace
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/316476
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Chrystal Langston <chrystal.langston@instructure.com>
QA-Review: Chrystal Langston <chrystal.langston@instructure.com>
Product-Review: Kyle Rosenbaum <krosenbaum@instructure.com>
Migration-Review: Cody Cutrer <cody@instructure.com>
[skip-stages=Flakey]
Change-Id: I6abefdfa9fed6dd4525c8786e93efa548b3710f2
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/319603
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Isaac Moore <isaac.moore@instructure.com>
QA-Review: Jacob Burroughs <jburroughs@instructure.com>
Product-Review: Jacob Burroughs <jburroughs@instructure.com>
Build-Review: Jacob Burroughs <jburroughs@instructure.com>
Migration-Review: Jacob Burroughs <jburroughs@instructure.com>
Media tracks (captions) will be linked to
attachments directly as well as media
objects so that teachers can update captions
on videos they didn't originally upload
This commit allows those attachment linked
captions to be copied to new courses
closes MAT-1204
flag=none
QA-risk: medium, course copy could be
affect, though there are specs in place
[fsc-timeout=30]
Test plan
- Create a course with a video with captions
- Copy that course to another course
- Have a teacher without access to the
original edit the caption using the new
media_attachment route (sadly the UI
won't handle this yet, you'll have to do
it on the back end)
- Copy the second course and make sure that a new
media track was created for the new attachment
that points to the video in the new course
- Check to make sure the media object didn't get
copied
- Note that BluePrint relocking on Media Tracks
is not currently working. I think this is because
of Media Tracks not being soft-deletable, but
also may have something to do with me using
attachments as the base for checking whether
we're allowed to change things.
Please note anything weird you find in that
department so that we can look at it later, but
don't worry overly much about testing it at the
moment.
Change-Id: Id8f965496d1499949adf6d014454ab1c8163c98f
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/315468
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Eric Saupe <eric.saupe@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Eric Saupe <eric.saupe@instructure.com>
Product-Review: Mysti Lilla <mysti@instructure.com>
when exporting a canvas cartridge, add a context.xml file
containing the course id as well as the root account
global id, uuid, and (if available) domain
then when importing a package, find the original source course
(if possible) using the root account uuid and/or domain.
this will allow the asset_id_map API endpoint (and
forthcoming live event info) to function for export/import
(subject to some limitations, of course, since the source
course may have changed by the time the import happens
or may not even belong to the same canvas instance at all)
test plan:
- export a package
- import it again
- use the content migration show endpoint to view the
import migration
- it should include source course information
(which was previously only available for course copy)
refs FOO-3302
Change-Id: I36c519634413f606042d400a27c5dd2ee4d3df7b
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/308822
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Luis Oliveira <luis.oliveira@instructure.com>
QA-Review: Luis Oliveira <luis.oliveira@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
this isn't about blueprint syncing, it's about copying
the blueprint course itself and making the destination
also a blueprint course with the same settings and
locked items
test plan:
- set up a course as a blueprint course
- set up custom options for locking different types
of learning objects
- lock objects of each lockable type
(assignment, file, topic, quiz, page, course pace)
- copy the blueprint to a new course shell
via Settings / Copy This Course
- check the "Copy Blueprint Settings" box
- the blueprint settings and locked items should
be preserved in the destination
flag=copy_blueprint_settings
refs LS-3574
Change-Id: I0dab774731dcc2143743aa1f9a6bb35646ac00d8
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/304671
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Luis Oliveira <luis.oliveira@instructure.com>
QA-Review: Luis Oliveira <luis.oliveira@instructure.com>
Product-Review: Allison Howell <allison.howell@instructure.com>
but only if it's modified from the account default
test plan:
- have two subaccounts with different time zones
- copy a course shell from one to the other
- the destination course's time zone should still match its
subaccount's time zone, not the original course's time zone
- modify the time zone in the original course
- recopy it
- now the time zone in the destination course should
match the original
flag=none
closes LS-3577
Change-Id: Ia9f7f83f32ff74ee906f7792315b522a58ecbdb7
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/304719
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
Reviewed-by: Luis Oliveira <luis.oliveira@instructure.com>
QA-Review: Luis Oliveira <luis.oliveira@instructure.com>
test plan:
- enable the scheduled page publication feature in
your account
- create or edit a page and set a publish_at date
in the near future
- wait for that time (and ensure jobs are running and
not backlogged)
- ensure the page became published (and its module item was
published if it's in a module)
- ensure when a page scheduled to be published in the future
is copied as part of course copy, the copy gets published
at that time too
- unless dates are shifted. the publish_at date should be
shifted the same as the others
- if a page is scheduled for publication in the near
future, then the course is copied after the page is
published, shifting the publish_at date into the future,
the page in the destination course should be unpublished
(and the calendar icon should show the publication date)
- ensure when a page in a blueprint associated course is
automatically published, future syncs still update the page
(the auto-publish isn't counted as a downstream change
that causes sync exceptions)
- on the pages index, a page that is scheduled for publication
but not yet published shows a red calendar icon in place of
the gray circle-slash thing ordinarily seen next to unpublished
pages
- same goes for the modules page
and the button at the top of page show
- clicking the icon lets you publish the page now,
unpublish it (remove the scheduled publication), or
change the publication date
- when a page that is scheduled for publication is included in
an unpublished module, publishing the module doesn't publish
the page (and you get a notice)
if the feature is turned off after scheduling pages to be published,
no evidence of it is visible in the UI and the page will not be
published when the time arrives. (we figure this is easier than
updating all pages in the account to wipe the publish_at date
for a scenario that doesn't seem likely to begin with anyway)
note that I removed the tooltip from the publish button on page show
because it always duplicates the button text, but the tooltip
remains on the publish icon
closes DE-1346
flag=scheduled_page_publication
Change-Id: Iba16b3d788bcb0051e022e2706446020e6b8171b
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/297715
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
QA-Review: Ed Schiebel <eschiebel@instructure.com>
Product-Review: David Lyons <lyons@instructure.com>
Migration-Review: Jacob Burroughs <jburroughs@instructure.com>
why
With resource_links now having urls, when looked up via retrieve, the
url launched is taken from the resource link's url column. If that
column is nil, then the tool's url will be used. Some resource links
rely on this behavior to launch the url. During course copy, the url in
the export is now included in the export and persisted in the import,
causing all imported resource links to never persist a nil url.
This commit updates the exporter with a new custom property in the cc
export, a resource_link_url, which includes the url column from the
exported resource_link. The importer will use this to populate the new
resource link's url column, and will use the standard cc launch_url
simply to lookup the tool to associate.
fixes INTEROP-7572
flag=none
test plan:
Find an existing course with a resource_link that has a nil url, and
copy that course. the new course should have the same resource_link,
except the url in the new resource link should still be nil.
Change-Id: I62f85689a4a6a7a2cbd8f95f82c6dde343d7b8e0
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/297340
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Xander Moffatt <xmoffatt@instructure.com>
QA-Review: Xander Moffatt <xmoffatt@instructure.com>
Migration-Review: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Paul Gray <paul.gray@instructure.com>
fixes LS-3162
flag=course_paces
[fsc-max-nodes=18] [fsc-timeout=30]
test plan:
- Configure course paces in a course
- Make that course a blueprint
- Associate it and sync it to a second course
- Check that the proper assignment durations
flow downstream
- Alter course pacing in the child course
- Check that on further syncs downstream
changes aren't overwritten
- Lock the duration for some assignments
- Check that on further syncs those durations
are now overwritten
Change-Id: I0a92835407566bd47581c7782039def18d31fe2c
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/293351
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: Allison Howell <allison.howell@instructure.com>
Migration-Review: Jeremy Stanley <jeremy@instructure.com>
flag=none
closes VICE-2774
Test Plan:
- Tests pass
- Go to course A
- Create an Anonymous Discussion Topic
- Go to course B
- Go to Settings
- On the right side, click on Import Course Content
- On Content Type select Copy a Canvas Course
- Search for the course A (whatever name it has)
- On Content choose: "Select specific content"
- Click on Import
- Then on the Current Jobs table click on Select Content
- Expand Discussion Topics (clicking on the arrow)
- Select the discussion topic to import
- Click on Select Content.
- Once the job is completed, verify that the
Discussion Topic was added to the course
as anonymous.
Change-Id: I0ce26478c3f3fea3a7fb3c305ef8985390ab606a
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/295548
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Caleb Guanzon <cguanzon@instructure.com>
Reviewed-by: Jeffrey Johnson <jeffrey.johnson@instructure.com>
Product-Review: Jeffrey Johnson <jeffrey.johnson@instructure.com>
fixes FOO-2934
flag = none
Test plan:
• Enable the following root account features:
• :course_templates
• :filter_speed_grader_by_student_group
• Create a course and check the following boxes in the course
settings:
• Enable course as course template
• Launch SpeedGrader Filtered by Student Group
• Create a sub-account, in the account settings designate the
course as the “Course Template” and save your changes
• In that sub-account, create a new course and wait for the
template import to finish
• Once done, check the course settings and note that
“Launch SpeedGrader Filtered by Student Group” *is* checked
Change-Id: I41265f1dbc076a2895a8100f2202353276da9dc3
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/295797
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Ben Rinaca <brinaca@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: August Thornton <august@instructure.com>
flag=none
closes VICE-2774
Test Plan:
- Tests pass
- Go to course A
- Create an Anonymous Discussion Topic
- Go to course B
- Go to Settings
- On the right side, click on Import Course Content
- On Content Type select Copy a Canvas Course
- Search for the course A (whatever name it has)
- On Content choose: "Select specific content"
- Click on Import
- Then on the Current Jobs table click on Select Content
- Expand Discussion Topics (clicking on the arrow)
- Select the discussion topic to import
- Click on Select Content.
- Once the job is completed, verify that the
Discussion Topic was added to the course
as anonymous.
Change-Id: Ib9c4e2ba3e112805e5d68b7feabd94ab34bae20b
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/293232
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Drake Harper <drake.harper@instructure.com>
Product-Review: Drake Harper <drake.harper@instructure.com>
QA-Review: Chawn Neal <chawn.neal@instructure.com>
fixes LS-2989, LS-2988
flag=pace_plans
test plan:
- Specs should pass
- Enable the course paces account feature flag
- Enable the course paces setting on a course
- All current pacing related features should work as expected
Change-Id: Ibd1d9f3295f624a3f2411c72ad5ace9410d965ca
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/286519
Migration-Review: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Eric Saupe <eric.saupe@instructure.com>
Reviewed-by: Robin Kuss <rkuss@instructure.com>
QA-Review: Robin Kuss <rkuss@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Closes MAT-715
flag=buttons_and_icons_root_account
Test Plan:
- build canvas-rce and canvas JS bundles
- navigate to (or create) a course with a teacher
enrolled
- Act as the teacher in the course
- In a new browser or incognito window that does
not share the same session, navigate to a different
canvas course. No need to act as a teacher, just
use your site admin user
- In the second session and second course, create a
button and icon
- Navigate to the files UI in the second course
- Find the button and icon you created and click
them menu on the file. Choose "Send To"
- Type the name of the teacher in the first course
- Select the teacher and choose "Send"
- Make sure delayed jobs are running
- As the teacher in the first course, refresh the
page until a notification shows up on your account
profile picture
- Click the notification and then "Shared Content"
- Choose to import the new share
- Select the teacher's course in the tray that opens up
and click import
- Wait for the import to complete (You will see jobs stop
running)
- As the teacher in the first course, navigate to an RCE
- Open the saved buttons and icons tray and validate the
shared button and icon is present
Change-Id: I438f03ea9216ba8a6131a24ca2914c00d9ac1067
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/285977
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: David Lyons <lyons@instructure.com>
refs INTEROP-7258
flag=none
These can exist when exporting a course where there are
Lti::ResourceLinks whose current_external_tool is an LTI 1.1 tool
without a URL. A future commit will prevent ResourceLinks with no URL
from appearing in an export, but since people already have export files
with these LRLs without URLs, we should fix it to not crash the import.
Test plan:
- Have a course with some resource links (e.g. create an LTI 1.3
assignmentor use deep linking in RCE in the syllabus, when editing an
assignment body, etc.)
- Create an LTI 1.1 tool without a URL (but with a domain) in the course
or account.
- In a Rails console, change the context_external_tool_id of the
Lti::ResourceLink to point to the LTI 1.1 tool with no URL.
- Export the course. Check in the resulting imscc file (actually a zip
file) that there is a file in lti_resource_links/ that does not have a
launch_url or secure_launch_url.
- Import the course content in some course. The import should succeed.
- In a rails console lookup resource links with the same lookup_uuid as
the one pointing to an LTI 1.1 tool to make sure no resource links
were created by the import:
Lti::ResourceLinks.where(lookup_uuid:
lrl_pointing_to_11tool.lookup_uuid)
Change-Id: I420929b2d291d551f43bd2189a48cb911971e1cf
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/285477
Product-Review: Evan Battaglia <ebattaglia@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Xander Moffatt <xmoffatt@instructure.com>
QA-Review: Xander Moffatt <xmoffatt@instructure.com>
why:
* without this, module item launch dimensions don't carry over to
the new course during course copy
* this commit includes both export and import
closes INTEROP-6837
flag=none
test plan:
* create a module item that launches a 1.3 tool
* in the rails console update the content tag's link settings:
`ContentTag.last.update!(link_settings: { selection_height: 123,
selection_width: 789 })`
* launch this module item and confirm the dimensions are not normal
* create a new course and Import Course Content
* select the old course and the module item to import
* launch the module item in the new course - it should have the same
not-normal dimensions as the old module item
Change-Id: If66c9ba11b341979ed8542663cbd2bd127477094
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/281623
Reviewed-by: Mysti Lilla <mysti@instructure.com>
QA-Review: Tucker Mcknight <tmcknight@instructure.com>
Product-Review: Xander Moffatt <xmoffatt@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
test plan:
1. enable K5 mode
2. set a wide banner image on a course to a file from the course
3. copy the course
4. the image should follow
5. repeat steps 2-4 using an external URL instead of a course file
6. repeat steps 2-5 only export/import instead of course copy
flag=none
fixes LS-2881
Change-Id: I7184e8a6d77d5b793fbfe3d2a4582ab5df1b00f9
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/280538
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
QA-Review: Ed Schiebel <eschiebel@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
Copy over a course's final_grade_override setting as part of a course
copy. Note that the Final Grade Override feature flag must be enabled on
a parent account (not on the course itself) for FGO to be enabled on the
destination course, since feature flag statuses are not included in
course copies.
closes EVAL-2071
flag=none
Test plan:
- Have a course with final grade override enabled
- To test copying the setting, the Final Grade Override feature flag
should be enabled on the course's account, or higher up
- Copy the course
- Check that final grade override is enabled on the destination course
Change-Id: I9f0401f4a737deffb4dac9ae4a9294a6fcd3a28d
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/277992
Reviewed-by: Spencer Olson <solson@instructure.com>
Reviewed-by: Dustin Cowles <dustin.cowles@instructure.com>
Reviewed-by: Eduardo Escobar <eduardo.escobar@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Product-Review: Syed Hussain <shussain@instructure.com>
QA-Review: Kai Bjorkman <kbjorkman@instructure.com>
fixes LS-2665
flag=none
test plan:
- Create a course with a late policy
- Export and import the course to a new course
- Verify the late policy was copied as well
- Verify copying the course also brings the late policy with it
Change-Id: I403a5ac2ae0b5dfea84f6d9f8ba4cf6e3cc6661e
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/278450
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: Eric Saupe <eric.saupe@instructure.com>
fixes LS-2723
flag=pace_plans
test plan:
- Creating and publishing pace plans for courses, sections, and users
should create all relevant assignment overrides with correct dates
- Pace plans frontend should continue to work as expected
- Pace plans should no longer have the start_date column but should
return a start_date for the relevant context's start_at date. For example,
if the pace plan is for the user then the start_date will be the start_at
date for the user's enrollment. Course section pace plans return the
course_section.start_at. The fallback for all start_at is the course's
start_at date.
Change-Id: Iffce86bd0eca65a4f51db5f88e2b35833b7bc1f1
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276317
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Eric Saupe <eric.saupe@instructure.com>
test plan:
- create a pace plan in a course
- set attributes on the pace plan
- set durations for module items
- copy the course
- the destination course should preserve pace plan attributes
and module item durations
flag = none
closes LS-2451
Change-Id: If13cbb61ddbd1edc5cc23fd90cd2f74e4a274179
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/272073
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jeff Largent <jeff.largent@instructure.com>
QA-Review: Jeff Largent <jeff.largent@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
closes OUT-4493
flag=outcomes_friendly_description
test plan:
- Do each of the following:
- Import a course with an outcome that has a
friendly description
- Course copy a course with an outcome that has
a friendly description
- Create a blueprint course with an outcome that
has a friendly description
- Observe that the friendly description is imported
properly and is present within the imported
outcome
Change-Id: I824853e5ccccca7e37fc3598aa1f761c36355e9e
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/270994
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Pat Renner <prenner@instructure.com>
Product-Review: Ben Friedman <ben.friedman@instructure.com>
Reviewed-by: Pat Renner <prenner@instructure.com>
Reviewed-by: Martin Yosifov <martin.yosifov@instructure.com>
test plan:
- in a course where C4E is enabled, there should be
a "friendly name" option in course settings.
- if a friendly name is set, it should be used on
the dashboard, in important dates, in the
filter calendars modal, and in email notifications
- if C4E is turned off, the friendly name option
doesn't appear and any name that was set
there previously doesn't appear either
closes LS-2388
Change-Id: I245cac21d92f0f4b81c1598e24af6dbc7dcef807
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/270755
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Robin Kuss <rkuss@instructure.com>
Reviewed-by: Robin Kuss <rkuss@instructure.com>
Product-Review: Peyton Craighill <pcraighill@instructure.com>
closes OUT-4548
flag=improved_outcomes_management
Test plan:
Step 1: Setup a course group with source_outcome_group_id present:
You can do this in 2 differents way:
* 1: In any course, grab a learning outcome group and set the
"source_outcome_group_id" attribute.
This id must be the group id of an account group.
* 2: Or use the graphql import API to import a group from the account
Follow instructions on g/259131, section "Import a whole
group from account to course"
* After you setup the group, let's say you setup the group called
"group 1", grab the id of "group 1" and hold for now as GROUP_1_ID.
* You can grab the id by using the web inspector and inspect the
graphql request after selecting the group in the LHS
Step 2: Export course content:
* Go to course -> settings -> export course content
Export type: course
* Click "Create export"
* Wait the export to finish and click in "New Export"
Step 3: Verify exported content.
* Go to finder and find the exported file, it should has the
.imscc extension. Replace the extension to .zip and unzip it
* Open the file course_settings -> learning_outcomes.xml
* Assert it's populated some source_outcome_group_id nodes of
learningOutcomeGroup node
* rename it back to .imscc
Step 4: Import the course content in a blank course at the same account.
* Go to account -> "+ course"
* Go to the new course -> settings
* Import course content
Content type: Canvas Course Export Package
Source: the imscc file
Content: All content
Click "Import"
Wait until its done
Step 5: Assert import works properly
* Go to course -> outcomes
You should see same outcomes as the exported course
* Grab the id of the "group 1" that was just imported, lets
hold in IMPORTED_GROUP_1_ID.
* Go to console:
Assert the source_outcome_group_id of GROUP_1 is the same
of IMPORTED_GROUP_1_ID
Assert the source_outcome_group_id are present (not nil)
LearningOutcomeGroup.find(GROUP_1_ID)
LearningOutcomeGroup.find(IMPORTED_GROUP_1_ID)
Step 6: Import the course content in a blank course IN A DIFFERENT
account.
* Same as step 4
Step 7: Assert import works properly
* Same as step 5, but now the source_outcome_group_id should
not be populated, since its belongs to a different account.
Check this behavior in console
Step 8: Assert course copy also copy the source_outcome_group_id
* go to settings in course you want to copy > copy this course
* check in console like step 4
Change-Id: Iada96de5b614441d86cdab96644d6110d7e3fe58
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/268694
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Augusto Callejas <acallejas@instructure.com>
Reviewed-by: Pat Renner <prenner@instructure.com>
QA-Review: Martin Yosifov <martin.yosifov@instructure.com>
Product-Review: Augusto Callejas <acallejas@instructure.com>
Previously, we had added support for migrating custom parameters for
tools that were in a course or assignment context. The next step logical
step after this was to add support for copying over custom params for
tools that were module items. This means that teachers will no longer
have to manually re-add LTI 1.3 tools to their modules after doing a
course copy.
closes INTEROP-6881
flag = none
test-plan:
* Install the LTI 1.3 Test Tool. You'll want to make sure it has the
module item placement, so you can add it as a module item. In addition,
you'll want to give it no custom parameters.
* Create a new course and add the test tool to a module as a module
item. When you're adding it, make sure to define some custom
parameters, something like `{ "context_id": "$Context.id" }` Also add an assignment and a URL, just to be thorough.
* Create a new empty course and perform a course copy from the original
course.
* Launch the tool from the module. You should see in the custom
parameters section that the custom parameters you defined in the
original course!
* Export the original course into an IMS Common Cartridge file. Then
import that file in a new course. You should still be able to launch the
tool from the module and have the custom params get copied over.
Change-Id: I37265ea8a28f15e6ebc711e18df6aad1c6ef883a
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/268683
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Reviewed-by: Mysti Lilla <mysti@instructure.com>
QA-Review: Xander Moffatt <xmoffatt@instructure.com>
Product-Review: Ryan Hawkins <ryan.hawkins@instructure.com>
this matches the version used by Canvas proper when it
sanitizes user HTML, to prevent surprises in migrations
test plan:
- put the HTML attached to the ticket in a page
- it should survive an export/import or course copy round trip
flag = none
fixes LS-2241
Change-Id: Iae07c73e3b994dddf814ad5ee7dc4c2bd0284559
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/267889
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Nate Armstrong <narmstrong@instructure.com>
QA-Review: Nate Armstrong <narmstrong@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>