Commit Graph

412 Commits

Author SHA1 Message Date
Christian Prescott a978231f74 Add "Mastery Paths" AssignmentOverride
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>
2016-10-17 17:07:33 +00:00
Bryan Holladay 4e9eb7c65d VeriCite plugin integration into Assignments, Gradebook, and Speedgrader 2016-10-07 08:10:56 -04:00
James Williams a5726de41c copy "answer with precision" in numerical questions
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>
2016-10-06 19:43:49 +00:00
Matthew Berns b9933af53f add setting for intra-group peer reviews
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>
2016-10-05 16:08:37 +00:00
wdransfield 8a5e8a45b2 Provide meaningful error messages when adding LTI applications
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>
2016-09-13 18:15:08 +00:00
James Williams f0a62cdce6 add omit_from_final_grade to course copy assignment attributes
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>
2016-09-06 18:51:36 +00:00
Nathan Mills 721dda5ff8 copy non placement extensions to lti xml
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>
2016-09-06 16:58:16 +00:00
Jeremy Stanley a54493fdec fix learning outcomes in selective course copy
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>
2016-08-31 15:05:35 +00:00
Nathan Mills 946e226211 move extensions to the placments class
refs PLAT-1730

test plan:
LTI 1 shouldn't be broken

Change-Id: Ie66adf8d16e963bfc218840c9a57294a4421d75c
Reviewed-on: https://gerrit.instructure.com/88866
Tested-by: Jenkins
Reviewed-by: Weston Dransfield <wdransfield@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Nathan Mills <nathanm@instructure.com>
2016-08-29 15:32:35 +00:00
James Williams 86894ad17b cleanup content migration files afterwards
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>
2016-08-23 17:13:59 +00:00
Christian Prescott 4a7227c050 Fix modules ignoring page assignment override behavior
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>
2016-08-17 16:26:45 +00:00
James Williams 32952f8e5b copy attachments implicitly for discussion topics
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>
2016-08-17 12:51:38 +00:00
Kacey Roberts efb663e016 New Syllabus visibility option for authenticated non-course user.
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>
2016-08-09 16:26:37 +00:00
James Williams ce4f03ce0c try even harder to resolve references in common cartridge
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>
2016-08-05 19:22:02 +00:00
James Williams 114fa41175 course timetable event generator
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>
2016-08-05 17:07:21 +00:00
Christian Prescott a83add0d40 Migrate wiki page assignment relationship in course copy
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>
2016-07-18 19:23:54 +00:00
Tyler Scott 7ab09c9fd5 fix learning outcome import calculation method
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>
2016-07-18 15:55:56 +00:00
James Williams a869a26b73 separate discussion topics and announcements in importers
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>
2016-07-12 13:30:10 +00:00
James Williams 65d3249d9b extend external content migration framework for selective export
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>
2016-07-08 16:07:06 +00:00
James Williams 479759dfc8 structure for importing/exporting external service content
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>
2016-07-08 16:06:10 +00:00
James Williams 204a4e48af allow selective exporting of announcements as a discussion
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>
2016-06-20 12:12:10 +00:00
Brandon Broschinsky 88886f6e95 include turnitin settings on course copy
fixes: PFS-4377

**Test Plan
1. create assignment in course
2. enable turnitit
3. update settings on turnitin
4. copy course
5. verify new settings exist in copied course

