Commit Graph

664 Commits

Author SHA1 Message Date
Mysti Lilla 2b2182da47 QTI export/import not linking to files
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>
2024-08-01 19:37:59 +00:00
Jeremy Stanley 33a84845b1 optimize course template copy conversion
make course template copies perform the conversion step on the
export side rather than the import side (like blueprints)
to improve the performance of creating multiple new courses
that inherit from the template

test plan:
 - set up a course template in an account
 - create several new courses
 - they should import the template properly
 - their content migrations' attachment should be a course export
   json file, not a common cartridge zip file

flag=course_templates
closes FOO-4469

Change-Id: I127d3997794f22bb81bdc10f3e6eab858c38c485
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/352868
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: August Thornton <august@instructure.com>
QA-Review: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
2024-07-18 22:56:07 +00:00
Eric Saupe 45d94c3296 Handle generic mime type lookups
fixes RCX-2096
flag=none

test plan:
- Have an Attachment with a content_type like "video" or "audio". It's
important that it is the single word and does not include the extension
like "video/mp4". Also remove the file extension from the attachment's
filename and display_name fields.
- With a media object for that attachment, insert a media comment like
`<a id="media_comment_abcde" class="instructure_inline_media_comment
video_comment" href="/media_objects/abcde"
data-media_comment_type="video" data-alt=""></a>`
- Copy the course
- Verify no errors were thrown and the file works as expected in the new
course

Change-Id: Idfcacd140ba91c57be6867d0e75294613f9668d3
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/352393
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Product-Review: Eric Saupe <eric.saupe@instructure.com>
Reviewed-by: Mysti Lilla <mysti@instructure.com>
QA-Review: Mysti Lilla <mysti@instructure.com>
2024-07-12 15:46:22 +00:00
Mysti Lilla 5069e67e3d Ensure found media attachments have media id and approx content type
fixes RCX-2001
flag=none

Test plan
- Set up a media object in course A and get the media ID
- Update the attachment for the media object: remove
  the media_entry_id field, change the content_type to
  unknown/unknown, change the workflow state to pending_upload,
  and remove the file extension from the display_name and
  filename
- In Course B, create rich content that looks like
  <p><a id="media_comment_m-index0" class="instructure_inline_media_comment
  video_comment" data-media_comment_type="video" data-alt=""></a></p>
- Do a course copy and ensure it copies correctly as a media attachment link
- In a fresh course, reset the attachment up and do an import/export
- Do all the same stuff, but remove the media_entry_id from the attachment
  as well and ensure course copy and import export still work

Change-Id: I734f27b1786b184e33c5cb314b463931efe54513
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/350767
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: Mysti Lilla <mysti@instructure.com>
2024-07-05 19:56:35 +00:00
Dániel Török 8dee078bda Revert "Fix content migrations so it won't overwrite custom params"
This reverts commit 6bef7578f8.

refs CLAB-296
flag=none

Reason for revert: CLAB-296

Change-Id: I2ad8526e377d8c6d065ec85114793d070ea69bf3
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/351135
Reviewed-by: Viktor Szpisják <viktor.szpisjak@instructure.com>
Reviewed-by: Rajmund Csehil <rajmund.csehil@instructure.com>
QA-Review: Viktor Szpisják <viktor.szpisjak@instructure.com>
Product-Review: Viktor Szpisják <viktor.szpisjak@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
2024-06-27 10:53:15 +00:00
Mysti Lilla eda592bafa Ensure media for links with undefined media id copy correctly
closes RCX-1839
flag=none

Test plan
- Test with https://github.com/instructure/canvas_link_migrator/pull/34
- Have a link in rich content that looks like
  <iframe title="media file" src="media_objects_iframe/media_id?type=video" data-media-type="video"
    data-media-id="undefined"></iframe>
- Ensure it points to a valid media object that doesn't have an
  attachment in the course
- Copy the course and ensure the link comes over
  as a media attachment correctly

Change-Id: I1712ce7e31e74b22028256c8d098577074102cad
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/346989
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: Eric Saupe <eric.saupe@instructure.com>
Build-Review: James Butters <jbutters@instructure.com>
2024-06-17 18:35:15 +00:00
murilo.paiva 28bed562db Fix Course File Quotas are set in Mebibytes, not Megabytes
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>
2024-06-14 18:11:12 +00:00
Matheus f776871a05 Handle migraton of deleted media attachments used with media object links
fixes RCX-1949
flag=none

