refs CYOE-310
Implement Noop AssignmentOverride set_type to persist a setless "tag"
Add MasteryPaths noop override to assignment, discussion, quiz edit
Add only_visible_to_overrides to Assignment copied attributes
Test Plan
1. Edit an assignment. From the "Assign to" dropdown select "Mastery
Paths."
2. Ensure "Everyone Else" override is removed from Assign to.
3. After saving, ensure the assignment is no longer visible to students.
4. Ensure adding other overrides (section, student) alongside MP allow
visibility as expected.
5. Ensure MP override is available and works as expected for other
"assignment types" including quiz and discussion.
6. Ensure when an assignment with the MP override is copied or imported,
its MP designation remains intact. (But any individual or section
overrides do not)
6. With the Mastery Paths feature flag disabled, the option should not
appear in the dropdown. If the flag is turned off, the MP override
should disappear but the assignment should stay invisible to students
until "Everyone" is added back again. If the flag is turned back on,
MP should reappear.
Change-Id: I17ac8345f872c111d073886c23bd7a3dd9b5dbce
Reviewed-on: https://gerrit.instructure.com/91833
Tested-by: Jenkins
Reviewed-by: Michael Brewer-Davis <mbd@instructure.com>
QA-Review: Jahnavi Yetukuri <jyetukuri@instructure.com>
Product-Review: Matt Goodwin <mattg@instructure.com>
test plan:
* create a numerical quiz question using the
"answer with precision" answer type
* copy the course
* the new question should be copied correctly
closes #CNVS-32279
Change-Id: I5e2298f5318d8467d593d1c19d0db748e7092614
Reviewed-on: https://gerrit.instructure.com/91732
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
closes OUT-383
test plan:
- create a group set and at least 2 groups
- assign some students to the groups
- create a new assignment and assign it to the
group set, and enable peer reviews
- as a student in one of the groups, submit to the
assignment
- go to the peer reviews page and attempt to
assign peer reviews
- no peer reviews should be assigned
- on the same page, enable intra-group peer reviews
- attempt to assign peer reviews, peer reviews should
be assigned to other group members of the submission
UI testing:
- when creating/editing an assignment, the intra-group
reviews toggle should only be present if the group
assignment box is checked, and if the automatically
assign peer reviews toggle is selected
- the setting for intra-group reviews should persist after
saving
Change-Id: I770749555f70b0e6d204f2d8eca268ec08ddeb36
Reviewed-on: https://gerrit.instructure.com/89757
Reviewed-by: Christian Prescott <cprescott@instructure.com>
QA-Review: Alex Ortiz-Rosado <aortiz@instructure.com>
Tested-by: Jenkins
Product-Review: McCall Smith <mcsmith@instructure.com>
Fixes PLAT-623
Test Plan:
- Navigate to course settings -> Apps
- Click '+ App' button
- Change configuration type to 'By URL'
- Fill out name, key, and secret.
- Provide a Config URL that does not lead to valid LTI XML
(i.e. http://www.instructure.com)
- Click submit and verify that a message indicating that
there was invalid XML at the URL destination appears
- Add another app via 'Paste XML'
- Fill out name, key, and secret.
- Type in a non-xml string in the config XML area
- Click submit and verify that an error message
indicating invalid XML appears
Change-Id: Idfc0f589bd25fd972185064f1941ea91ad780ec8
Reviewed-on: https://gerrit.instructure.com/88912
Tested-by: Jenkins
Reviewed-by: Nathan Mills <nathanm@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
test plan:
* the "Do not count this assignment towards the final grade"
assignment setting should persist after course copy
closes #CNVS-31512
Change-Id: I8a9dc59cbf10c2a0501b3ab6a9c947a783e2808d
Reviewed-on: https://gerrit.instructure.com/89673
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Heath Hales <hhales@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
fixes PLAT-1730
test plan:
Add a tool with a non placement extension, i.e. "post_only"
course copy the course with that tool installed
the copied tool should still have the non placement extension
Change-Id: I026df56d0b7400c5760a3b47a71710972e68cd2b
Reviewed-on: https://gerrit.instructure.com/89327
Tested-by: Jenkins
Reviewed-by: Weston Dransfield <wdransfield@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Nathan Mills <nathanm@instructure.com>
test plan:
1. create two outcomes in an account
2. link these outcomes to a course, putting one of them at
the root level and another one in an outcome group
3. attach each outcome to an assignment rubric in the course
4. do a selective course copy, select assignments, and
ensure the outcomes are both migrated to the new course
5. do another selective course copy and ensure "Learning Outcomes"
is in the list. select it, and ensure both outcomes
are linked in the new course
fixes CNVS-31288
Change-Id: I22837626bbbceb64063523450e108b33d03ad973
Reviewed-on: https://gerrit.instructure.com/89066
Tested-by: Jenkins
Reviewed-by: James Williams <jamesw@instructure.com>
QA-Review: Heath Hales <hhales@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
closes #CNVS-31145
Change-Id: Ic3aa75810e1a26c36e6f3915f086010621d2439d
Reviewed-on: https://gerrit.instructure.com/88395
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
Filters pages from set of assignments rendered in modal
Filters pages from displayed content tags according to differentiated
assignments behavior
refs CYOE-263
Test Plan:
1. Create a wiki page, via pages index or modules + button
2. Ensure page can be added to module and is visible to students
3. Check edit page, "mastery paths content"
4. Ensure the page is no longer visible to students in modules, until
they are assigned it via an override.
5. Open the "add item to module" modal. Ensure the page does not appear
in the assignments section, only under pages.
Change-Id: I822d53dc562476ef422f4a3ee6004e0d1e132246
Reviewed-on: https://gerrit.instructure.com/87418
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins
QA-Review: Jahnavi Yetukuri <jyetukuri@instructure.com>
Product-Review: Christian Prescott <cprescott@instructure.com>
test plan:
* create a discussion topic with an attachment
* copy the course with selective content, only
selecting the discussion topic
* it should bring the attachment too
* ditto for announcements
closes #CNVS-31022
Change-Id: I6ca4cfe37937f4749d6bb1a5a1b65805099569c8
Reviewed-on: https://gerrit.instructure.com/87881
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
Test Plan:
- Create a new course
Course setting[public_syllabus_to_auth] will be false
Authenticated users not enrolled in the couse can not see the syllabus
contents.
- Change course setting[public_syllabus_to_auth] to true
Authenticaed users not enrolled in the course will be have access to
syllabus as if it was setting[public_syllabus] were true.
- Change setting[public_syllabus_to_auth] to false and set
setting[public_syllabus] to true
All access rules will remane the same.
- Setting both settings to false
The couse will only allow enrolled students to view the syllabus.
Change-Id: I97f49035c8a4749afbffbb5dd08c7b1facea6b03
Fixes: PFS-4867
Reviewed-on: https://gerrit.instructure.com/85169
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Jahnavi Yetukuri <jyetukuri@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
try to add referenced files to the course even if they
weren't included in the manifest
test plan:
* import the common cartridge package
referenced in the ticket
* all the images should be resolved
closes #CNVS-30619
Change-Id: I0287dcbbdf6eb7f1de9f849d4094738594e4e8a4
Reviewed-on: https://gerrit.instructure.com/86668
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
test plan:
* see the new api endpoints in the calendar events controller
* can use the 'set_course_timetable' endpoint to send a schedule
for a course (optionally per section) with a list of
weekdays (e.g. "Mon,Wed,Fri") and times
* it will automatically generate calendar events from the start date
of the course (or section) to the end date that correspond to the dates
* if the schedule is changed, the old events will be deleted and
new ones generated
* can also use the 'set_course_timetable_events' endpoint to
generate events from a complete list
closes #CNVS-30523
Change-Id: Idf2b4047af14a6e71838bbe9672583f5bddc3e9f
Reviewed-on: https://gerrit.instructure.com/86051
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Heath Hales <hhales@instructure.com>
Product-Review: Hilary Scharton <hilary@instructure.com>
refs CYOE-120
Test Plan
0. Enable conditional release feature flag.
1. Create a few pages, mark one conditional content.
2. Via course settings, copy the pages to another course.
3. Ensure any conditional pages have their assignments intact. They
should appear in Pages and in Assignments. (for teachers and those
students who have visibility) Ensure non-conditional pages didn't
have assignments assigned.
Change-Id: I3ab27877ef530bd68c5c5a6990ea59a6af37e5a9
Reviewed-on: https://gerrit.instructure.com/83767
Reviewed-by: James Williams <jamesw@instructure.com>
Tested-by: Jenkins
QA-Review: Jahnavi Yetukuri <jyetukuri@instructure.com>
Product-Review: Christian Prescott <cprescott@instructure.com>
fixes CNVS-22881
The Course Copy importer should correctly copy all content.
Previously Learning Outcomes content would get changed when
copying from another source. Now all the data, including the
calculation method should be copied.
test plan
1. Create an outcome with a calculation method other than
Highest Score
2. As an instructor copy that outcome to another course
3. Check the outcome in the target course and notice the
calculation method is correct and the content is the
same as the original.
Change-Id: Ie6d502f45dc28fc524e375efe2205b87ce8efe24
Reviewed-on: https://gerrit.instructure.com/83709
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins
QA-Review: Jahnavi Yetukuri <jyetukuri@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
test plan:
* import the package referenced in the ticket,
selecting discussion topics
* it should not bring it announcements
closes #CNVS-30348
Change-Id: I733deb2bb22601f3f4c912cf9b81ab7b9a109bda
Reviewed-on: https://gerrit.instructure.com/84785
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Heath Hales <hhales@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
closes #CNVS-30349
Change-Id: Ia9e314f6495cf89127cf55ad38a28c5dc1791d10
Reviewed-on: https://gerrit.instructure.com/84594
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
services can be integrated to be told when a course export
(or course copy) occurs and can send custom data to be
saved in the package
the data can use keys with the format '$canvas_TYPE_id'
where TYPE is a canvas object (e.g. 'assignment')
where the values are ids for objects in the source course
so when the package is imported, the saved data will have the
ids translated to the new copied objects, thus preserving
relationships between objects
closes #CNVS-30161
Change-Id: Iee5400c45d6189305b8626219dbe9aef345fea9e
Reviewed-on: https://gerrit.instructure.com/83531
Reviewed-by: Dan Minkevitch <dan@instructure.com>
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
test plan:
* create a course with an announcement
* use the content exports api to create a course export
using the parameter "select[discussion_topics][]" with the
announcement id to try to export the announcement selectively
* importing the package in another course should bring over
the announcement
closes #CNVS-29947
Change-Id: Ib18b8613fc60c2b79a9f8e298a2b19fbe769d36d
Reviewed-on: https://gerrit.instructure.com/82601
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Alex Morris <amorris@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
user groups and group sets aren't migrated with courses;
however, with this commit we will remember the name of the
group set we came from and import into a group set with
the same name in the destination course, if it exists
(basically this is 446930d0 but for graded discussion topics)
test plan:
- create a group set on course A's People page
- create a group discussion topic in course A and assign it
to this set
- create a new course B and create a group set with
the same name
- copy content from A to B
- the group discussion topic in B should be associated
with the group set created in the previous step
fixes CNVS-29477
Change-Id: Ibbfb0d87863d5416080b1d6aaf7b9be046b956ef
Reviewed-on: https://gerrit.instructure.com/80163
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
fixes: CNVS-28722
Test Plan:
1. If on dev: RAILS_LOAD_ALL_LOCALES=true (for web and jobs)
2. Enable ePub Export account feature option.
3. Publish course with locale unset.
4. Visit /epub_exports in URL, and verify course exports to the
default root account locale.
5. Set your user profile locale to something else.
6. Verify course ePub export is in user locale.
7. Set course locale to something else (leave user locale configured).
8. Verify course ePub export is in course locale.
Change-Id: I872454898b070fecc95413ce97443f9df65d4b60
Reviewed-on: https://gerrit.instructure.com/78622
Tested-by: Jenkins
Reviewed-by: Matt Berns <mberns@instructure.com>
QA-Review: Michael Hargiss <mhargiss@instructure.com>
Product-Review: Bryan Petty <bpetty@instructure.com>
test plan:
* create a course with a rubric
* create a graded discussion topic and associate it with the rubric
* use the content exports api to create a course export, passing
in a parameter to only export the discussion topic
"select[discussion_topics][]=TOPIC_ID"
* import the exported file into a new course
* the topic should have the rubric associated with it
closes #CNVS-29182
Change-Id: I6aded344a70acf53e0196f3d7cc779296d556102
Reviewed-on: https://gerrit.instructure.com/79179
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
test plan:
* import the package referenced in the ticket
* it should have assignments instead of plain html files
closes #CNVS-29203
Change-Id: Ibf77b940d4c0d1fc1a6bd6a8bb2a7d9187eb1590
Reviewed-on: https://gerrit.instructure.com/78996
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
Fixes CNVS-28419, CNVS-28880
Test plan:
- Turn on content exports
- Make a course whose name is "foo / bar baz"
- Pull up /epub_exports
- Generate or regnerate a course export
- Ensure the export succeeds
- click "Download Associated Files"
- Ensure the downloaded file's name is "foo-bar-baz-*.zip",
where * is a timestamp of the form
yyyy-mm-dd_hh-mm-ss
Change-Id: If232e588841955c0ad851905fbbc3f904df302f0
Reviewed-on: https://gerrit.instructure.com/78144
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Jahnavi Yetukuri <jyetukuri@instructure.com>
Product-Review: Alex Boyd <aboyd@instructure.com>
test plan:
* create a course
* create an outcome group with a learning outcome
* create a rubric and attach the learning outcome
* create an assignment and attach the rubric
* copy the course with selective content, only
selecting the assignment
* it should copy the outcome into the new course
closes #CNVS-27914
Change-Id: I938924a9a10f6f5899c960708eb4e8c0b7cdeb3f
Reviewed-on: https://gerrit.instructure.com/75723
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
test plan:
- "allow liking" and the sub-settings "only graders can like"
and "sort by likes" should persist across course copy or
export/import
fixes CNVS-22723
Change-Id: Id505365e00ef276087c8c3299019887799e7e028
Reviewed-on: https://gerrit.instructure.com/75380
Tested-by: Jenkins
Reviewed-by: James Williams <jamesw@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
like literally all NULL everywhere
refs #CNVS-27773
Change-Id: I1e5b61a6fd234ce668824e59df0d93a31ea6e76e
Reviewed-on: https://gerrit.instructure.com/74172
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
test plan:
* create a course with a folder starting with a period
* add a file to the folder
* export the course to a file
* import the package into another course
* the file and folder should have copied over
closes #CNVS-27696
Change-Id: I01ce679d3efce815140186a02449d49aa1cc82e0
Reviewed-on: https://gerrit.instructure.com/73624
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
test plan:
* create a folder named "course files"
* add a file
* add a link to the file in html content
* copy the course
* it should copy the link correctly
closes #CNVS-27314
Change-Id: I3ff9a800ec2e19f9548b9ca0935b5ed920ba49ef
Reviewed-on: https://gerrit.instructure.com/72491
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Jahnavi Yetukuri <jyetukuri@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
previously, we imported nested modules together within
one module, (using nesting to distinguish between submodules)
possibly leading to very large modules
now, submodules can be broken up on import using the
"Select Content" dialog
test plan:
* import the Common Cartridge package referenced in the ticket
using the "Select specific content" option
* use the dialog to navigate the module tree and select
specific sub-modules
* if all sub-modules of a given module are selected, a
radio toggle should appear to choose whether to import
the module as one or to split them up
closes #CNVS-26696
Change-Id: Ia542cd7ec847e810a01d92c675c6cc92d1247345
Reviewed-on: https://gerrit.instructure.com/71099
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins
QA-Review: Jahnavi Yetukuri <jyetukuri@instructure.com>
Product-Review: Matt Goodwin <mattg@instructure.com>
fixes CNVS-25569
test plan:
- have a module in a course locked by prerequisites
- embed a link to that module in the description of a course item
- export the ePub
- the link to that module should direct to its proper location in
the ePub instead of Canvas web
- all other behaviors should be unchanged regarding locked content
Change-Id: I12f9897e73d68ac12c8956fe9231ce35962661ff
Reviewed-on: https://gerrit.instructure.com/69759
Tested-by: Jenkins
Reviewed-by: John Corrigan <jcorrigan@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Matt Berns <mberns@instructure.com>
fixes CNVS-25978
test plan:
- Generate an ePub export.
- Observe that the progress bar shows greater variation than it used to.
- Generate a normal content export without an ePub export.
- Observe that it generates as usual.
Change-Id: I46debe8280e8a227fde1933334923ed011b624fa
Reviewed-on: https://gerrit.instructure.com/69085
Tested-by: Jenkins
Reviewed-by: Matt Berns <mberns@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: John Corrigan <jcorrigan@instructure.com>
fixes CNVS-26035
test plan:
- upload a file to the course
- upload the same file to the course in a subfolder
- generate an ePub export
Change-Id: Ia3bc4c21ab11a2a49896c206dc3f5863ee142125
Reviewed-on: https://gerrit.instructure.com/69288
Reviewed-by: Benjamin Porter <bporter@instructure.com>
Tested-by: Jenkins
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Matt Berns <mberns@instructure.com>
fixes CNVS-25933
test plan:
- Add an flv to a course and include is as downloadable content for a
module that is accessible to the user.
- Add a media comment to the body of an assignment (or any content
type).
- Export the course (module sorting), logged in as a user that has
rights to see the module & the content featuring the media comment.
- Observe that the ePub export is successful.
- Observe that the flv is included in the associated files zip file.
- Observe that the media comment is visible inline in the exported
ePub.
Change-Id: I796a20da4380ee759ffb1e4cde194ba65a7e599f
Reviewed-on: https://gerrit.instructure.com/69021
Reviewed-by: Matt Berns <mberns@instructure.com>
Tested-by: Jenkins
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: John Corrigan <jcorrigan@instructure.com>
test plan:
- in a console, do
Setting.set('content_migration_job_expiration_hours', -1)
- try to do course copies and course imports.
they should fail with "job expired" errors.
- go back to the console and undo the expire-migration-jobs-
-in-the-past setting with the following:
Setting.remove('content_migration_job_expiration_hours')
- now migration jobs should work again
fixes CNVS-25113
Change-Id: I2578c3e124276a950b73b4402f30625d8738a6c3
Reviewed-on: https://gerrit.instructure.com/68867
Tested-by: Jenkins
Reviewed-by: James Williams <jamesw@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Jahnavi Yetukuri <jyetukuri@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
fixes CNVS-25459 (again)
test plan:
- Test in beta; not reproducable elsewhere so far.
Change-Id: Iaeb379b7d5f87a721922e8881a8de22ef8579ae7
Reviewed-on: https://gerrit.instructure.com/68231
Tested-by: Jenkins
Reviewed-by: Matt Berns <mberns@instructure.com>
Product-Review: John Corrigan <jcorrigan@instructure.com>
QA-Review: John Corrigan <jcorrigan@instructure.com>
fixes CNVS-25487
fixes CNVS-25513
- Updates module conversion to use string `identifier` instead of
`migration_id` (for sake of consistency with other content types).
- If <a> cannot be resolved, replace with a span and include text
explaining that the content was a link, but could not be resolved.
test plan:
- Have a course with modules.
- Update a piece of content to include a link to a module.
- Export the ePub; observe that the link to the module works (assuming
that the module is present as part of the export.
- Also follow repro steps found at CVNS-25513 to make sure that
exception is no longer thrown.
Change-Id: Iebfae343aebbe2054f79eeaa0fe21892f91f5fe6
Reviewed-on: https://gerrit.instructure.com/68215
Reviewed-by: Matt Berns <mberns@instructure.com>
Tested-by: Jenkins
QA-Review: Michael Hargiss <mhargiss@instructure.com>
Product-Review: Matt Berns <mberns@instructure.com>
fixes CNVS-25554
test plan:
- export an ePub that has a large windowed video inline
- observe that the video fits the page in Azardi in stead of
expanding across pages and text
Change-Id: Ide04a8ebec3c17f2f6d5edcbf0c12b6e768f9edc
Reviewed-on: https://gerrit.instructure.com/68229
Reviewed-by: John Corrigan <jcorrigan@instructure.com>
Tested-by: Jenkins
QA-Review: Rajkumar Kethavath <rkethavath@instructure.com>
Product-Review: John Corrigan <jcorrigan@instructure.com>
fixes CNVS-25501
test plan:
- upload a pair of .txt files
- one should use an underscore for spacing
- one should use a space for spacing
- both should be replaced in the ePub with the unsupported message
Change-Id: I5b0d6b8550a40e934f2a0973154e8a968b664e2c
Reviewed-on: https://gerrit.instructure.com/68223
Reviewed-by: John Corrigan <jcorrigan@instructure.com>
Tested-by: Jenkins
QA-Review: Rajkumar Kethavath <rkethavath@instructure.com>
Product-Review: John Corrigan <jcorrigan@instructure.com>
closes CNVS-24957
test plan:
- create an assignment, discussion, and quiz with none of the following:
-Due Date
-Lock Date
-Unlock Date
-Grading Type
-Points Possible
-Submission Type
- the gray details box should not appear in the ePub for these items
Change-Id: I26bf7e889ae54fae62653d9c10de6f435e2577be
Reviewed-on: https://gerrit.instructure.com/66926
Tested-by: Jenkins
Reviewed-by: John Corrigan <jcorrigan@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Cosme Salazar <cosme@instructure.com>
closes CNVS-25065
test plan:
- export an ePub that has unsupported media types
- the ePub filename should reflect courseName-Timestamp
- the zip filename should reflect the local timestamp
- timestamp pattern should be 2015-Nov-16_18-22-40
- a course name over 200 chars in length should be truncated to the 200th
char
Change-Id: I39829d1df050b30544381c7ef20deba5c8c414d1
Reviewed-on: https://gerrit.instructure.com/67205
Reviewed-by: John Corrigan <jcorrigan@instructure.com>
Tested-by: Jenkins
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Cosme Salazar <cosme@instructure.com>
closes CNVS-24830
closes CNVS-24776
- Adds `module_locked` field to export data for assignments, discussion
topics, quizzes & wiki pages.
- epub converters updated to exclude module locked content.
- wiki page epub converter updated to exclude unpublished pages (woops).
- module epub converter updated to exclude unpublished modules.
test plan:
- have a course with some unpublished items and locked modules
- for full testing, make 5 locked modules, 2 time locked, 2 prerequisite
locked, and one locked by both
- have one of the time locked modules have an unlock date that has
already passed, have the student fulfill the requirement for one of the
prerequisite locked modules
- export one ePub as a student and one as a teacher
- unpublished items should not appear in either ePub
- modules should all appear as unlocked for the teacher
- modules should be locked as appropriate for the student
- items that should be in the syllabus but in a locked module should still
be in the syllabus, but not linked to
- items that are in locked modules should have their titles listed in the
modules content, but the items themselves should not be in the ePub
and the titles should be plain text instead of hyperlinks
- update settings so that content sorting is enabled.
- export one ePub as a student.
- content part of a locked module should not be present in the ePub.
- have a course with unpublished modules.
- export course with module-sorting enabled (the default).
- observe that unpublished modules are not present.
test plan for changes to content exporter:
- using the same course as above, export the course as a course
cartridge.
- start a new course and import the above course into it.
- observe that all modules are present as expected.
Change-Id: I99394ae4bca251875c7a0cb614c3b1530e1c0f9b
Reviewed-on: https://gerrit.instructure.com/66600
Tested-by: Jenkins
QA-Review: Michael Hargiss <mhargiss@instructure.com>
Reviewed-by: Matt Berns <mberns@instructure.com>
Product-Review: Cosme Salazar <cosme@instructure.com>
Reviewed-by: John Corrigan <jcorrigan@instructure.com>
closes CNVS-25017
test plan:
- export an ePub
- the TOC should contain links to announcements and the syllabus
- the syllabus page should have a link back to the TOC
- the index page of announcements should have a link back to the TOC
- individual announcements should have a link back to the announcements
index and the TOC
- the TOC should state either "Course Modules" or "Course Content"
depending on sorting style following the Syllabus and Announcements links
Change-Id: I81c1aa891aabf2fb1d1e486e14c5a3db1cba4e06
Reviewed-on: https://gerrit.instructure.com/67057
Tested-by: Jenkins
Reviewed-by: John Corrigan <jcorrigan@instructure.com>
QA-Review: Landon Holmstead <lholmstead@instructure.com>
Product-Review: Cosme Salazar <cosme@instructure.com>
closes CNVS-24952
test plan:
- export an ePub in a course that has a large sized image embedded in
an item that will appear in the ePub content
- the image should not flow off the page in Azardi or any other reader
- the image should maintain its aspect ratio and not become stretched/distorted
Change-Id: I329022de13334947a071a1938ad26f7577320c36
Reviewed-on: https://gerrit.instructure.com/66905
Tested-by: Jenkins
Reviewed-by: John Corrigan <jcorrigan@instructure.com>
QA-Review: Landon Holmstead <lholmstead@instructure.com>
Product-Review: Matt Berns <mberns@instructure.com>
test plan:
* import the package referenced in the ticket
* it should import successfully
closes #CNVS-24149
Change-Id: I000ca65a2a401d82692982c224477efdbde39e76
Reviewed-on: https://gerrit.instructure.com/65621
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
closes CNVS-23953
(note: styling is not consistent, iBooks for example overrides several
elements with its own styling set in the user's preferences. For that
reason it's probably better to test this in Calibre)
test plan:
- export an ePub
- all text should be sans-serif
- main headers ("Table of Contents", "Syllabus", etc.) should be white
text with a blue background
- subheaders should be in a font larger than standard text
- syllabus should be organized by date with bold text
- hyperlinks should be in the same shade of green as canvas links
- assignment/quiz details (due date, points, etc) should be contained
inside a light gray box with slightly darker border
Change-Id: I3b2c4254385a916e78f337790ac5dbbb3110a6d7
Reviewed-on: https://gerrit.instructure.com/66723
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Tested-by: Jenkins
Reviewed-by: John Corrigan <jcorrigan@instructure.com>
Product-Review: Cosme Salazar <cosme@instructure.com>
refs CNVS-21803
test plan:
- generate an ePub from a course
- the ePub should have a main navigation TOC
- TOC sections should mirror the TOC found in the spine of the ePub
- TOC section headers should link to their respecive section
- TOC sections should contain links to their respective items
- items in TOC sections should link to their respective locations
- TOC should only include items in modules for module sorting
- chapters in ePub should contain link back to TOC
- items in ePub should contain link back to their respective section,
as well as a link back to main TOC
Change-Id: I5770485a574d8967f2218643421918219c091709
Reviewed-on: https://gerrit.instructure.com/64821
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Reviewed-by: John Corrigan <jcorrigan@instructure.com>
Tested-by: Jenkins
Product-Review: John Corrigan <jcorrigan@instructure.com>
fixes CNVS-23798
test plan:
- Have a course with content separated into modules, including specific
files.
- Confirm that course is configured to sort by module (default
behavior).
- Export course as an ePub at `/epub_exports`.
- Observe that file names are included as part of the module list.
- Click the link to get to the file template.
- Observe that the file can be viewed by clicking on the tile name.
Change-Id: I28c6afeba668714ed284cc5437fb06d522b4f855
Reviewed-on: https://gerrit.instructure.com/65988
Tested-by: Jenkins
Reviewed-by: Matt Berns <mberns@instructure.com>
Product-Review: John Corrigan <jcorrigan@instructure.com>
QA-Review: John Corrigan <jcorrigan@instructure.com>
closes CNVS-24761
test plan:
- create an ePub from a course that has announcements
- there should be an announcements section following the syllabus
- this section should exist regardless of sorting method
- if no announcements exist, the announcements section should state
there are none for the course
Change-Id: Id146eca5b4f62c914375beb845cd3d2e173ede22
Reviewed-on: https://gerrit.instructure.com/66396
Reviewed-by: John Corrigan <jcorrigan@instructure.com>
Tested-by: Jenkins
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Cosme Salazar <cosme@instructure.com>
closes CNVS-21803
- Adds CC::Exporter::Epub::Converters::ObjectPathConverter module.
- Adds #convert_placeholder_paths_from_string!, a convenience method
that converts canvas object links & media links.
test plan:
- Have a course that has canvas object links from one type of canvas
object to another. For example, assignments, discussion topics &
quizzes with links to wiki pages (or each other).
- Generate an ePub for this course.
- Observe that links to other types of canvas objects work within the
generated ePub.
Change-Id: Ia25c57a95d9383ab0cacbad9fea5439195472425
Reviewed-on: https://gerrit.instructure.com/63810
Tested-by: Jenkins
Reviewed-by: Matt Berns <mberns@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Cosme Salazar <cosme@instructure.com>
fixes CNVS-24662
This should be an edge case, but we should not try to add files that do
not exist to either the ePub book or the unsupported files directory.
test plan:
- Have a course with assignments (or another canvas object) that
reference files that do not exist as part of the course.
- Export the course as an ePub.
- Observe that the ePub export completes.
- Observe that the messaging in the ePub is similar to when the file is
not supported.
Change-Id: Ic24e91e99fe53ddcf8389ba0d58243aad1ef7dea
Reviewed-on: https://gerrit.instructure.com/66233
Tested-by: Jenkins
Reviewed-by: Matt Berns <mberns@instructure.com>
QA-Review: Michael Hargiss <mhargiss@instructure.com>
Product-Review: John Corrigan <jcorrigan@instructure.com>
refs CNVS-21803
test plan:
- generate an ePub using module type sorting and content type sorting
- all quizzes should show up in the syllabus for content type sorting
- only quizzes for their respective modules should show up on module sorting
Change-Id: I359594b1ce3c565741acde9bbd2b1e87c2ee74b0
Reviewed-on: https://gerrit.instructure.com/66209
Reviewed-by: John Corrigan <jcorrigan@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Tested-by: Jenkins
Product-Review: Matt Berns <mberns@instructure.com>
refs CNVS-23798
test plan:
- ensure that links still work properly for module and content sorting
- there should be no other visual changes for end users
Change-Id: I7400fff729aecf3739d073544c66c090b7120dd9
Reviewed-on: https://gerrit.instructure.com/66121
Reviewed-by: John Corrigan <jcorrigan@instructure.com>
Tested-by: Jenkins
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Matt Berns <mberns@instructure.com>
fixes CNVS-24178
- Updates FilesConverter so that it returns both files that will be
displayed in the ePub and the files that are unsupported.
- Adds CC::Exporters::Epub::FilesDirectory class, which accepts a
collection of file objects and adds them to a zip file.
- Updates UI so that a separate download link is present for the zip of
unsupported files.
- Adds support to MIME::Types library to be able identify ePubs.
- Updates EpubExport to have many attachments; one epub & one zip.
- Updates process of creating attachments related to EpubExports so that
the content_type value is properly set.
test plan:
- Have a course that contains files that are not supported by ePub, such
as pdf, doc or xls.
- Navigate to `/epub_exports`.
- Click the button to generate an ePub for the given course.
- Observe that, after the successful generation of the course, two
download links appear: one for the ePub, one for additional files.
Change-Id: I2f321362bc5ed23f8b28334395f8969c9d90a5de
Reviewed-on: https://gerrit.instructure.com/65753
Tested-by: Jenkins
Reviewed-by: Matt Berns <mberns@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Cosme Salazar <cosme@instructure.com>
refs CNVS-21803
this is primarily an organization change on the back end, there is
very little change to how it should look/work for end users.
test plan:
- generate an ePub using content type sorting and module sorting
to ensure no regressions
- content type sorting should look exactly the same
- for module sorting, instead of having a "Course Modules" page at the
beginning with links to the modules, the titles of the modules
should just be on the spine/navigation of the ePub
Change-Id: I177691f3435440e9d2b5f8ef3185af941059b809
Reviewed-on: https://gerrit.instructure.com/65650
Tested-by: Jenkins
Reviewed-by: John Corrigan <jcorrigan@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Matt Berns <mberns@instructure.com>
closes CNVS-23623
- adds a syllabus to the beginning of the ePub
test plan:
- generate two ePubs for a course that has items in modules, one using the
default module sorting, the other using content type sorting
- the syllabus should contain the title and due date of graded assignments
and quizzes in chronological order
- items with no due dates should appear last
- when sorting by module, only graded assignments and quizzes that are in
modules should show up
- syllabus entries should link to their respective assignment or quiz
Change-Id: I9f9fb97f03e9bcaaa874681ab289ba9c70a1f4ac
Reviewed-on: https://gerrit.instructure.com/64552
Reviewed-by: John Corrigan <jcorrigan@instructure.com>
Tested-by: Jenkins
QA-Review: Landon Holmstead <lholmstead@instructure.com>
Product-Review: Cosme Salazar <cosme@instructure.com>
refs CNVS-21799
- Fetch transcoded mp4 in place of exported flvs.
- Reference mp4s in place of flvs in generated xhtml.
- Do not include in files array files that should not be uploaded to the
ePub.
- Remove from xhtml references to files that are not included in the
ePub.
test plan:
- Have a course with an assignment description, quiz description,
discussion topic description, or wiki page body that contains a
recorded video comment.
- Export course as an ePub.
- Observe that the video displays inline.
- Have a course with unsupported media (the official _supported_ list
is: 'jpg', 'gif', 'png', 'mp4', 'm4v', 'flv', 'mp3').
- Export an ePub.
- Observe that the unsupported file is not part of the package (using
something like Calibre's book editor).
- Observe that the reference to the media has been replaced with an
explanation of its absence.
Change-Id: I9f5eab8fa1c86e719d69e4ae42451e795ee4b471
Reviewed-on: https://gerrit.instructure.com/64365
Reviewed-by: Matt Berns <mberns@instructure.com>
Tested-by: Jenkins
QA-Review: Landon Holmstead <lholmstead@instructure.com>
Product-Review: Cosme Salazar <cosme@instructure.com>
closes CNVS-23800
test plan
- export a course with no modules
- create an ePub, which would normally result in module sorting by default
- the generated ePub should be sorted by content
Change-Id: I2e49b7cffd4c3f4bef12357c24814a0c0f837c9d
Reviewed-on: https://gerrit.instructure.com/64665
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Cosme Salazar <cosme@instructure.com>
Tested-by: Jenkins
Reviewed-by: John Corrigan <jcorrigan@instructure.com>
refs CNVS-21794
closes CNVS-21802
- Adds CC::Exporter::Epub::Exportable#sort_by_content_type?, which can
be overridden by classes that `include` the module to point to where
the setting can be found.
- Update CC::Exporter::Epub::Exportable#convert_to_epub to pass
`sort_by_content_type?` to CC::Exporter::Epub::Exporter.new.
- Update EpubExport to include CC::Exporter::Epub::Exportable, and
override / add to instance methods.
test plan:
- Navigate to `/epub_exports`.
- Observe a list of courses that are active & user is enrolled in.
- Click on the Generate button.
- Observe that info about the state of the export and the timestamp are
added to the middle of the row.
- Observe that a progress bar is displayed while the export is in
progress.
- Observe that upon completion, the progress bar is replaced by two
button / links: Download & Regenerate.
- Click on the download link.
- Observe that an epub file is downloaded and can be opened in an
eReader.
- Observe that the Regenerate button triggers the process all over
again.
Change-Id: Ib42c2d2623c3ccd394105cdf0e3809b96c8a2e60
Reviewed-on: https://gerrit.instructure.com/63469
Reviewed-by: Matt Berns <mberns@instructure.com>
Tested-by: Jenkins
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Cosme Salazar <cosme@instructure.com>
refs CNVS-20157
- Explicitly add media type when adding media to the ePub (gepub only
tries to figure it out itself for images).
- Remove empty <a> ids added by tinymce.
- Add fallback text for <audio> & <video> tags for readers that don’t
support media playback.
- Be more explicit about escaping / unescaping file paths.
- Use identifiers for url anchors.
test plan:
- Test that epub generation works, nothing explicit beyond that.
Change-Id: I646866030420f570f7edbe7dd2ea87737e7129f6
Reviewed-on: https://gerrit.instructure.com/64039
Reviewed-by: Matt Berns <mberns@instructure.com>
Tested-by: Jenkins
Product-Review: John Corrigan <jcorrigan@instructure.com>
QA-Review: John Corrigan <jcorrigan@instructure.com>
refs CNVS-21798
Audio & video content that is uploaded and displayed as part of the body
of an assignment, discussion topic, wiki page or quiz description is now
viewable in an ePub.
test plan:
- For an existing course, uploaded and display inline audio or video
content (mp3 or mp4) in assignment descriptions, discussion topic
descriptions, wiki page bodies, and quiz descriptions.
- Export the content as an epub.
- Observe that inline audio & video is playable in the epub.
Change-Id: Ia5e1a892615152205dfebf1a7a397e602cfab9d5
Reviewed-on: https://gerrit.instructure.com/64234
Reviewed-by: Cameron Sutter <csutter@instructure.com>
Tested-by: Jenkins
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Cosme Salazar <cosme@instructure.com>
fixes CNVS-21798
Summary of changes:
- Add files to epub as it's being built.
- Update links to image files to be path specific to epub.
- Update links to audio files to be epub-compatible `<audio>` tags.
- Update links to video files to be epub-compatible `<video>` tags.
test plan (requires console access):
- Prereq: have a course with uploaded images, audio and video files, and
reference that media in assignment bodies.
- Make sure you have at least one completed content export in the db
(can be triggered via console or via the content export UI).
- open rails console
- run the following commands:
- - `ContentExport.include(CC::Exporter::Epub::Exportable)`
- - `ContentExport.last.convert_to_epub`
- This will output a path to the generated epub, something like:
"/var/folders/7g/w8y0n7_j18v65h93xhmm9z4hxzj3r2/T/2052fbd0-860d-4114-9969-0adc7f5ecb79.Name
of Course.epub"
- Open up the folder of the file (assuming you're on Mac OSX) like so:
`open -a finder /var/folders/7g/w8y0n7_j18v65h93xhmm9z4hxzj3r2/T`.
- Find the file in that directory (in this case the file name is
2052fbd0-860d-4114-9969-0adc7f5ecb79.Name of Course.epub
- Observe that images displayed inline work.
- Observe that links to images work.
- Observe that links to audio have been converted to audio players, and
that the controls work.
- Observe that links to video have been converted to video players, and
that the controls work.
- Repeat steps for discussion topics, wiki pages & quiz descriptions.
Change-Id: I5a48c3300ccffc00230d94137a93731394ef0ebb
Reviewed-on: https://gerrit.instructure.com/62842
Tested-by: Jenkins
Reviewed-by: Matt Berns <mberns@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Cosme Salazar <cosme@instructure.com>
test plan:
* create a module with some required module items
* set it so students only need to "Complete One Item"
* copy the course
* the "Complete One Item" setting should be retained
closes #CNVS-23713
Change-Id: I7f113d34b2247c13c9984124c2364a6fece878b6
Reviewed-on: https://gerrit.instructure.com/64496
Tested-by: Jenkins
Reviewed-by: Dan Minkevitch <dan@instructure.com>
QA-Review: Charles Kimball <ckimball@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
fixes CNVS-23337
Test Plan:
* Import an assignment into a course from another
canvas course, making sure that the assignment
is marked as "Group Assignment" and the group
that it belongs to exists in both the source and
destination courses
* The imported assignment should be imported
as part of the existing group of the same name
from the source course
Change-Id: I32446e1c15d643d33e8a2bb49e6b9381afe85ebe
Reviewed-on: https://gerrit.instructure.com/63717
Tested-by: Jenkins
Reviewed-by: James Williams <jamesw@instructure.com>
QA-Review: Jahnavi Yetukuri <jyetukuri@instructure.com>
Product-Review: Dan Minkevitch <dan@instructure.com>
closes CNVS-22222
closes CNVS-21796
refs CNVS-21800
refs CNVS-21803
test plan (requires console access):
- Make sure you have at least one completed content export in the db
(can be triggered via console or via the content export UI).
- open rails console
- run the following commands:
- - `ContentExport.include(CC::Exporter::Epub::Exportable)`
- - `ContentExport.first.convert_to_epub`
- This will output a path to the generated epub, something like:
"/var/folders/7g/w8y0n7_j18v65h93xhmm9z4hxzj3r2/T/2052fbd0-860d-4114-9969-0adc7f5ecb79.Name
of Course.epub"
- Open up the folder of the file (assuming you're on Mac OSX) like so:
`open -a finder /var/folders/7g/w8y0n7_j18v65h93xhmm9z4hxzj3r2/T`.
- Find the file in that directory (in this case the file name is
2052fbd0-860d-4114-9969-0adc7f5ecb79.Name of Course.epub
Change-Id: I37b73fac329bc0fbd5e85a9427e9cce58d05d6db
Reviewed-on: https://gerrit.instructure.com/60702
Reviewed-by: Cameron Sutter <csutter@instructure.com>
Tested-by: Jenkins
QA-Review: Matt Berns <mberns@instructure.com>
Tested-by: Matt Berns <mberns@instructure.com>
Product-Review: Matt Berns <mberns@instructure.com>
fixes CNVS-21395
The content export tool is being updated so that it consders the
provided user's rights, so that the CC export can be used for the new
epub generation tool.
This PS employs Quizzes::ScopedToUser to make sure that the user
only gets the quizzes that they have the right to view.
test plan:
- Regression test for content export tool quizzes functionality.
Change-Id: I68d952c794afac35e6fa2fa472538159f275c16b
Reviewed-on: https://gerrit.instructure.com/59498
Reviewed-by: Brian Finney <bfinney@instructure.com>
Tested-by: Jenkins
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: John Corrigan <jcorrigan@instructure.com>
because apparently nobody has ever used this
because why would they
Change-Id: Ibbfe77dc3725edddae1d2488ef27e2e7ee2d0a17
Reviewed-on: https://gerrit.instructure.com/62459
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Cosme Salazar <cosme@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
test plan:
- if the "moderated grading" feature flag is enabled,
assignment settings should include a new checkbox for
moderated grading.
- this checkbox should not be available if the
assignment's "Display Grade As" is "Not Graded"
- the checkbox should be disabled, with a tooltip
message given, if graded submissions already exist
for the assignment.
- if the destination course enables moderated grading,
the moderated grading setting should persist across
export/import and course copy
- the create / edit assignment APIs should let you
see and update the moderated grading setting
via assignment[moderated_grading]
- the API should ignore the setting if the feature
flag is disabled
- the API should give an error if you attempt to
change the setting after submissions exist
- the API should give an error if you attempt to
enable moderated grading on an ungraded assignment
closes CNVS-22207
Change-Id: I33c1944792a47e51bff124d2cb9722e8d0edc93e
Reviewed-on: https://gerrit.instructure.com/59593
Reviewed-by: Dan Minkevitch <dan@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Tested-by: Jenkins
Product-Review: Jeremy Stanley <jeremy@instructure.com>
(also shift/remove file dates)
test plan:
* add date based restrictions for students to a file
* export the course
* import the file into a new course
* should retain the restrictions
* importing/copying with the shift dates/remove dates option
should work as well
closes #CNVS-22352
Change-Id: Ie7510fc9b45664ce2dab49850dd09fce7023c306
Reviewed-on: https://gerrit.instructure.com/60040
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Jahnavi Yetukuri <jyetukuri@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
fixes CNVS-21391
The content export tool is being updated so that it consders the
provided user's rights, so that the CC export can be used for the new
epub generation tool.
This PS updates CC::WebResources#add_course_files to pass a user
instance to the ContentZipper instance it uses to zip up a course's
files, so that the ContentZipper can determine if the user has the
correct permissions to see the files.
Also, we update ContentZipper so that a user can be provided via
attr_writter.
test plan:
- Regression test for content export tool files functionality.
Change-Id: Ic5edecef28d60d9517ce3a67bc8aef5c5dade9cc
Reviewed-on: https://gerrit.instructure.com/59440
Tested-by: Jenkins
Reviewed-by: Brian Finney <bfinney@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Cameron Sutter <csutter@instructure.com>
fixes CNVS-21394
The content export tool is being updated so that it consders the
provided user's rights, so that the CC export can be used for the new
epub generation tool.
This PS employs DiscussionTopic::ScopedToUser to make sure that the user
only gets the discussion topics that they have the right to view.
test plan:
- Regression test for content export tool discussion topic functionality.
Change-Id: Id67bf1ed69c4b2066ff9d81678a5d61d52702978
Reviewed-on: https://gerrit.instructure.com/59365
Tested-by: Jenkins
Reviewed-by: Brian Finney <bfinney@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Cameron Sutter <csutter@instructure.com>
fixes CNVS-21389
The content export tool is being updated so that it consders the
provided user's rights, so that the CC export can be used for the new
epub generation tool.
This PS employs WikiPages::ScopedToUser to make sure that the user
only gets the wiki pages that they have the right to view.
test plan:
- Regression test for content export tool wiki pages
functionality.
Change-Id: Icd3cd11fb8008bbd7441854e51fd8f37bcfbb6b7
Reviewed-on: https://gerrit.instructure.com/59395
Tested-by: Jenkins
Reviewed-by: Brian Finney <bfinney@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Cameron Sutter <csutter@instructure.com>
fixes CNVS-21390
The content export tool is being updated so that it consders the
provided user's rights, so that the CC export can be used for the new
epub generation tool.
This PS employs Assignments::ScopedToUser to make sure that the user
only gets the assignments that they have the right to view.
test plan:
- Regression test for content export tool assignment functionality.
Change-Id: Id0170806c10715130d34e8c7a190e4fcaeb22cd5
Reviewed-on: https://gerrit.instructure.com/59323
Tested-by: Jenkins
Reviewed-by: Brian Finney <bfinney@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Cameron Sutter <csutter@instructure.com>
test plan:
* using "mailto:example@example.com," in a link should
not break course copies (or anything else) because it
doesn't know how to rescue a URI::InvalidComponentError
closes #CNVS-22120
Change-Id: Iaac362a5bf33cd5fde05b01a578a1325f4126c6e
Reviewed-on: https://gerrit.instructure.com/59213
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
test plan:
* create a group discussion topic
* copy the discussion topic
* it should still have "This is a Group Discussion" marked
* it should have created/found a default group called
"Project Groups" (i.e. the default name populated in
the dialog if there are no other group sets)
fixes CNVS-21926
Change-Id: If88b0f5e461ab4a769f911e9d5e359fa3bbdd685
Reviewed-on: https://gerrit.instructure.com/58725
Tested-by: Jenkins
Reviewed-by: James Williams <jamesw@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
test plan:
* regression test links within copied content
* should also fix a pre-existing bug where
links to content within assessment/quiz questions
were not being copied
closes #CNVS-20890 #CNVS-20740
Change-Id: I1d1b89faba468690eaddaa1e29cd2936c807cc60
Reviewed-on: https://gerrit.instructure.com/55830
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Michael Hargiss <mhargiss@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
closes #CNVS-21152
Change-Id: If04697596a2e8fe3a05e26c16907b2c50149cd68
Reviewed-on: https://gerrit.instructure.com/56403
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
test plan:
* create a group assignment
* copy the assignment
* it should still have "This is a group assignment" marked
* it should have created/found a default group called
"Project Groups" (i.e. the default name populated in
the dialog if there are no other group sets)
closes #CNVS-19747
Change-Id: I67f96bd7bea828e59d6c3ca4df1a5ddbeb8a3309
Reviewed-on: https://gerrit.instructure.com/55085
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Jahnavi Yetukuri <jyetukuri@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
test plan:
* create a course tool with custom settings
(such as the "accept_media_types" property for the
"file_menu" extension)
* copy the course
* the new tool should behave just like the old one
(i.e. should restrict to the same media types)
refs #CNVS-19952
Change-Id: I8d59dcef8c85c74d71c3c16b87481606c962757b
Reviewed-on: https://gerrit.instructure.com/53396
QA-Review: Clare Strong <clare@instructure.com>
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
Adds a few newer course settings to the xsd file.
Fixes CNVS-19750
Test plan:
* Go to <your canvas instance>/xsd/cccv1p0.xsd
* Verify that the following elements are shown under the course element (should be the first section):
* lock_all_announcements
* public_syllabus
* hide_distribution_graphs
* allow_student_discussion_topics
* allow_student_discussion_editing
Change-Id: I09170c9cd421a9516c059958a347a2c4d4e97986
Reviewed-on: https://gerrit.instructure.com/51937
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Jahnavi Yetukuri <jyetukuri@instructure.com>
Adds the course_lock_all_announcements course attribute to course copy.
fixes CNVS-7289
Test plan:
* On course settings, select the option "Disable comments on announcements"
* Copy the course
* On the new course, verify that "Disable comments on announcements" is enabled
Change-Id: I4b7dee1adee2833b970cacc23971f9bb6fb3059e
Reviewed-on: https://gerrit.instructure.com/51881
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Jahnavi Yetukuri <jyetukuri@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
test plan:
- create numeric answer questions with error margins
- copy the course
- in the copied quiz, the error margins should match the
original course (show as 0.0001 and not something like
0.00009999999999889)
fixes CNVS-19615
Change-Id: Iba9e40f9e37323310e6414794139c68d0f1c061c
Reviewed-on: https://gerrit.instructure.com/51334
Reviewed-by: James Williams <jamesw@instructure.com>
Tested-by: Jenkins
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
test plan:
- have a course containing an assignment that links to
a course file
- share the assignment to Commons
- import it into another course
- the link in the new course should contain the correct
course id (the destination course's id, not the source
course's id)
fixes CNVS-19366
Change-Id: Id58aca5215281b6d28458849eab00273ddd84109
Reviewed-on: https://gerrit.instructure.com/50527
Tested-by: Jenkins
Reviewed-by: James Williams <jamesw@instructure.com>
QA-Review: Caleb Guanzon <cguanzon@instructure.com>
Product-Review: Pedro Fajardo <pfajardo@instructure.com>
fixes CNVS-19301
especially with user supplied urls!
prefixing the path with | executes it in a subprocess.
with open-uri, it follows redirects forever.
use File.open and CanvasHttp.get instead
Change-Id: I94dd7483da44ccd717b66d0e343375601cd0850c
Reviewed-on: https://gerrit.instructure.com/50442
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: Joel Hough <joel@instructure.com>
test plan: ensure the "public syllabus" setting persists
across course copy and export/import
fixes CNVS-7290
Change-Id: Ieead3e166012d77a71adc7b2c9a0d43f3df346ca
Reviewed-on: https://gerrit.instructure.com/50158
Tested-by: Jenkins
Reviewed-by: James Williams <jamesw@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
test plan:
- create an ungraded discussion topic with "Available at"
and "Until" dates
- copy the course
- confirm the dates are preserved
- confirm both dates move appropriately when you shift dates
fixes CNVS-19043
Change-Id: I81b694b87e745dc098e2c6b306c2c0d6656c38ca
Reviewed-on: https://gerrit.instructure.com/49898
Reviewed-by: Dan Minkevitch <dan@instructure.com>
Tested-by: Jenkins
Reviewed-by: James Williams <jamesw@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: Jon Willesen <jonw@instructure.com>
test plan:
* quiz imports and course copying should
be unaffected
closes #CNVS-19012
Change-Id: I6000fce1d6f08459bb7266c97b9d47424bedc1de
Reviewed-on: https://gerrit.instructure.com/49762
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
test plan:
0. create a course with some assignments in separate assignment groups
1. do a course copy without selecting content. the assignment groups
should be copied to the new course, with the assignments in there.
2. do a course copy and select an entire assignment group, plus
some (but not all) assignments in another assignment group.
the selected group and its assignments should be copied to the new
course. the individually selected assignments should be in the
"Imported Assignments" group
3. create a new course with an assignment group having the same name
as one from step 0. add an assignment to the group, and set a
"drop lowest assignment" rule on the group. selectively import
an assignment from the course in step 0 in the group having the
same name as this group. the assignment should be imported into
the "Imported Assignments" group, and the group with the same name
should be unaffected (with its drop rule intact).
fixes CNVS-18650
Change-Id: I49266dfc42753566c9d6dbef74b6c70cfabd7e33
Reviewed-on: https://gerrit.instructure.com/49285
Tested-by: Jenkins
Reviewed-by: James Williams <jamesw@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
s/IMS_CC_FILEBASE/IMS-CC-FILEBASE/ as is expected in the
common cartridge specification.
The import side should still support both styles, of course.
Test Plan:
* Create links to files in wiki pages and other html content
* the exported cartridge should have IMS-CC-FILEBASE as the variable
* course copy and export/import correctly
* importing a standard CC from IMS should work
Change-Id: If36c9456b2d30b455bcff7ed79f8c13c1b2d7ffe
Reviewed-on: https://gerrit.instructure.com/48809
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins
QA-Review: August Thornton <august@instructure.com>
test plan:
1. configure the example LTI tool in both a course and an account.
go to Settings | Apps in each place and use these settings:
* Configuration type: By URL
* Name: "Account Tool Test" / "Course Tool Test"
* Consumer key: "test"
* Shared secret: "secret"
* Config URL: http://lti-tool-provider.herokuapp.com/tool_config.xml
2. create an assignment, selecting "External Tool" submission type.
click the external tool URL and select the account's external tool
from the list. save the assignment and take note of the tool id
which is found in the "lis_outcome_service_url" row, inside a
url such as "http://canvas/api/lti/v1/tools/{{ID}}/grade_passback"
3. repeat step 2, but use the course's external tool.
4. copy the course. view the assignments in the copy.
* the account-tool assignment should show the same ID in the
"lis_outcome_service_url" row as the source assignment from step 2.
* the course-tool assignment should show a _different_ ID in the
"lis_outcome_service_url" (matching neither steps 2 nor 3).
fixes CNVS-18573
Change-Id: I11991f7860367f431c6dca1c0a655ddf0246656b
Reviewed-on: https://gerrit.instructure.com/48918
Tested-by: Jenkins
Reviewed-by: James Williams <jamesw@instructure.com>
QA-Review: Jahnavi Yetukuri <jyetukuri@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
test plan:
1. create a grading standard on an account
2. select this grading standard in an assignment
3. copy the course and confirm the copy's assignment references the
account grading scheme
4. export/import the course into a shell in the same root account
as the original course and confirm the copy's assignment
references the account grading scheme
5. import into a course shell under a different root account
than the original (a different shard or account domain is not
necessary; you can create an account via Site Admin settings
with no account domain, then go to that account's settings to
create a course in that account) and confirm that the copy's
assignment uses the default grading scheme (and the migration
produces a warning stating the account grading scheme was not
found)
fixes CNVS-18455
Change-Id: I3fc394453b8dbb86332df270cfe47a631cd29c7a
Reviewed-on: https://gerrit.instructure.com/48765
Tested-by: Jenkins
Reviewed-by: James Williams <jamesw@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
test plan:
* import the packages referenced in the ticket
* should not fail immediately
closes #CNVS-18437
Change-Id: I36d250001d9d4ecc5a9b68c66e2e234b2cb89617
Reviewed-on: https://gerrit.instructure.com/48437
Tested-by: Jenkins
Reviewed-by: Dan Minkevitch <dan@instructure.com>
QA-Review: Jahnavi Yetukuri <jyetukuri@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
test plan:
0. create a quiz with a limited number of attempts
1. ensure the checkboxes in the quiz settings section
"Let Students See Their Quiz Responses"
are preserved across export/import and course copy.
in particular:
"Only once after each attempt"
"Let students see the correct answers" /
"Only after their last attempt"
fixes CNVS-18082
fixes CNVS-18200
Change-Id: I050c4c38bc2feb16a2ad3154bd90a9cebc9d7180
Reviewed-on: https://gerrit.instructure.com/47927
Tested-by: Jenkins
Reviewed-by: James Williams <jamesw@instructure.com>
QA-Review: Jahnavi Yetukuri <jyetukuri@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
external feeds have three columns that really aren't adding any value
* body_match: never used anywhere in the code, always nil in the
database
* feed_type: always 'rss/atom' (built to handle ical, but never used)
* feed_purpose: always 'announcements' (build to handle calendar_events,
but never used)
closes CNVS-17581
test plan:
- create an external feed on the announcements page
- wait for the rss feed to post a new story and the aggregator to run,
OR, in a rails console:
* set the created_at date on the external feed to before the last
posted entry, something like
ef = ExternalFeed.last
ef.created_at = 5.days.ago
ef.save!
* run the external feed aggregator, like so:
ExternalFeedAggregator.process
- it should create an announcement for the blog post from that feed
Change-Id: I74deffbdaaa1e217f8eefbdfd1000d50c2406cb1
Reviewed-on: https://gerrit.instructure.com/45990
Reviewed-by: Joel Hough <joel@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Steven Shepherd <sshepherd@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
fixes PLAT-731
fixes PLAT-774
fixes PLAT-679
Test steps:
- Add, remove, navigate and show apps
- Ensure that when the App Center is disabled,
you are only able to access the configurations
Patchset notes:
33: removed ability to destroy cache via api, removed reviews
37: rebased
37: fixed js map bug
Change-Id: I397aeab58ff50a5a930b39228571a7088e5784ce
Reviewed-on: https://gerrit.instructure.com/43818
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Nathan Rogowski <nathan@instructure.com>
Reviewed-by: Dan Minkevitch <dan@instructure.com>
Reviewed-by: Brad Humphrey <brad@instructure.com>
Product-Review: Eric Berry <ericb@instructure.com>
test plan:
* regression test wiki pages
closes CNVS-16203
Change-Id: Ic37c69c8696151dc99f1df6f3cc9b013835b12a4
Reviewed-on: https://gerrit.instructure.com/42552
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
Canvas has no ability to say an object is for teachers only,
but now that Canvas can have things unpublished, this is a
good mapping for that attribute in CC.
Test Plan:
* import a common cartridge with content marked as for a teacher
* those items should be unpublished
refs PLAT-764
Change-Id: I53eaf5311df887f06bda6fa67435de14ae2fb188
Reviewed-on: https://gerrit.instructure.com/45008
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
test plan:
- set usage rights for files in a course
- copy the course and ensure the rights information persists
in the copy
- export the course to a common cartridge, re-import it,
and ensure the rights information persists in the copy
closes CNVS-16827
Change-Id: I42ba825c85acd8aae363f526828890a4c2306c0e
Reviewed-on: https://gerrit.instructure.com/44621
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Dan Minkevitch <dan@instructure.com>
QA-Review: Jahnavi Yetukuri <jyetukuri@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
test plan:
* create a course with two question banks with
the same name, each containing at least one question
* create a quiz with quiz groups that pick from the
question banks
* copy the course
* should retain two separate question banks, and retain
the quiz groups
* the questions (and number of them) for each bank should
remain the same as the original course
closes #CNVS-14780
Change-Id: I8ed819220021cf965e3ca90206c7096e5bde717c
Reviewed-on: https://gerrit.instructure.com/42392
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Anna Koalenz <akoalenz@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
fixes CNVS-9494
test plan:
- NOTE: *** before checking out the commit ***
- create an assignment with auto assigned peer reviews in the future
- submit the assignment for two students
- wait for auto assign time to pass, they should have peer reviews
- export the course as an .imscc package
- create an assignment with auto assigned peer reviews in the future
- submit the assignment for two students
- wait for auto assign time to pass, they should have peer reviews
- now submit as two additional students, notice that they do not get
auto_assigned
- move auto assign at time into the future, wait for it to pass
- they should now also have peer reviews
- import the package the was exported before checking out the commit
- it should import without errors
- submit the assignment as two students
- move auto assign at time into the future, wait for it to pass
- they should now also have peer reviews
Change-Id: I22316349c185c9f641152325fdcf536d585de49c
Reviewed-on: https://gerrit.instructure.com/39993
Reviewed-by: Benjamin Porter <bporter@instructure.com>
Reviewed-by: Cameron Sutter <csutter@instructure.com>
QA-Review: Sean Lewis <slewis@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
test plan:
* create a course
* import a quiz into it (doesn't matter how)
* import a qti/cc file, making sure not to check
the "overwrite content box"
* re-import the same file, this time, checking the
"overwrite content box"
* should have overwritten the assessment content
closes #CNVS-15844
Change-Id: I13532e2c4cbd332d2a4d84a2339dcc529df1b167
Reviewed-on: https://gerrit.instructure.com/41826
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
fixes: PLAT-646
Test Plan:
* Install an external tool with the property "not_selectable" as true
* when you look in the asmnt/module item external tool list the tool
should not be listed
Change-Id: If66e09b83373fad83274d0120cb464e7caf60c83
Reviewed-on: https://gerrit.instructure.com/41205
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
unpublished items weren't showing up in the common cartridge
organization. (but they were in the custom module xml)
Test Plan:
* Export a course with some module items that are unpublished
* there should be an item in the export manifest correlating to that item
closes CNVS-15359
Change-Id: I2763d8f8e3e433ca079fe9a77e2457022428345e
Reviewed-on: https://gerrit.instructure.com/40822
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
given a course that references question banks, rubrics,
outcomes, and/or external tools in its account, if the course
is exported and re-imported into a different institution
in a different shard, there's a chance that the wrong item(s)
may become associated with the copied course.
to solve this,
(1) export the root account's uuid with a cc export;
(2) ignore external references on import if the saved uuid
does not match the root account of the destination
course.
test plan:
1. arrange the following in a course:
a. an external tool module item referencing a tool
defined in the account
b. a learning outcome imported from an account
c. an assignment using an account rubric for grading
d. a quiz containing a question group puling from an
account question bank
2. export this course to a common cartridge
3. import it into a course in the same root account.
it should import without warnings, and the account
references should be intact.
4. unzip the export package from step 2.
in course_settings/course_settings.xml, change
the root_account_uuid value. re-zip.
5. import the modified package into another course
in the same root account. (we tricked canvas
into thinking it's a different root account,
because that's easier than actually setting up
another shard and "decoy" items with matching ids).
-> you should get warnings about the external tool,
rubric, outcome, and question bank
-> the rubric and outcome should still be present,
but are copies and not the original account items
fixes CNVS-15101
Change-Id: I60d2a8377995f9d9476a87776c993d677b838b1b
Reviewed-on: https://gerrit.instructure.com/40391
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
Reviewed-by: James Williams <jamesw@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
test plan:
0. have a course containing an assignment with a custom grading scheme
and named assignment group. also a graded discussion topic in a
different assignment group with a different grading scheme, and
a published quiz in a third assignment group.
1. copy the course. the destination course should copy the assignment
groups and grading schemes and associate them with the copied objects
correctly.
2. repeat step 1, but do a selective course copy, and select the
assignment, quiz, and topic specifically. you should get the
same result as in step 1.
3. use the content exports API to selectively export the three objects
e.g.,
select[assignments][]=X&select[quizzes][]=Y&select[discussion_topics][]=Z
import this package into a new course. the three objects should be
there, but should not have custom assignment groups or grading
schemes.
fixes CNVS-14820
Change-Id: I871771284b4a3bbd3695a99a6f2af613d76a8ebf
Reviewed-on: https://gerrit.instructure.com/39914
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Reviewed-by: James Williams <jamesw@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
fixes CNVS-14822
test plan:
- have an assignment with a rubric that references an outcome
- copy the course containing the assignment, selecting only the
assignment
- the destination course should contain copies of the assignment,
rubric, and outcome, linked as in the source course
Change-Id: I425dc2bb241ec8996c2195bf9365750e50e42e85
Reviewed-on: https://gerrit.instructure.com/40105
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: James Williams <jamesw@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
test plan:
* should be able to use the API to export individual items
associated with modules by specifying a "module_item" or
"content_tag" id
refs #CNVS-14552
Change-Id: I340c5e35297aa9d6e7971ba2b26ae6b222404fde
Reviewed-on: https://gerrit.instructure.com/39808
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
test plan:
* import the package referenced in the ticket
as a common cartidge package
* the migration should not generate missing
file reference warnings
closes #CNVS-14681
Change-Id: I762a51c63a9b55847914ce10e022524b030e3c1b
Reviewed-on: https://gerrit.instructure.com/39101
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
test plan:
- create a course with an external feed (announcements page)
and an assignment
- copy the course. the copy should contain both.
- copy the course, but select only the assignment. the copy
should not contain the external feed.
fixes CNVS-14773
Change-Id: I321522c143e84a50d6a570967cb98505a8011800
Reviewed-on: https://gerrit.instructure.com/39393
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: James Williams <jamesw@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
also add limits for byte size and file count to prevent
zip/tar "bombs"
test plan:
* import the package referenced in the ticket
* should import successfully
* content migration regressions
closes #CNVS-14303 #CNVS-14428
Change-Id: Ia424b5260e34f35b62ca47f7aafa77118c4f5b5b
Reviewed-on: https://gerrit.instructure.com/37881
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Trevor deHaan <tdehaan@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
fixes a difficult-to-reproduce problem with export packages
that causes quiz questions to be swapped with other quiz questions
that happen to have the same db id number as related assessment
questions
fixes #CNVS-14365
Change-Id: I0d7ccfd6bf4f3ef10169443ca4e994dcc935f053
Reviewed-on: https://gerrit.instructure.com/38043
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
test plan:
* create an unpublished discussion topic and a
published one
* copy the course (or export/import it)
* should retain their respective states
closes #CNVS-14201
Change-Id: If7702b67701b50ce4e2a027d1d4b5ab441d86003
Reviewed-on: https://gerrit.instructure.com/37900
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Test Plan:
* Import the flat manifest fixture file
* There should be:
* 2 discussions with titles that say you should see them
* 1 assignment
* a module with 5 module items
closes PLAT-560
Change-Id: I975546e59dcdd731b2e0149c52fb7dd33f5e70e8
Reviewed-on: https://gerrit.instructure.com/37545
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: James Williams <jamesw@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
test plan:
* create a course object with html content (such as a
calendar event)
* create a link to a file, but corrupt the attachment id in the path
so it won't be found (e.g. /courses/x/files/y;
set y to something nonexistent)
* exporting or copying the course should not prevent all objects
of that type from being exported (e.g. should still bring in
other calendar events)
fixes #CNVS-13929
Change-Id: I84b3958937021a2c2d07db4fb4cb689d067136ce
Reviewed-on: https://gerrit.instructure.com/37383
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
test plan:
* create a folder with unicode characters in the name
* create another folder with an html entity (e.g. "&")
* link to files within those folders inside html content
in a course (wiki page body, discussion topic message, etc)
* copy or export/import the content
* should preserve the links
fixes #CNVS-13781
Change-Id: I4aa0f0f234834626dad8356440e6f3975e35ffd4
Reviewed-on: https://gerrit.instructure.com/37123
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
test plan:
* test the undocumented content_list api endpoint:
api/v1/courses/:course_id/content_list
which returns the same content list that would be shown by the
selective_content endpoint of a pending course copy content migration
with no 'type' parameter, it should return a list of
exportable categories and urls for each expandable type
with a type parameter (e.g. content_list?type=context_modules), it
should send a list of items with their titles and ids (asset strings)
these ids can be used to select the content for the export
* use the content_exports_api create endpoint to create a
common_cartridge export, but add an additional argument,
"select" (equivalent to the "copy" parameters for
the content_migration api)
e.g. api/v1/courses/:course_id/content_exports?
select[all_wiki_pages]=1&
select[context_modules][context_module_42]=1
(replacing :course_id and :module_id)
* also try using arrays of ids as a parameter
e.g. api/v1/courses/:course_id/content_exports?
select[context_modules][]=42&
select[context_modules][]=43
this should create a package that only contains the
specified content, and any course files referenced in
html content (confirm by re-importing)
closes #CNVS-13502
Change-Id: I5bdcdc8255b30c5f78585dc335d25eb19bd5a7c0
Reviewed-on: https://gerrit.instructure.com/36655
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
test plan:
- have an assignment in a course that has points possible
and submission types
- use the content exports API to export the course,
supplying the currently undocumented parameter
version=1.3
a) examine the exported XML and verify that it follows
the IMS standards
http://www.imsglobal.org/cc/ccv1p3/AssignmentContentType.htmlhttp://www.imsglobal.org/cc/ccv1p3/CCv1p3Variantguidelines.pdf
b) ensure the exported course re-imports correctly
fixes CNVS-13503
Change-Id: Iad8a54e94696962d362cfdb48fe03e06a90937ff
Reviewed-on: https://gerrit.instructure.com/36283
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: James Williams <jamesw@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
test plan:
* create a course with an external tool with a navigation tab
* permanently delete the tool in the console:
ContextExternalTool.delete_all(:context_id => <INSERT COURSE ID HERE>)
* set a course setting (such as the tab configuration)
* copy the course
* should retain the course settings
fixes #CNVS-13661
Change-Id: Id3d810282e3eff3bc9cb0b98cdb96af73a503a28
Reviewed-on: https://gerrit.instructure.com/36531
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Nathan Rogowski <nathan@instructure.com>
test plan:
- take the flat manifest attached to CNVS-13219 and find the <gradable>
tag
- add a points_possible attribute to it, for example
<gradable points_possible="101">
- import the manifest as a common cartridge
- the imported assignment should have the specified points possible
refs CNVS-13503
fixes CNVS-13576
Change-Id: Ifc546c47cada7fcf7ec817395ceb525028406bf1
Reviewed-on: https://gerrit.instructure.com/36269
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: James Williams <jamesw@instructure.com>
QA-Review: Nathan Rogowski <nathan@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
test plan:
* should be able to select question banks and quizzes
separately for migrations in any combination, for
any package type
closes #CNVS-8526 #CNVS-13333
Change-Id: I566ab00f906369c3c28848b9d8985e7965378d1d
Reviewed-on: https://gerrit.instructure.com/35354
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: Hilary Scharton <hilary@instructure.com>
also fix a couple other minor cc issues
test plan:
* import the test packages referenced in the ticket
* should reference the images correctly in the first package
* should import a quiz in the second
fixes #CNVS-13340
Change-Id: I39dca77953d2b46703fa5163240329b039075ec3
Reviewed-on: https://gerrit.instructure.com/35815
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
test plan:
* importing the example package with cc assignment data
should bring in canvas specific assignment data (like grading type)
* cc and canvas package import regressions
closes #CNVS-13270
Change-Id: Ic053837aa7642212bc0360f5e5ecf2cd27a88d9b
Reviewed-on: https://gerrit.instructure.com/35747
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
test plan:
* import the test assignment fixtures as a common cartridge file
* there should be an assignment in the course
* also test import of flat manifest xml files
closes #CNVS-5906 #CNVS-13219
Change-Id: I0b765ed0d140516f78a5f4fb5dbe9b81ac77ecd4
Reviewed-on: https://gerrit.instructure.com/35394
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
refs CNVS-13024
Setting wasn't properly being initialized as unsharded because
it was loading before Switchman. The reason we need Setting before
switchman is just for yaml loading, so split that into its own
class.
Change-Id: I5456e103cb216dba2d5af4e9c20a697b468c923b
Reviewed-on: https://gerrit.instructure.com/35043
Reviewed-by: Jacob Fugal <jacob@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
test plan:
* create a quiz with a description
* export the quiz in a qti export
* import into another course
* should retain the description
fixes #CNVS-8852
Change-Id: I454db916692b6bc58b908322301d5956c99d9901
Reviewed-on: https://gerrit.instructure.com/34886
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
test plan:
* create a course with multiple learning outcomes
* delete one of them
* copy the course
* the deleted outcome should not re-appear in the copy
fixes #CNVS-4358
Change-Id: I2ec16a250d2bcaf70ab0e06d5711e18a2839c415
Reviewed-on: https://gerrit.instructure.com/34798
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
test plan:
* create a course with a question bank and
questions
* create learning outcomes (either on the course
or account level)
* align outcome(s) to the question bank(s)
* copy the course, or import/export it
* confirm that the question banks in the new course
retain their alignments
fixes #CNVS-5917
Change-Id: I16a80371af4433a4debdcc29d09d7fa1f43bc41e
Reviewed-on: https://gerrit.instructure.com/34572
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Nathan Rogowski <nathan@instructure.com>
fixes: CNVS-12305
test plan:
summaries email should be formatted correctly with indentations.
twitter messages should not be longer than 140 characters.
Change-Id: I912a63b03c6c14de0c1d678063bb8fa33504d843
Reviewed-on: https://gerrit.instructure.com/33171
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Nathan Rogowski <nathan@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
the current learning outcome selection only occurs during course copy,
and will not bring in any outcomes that are in a group
in the future, we would like to add detailed item selection to the
dialog, but for now, make a simple solution that at least works
test plan:
* for both course copy, and course export/import, confirm that
the 'select content' option gives you a checkbox to either bring
in all the learning outcomes (and their groups) or none of them
fixes #CNVS-7464
Change-Id: I06a423ea949442cbba1459e04154681b6b2859bc
Reviewed-on: https://gerrit.instructure.com/33031
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Nathan Rogowski <nathan@instructure.com>
Product-Review: Hilary Scharton <hilary@instructure.com>
test plan:
* create a course with an external tool (either configured
for the course or on an account-level) that adds a course
navigation tab
* arrange the tabs in the course settings
* copy the course, or export the course and then import
into a new course
* should retain the same tab configuration as the original course
fixes #CNVS-8866
Change-Id: I8ee7cb5bd2e098829994e63f4fbd1ca4d0afd701
Reviewed-on: https://gerrit.instructure.com/32906
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Mark Severson <markse@instructure.com>
QA-Review: Nathan Rogowski <nathan@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
test plan:
* create a muted assignment
* copy the course, or use import/export
* the migrated assignment should also be muted
refs #CNVS-12483
Change-Id: I124141ae088cb70a4d93f4270c5ad103c4b24a3a
Reviewed-on: https://gerrit.instructure.com/33415
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Nathan Rogowski <nathan@instructure.com>
fixes CNVS-10479
test plan:
- in a course with kaltura enabled
- go to a discussion and add media
- upload a video (use right tab, not the webcam)
- save the video/discussion post
- the video should be saved properly and viewable
(this sometimes takes a minute of two)
Change-Id: I40b9174807707dd1fb41125e04705422a8711d5d
Reviewed-on: https://gerrit.instructure.com/32024
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Nathan Rogowski <nathan@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
test plan:
- attach media comments to a course
- copy the course
- export the copy
- import the package
- the media comments should be preserved
fixes CNVS-12228
Change-Id: Ie200d65c77856ac0cd8a694c8cb4fb56558cf260
Reviewed-on: https://gerrit.instructure.com/32975
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
QA-Review: Matt Fairbourn <mfairbourn@instructure.com>
test plan:
- have a course with a video file embedded in content somewhere
(such as a wiki page)
- create captions for the video and verify that they play back
- export this course to an .imscc
- import it to a new course
- ensure the captions play back in the copied course
fixes CNVS-10228
Change-Id: Ie15076bc31ad36efabf7a718d12bd8a9b12e45e1
Reviewed-on: https://gerrit.instructure.com/32680
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Nathan Rogowski <nathan@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
test plan:
- set a grading standard for a course
- link a new grading standard to an assignment in the course
- also have an assignment without a grading standard
- and a grading standard that's unused
- copy the course (without selecting content)
- the copy should have all the grading standards from the original
- copy the course, selecting only the assignment with no grading standard
- the copy should have no grading standards
- copy the course, selecting only the assignment with the grading standard
- only the assignment's grading standard should be in the new course
- copy the course, selecting only course settings
- only the course's grading standard should be in the new course
fixes CNVS-5499
Change-Id: I3899769e960b17869245ebf9a5a8c4811755c362
Reviewed-on: https://gerrit.instructure.com/30775
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Matt Fairbourn <mfairbourn@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
test plan:
- with draft state enabled
* create a wiki page
- use the sidebar to add a link to another wiki page
* save the page
* edit the page
- html view should show the href as ../pages/.. not ../wiki/..
- copy the link, changing the href to be ../wiki/..
* save the page
* copy the course
* navigate to the copied wiki page
- both links should point to the page in the new course
fixes CNVS-11443
Change-Id: Ib7f8b175ac6d894a9bfa651f8536b7cd48b60aac
Reviewed-on: https://gerrit.instructure.com/30780
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Matt Fairbourn <mfairbourn@instructure.com>
This commit namespaces the rest of quiz related code into a Quizzes
namespace: controllers, views, models, and classes that previously lived
under lib/ that are Quiz-related.
Test plan:
Full regression test on all quiz related items
refs CNVS-10457
Change-Id: If54b61213945056539e03271a936d233abb66188
Reviewed-on: https://gerrit.instructure.com/29351
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Myller de Araujo <myller@instructure.com>
Reviewed-by: Jason Madsen <jmadsen@instructure.com>
Product-Review: Josh Simpson <jsimpson@instructure.com>
Adds the require_lockdown_browser_monitor and lockdown_browser_monitor
data Quiz attributes and makes them accessible through the Quiz API.
Test Plan:
* With lockdown browser enabled:
* Should be able to read/set lockdown properties through quiz api:
require_lockdown_browser, require_lockdown_browser_for_results,
require_lockdown_browser_monitor, lockdown_browser_monitor_data
* if use_lti_tool plugin setting is set (enabled in different commit)
then the LB options are hidden in quizzes UI
closes PLAT-291
Change-Id: Ic45a4946d5632a01f32709b76ce2907b1141f351
Reviewed-on: https://gerrit.instructure.com/29648
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Derek DeVries <ddevries@instructure.com>
QA-Review: Nathan Rogowski <nathan@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>