Change-Id: I7f7ba9d81aba9ce2391150269cf8d7e2cd7dafa2
Reviewed-on: https://gerrit.instructure.com/80209
Reviewed-by: Cameron Matheson <cameron@instructure.com>
QA-Review: Amber Taniuchi <amber@instructure.com>
Tested-by: Jenkins
Product-Review: Christi Wruck
2016-06-03 20:31:48 +00:00
Jeremy Stanley efbf0f1e2a import group discussions into matching existing group set
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>
2016-05-24 18:56:09 +00:00
Bryan Petty 472b47eeb4 make ePub export locale-aware
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>
2016-05-13 21:31:18 +00:00
James Williams ce0192da3d export rubrics with graded discussion topics on selective export
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>
2016-05-11 15:09:14 +00:00
James Williams 5a57f1923e import html files in cc packages as assignments if configured
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>
2016-05-09 15:42:36 +00:00
Alex Boyd c299bd1ab4 DRY up filename computation and make names path safe
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>
2016-05-04 17:36:45 +00:00
James Williams 9a8154b852 copy outcomes inside outcome groups implicitly
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>
2016-03-31 20:02:36 +00:00
Jeremy Stanley a7509c9fa2 persist discussion topic "allow liking" settings across migration
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>
2016-03-25 20:10:15 +00:00
James Williams b7ab6aa88b drop a bunch of unused columns
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>
2016-03-17 17:19:13 +00:00
James Williams cbebcd01c1 fix export/import of folders starting with "."
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>
2016-03-04 17:49:56 +00:00
James Williams 93ba139e31 fix copied references to folders named "course files"
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>
2016-02-22 13:53:57 +00:00
James Williams 7bed7e2871 allow common cartridge sub-modules to be imported separately
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>
2016-02-02 15:48:03 +00:00
Matthew Berns 1c81f17b5c prevent locked content in ePub from redirecting to Canvas web
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>
2016-01-07 19:56:34 +00:00
John Corrigan 33c1f48e77 ePub export progress bar shows real progress
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>
2016-01-06 21:21:57 +00:00
Matthew Berns 66a2e7d37d fix ePub export failing if two files have identical names
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>
2016-01-05 17:09:18 +00:00
John Corrigan 79fe35a084 handle missing media_id for flvs in epub export
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>
2015-12-16 22:19:27 +00:00
Jeremy Stanley 7912c4b209 expire content migration jobs after 48 hours
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>
2015-12-16 20:29:32 +00:00
John Corrigan f78d944573 try again to protect against missing submission types
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>
2015-12-09 16:46:29 +00:00
John Corrigan 550e5f4505 enable module-linking; remove links to missing content
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>
2015-12-04 20:49:45 +00:00
Matthew Berns 118051efa6 properly scale video sizes in Azardi
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>
2015-12-04 19:37:10 +00:00
Matthew Berns 9820fe664f fix unsupported .txt files showing in the ePub
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>
2015-12-04 18:03:46 +00:00
John Corrigan c5ffbfd458 ePub: don't always expect submissions types from content export
fixes CNVS-25459

test plan:
- ePub export regression tests

Change-Id: I20c47e086c8141ba5165e32bfd4bdfec113f629c
Reviewed-on: https://gerrit.instructure.com/68026
Reviewed-by: Matt Berns <mberns@instructure.com>
Tested-by: Jenkins
Product-Review: John Corrigan <jcorrigan@instructure.com>
QA-Review: John Corrigan <jcorrigan@instructure.com>
2015-12-02 21:14:35 +00:00
John Corrigan 3a2774cfd8 ePub: don't read file that doesn't exist
fixes CNVS-25458

test plan:
- ePub export regression tests