Test plan:
- In RCE, upload media and change it's format to the media comment one
  (available in the ticket).
- Destroy the attachment.
- Copy the course.
- Check the resulting content displays the corrected media correctly.
- Do the same but run a cartridge migration
- Check the resulting content displays the corrected media correctly.

Change-Id: I9c6a6253016872bb7ebe89f61acce77544e1e57a
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/349338
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: Luis Oliveira <luis.oliveira@instructure.com>
2024-06-12 17:22:50 +00:00
Cody Cutrer 5e6e8b3091 rubocop: Rails/FindBy
[skip-stages=Flakey]

Change-Id: Idb7623681def2b06abab65c80c5411d3dde99cd5
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/349801
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Isaac Moore <isaac.moore@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
2024-06-11 19:46:18 +00:00
Daniel, Torok 6bef7578f8 Fix content migrations so it won't overwrite custom params
refs CLAB-27
flag=none

Test plan:

- Create an LTI 1.3 external tool Assignment
- After creation the custom_param values can’t be null, it can be empty,
  but if it’s a null value then it can’t be updated via api
- If the tool creates an empty custom_param object then use the api to
  create some
- I used `tool_course_id” and “tool_assessment_id”
- Copy the course into another one
- In the copied assignment use the api to update the custom params to
  something else
- Do a selective import from the original course to import an unrelated
  item, I imported an announcement
- After the import check the api of the assignment and verify the custom
  params stay instact.

Change-Id: Iba412cfe1265e07e52160c0c02e2cfb901f3aaa1
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/345239
Reviewed-by: Viktor Szpisják <viktor.szpisjak@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Viktor Szpisják <viktor.szpisjak@instructure.com>
Product-Review: Dániel Török <daniel.torok@instructure.com>
2024-05-24 10:36:28 +00:00
Mysti Lilla 94e4910d98 Ensure selective export copies old media correctly
fixes LF-1588
flag=none

Test plan
- Create some rich content in Canvas that links to media
  like the following, where the media object wasn't
  created in that course
  <a id="media_comment_m-45yT8fJpBYi6hrmhy6MBkN79f7uUi1as"
  class="instructure_inline_media_comment video_comment"
  data-media_comment_type="video" data-alt=""></a>
  <iframe title="media file" src="/media_objects_iframe/
  m-45yT8fJpBYi6hrmhy6MBkN79f7uUi1as?type=video"
  data-media-id="m-45yT8fJpBYi6hrmhy6MBkN79f7uUi1as"></iframe>
- Run a copy to or send to (with an import to a new course) or
  a course copy and only select the one rich content item
  and ensure that the new media links work correctly and
  are media attachment links
- Ensure the media file has been copied to the new course

Change-Id: I730d13438bab0fc2ac5d96b31d871ac59dcb5f2c
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/347247
Reviewed-by: Jacob DeWar <jacob.dewar@instructure.com>
QA-Review: Jacob DeWar <jacob.dewar@instructure.com>
Product-Review: Mysti Lilla <mysti@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
2024-05-14 17:04:20 +00:00
Jorge Arteaga b203cff6b1 new quizzes remain in their modules upon export
closes QUIZ-13334
flag = none

Test plan:
- pull the changes from g/345280 into quiz_lti
- enable all the feature flags
- create a course and add at least two modules
- create at least two new quizzes in put each
quiz in a different module
- create at least one classic quiz and put it
in a module
- export the course
- import the common cartridge package into
a new empty course
- observe that the quizzes remain in their
modules

Change-Id: I6a4628f1bbf2e3d8a054281ebba72ee47c7cc8f9
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/345418
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>
2024-05-02 22:08:28 +00:00
Mysti Lilla 2e7cecc395 Ensure media links have attachments to link to in CC
fixes LF-1549
flag=none

Test plan
- Create a media object page in Course 1
- In course 2, link to that media object with
  the media_objects_iframe and media_comment
  styles
- Copy the course
- Ensure the links work and there is an
  attachment for that object in the new course

Change-Id: I560db2478641b420277fad170ee85e4cfcaf95d3
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/346527
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: Mysti Lilla <mysti@instructure.com>
2024-05-01 21:02:33 +00:00
Adrian Diaz ac91d0d795 preserve qti new quizzes identifier
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>
2024-04-29 19:47:33 +00:00
Ricardo Oliveira 098faecc54 disable NQ resource schema generation for CC export
closes QUIZ-13633
flag=new_quizzes_common_cartridge

test plan:
- Specs pass
- Create a course with at least one New Quiz
- Generate a common cartridge content export for that course
- Verify the .zip file and that both assignment_settings.xml
and the *.html file are absent
- Verify that Course Copy works as usual
- With either feature flag disabled or other type of export,
verify that the files are present

Change-Id: Ie6d9ce7cd973b0dbdcf478b1fc7947753d5be376
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/345888
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jorge Arteaga <jorge.arteaga@instructure.com>
Reviewed-by: Adrian Diaz <adrian.diaz@instructure.com>
QA-Review: Adrian Diaz <adrian.diaz@instructure.com>
Product-Review: Stephen Kacsmark <skacsmark@instructure.com>
2024-04-23 18:45:02 +00:00
Jorge Arteaga fe6dffd959 convert links in New Quizzes QTI/XML during CC exports
closes QUIZ-13331
flag = none

test plan:
- create a course in Canvas
- add a wiki page
- add an assignment
- create a New Quiz with at least
one question
- on rich content fields, insert
"internal links" to the wiki page
and the assignment
(feel free t add more internal links
if you have more resources that could
be linked)
- on a rich content field, attach an
image
- export the course and download the .imscc
file
- go to an empty course and import the .imscc
package without migrating to New Quizzes
- observe that all the links on rich content fields
work
- go to an empty course and import the .imscc
file, migrating CQ to NQ
- observe that links appear on the rich content
fields

- Important note: there is a known issue with
Common Cartridge imports where some internal links
don't work in New Quizzes generated by converting
CQ into NQ. For example, wiki page links, and links
to classic quizzes that were migrated into NQ during
the import.

Change-Id: I109a63daf5996dec2dfcecd030dc43852c3d9766
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/344713
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Griffin Zody <griffin.zody@instructure.com>
QA-Review: Griffin Zody <griffin.zody@instructure.com>
Product-Review: Marissa Pio Roda <marissa.pioroda@instructure.com>
2024-04-22 14:58:09 +00:00
viktor.szpisjak 07b42df821 Fix discussion setting import
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>
2024-04-19 07:45:51 +00:00
Jorge Arteaga edc3a4070c include new quizzes resources in Common Cartridge IMS manifest
flag = none

closes QUIZ-13332

test plan:
- create a course
- create an item bank shared with the course
- create one New Quiz
- add at least one quiz entry that loads
questions from the item bank
- go to the course Settings page
- go to "Export Course Content"
- export the course and download the export package
- decompress the package and inspect the IMS manifest
- observe that the New Quizzes content is included
in the manifest

- go to an empty course
- import the common cartridge package and enable the option
"Import existing quizzes as New Quizzes"
- observe that the new quiz is imported correctly

- importing the pacakge with the option
"Import existing quizzes as New Quizzes" disabled
- observe that the quiz is imported (this has known limitations
due to question types incompatibilities)

Change-Id: Ibd3a2c22600ce37f61c5143f8960cc04ad1a03eb
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/343469
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Stephen Kacsmark <skacsmark@instructure.com>
QA-Review: Jorge Arteaga <jorge.arteaga@instructure.com>
QA-Review: James Logan <james.logan@instructure.com>
Product-Review: Marissa Pio Roda <marissa.pioroda@instructure.com>
2024-04-18 19:00:46 +00:00
Jason Perry 47633af85d Use identifiers for headings in ePub module pages
Fixes FOO-4102
flag=none

Test Plan:
- Have a course with published modules containing pages
- Enable epub export feature flag
- Export the course to ePub, see that you can link to module pages now

Change-Id: If872e1f39005189136e16cc5e04f8a018798ef66
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/345617
Reviewed-by: Charley Kline <ckline@instructure.com>
Reviewed-by: August Thornton <august@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Jason Perry <jason.perry@instructure.com>
Product-Review: Jason Perry <jason.perry@instructure.com>
2024-04-18 18:29:27 +00:00
Mysti Lilla 3fda2a6ce8 Clean up media attachment references in export
refs LF-203
flag=none

Test plan
- In RCE in an old quiz in Canvas do the following:
- Set up a standard media iframe
- Set up a media link that looks like this:
<p><a id="media_comment_m-65LRekaWzXTLCp9PwqaibDkX3C5Jo6Vf"
 class="instructure_inline_media_comment video_comment"
 href="/media_objects/m-65LRekaWzXTLCp9PwqaibDkX3C5Jo6Vf"
 data-media_comment_type="video" data-alt=""></a></p>
 (use your own media id)
- Set up a media object that looks like this:
<p><iframe style="width: 200px; height: 150px;" title="Video"
 data-media-type="video" src="/media_objects_iframe/m-65LRekaWzXTLCp9PwqaibDkX3C5Jo6Vf
?type=video&amp;embedded=true" allowfullscreen="allowfullscreen" allow="fullscreen"
 data-media-id="m-65LRekaWzXTLCp9PwqaibDkX3C5Jo6Vf"></iframe></p>
- Export this as a course export and ensure it looks correct
  in the export
- Do this as a quiz export and ensure it looks correct

Change-Id: Ia5ee6bc63b179e696f0231bacbbc46e609df0e85
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/344633
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: Mysti Lilla <mysti@instructure.com>
2024-04-16 07:38:10 +00:00
Mysti Lilla 9c6efef5d5 Update media html links to media_attachment links
fixes LF-203
flag=none

Test plan
- In RCE in Canvas do the following:
- Set up a standard media iframe
- Set up a media link that looks like this:
<p><a id="media_comment_m-65LRekaWzXTLCp9PwqaibDkX3C5Jo6Vf"
 class="instructure_inline_media_comment video_comment"
 href="/media_objects/m-65LRekaWzXTLCp9PwqaibDkX3C5Jo6Vf"
 data-media_comment_type="video" data-alt=""></a></p>
 (use your own media id)
- Set up a media object that looks like this:
<p><iframe style="width: 200px; height: 150px;" title="Video"
 data-media-type="video" src="/media_objects_iframe/m-65LRekaWzXTLCp9PwqaibDkX3C5Jo6Vf
?type=video&amp;embedded=true" allowfullscreen="allowfullscreen" allow="fullscreen"
 data-media-id="m-65LRekaWzXTLCp9PwqaibDkX3C5Jo6Vf"></iframe></p>
- Copy the course to a new course and ensure all of the links
  now point to the new media file that was created in the course
- Do an export/import and ensure the same

Change-Id: I9a93980d63c9ad351b9f192d8c48dd2012178a66
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/343251
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Build-Review: Alex Slaughter <aslaughter@instructure.com>
Reviewed-by: Jacob DeWar <jacob.dewar@instructure.com>
QA-Review: Jacob DeWar <jacob.dewar@instructure.com>
Product-Review: Mysti Lilla <mysti@instructure.com>
2024-04-16 07:37:35 +00:00
Ricardo Oliveira befe5029ec disable NQ resource schema generation
closes QUIZ-13533
flag=new_quizzes_common_cartridge

test plan:
- Specs pass
- Create a course with at least one New Quiz
- Generate a content export for that course
- Verify the .zip file and that both assignment_settings.xml
and the *.html file are absent

Change-Id: I79b7543f968474ae5b7e8efcc781b68d0c2d3961
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/344551
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jorge Arteaga <jorge.arteaga@instructure.com>
QA-Review: Jorge Arteaga <jorge.arteaga@instructure.com>
Product-Review: Marissa Pio Roda <marissa.pioroda@instructure.com>
2024-04-12 15:13:45 +00:00
Ricardo Oliveira c185928ff3 skip quizzes_next_export.json for NQ CC exports
closes QUIZ-13325
flag=new_quizzes_common_cartridge

test plan:
- Specs pass
- Create a course with at least one New Quiz
- Generate a content export for that course
- Verify the .zip file and that quizzes_next_export.json
is absent

Change-Id: Ie8d4b0a3ea87013004daacbb8cede9d1f9764817
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/343776
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jorge Arteaga <jorge.arteaga@instructure.com>
QA-Review: Jorge Arteaga <jorge.arteaga@instructure.com>
Product-Review: Marissa Pio Roda <marissa.pioroda@instructure.com>
2024-04-08 18:48:32 +00:00
viktor.szpisjak 5d4915cec0 Add support assignment time_zone_edited in export - import flow
closes LF-1245
flag=none

Test plan:
- Create an assignment in a course with
current date 11:59 PM due date
- With [copy to...] feature copy it to another course
- Make sure the new assignment has the same all_day and all_day_date
and time_zone_edited values
- Export the calender that contains the copied assignment
- It should be an all-day event

Change-Id: Ibdafe894cb455768fd6fdd66978caa8f84e6a471
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/343969
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Mysti Lilla <mysti@instructure.com>
QA-Review: Mysti Lilla <mysti@instructure.com>
Product-Review: Allison Howell <allison.howell@instructure.com>
2024-04-08 06:50:06 +00:00
Jorge Arteaga b5c7fced14 load new quizzes qti into common cartridge exports
closes QUIZ-13330

test plan:
- along with this PS, pull the changes from g/341091 and g/341429
- enable the site admin feature flag
"New Quizzes Common Cartridge Support"
- create a course, and add a Classic and a New Quiz
- within the course, go to Settings > Export Course Content
- export the course
- wait for the ContentExport in quiz_lti to complete
- open a rails console in canvas-lms
- find the last ContentExport, which at this point should have
its workflow_state set as "waiting_for_external_tool"
- kick off the export process
```
ce = ContentExport.last
ce.export
```
- when the export is done, download the package and
inspect its content
- the New Quizzes assignment(s) should a be included
in the package as QTI/XML. Look for the assignment(s)
within non_cc_assessments and root folders
```
mynewquizmigrationid/assessment_meta.xml
mynewquizmigrationid/assessment_qti.xml
non_cc_assessments/mynewquizmigrationid.xml.qti
```
notes:
* until we remove the old workflow for exporting
New Quizzes, there will be some duplicated content in the
package, for example, files like "assignment_settings.xml"
and "my_quiz_title.html" are New Quizzes "exported" with
the old workflow.
* we're not including New Quizzes content  in the
IMS manifest yet. There's a separate ticket for that.

Change-Id: Iaa1863cf2fc50295848a044e1fee5e9b29ab95db
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/342481
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Mark McDermott <mmcdermott@instructure.com>
QA-Review: Mark McDermott <mmcdermott@instructure.com>
Product-Review: Marissa Pio Roda <marissa.pioroda@instructure.com>
2024-04-03 19:41:04 +00:00
Sleyder Zuleta b47d59f064 support grading standard copy
added for archiving schemes a block and alert message
for export and copy course

closes EVAL-3717
closes EVAL-3715
closes EVAL-3716
flag=archived_grading_schemes

test plan:
- Go to database and set for one of grading standards
the workflow_state to archived
- change a course to use this archived grading scheme
setting the field grading_standard_id
- try to export or copy courses with archived scheme
- validate de process works without copy the archived
scheme

Change-Id: Ia38cfd6a0f1d56c62e29f6843551b1a186177efa
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/335701
QA-Review: Rohan Chugh <rohan.chugh@instructure.com>
Product-Review: Ravi Koll <ravi.koll@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Derek Williams <derek.williams@instructure.com>
2024-03-04 17:20:15 +00:00
Matheus fcd4ed8dc4 Stop always exporting unpublished folders on selective exports
closes LF-1159
flag=none

Test plan:
- Create a course with an unpublished folder
- Create a page and direct share it to a second course
- Check that the second course didn't get the unpublished
  folder imported to it's files

Change-Id: I4dd62b98c2deeda5fb225516cdd8ea2f0877e86b
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/339660
Reviewed-by: Jacob DeWar <jacob.dewar@instructure.com>
QA-Review: Jacob DeWar <jacob.dewar@instructure.com>
Product-Review: Luis Oliveira <luis.oliveira@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
2024-02-05 20:14:44 +00:00
Jeremy Stanley 1055e582c8 don't unnecessarily copy files before uploading
Rack::Test::UploadedFile, in addition to looking like something
that isn't intended to be used in production code, creates a copy
of the file that is passed in. This slows down things like
reports and exports, and isn't needed for our use cases,
which all involve synchronous uploads (and do not involve #append).

a note about unlinking: in a few places, the code calls #unlink
on the Rack::Test::UploadedFile instance, which (1) did not
delete the file passed into that thing, only the copy it made;
and (2) was unnecessary since that class deleted its copy itself

also note that Rack::Test::UploadedFile is still being used
to simulate uploaded files in tests... as is intended.
but no longer using it just to wrap a `content_type` around
a file we are uploading from the backend

test plan:
 - smoke test the following:
  - content export
  - account report
  - sis import
  - submission export

flag=none
closes FOO-4215

Change-Id: Ife83373be5920958eb7bdf14c2da1a56708ca11e
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/338855
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: August Thornton <august@instructure.com>
QA-Review: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
2024-02-02 19:32:30 +00:00
Mysti Lilla 9e6e06a0ff Export images from question bank links
fixes LF-637
flag=none

Test plan
- Create a question bank and create
  a question with a linked image in
  the rich content
- Use the question bank question in
  a quiz in a course
- Export the course (as QTI and CC)
- Import the package and ensure
  the new links work (they are
  going to be course files in the
  quiz after the copy and assessment
  question files in the new question
  bank)
- This DOES NOT work with course copy
  yet

Change-Id: I40b74432bd3a7c643e3046a0ab5ec39c90989c34
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/337066
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Luis Oliveira <luis.oliveira@instructure.com>
Reviewed-by: Eric Saupe <eric.saupe@instructure.com>
Product-Review: Mysti Lilla <mysti@instructure.com>
2024-01-24 23:56:05 +00:00
Jacob Burroughs 3b7130c161 Remove a lot of settings
[ignore-stage-results=Flakey Spec Catcher]

refs AE-551

Change-Id: If7b5191c20cfadc438cdc2bc8b489eb2806582fe
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/334831
Reviewed-by: Isaac Moore <isaac.moore@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Jacob Burroughs <jburroughs@instructure.com>
Product-Review: Jacob Burroughs <jburroughs@instructure.com>
2024-01-09 21:32:17 +00:00
Cody Cutrer 3e27ddeae0 bundle update rubocop-performance, rubocop-rails
[skip-stages=Flakey]
[skip-crystalball]

99% of fixes are Performance/StringIdentifierArgument, but one or
two instances of each of Performance/Count, Performance/MapCompact,
Rails/Pluck in safe navigation chains

Change-Id: Ibd2292fb9e7c1e9162068021073c3c0f4b0d65df
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/335489
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Aaron Ogata <aogata@instructure.com>
Build-Review: Aaron Ogata <aogata@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
2023-12-18 20:28:02 +00:00
Cody Cutrer c32d30f662 bundle update rubocop
[skip-stages=Flakey]
[skip-crystalball]

and apply corrections from new/updated cops:

 * Layout
 * Lint/AmbiguousRange
 * Lint/RedundantSafeNavigation
 * Style/HashEachMethods
 * Style/HashSyntax
 * Style/InverseMethods
 * Style/RedundantLineContinuation
 * Style/RedundantParentheses
 * Style/RedundantReturn
 * Style/SuperWithArgsParentheses
 * Style/SymbolProc

Change-Id: I787e46f5b1c89e0fedebd5452ba74567d66954c1
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/334291
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Aaron Ogata <aogata@instructure.com>
Build-Review: Aaron Ogata <aogata@instructure.com>
Migration-Review: Aaron Ogata <aogata@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
2023-12-06 14:25:02 +00:00
Mysti Lilla 6cdd49d1a2 Fix selective media attachment links
fixes LF-909
flag=media_links_use_attachment_id

Test plan
- Link up https://github.com/instructure/
  canvas_link_migrator/pull/18 in your Canvas
  installation (you can do a local download
  and then change Gemfile.d/app.rb to show something
  like
  gem "canvas_link_migrator", path: "../../gems/canvas_link_migrator")
- In a course, create an object that has HTML
- In the HTML, link a media attachment
- Use copy to for that item
- Ensure the new location has the attachment
  and that the video plays
- Verify send to works as well

Change-Id: Ifd493bc79a05b10e9ff0e4bb0b9721d3cda61627
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/330805
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: Mysti Lilla <mysti@instructure.com>
Build-Review: Andrea Cirulli <andrea.cirulli@instructure.com>
2023-11-06 16:53:46 +00:00
Kai Bjorkman aae897f7fa preserve points based grading in course copy
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>
2023-10-31 21:15:55 +00:00
Jason Perry 11dc8f3170 Add page content to ePub export
When a course is setup with Modules that contain published content,
pages within the ePub do not contain the body text.

Fixes FOO-3912
flag=none

Test plan:
- Create a course with a published module, add pages to the module
- Ensure ePub export feature is enabled
- As an enrolled user, go to the user's settings and download the course
  content
- You should see the page content for the module's paged in the ePub

Change-Id: Ic9ac199540218074198cb8729b9ce35a39481e7a
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/331104
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: August Thornton <august@instructure.com>
Reviewed-by: Michael Hulse <michael.hulse@instructure.com>
QA-Review: Jason Perry <jason.perry@instructure.com>
Product-Review: Jason Perry <jason.perry@instructure.com>
2023-10-30 16:14:36 +00:00
Sleyder Zuleta d6ed45d595 preserve restrict quantitative data in course copy
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>
2023-10-24 14:16:25 +00:00
Matheus c9ea7dd659 Fix 'annotatable_attachment' exporting
fixes LF-755
flag=none

Test Plan:
- Create a course with an assignment having
  submission type: annotatable_attachment
- Export said course to a new one
- Check the new one has the assignment and
  attachment
- Export this second course to a third new one
- Check that this one also has the assignment
  properly linked to the attachment

Change-Id: I674b1296c2e4ced68c4aa71bbaa0617de0749a29
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/327992
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Mysti Lilla <mysti@instructure.com>
QA-Review: Mysti Lilla <mysti@instructure.com>
Product-Review: Luis Oliveira <luis.oliveira@instructure.com>
2023-09-28 02:44:18 +00:00
Matheus ff00a37ff3 Support recurring calendar events in course migrations
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>
2023-09-12 13:59:52 +00:00
Mysti Lilla 69c44d299e Ensure home page links with query params migrate
fixes LF-656
flag=none

Test plan
- Set up a course with a page (or other rich content)
- Using the link insertion tray, insert a link to the
  home page
- Copy the course
- Verify that the home page link you made points to
  the new course after the course copy
- If you want, you can also export the course and
  make sure that the link is a $CANVAS_COURSE_REFERENCE$
  token and not a regular URL

Change-Id: Iffa27ea35b37e44bc33276baecb739d68b15b998
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/326795
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: Mysti Lilla <mysti@instructure.com>
2023-09-06 20:05:09 +00:00
Sarah Gerard 2a861145b7 Fix mislinks on duplicate page titles for bp courses
closes LF-521
flag=none

test plan:
- create a bp course with page1 and page2
- in page2, add a link to page1
- create a second course with a page called page1
- associate and sync the two courses
- page2 in the associated course should correctly link
  to the original page1 from the bp course

Change-Id: I985357abc67ea13f7a71d34245caadfcd15832a1
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/324322
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Jacob DeWar <jacob.dewar@instructure.com>
Reviewed-by: Mysti Lilla <mysti@instructure.com>
Build-Review: James Butters <jbutters@instructure.com>
Product-Review: Sarah Gerard <sarah.gerard@instructure.com>
2023-08-23 20:32:44 +00:00
Cody Cutrer 5088ae332d bundle update nokogiri
Change-Id: I6f47dd35205d7d463e93dcfdca032080d7626272
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/325721
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jacob Burroughs <jburroughs@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
Build-Review: Cody Cutrer <cody@instructure.com>
2023-08-21 19:08:06 +00:00
Cody Cutrer e1a6ca4982 bundle update rubocop
no new cops, but a few fixes to existing cops (notably
Style/RedundantReturn)

Change-Id: I64a744c3d81e25329c1612e4622ca96783b0801d
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/324942
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jacob Burroughs <jburroughs@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
Build-Review: Cody Cutrer <cody@instructure.com>
2023-08-14 16:32:06 +00:00
Mysti Lilla dd6b7ca35e Prevent error during captions copy
closes LF-483
flag=none

Test plan
- Upload an image and a media
  file to a course
- Add captions to the media file
- Link both files in the RCE
  somewhere
- Copy the course to a new
  course and verify you don't
  get an error and that the
  captions copy properly

Change-Id: If6ef6123ff4fc57b5a5e93d03375e000e5f57882
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/324531
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: Mysti Lilla <mysti@instructure.com>
2023-08-10 00:15:51 +00:00
Cody Cutrer 8f8f6f7313 bump rubocop gems and apply changes
[skip-stages=Flakey]

Change-Id: I5f080be6efb64351b4a89e6bd6040bc6f0432e82
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/323854
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jacob Burroughs <jburroughs@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
Build-Review: Cody Cutrer <cody@instructure.com>
2023-08-07 20:13:35 +00:00
Mysti Lilla db2d07bedf Move relative_url? to gem
refs LF-380
flag=none

Test plan
- Specs pass
- Course links work in course
  copy

Change-Id: I37bc765783d17ab1d5beff3589c9683635442610
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/322496
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Paul Gray <paul.gray@instructure.com>
Product-Review: Paul Gray <paul.gray@instructure.com>
QA-Review: Paul Gray <paul.gray@instructure.com>
2023-07-13 16:49:22 +00:00
Roberto Noguera 8a8eca6e38 Add param to live event messages for course copy
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>
2023-07-10 23:57:37 +00:00
Cody Cutrer aa7041d2c1 update rubocop, and apply new cops
[skip-stages=Flakey]

Change-Id: I2d3ffbeb652a6668941125a8a2afe87f104c8d0a
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/321953
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jacob Burroughs <jburroughs@instructure.com>
Build-Review: Jacob Burroughs <jburroughs@instructure.com>
Build-Review: Cody Cutrer <cody@instructure.com>
Migration-Review: Jacob Burroughs <jburroughs@instructure.com>
Migration-Review: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
2023-07-03 22:11:42 +00:00
Sarah Gerard fd8e0151b1 Make wikipage links work through course copy
turns out the correct lookups were already being copied,
so we just needed to rewrite any existing links that use old
slugs. Yay.

closes LF-280
flag=permanent_page_links

test plan:
- have a course and create some pages
- create links to those pages in other places
- change the name of some of the pages, especially some of
  the ones you created links to
- copy the course
- ensure all of the links to the pages work
- ensure the links that used to be old slugs in the previous
  course were updated to use the current slug
- ensure (using a rails console) that only the most current lookups
  for the pages were copied over. This means the number of lookups
  for a course should equal the number of pages there are

Change-Id: I22c64aa5045ec38c380399dd5f85d1bbf2df7f7d
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/321292
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: Sarah Gerard <sarah.gerard@instructure.com>
2023-06-26 23:14:13 +00:00
Mysti Lilla 5573c1d2fc Ensure BP downstream changes and re-locking works
fixes LF-288
flag=media_links_use_attachment_id
QA-risk:low

Test plan
- Set up a BluePrint course
- Upload a media file and add some captions
- Sync the BP file
- Change the captions in the child course
- Sync the BP file and make sure the child
  captions are still there
- Lock attachment content on the BP parent
- Sync the BP file and make sure you see
  the parent captions

Change-Id: I7d844822c68168bcecf7e9bf24e6241fbb8ee421
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/319814
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Luis Oliveira <luis.oliveira@instructure.com>
QA-Review: Jacob DeWar <jacob.dewar@instructure.com>
Product-Review: Mysti Lilla <mysti@instructure.com>
2023-06-13 23:51:21 +00:00
Jacob DeWar 58eafe44e7 Copy media attachment links during course copy
closes LF-232
flag=none

test plan:
- Have user content with a media attachment link
- Ideally in multiple places - page/assignment/discussion
- Run course copy
* Verify course media links have attachment id/url updated
* Verify links to USER media keep the same attachment id
* Verify old media object links are unaffected

Change-Id: I77997c0a1faef4b7171199e1e22943e53760228b
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/319919
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>
2023-06-12 22:59:47 +00:00