Change-Id: I87937e47a93e08fbbfd4c23b667ab9384bf63f67
Reviewed-on: https://gerrit.instructure.com/68025
Reviewed-by: Matt Berns <mberns@instructure.com>
Tested-by: Jenkins
Product-Review: John Corrigan <jcorrigan@instructure.com>
QA-Review: John Corrigan <jcorrigan@instructure.com>
2015-12-02 19:12:47 +00:00
Matthew Berns 85af1f321d prevent gray details box from appearing if not needed
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>
2015-11-20 18:39:59 +00:00
Matthew Berns 047609a62c adjust filename for ePub to be more user friendly
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>
2015-11-18 19:31:15 +00:00
Matthew Berns 4eb43afc2f remove unpublished items; apply rules for locked modules
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>
2015-11-18 14:51:51 +00:00
Matthew Berns a8b3fe9df6 add syllabus and announcements to ePub TOC
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>
2015-11-16 21:45:10 +00:00
Matthew Berns 0759e795cb provide explicit max sizes to ePub images
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>
2015-11-11 21:47:56 +00:00
James Williams dbedc956bc improve imported wiki page encoding handling
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>
2015-11-10 18:56:07 +00:00
Matthew Berns c0a8ec08de add styling to ePub
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>
2015-11-10 17:33:16 +00:00
Matthew Berns 19d5f54938 add main navigation table of contents to ePub
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>
2015-11-06 21:20:56 +00:00
John Corrigan d5797f967b handle files added directly to the item list of a module
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>
2015-11-06 16:03:38 +00:00
Matthew Berns 6ef7507513 separate announcements from discussion in ePub
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>
2015-11-05 19:49:21 +00:00
John Corrigan 0c55c060f0 enable inter-document ePub linking for canvas objects
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>
2015-11-04 21:33:34 +00:00
John Corrigan 124d764c21 don't try to include files that don't exist
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>
2015-11-02 20:03:13 +00:00
Matthew Berns c17e8d7131 add quizzes to ePub syllabus
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>
2015-10-30 23:16:20 +00:00
Matthew Berns a9819c1fbb remove resource_type from converted resources for ePub
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>
2015-10-30 17:37:07 +00:00
John Corrigan 8d4d967341 add zip_attachment to EpubExport
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>
2015-10-29 20:23:00 +00:00
Matthew Berns 5510947248 separate module ePub generation into separate xhtml files
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>
2015-10-28 17:39:21 +00:00
Matthew Berns 024e4ab472 add syllabus to ePub
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>
2015-10-28 17:39:12 +00:00
John Corrigan c3e48f62e1 display inline flv media in ePubs
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>
2015-10-27 15:36:06 +00:00
Matthew Berns fcb2506d39 sort by content if no course modules exist
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>
2015-10-21 15:49:31 +00:00
John Corrigan adad2fc64f exportable considers sort setting; EpubExport hooked up to Exportable
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>
2015-10-13 16:52:38 +00:00
John Corrigan 1bcc778573 changes based on epubcheck and iTMSTransporter validators
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>
2015-10-09 19:48:06 +00:00
John Corrigan 3889ab2b67 render inline media in player
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>
2015-10-08 22:34:32 +00:00
John Corrigan c825ffc544 render images, audio and video in epubs
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>
2015-10-07 17:20:28 +00:00
James Williams dbe56e5233 add requirement_count to course copy
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>
2015-10-05 13:00:10 +00:00
Matthew Berns bb7d6557eb add module sorting to epub
closes CNVS-21801

this adds module sorting functionality to ePub generation

to generate via console
- already have an .imscc file from an exported course
- in rails console
  ContentExport.include(CC::Exporter::Epub::Exportable)
  ContentExport.last.convert_to_epub  (for module sorting)
  ContentExport.last.convert_to_epub({sort_by_content: true}) (for content sorting)

Change-Id: Ie82db12a551ff338d616162211fa7bafcd9f29fe
Reviewed-on: https://gerrit.instructure.com/62681
Tested-by: Jenkins
Reviewed-by: John Corrigan <jcorrigan@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Cosme Salazar <cosme@instructure.com>
2015-10-01 19:59:17 +00:00
Dan Minkevitch 446930d0e2 Import Canvas assignments into existing matching groups
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>
2015-09-28 21:12:44 +00:00
Matthew Berns ccb23e8534 adds basic epub generation backend
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>
2015-09-11 16:50:02 +00:00
John Corrigan 2aaf91a4e1 use Quizzes::ScopedToUser in CC::QTI::QTIGenerator#generate
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>
2015-09-04 19:27:47 +00:00
James Williams 1f1bbfb610 remove max_score module completion requirement
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>
2015-09-03 15:50:32 +00:00
Jeremy Stanley 9501c59126 assignment moderated grading setting
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>
2015-08-10 22:26:32 +00:00
James Williams 5df55f1344 preserve file student date restrictions on import/export
(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>
2015-08-10 15:46:22 +00:00
John Corrigan 3dcaea5a18 update CC::WebResources#add_course_files to filter files by permission
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>
2015-08-06 19:01:09 +00:00
John Corrigan 9a3a560539 use DisucssionTopic::ScopedToUser in CC::TopicResources#add_topics
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>
2015-08-06 19:00:54 +00:00
John Corrigan c5269b8218 use WikiPages::ScopedToUser in CC::WikiResources#add_wiki_pages
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>
2015-08-04 15:41:17 +00:00
John Corrigan c94b8bc73f use Assignments::ScopedToUser in CC::AssignmentResources#add_assignments
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>
2015-08-04 15:41:09 +00:00
James Williams 2818ecdb1a catch URI::Error instead of URI::InvalidURIError
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>
2015-07-28 02:17:49 +00:00
Jeremy Stanley 56a3f80dd1 find or create a group category for imported discussions
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>
2015-07-20 17:25:45 +00:00
James Williams 91646b65eb imported link refactoring
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>
2015-06-16 20:04:32 +00:00
James Williams 1cab777234 add media_tracks.xml reference to exported imsmanifest
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>
2015-06-15 15:03:39 +00:00
James Williams 2ba8f5238b find or create a group category for imported group assignments
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>
2015-05-27 16:52:24 +00:00
James Williams 350d7550a8 export all external tool settings
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>
2015-05-06 15:15:09 +00:00
Strand McCutchen 7f659c2ce7 cleanup refactor of Rubocop's Lint/DeprecatedClassMethods
fixes: CNVS-20009

This change replaces deprecated methods (like `.exists?`)
with their current counterparts (like `.exist?`)

This cleanup refactor was automatically generated using
this command:

  `rubocop $(find . -name '*.rb') --only Lint/DeprecatedClassMethods --auto-correct`

These code changes were autocorrected then reviewed.

Change-Id: I385dbfc402d94a1f37330293123c6003aaac5b30
Reviewed-on: https://gerrit.instructure.com/52886
Reviewed-by: Cody Cutrer <cody@instructure.com>
Tested-by: Jenkins
Product-Review: Strand McCutchen <smccutchen@instructure.com>
QA-Review: Strand McCutchen <smccutchen@instructure.com>
2015-04-28 18:38:24 +00:00
Clare 5e4b64cbd3 added missing course settings to xsd file
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>
2015-04-09 23:19:20 +00:00
Cody Cutrer 9834937c8c don't autorequire a bunch of gems that are rarely used
Change-Id: I09ed3686629b62849d392684d587f30cb2047013
Reviewed-on: https://gerrit.instructure.com/51853
Tested-by: Jenkins
Reviewed-by: Ethan Vizitei <evizitei@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
2015-04-09 18:47:50 +00:00
Clare 38238baceb include "Disable comments on announcements" setting in course copy
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>
2015-04-09 17:35:57 +00:00
Jeremy Stanley 01b8bae52d use BigDecimal to compute numeric error margin
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>
2015-04-01 18:51:25 +00:00
Jeremy Stanley 1a261a5371 translate html content in CC 1.3 assignments
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>
2015-03-18 18:18:44 +00:00
Joel Hough 82b249c5ae don't use Kernel#open
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>
2015-03-17 20:09:27 +00:00
Jeremy Stanley 6151eeacdc preserve "public syllabus" attribute across migrations
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>
2015-03-12 16:30:06 +00:00
Jeremy Stanley b19f89d6ff preserve "Until" time when copying discussion topics
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>
2015-03-05 17:12:43 +00:00
James Williams 6c00886edd improve qti and course copy warnings
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>
2015-03-04 13:51:26 +00:00
Jeremy Stanley 8827091476 don't copy assignment groups on selective copy
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>
2015-02-25 16:52:35 +00:00
Bracken Mosbacker d1b508676b fix the common cartridge file token naming
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>
2015-02-21 00:06:02 +00:00
Jeremy Stanley 1971ece001 preserve assignment's external tool id over export/import
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>
2015-02-18 19:17:42 +00:00
Jeremy Stanley e95c25f164 export/import external grading standard id for assignments
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>
2015-02-13 19:31:40 +00:00
James Williams acd68a8f18 try to handle xml encoding mismatches better
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>
2015-02-09 17:37:51 +00:00
Jeremy Stanley 9bf7a20e9d export/import quiz attributes regarding viewing results
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>
2015-01-30 23:03:20 +00:00
Simon Williams b10f626dde remove unused external feeds columns
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>
2015-01-07 23:36:18 +00:00
Eric Berry 44d4a9fa7f Rebuilt App Center in React
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>
2015-01-05 21:34:02 +00:00
Mark Severson 1a245e6bdd remove non-draft state wiki pages
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>
2014-12-09 20:12:24 +00:00
Bracken Mosbacker 8bfce3955e mark teacher-role content in common cartridge as unpublished
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>
2014-12-03 17:34:03 +00:00
Jeremy Stanley b4ba52dd80 export and import file usage_rights
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>
2014-11-26 20:39:57 +00:00
James Williams 7019733ebb fix question bank de-duping on import
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>
2014-10-23 15:20:11 +00:00
Simon Williams 1142d81815 make auto_assigned peer reviews more robust
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>
2014-10-06 15:06:59 +00:00
James Williams 5a5c1c33e8 fix assessment content id prepending
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>
2014-10-01 13:20:11 +00:00
Cody Cutrer 5d42d023d2 no more dynamic finders (lib)
refs CNVS-15126

Change-Id: I4087b1c2442c5b8f70ce2138bf4aeef6ef7e59cd
Reviewed-on: https://gerrit.instructure.com/41259
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>
2014-09-23 16:53:56 +00:00
Nathan Mills 5af52334f6 move not_selected from external tools settings to it's own column
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>
2014-09-17 14:32:37 +00:00
Bracken Mosbacker 3f21967641 add unpublished module items as organization items on export
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>
2014-09-10 15:13:03 +00:00
Jeremy Stanley aa75b03a5b use root account uuid to scope external ids in migrations
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>
2014-09-09 19:16:41 +00:00
Jeremy Stanley d518b6f131 exclude grading schemes/assignment groups in selective assignment export
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>
2014-08-29 19:48:13 +00:00
Jeremy Stanley 1c471bb890 copy assignment rubric outcomes in selective export
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>
2014-08-28 15:33:34 +00:00
James Williams d631656666 add support for module items in selective content export
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>
2014-08-25 19:19:05 +00:00
James Williams 75e4b0ace3 make cc converter file search more flexible
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>
2014-08-21 12:55:49 +00:00
Jeremy Stanley 1096290e62 only copy external feeds when selected
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>
2014-08-20 17:04:26 +00:00
James Williams 829478bc38 add support for tar and tar.gz archives in content migrations
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>
2014-08-01 12:36:27 +00:00
James Williams 2da43ddf33 keep assessment question and quiz question migration ids separate
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>
2014-07-24 14:21:15 +00:00
James Williams 9989eaa9a1 retain unpublished state for discussion topics on copy
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>
2014-07-21 17:25:10 +00:00
Bracken Mosbacker 7e4bfacec6 add common cartridge 1.3 variant support
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>
2014-07-11 14:26:19 +00:00
Jeremy Stanley 3fa2e9c3db give content_exports polymorphic context
test plan:
* content export regressions

closes #CNVS-13468

Change-Id: I44dcf077967d4273c0ae9056074b03853d66a5dc
Reviewed-on: https://gerrit.instructure.com/35745
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
Reviewed-by: Jon Willesen <jonw@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: James Williams  <jamesw@instructure.com>
2014-07-09 16:34:39 +00:00
James Williams dc3d3faf51 fix missing attachment error in content exports
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>
2014-07-09 13:03:34 +00:00
James Williams 0ab798c1f4 fix import/export of folder paths with html entities and unicode
test plan:
* create a folder with unicode characters in the name
* create another folder with an html entity (e.g. "&amp;")
* 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>
2014-07-03 13:18:55 +00:00
James Williams 5b2d0cb97f selective content export api
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>
2014-07-02 19:39:57 +00:00
Jeremy Stanley cb10625dcc export CC 1.3 assignment extension
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.html
     http://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>
2014-07-01 14:41:37 +00:00
James Williams e68c2484ee fix webcontent converter zip file error
test plan:
* import the package referenced in the ticket
* should not fail

fixes #CNVS-13425

Change-Id: I2663d4479824b90e80d7421f2e4ff6975f6731a6
Reviewed-on: https://gerrit.instructure.com/36588
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
QA-Review: Nathan Rogowski <nathan@instructure.com>
2014-06-23 12:27:40 +00:00
James Williams 298a1a5242 don't raise error in course export if external tool is missing
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>
2014-06-18 19:49:44 +00:00
Jeremy Stanley a6d81ff0a1 import points_possible from CC 1.3 assignments
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>
2014-06-16 20:27:28 +00:00
James Williams abf9d8f0cd assessment question bank migration content selection
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>
2014-06-05 19:56:03 +00:00
James Williams 2d123f0b96 cc 1.3 importing qti from inside manifest
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>
2014-06-04 16:36:07 +00:00
James Williams 9c70e3e8b4 parse cc assignment extension data
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>
2014-06-03 20:28:27 +00:00
James Williams 3181ac8b11 improve cc 1.3 support
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>
2014-05-23 21:11:59 +00:00
Cody Cutrer 8178266194 split yaml file loading out of Setting
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>
2014-05-21 18:27:06 +00:00
James Williams 1d7f77d4fc export canvas meta data in qti exports
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>
2014-05-20 12:35:36 +00:00
James Williams fa9cdafdc6 only export active learning outcomes and groups
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>
2014-05-15 18:40:55 +00:00
James Williams 5f927946c5 import/export learning outcome alignments
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>
2014-05-14 12:31:11 +00:00
Kenneth Romney 31361b5255 extract lib/text_helper to gems/canvas_text_helper
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>
2014-04-30 15:18:40 +00:00
James Williams 68094f6217 fix and simplify learning outcomes in selective content import
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>
2014-04-18 17:29:13 +00:00
James Williams 1ae166f3ff export/import/copy course tab configuration with external tools
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>
2014-04-17 17:45:46 +00:00
James Williams bfbfdf41ee retain assignment muted status on course copy/import/export
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>
2014-04-17 15:37:14 +00:00
Nick Cloward f1009a38fe canvas kaltura gem
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>
2014-04-16 19:39:45 +00:00
Jeremy Stanley 212287dcab export media comments from copied courses
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>
2014-04-14 18:05:22 +00:00
Jeremy Stanley 6170b20b13 export/import media file captions
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>
2014-04-08 20:03:45 +00:00
Jeremy Stanley 12a4b3b105 don't copy all the grading standards in every course copy
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>
2014-03-04 19:12:19 +00:00
Mark Severson f1365969fb fix wiki links in course copy/migrations
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>
2014-03-04 00:17:56 +00:00
Joshua Simpson ae814421e0 namespace all of quiz into quizzes module
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>
2014-02-18 22:17:13 +00:00
Luis Camargo bdbcc1dd57 add support for respondus monitor
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>
2014-02-10 16:33:21 +00:00
Raphael Weiner 91944495c2 convert sanitize field plugin into proper gem: CanvasSanitize
Change-Id: I5562a318bb3f52c1374a3a69f288bfb2381f8ee7
Reviewed-on: https://gerrit.instructure.com/29405
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Stephan Hagemann <stephan@pivotallabs.com>
Product-Review: Stephan Hagemann <stephan@pivotallabs.com>
Reviewed-by: Brian Palmer <brianp@instructure.com>
QA-Review: Brian Palmer <brianp@instructure.com>
2014-01-28 22:36:18 +00:00