Commit Graph

1046 Commits

Author SHA1 Message Date
Brian Palmer 69d9f0262d don't create a new external_tool_tag on assignment update
Not only is this unnecessary, but worse it changes the assignment's
resource_link_id, messing up any LTI tools that rely on that
parameter.

fixes CNVS-5884

test plan: Create an LTI assignment using any tool, and inspect the html
to view the launch parameters. Record the resource_link_id. Then edit
and save the assignment, and inspect the launch parameters again. The
resource_link_id should remain the same.

Change-Id: Ib2adcff90474cbb60a85c18b8f233f9fd9a1eff7
Reviewed-on: https://gerrit.instructure.com/20656
Reviewed-by: Simon Williams <simon@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Brian Palmer <brianp@instructure.com>
2013-05-16 19:03:32 +00:00
Ethan Vizitei 83aa4c1a8b fix quiz submission notifications
FIXES CNVS-5540

make graded notifications come from quiz
submissions and not from regular submissions
so that we can accurately differentiate
between "graded" and "regraded".

Also makes sure that no messages get sent until
after essay questions on quizzes are graded.

Finally extracts the quiz_submission broadcast
policy into it's own object because there's
a lot of repetition there (did the same
for submission broadcast policy since I
was touching it anyway, could be a good pattern
for other broadcast policy definitions)

TEST PLAN:
  1) Log in as a student
  2) take a quiz with an essay question
  3) you should NOT get a notification
  4) login as a teacher, and grade that quiz
  5) the student should get a notification that
  their quiz has been graded
  6) that notification should NOT say that the
  quiz has been RE-graded.
  7) repeat, but grade from gradebook instead of
  speedgrader

Change-Id: Id057f6d7abb64906c03334031d0d66af1e25adb2
Reviewed-on: https://gerrit.instructure.com/20511
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Stanley Stuart <stanley@instructure.com>
QA-Review: Amber Taniuchi <amber@instructure.com>
Reviewed-by: Zach Pendleton <zachp@instructure.com>
Reviewed-by: Cameron Matheson <cameron@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
2013-05-15 21:29:18 +00:00
Zach Pendleton f2b6406726 use right host names on communication channel merge emails.
fixes CNVS-1608

test plan:
  * on a canvas installation with multi-tenancy enabled
    and cassandra being used for global lookups, create
    at least two accounts (A and B) on the same shard that
    don't share domain names;
  * create an active user account in account A;
  * create a duplicate user in account B through an SIS
    import;
  * verify that the duplicate user receives a merge
    notification and that the link in the email properly
    references account A, while the domain in the
    notification body references account B.

Change-Id: I44f84c082b319dd9129da8422a9e4c8c03103a13
Reviewed-on: https://gerrit.instructure.com/20615
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Mark Ericksen <marke@instructure.com>
QA-Review: Cam Theriault <cam@instructure.com>
Product-Review: Zach Pendleton <zachp@instructure.com>
2013-05-14 23:10:57 +00:00
Brian Palmer a6eae1c4fb don't show assignment descriptions in ics feed responses
refs CNVS-5846

test plan: load the ics feed for (a) course and (b) user, and verify
that assignments include a link to more details but no description
directly in the ics feed.

Change-Id: I58e4a78425cd2156de63dd7f6f90bb4f31918b36
Reviewed-on: https://gerrit.instructure.com/20579
Reviewed-by: Brian Palmer <brianp@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Brian Palmer <brianp@instructure.com>
2013-05-11 01:01:37 +00:00
Zach Pendleton 4752e16a0d add toggle for discussion auto-mark as read option.
fixes CNVS-5706

users are now able to toggle the discussion auto-mark
as read feature. this setting is user-level, and when
it is off, discussion entries will only be marked as
read when manually marked by the user.

manual marking is part of CNVS-5705.

test plan:
  * create a discussion in a course;
  * as user A, post an entry to the discussion;
  * as user B, navigate to the discussions index page and
    click the gear menu; check the "manually mark
    posts as read" checkbox and save the setting;
  * click into the discussion posted to by user A and
    verify that user A's post is not automatically marked
    as read;
  * uncheck the "manually mark posts as read" checkbox
    and save the setting;
  * revisit user A's post and verify that is marked as
    read without any input.
  * repeat steps above twice: once with user B as a
    teacher, once with user B as a student.

Change-Id: I2ff13705dfbee7d90e4e6c4003215d617fc0ef48
Reviewed-on: https://gerrit.instructure.com/20441
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Marc LeGendre <marc@instructure.com>
QA-Review: Marc LeGendre <marc@instructure.com>
Reviewed-by: Zach Pendleton <zachp@instructure.com>
2013-05-10 22:50:45 +00:00
Jon Willesen a65f2acb7a add forced_read_state to DiscussionEntryParticipant and APIs
Don't automatically mark a discussion entry as read if the user
manually marks the entry as unread.

fixes CNVS-5705

test plan:
 - As one user, create a discussion with lots of posts.
 - As a different user, go to the discussion, see the entries
   are automatically marked as read. Don't scroll all the way
   to the bottom of the discussion so there are still some
   unread posts.
 - Click the gray circle to manually mark some of the read
   entries as unread.
 - Refresh the page. The manually marked entries should show
   as unread and should not be automatically marked as read.
 - Scroll down. Unread entries that were not manually marked as
   unread should still be automatically marked as read.

Change-Id: I963d1dea9fc961a28a0a5c488399d4e3964c8d10
Reviewed-on: https://gerrit.instructure.com/20414
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Zach Pendleton <zachp@instructure.com>
Product-Review: Marc LeGendre <marc@instructure.com>
QA-Review: Marc LeGendre <marc@instructure.com>
2013-05-10 21:45:23 +00:00
Stanley Stuart 456bd11874 fix non-deterministic spec failures for quiz student analyis csv
Fixes an issue where the submission that was being checked for never
existed (student2 was created in the previous revision of the spec, but
never used to set up a quiz submission). The change also change's the
students' submission's "updated_at" property so the CSV should have
the same row order every time.

test plan: specs pass.

Change-Id: I97584bf3a7980108f8608dfe891befe0dfdc4a6f
Reviewed-on: https://gerrit.instructure.com/20520
Reviewed-by: Brian Palmer <brianp@instructure.com>
Tested-by: Cody Cutrer <cody@instructure.com>
Product-Review: Brian Palmer <brianp@instructure.com>
QA-Review: Brian Palmer <brianp@instructure.com>
2013-05-09 19:39:58 +00:00
Jon Jensen a07b2ee772 async quiz report generation UI, fixes CNVS-4512
add button to create item analysis report, and make student analysis
creation async. make both buttons show a progress indicator, and auto-
download the file when it's ready (or not, if you refresh the page)

test plan:
1. make sure delayed jobs are running
2. create a quiz that allows multiple submissions
3. have some students take the quiz
4. go to the quiz statistics page
5. click "Generate Item Analysis"
6. it should be generated and prompt you to download
7. the data should be useful/correct
8. click "Generate Student Analysis
9. it should be generated and prompt you to download
10. the data should be useful/correct
11. have another student take the quiz
12. you should be able to regenerate both reports
13. have a student retake the quiz
14. you should get the link to view stats for all submissions
15. you should be able to download a different "Student Analysis" report
    for all submissions vs latest submission
16. the "Item Analysis" report should be the same for all submissions and
    latest submissions

Change-Id: Ib6bfa259f386a6660a41cd7e093d3a6eb0119eda
Reviewed-on: https://gerrit.instructure.com/20137
Reviewed-by: Jon Jensen <jon@instructure.com>
QA-Review: Jon Jensen <jon@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Jon Jensen <jon@instructure.com>
2013-05-08 23:11:52 +00:00
Simon Williams 286d0ca9a1 don't mark submissions pending when new quiz submission starts
fixes CNVS-1610

test plan:
- as a teacher create a quiz with multiple attempts, without essay questions
- as one student take and complete the quiz
- as another student, take, complete, start taking again, and then leave
  without completing the quiz a second time
- as a teacher, your dashboard should not show a quiz needing grading
- as a teacher, both quizzes should show as graded in the speedgrader.

- now create a quiz with multiple attempts, with essay questions
- complete the quiz 1 time with 3 students
- as a teacher you should see 3 submissions needing grading on the dashboard
- grade two of them
- you should see one submission needing grading on the dashboard
- now start taking the quiz but don't complete it with one of the graded
  students
- dashboard should still say one needing grading
- now start taking the quiz but don't complete it with one the ungraded student
- dashboard should still say one needing grading

Change-Id: I22927f13e69bcac533bcc936bba0a6ac335fde6d
Reviewed-on: https://gerrit.instructure.com/20467
Reviewed-by: Stanley Stuart <stanley@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Cameron Sutter <csutter@instructure.com>
QA-Review: Amber Taniuchi <amber@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
2013-05-08 22:57:11 +00:00
Stanley Stuart 4b01ac3eb2 add file upload to quiz statistics csv
test plan:
  - as a teacher, make a quiz with a file upload question (as well as
    some other question types)
  - have some students in the class take the quiz
  - download the statistics csv and verify that:
    - students that submitted a file for the file upload question have
      the attachment's name in the column for that question
    - students that didn't have a file upload for their submission for
      the file upload question have a blank column where the filename
      is for students that do have a submission

fixes CNVS-1157

Change-Id: I98e8a2236d344804e3c17cc00ab60c7013520eb6
Reviewed-on: https://gerrit.instructure.com/20280
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Ryan Florence <ryanf@instructure.com>
QA-Review: Myller de Araujo <myller@instructure.com>
Product-Review: Stanley Stuart <stanley@instructure.com>
2013-05-08 21:37:48 +00:00
Jacob Fugal 7a6a816715 invalidate all sessions on explicit logout
when a user explicitly logs out of one pseudonym session, invalidate all
the others

fixes CNVS-1923

test-plan:
  - create a user in two different accounts
  - log them in to both accounts
  - click "log out" in one account
  - should be logged out of both accounts

Change-Id: I79e70017d753c8201429901421e015f5d20e2000
Reviewed-on: https://gerrit.instructure.com/20096
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Brian Palmer <brianp@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: Brian Palmer <brianp@instructure.com>
2013-05-08 19:43:55 +00:00
Eric Berry ac76eaf598 added auto lock discussions on specified date
fixes CNVS-4106

test steps:
- go to create a discussion topic and ensure that you can toggle between
  the 'Graded' and non-graded availability dates. If the Graded is not
  checked, you should see the Available From/Until.
- create a discussion topic with a past from and past until. ensure that
  the discussion is locked for a student
- create a discussion topic with a future from and future until. ensure
  the discussion cannot be seen by the student
- update the above created discussion topic and switch it to be graded
  and set a future due, from, until date. ensure that the student cannot
  see the discussion.
- edit the discussion and ensure that the graded checkbox is checked and
  the group assignment fields are showing
- update the assignment with a past due, from, until and make sure the
  discussion is locked for the student.
- do all above with current dates (from in past, until in future) and
  make sure the student can see and reply to them.
- create an announcement and ensure that the functionality and forms are
  the same as before
- verify that you are able to lock and unlock discussion topics on the
  show view by using the gear drop-down

Change-Id: I99c9d54763fe3a74aa8a4bb37c22f09d4765d41e
Reviewed-on: https://gerrit.instructure.com/20339
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jon Willesen <jonw@instructure.com>
Reviewed-by: Zach Pendleton <zachp@instructure.com>
QA-Review: Marc LeGendre <marc@instructure.com>
Product-Review: Marc LeGendre <marc@instructure.com>
2013-05-08 17:49:11 +00:00
Joe Tanner a5cc1bcf96 limit self-assigned group size, closes #CNVS-5407
test plan:
- go to the groups page of a course or account
  /courses/*/groups or /accounts/*/groups
- edit a group category by clicking on the pencil icon or
  click 'make a new set of groups'
- check the 'Allow self sign-up' checkbox
- a textbox should appear to limit group members
- enter a number (2 or 3) for the group limit and save
- add at least on group
- masquerade as students in the course and join a group until it's full
- once the group is full students should not be able to join the group
- also, when editing a group category you should be able to remove the group limit

Change-Id: I0d035320a171b03a7cd2e4d81ecb0648c5aacad0
Reviewed-on: https://gerrit.instructure.com/20309
Reviewed-by: Jon Jensen <jon@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Cam Theriault <cam@instructure.com>
Product-Review: Joe Tanner <joe@instructure.com>
2013-05-08 16:47:14 +00:00
Brian Palmer 8b00c010a9 skip submission versions that have no assignment
fixes CNVS-5733

test plan: specs. it's difficult to get a submission version into this
state now that we do more validation.

Change-Id: I5c482198ff95ce93e09a1b373e4e7061da96984d
Reviewed-on: https://gerrit.instructure.com/20452
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: Brian Palmer <brianp@instructure.com>
QA-Review: Brian Palmer <brianp@instructure.com>
2013-05-08 14:20:57 +00:00
Zach Pendleton b1751ef05c only send reminder notifications for peer reviews.
fixes CNVS-5532

test plan:
  * create at least two students in a course with immediate
    notification preferences;
  * create a new assignment in their class with
    automatically assigned peer reviews and online
    submission;
  * create a rubric for the assignment;
  * as each of the two students, submit the assignment;
  * wait for the assignment due date to pass, then check
    each students' messages. verify that each has received
    one notification about their peer reviews.

Change-Id: I2ef5be7fedfa775e8ed60aa80545c34e88a53623
Reviewed-on: https://gerrit.instructure.com/20321
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Mark Ericksen <marke@instructure.com>
Product-Review: Zach Pendleton <zachp@instructure.com>
QA-Review: Zach Pendleton <zachp@instructure.com>
2013-05-07 22:23:14 +00:00
Stanley Stuart 552dae8070 implemented ui for quiz file upload question type
test plan:
  - enable the quiz file upload feature for your account.
  - make sure you have s3 credentials for your Canvas installation
  - as a teacher, create a quiz with some file upload questions
  - as a student, take the quiz, making sure the following works:
    - you should get a warning if you leave any questions unanswered
    - you should see your file in the right spot if you refresh the page
  - when you finish the quiz, make sure a link to the file shows up on
    the quiz show page and the display name for that file is the same
    name of the file you uploaded
  - take the quiz again and make sure files you uploaded for hte
    previous submission don't show up when you first take the quiz.

closes CNVS-1153
closes CNVS-5331

Change-Id: Id3f8706e87cef9876946b52fd564caf31f31e4b5
Reviewed-on: https://gerrit.instructure.com/20174
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Myller de Araujo <myller@instructure.com>
Product-Review: Stanley Stuart <stanley@instructure.com>
2013-05-07 17:34:03 +00:00
Simon Williams fb5b10795d make some boolean logic clearer
test plan:
- specs pass

Change-Id: I52dfe80bfc5f526b5664d2facb52e27b1cc096a4
Reviewed-on: https://gerrit.instructure.com/20342
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Cameron Matheson <cameron@instructure.com>
Product-Review: Cameron Matheson <cameron@instructure.com>
QA-Review: Simon Williams <simon@instructure.com>
2013-05-07 15:16:16 +00:00
Brian Palmer 37e7f7f141 upload attachments to s3 outside of the AR#save db transaction
fixes CNVS-5505

This utilizes our after_transaction_commit callback mechanism to delay
uploading the file until the database trasaction is committed, so that
we aren't holding the transaction open for the entire upload to S3. At
best this causes <IDLE> transactions, and at worst it keeps other rows
locked for the duration of the upload.

It also introduces a new callback on AttachmentFu models,
after_save_and_attachment_processing, which is called like a normal
after_save when the attachment is uploaded immediately, and after the
attachment is uploaded (so after the transaction) when the upload is
delayed.

test plan: most attachment upload paths are covered by selenium tests.
for manual testing, we'll want to check each location in the application
where files can be uploaded for regressions. this includes anywhere that
a zip file is uploaded or generated and downloaded.

Change-Id: I033bd19d63a6becc421143c929dfe7c19c7f4e51
Reviewed-on: https://gerrit.instructure.com/20210
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Reviewed-by: Duane Johnson <duane@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: Brian Palmer <brianp@instructure.com>
2013-05-06 19:28:37 +00:00
Cameron Matheson 63bde155b4 include points accumulated in gradebook csv
closes CNVS-2049

Test plan:
  * download the gradebook csv in a course with unweighted assignment
    groups. you should see "Current Points" and "Final Points" columns
  * download the gradebook csv in a course with weighted assignment
  * groups. there should not be any points columns

Change-Id: If795ab3dc0ae8a4fb84f29c9e759b463b7a14d04
Reviewed-on: https://gerrit.instructure.com/20189
Reviewed-by: Simon Williams <simon@instructure.com>
Reviewed-by: Stanley Stuart <stanley@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Amber Taniuchi <amber@instructure.com>
Product-Review: Cameron Matheson <cameron@instructure.com>
2013-05-03 22:28:13 +00:00
Zach Pendleton 8f5f5bbc7d update conversation tags when new courses exist.
fixes CNVS-620

test plan:
  * create a course with at least two enrollees (A and B);
  * as enrollee A, send a message to enrollee B;
  * conclude the course, create a new course, and enroll
    users A and B in it;
  * as enrollee A, send a message to enrollee B and verify
    that the message's tags update to include the new
    course.

Change-Id: I36332c84a9602aee31b2e2ee1e73b12e87462e38
Reviewed-on: https://gerrit.instructure.com/20221
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jon Willesen <jonw@instructure.com>
Product-Review: Marc LeGendre <marc@instructure.com>
QA-Review: Marc LeGendre <marc@instructure.com>
2013-05-03 21:25:50 +00:00
Brian Palmer 31f33164b5 remove 1.8 compatibility shims
- update the Gemfile to be 1.9 only, and raise an exception on wrong
  ruby version
- remove RUBY_VERSION checks, replacing with the applicable code
- remove the FasterCSV compatibility shim, just use CSV now

test plan: trying to bundle install on ruby 1.8 or 2.0 should raise an
exception, specs should pass, canvas should work as normal on 1.9

Change-Id: I49088e9d227c59c6d5d5acb417c2df971129474a
Reviewed-on: https://gerrit.instructure.com/19806
Reviewed-by: Cody Cutrer <cody@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: Brian Palmer <brianp@instructure.com>
2013-05-03 01:43:52 +00:00
Mark Ericksen 51eea02fcb adjust discussion unread and total counts when deleting
fixes CNVS-5480

testing direction:
==================
using both threaded and unthreaded discussions:
* create a discussion using two different users
* create discussion replies (entries) and verify
  the "unread" count correctly changes
* delete an "unread" entry before the other
  user has seen it. verify the unread count is
  correctly updated.
* after deleting entries, verify the "total"
  count is correct on the index and show pages.
* verify that the discussion's list page counts
  match a specific discussion's show page counts

Change-Id: Id29ee1d03a60c6a78565661ee214bf9031fae69c
Reviewed-on: https://gerrit.instructure.com/20201
Product-Review: Marc LeGendre <marc@instructure.com>
QA-Review: Marc LeGendre <marc@instructure.com>
Reviewed-by: Mark Ericksen <marke@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
2013-05-02 21:05:39 +00:00
Eric Berry 48ca088666 Locked graded discussions are now visible to students
fixes CNVS-5309

test steps:
- as a teacher, create a few discussion topics with graded
  checked and due, begin and until dates are in the future, past
  and current.
- as a student, view the discussions list and ensure that the
  present and past topics are visible but the future is not.
- click the past discussion topic and make sure you are able to
  view the discussion but not reply to it.
- click the present discussion and make sure that you can reply
  to it.
- as the student and teacher, ensure that the visible discussion
  topics appear in the stream items (dashboard) and the future
  do not (for the student).

Change-Id: Ibb0a3d05ae830e764c8068a6c9d4ead804e91139
Reviewed-on: https://gerrit.instructure.com/20082
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Marc LeGendre <marc@instructure.com>
QA-Review: Marc LeGendre <marc@instructure.com>
Reviewed-by: Zach Pendleton <zachp@instructure.com>
2013-05-02 17:21:31 +00:00
Jacob Fugal 3b80c364a5 preserve created_at in page views from redis
fixes CNVS-5572

test-plan:
  - have page views enabled and processing through a redis queue
  - generate a new page view from a user with non-UTC time zone
  - process redis queue to persist page view
  - reload page view and check created_at; should equal the time the
    page view was created

Change-Id: I8fa4da8f81d7f18815ef9223decea433e9a71172
Reviewed-on: https://gerrit.instructure.com/20171
Reviewed-by: Brian Palmer <brianp@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: Jacob Fugal <jacob@instructure.com>
2013-04-30 21:50:15 +00:00
James Williams 67660ed8f0 fix non-integer rubric point values in course copy
test plan:
* create a rubric using non-decimal point values
 (e.g. '1.5')
* copy the course
* should retain the same values

fixes #CNVS-1625

Change-Id: I23031bdf10c8ea2932bdd7c770ece14fddc3a12e
Reviewed-on: https://gerrit.instructure.com/20150
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
QA-Review: Adam Phillipps <adam@instructure.com>
2013-04-30 19:46:24 +00:00
James Williams a2b3c60902 copy discussion_type in course copy
test plan:
* create a discussion topic in a course, checking
 "allow threaded replies"
* copy the course
* the new discussion topic should retain the option

fixes #CNVS-1589

Change-Id: I0a37babac340c1f6ee869e4805217553d954e165
Reviewed-on: https://gerrit.instructure.com/20152
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Adam Phillipps <adam@instructure.com>
2013-04-30 16:33:31 +00:00
Brad Humphrey 45f3bb468b lti configuration refactor
this commit is to help make canvas extensions more robust by
allowing tool level defaults and allowing both tool domains and launch
urls. Also added some helper methods for getting the correct properties,
and refactored to use the new helper methods.

Test Plan:
- Add a tool with both a domain and an launch url
- It should not give an error

- Add a tool configured with defaults for for canvas extensions
(such as icon_url, url, selection_height, selection_width, etc)
- Add a canvas launch (resource_selection, editor_button, course_navigation, etc)
with minimal configuration
- The canvas launch should inherit the properties from the extensions default
- Add an launch that has its own properties
- The launch should prefer its properties over the defaults

* should test that all launch types are accepting defaults

closes #CNVS-4498

Change-Id: I0dd4e78efb54db9c0cd1204383934db50f402674
Reviewed-on: https://gerrit.instructure.com/17715
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Adam Phillipps <adam@instructure.com>
2013-04-29 21:05:58 +00:00
James Williams b993954788 enable import/export with file_upload_question types
test plan:
* Enable the file_upload_question type for
 the root account in the console:
 > a = LoadAccount.default_domain_root_account
 > a.settings[:file_upload_quiz_questions] = true
 > a.save!

* Create a course with a question of type
"File Upload Question"
* Copy the course
* Confirm that the course copies successfully
 and that the new question is the same type

closes #CNVS-1158

Change-Id: I99d872ee8557a83647fb2fa1425050c20a4ba518
Reviewed-on: https://gerrit.instructure.com/20013
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Adam Phillipps <adam@instructure.com>
2013-04-29 15:57:44 +00:00
Joe Tanner 5fea28ce02 async json API to generate quiz stats reports
closes #CNVS-4511

refactor of some of the QuizStatistics model so it can be used with multiple report types

test plan:
just ensure the current quiz stats page and csv report still work,
the item analysis UI commit will have a more comprehensive test plan

Change-Id: I2973a2e3aa572bc272c59b4b97015c7f93d756d7
Reviewed-on: https://gerrit.instructure.com/20057
Reviewed-by: Jon Jensen <jon@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Joe Tanner <joe@instructure.com>
QA-Review: Joe Tanner <joe@instructure.com>
2013-04-29 15:05:47 +00:00
Jon Willesen d8efd3e805 improve robustness of incoming message processor
replaced the mailman gem with custom code with more error
handling. this will allow the incoming message processor to
continue processing messages after encountering a message with
an encoding or parsing error. the broken messages will be moved
aside to a separate folder for later inspection.

fixes CNVS-4970

test plan:
 - read up on the new incoming_mail.yml configuration settings.
 - configure incoming_mail.yml with the test imap accounts
   using legacy settings and check for regressions.
 - reconfigure incoming_mail.yml to read from a directory.
 - copy some testing email files into the configured directory.
   test files should be a mix of:
   - emails with encoding errors
   - emails with syntax errors
   - normal emails
 - all of the normal emails should be processed normally
 - all of the error emails should be moved into the error
   subdirectory

Change-Id: I0f946a56b41492f007db2775aa6da3cdfa4fdd3f
Reviewed-on: https://gerrit.instructure.com/19729
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Zach Pendleton <zachp@instructure.com>
Product-Review: Marc LeGendre <marc@instructure.com>
QA-Review: Marc LeGendre <marc@instructure.com>
2013-04-29 14:47:09 +00:00
Joe Tanner 3e86076019 class to generate and save a quiz item analysis csv report
closes #CNVS-4578

no test plan, see specs

Change-Id: I9417e362fcead64b9e87647e615eab7318633262
Reviewed-on: https://gerrit.instructure.com/18696
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
Reviewed-by: Jon Jensen <jon@instructure.com>
Product-Review: Jon Jensen <jon@instructure.com>
QA-Review: Jon Jensen <jon@instructure.com>
2013-04-26 19:10:28 +00:00
Bracken Mosbacker 83455f2252 wiki page draft state support
wiki pages can be unpublished but will still default to
active until the feature is enabled.

Test Plan:
 * make an unpublished course in the console
 * using the wiki api make sure students can't see it in
   the index or show actions

closes CNVS-5270

Change-Id: I48970ce9c6b86a3039432b6d7647810b434bfdfc
Reviewed-on: https://gerrit.instructure.com/20014
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
2013-04-26 16:31:27 +00:00
Simon Williams 1d6b4d6705 fix grade badge count with comments
due to an arel mistranslation the submission comment id was being used for
comparison instead of the submission id

fixes CNVS-5435

test plan:
- as a teacher, comment but do not score an assignment for a user
- as a student, you should have a badge for that submission comment
- go to the grades page
- the badge should be gone

Change-Id: Id4364e65cb917d54f7511355ce2619746d2e15fa
Reviewed-on: https://gerrit.instructure.com/20061
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Amber Taniuchi <amber@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
2013-04-25 17:58:02 +00:00
Jon Jensen d9f5c589da use RailsXss::Erubis for html email templates, fixes CNVS-5414
prevent malicious or accidental html content from getting through (e.g.
via translations or interpolated user content).

slight refactor in message.rb to make it more easily testable

test plan:
1. spot check html emails, make sure they look ok
2. ensure you can't get arbitrary html into an email, e.g.
   1. change your name in canvas to "<b>ZOMG</b>"
   2. send someone a message in canvasations
   3. check the html email that got sent to them. your name should appear
      as "<b>ZOMG</b>", and not "ZOMG" in bold text

Change-Id: Ie638a0d3d28427f25c0fa1ce89c10533802b0c6b
Reviewed-on: https://gerrit.instructure.com/19827
Reviewed-by: Jon Jensen <jon@instructure.com>
Product-Review: Jon Jensen <jon@instructure.com>
QA-Review: Jon Jensen <jon@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
2013-04-23 16:56:53 +00:00
Simon Williams 67d0c8d318 fix no_enrollments_can_create_courses flag
fixes CNVS-5462

test plan:
- enable 'no enrollments can create courses' at the root acount level
- create a new user with no enrollments
- they should have a 'create course' button on the dashboard

Change-Id: Ic1c272c7e949b25365141c04c65b3cff5b47a6ed
Reviewed-on: https://gerrit.instructure.com/19944
Reviewed-by: Cody Cutrer <cody@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Bryan Madsen <bryan@instructure.com>
QA-Review: Bryan Madsen <bryan@instructure.com>
2013-04-23 15:54:39 +00:00
Jon Jensen b420729e61 quiz item analysis generation, closes CNVS-3421
report generator to do quiz item analysis

usage:

quiz = Quiz.find(<id>)
summary = QuizStatistics::ItemAnalysis::Summary.new(quiz)
summary.each do |item|
  puts item.question_text
  puts "respondents: #{item.num_respondents}"
  puts "correct: #{item.num_respondents(:correct)}"
  puts "standard deviation: #{item.standard_deviation}"
  ...
  puts "----------------"
end

test plan:
N/A, see specs

Change-Id: Id36e4ef404af089f526cf9243a14d42eb52064a6
Reviewed-on: https://gerrit.instructure.com/18494
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Joe Tanner <joe@instructure.com>
Product-Review: Jon Jensen <jon@instructure.com>
QA-Review: Jon Jensen <jon@instructure.com>
2013-04-23 15:50:36 +00:00
Cody Cutrer 068004873c don't include "DESC" in the select when ordering by sortable name
fixes CNVS-5432

Change-Id: I461ddc459976726586797d6ec705a0d97d95fc17
Reviewed-on: https://gerrit.instructure.com/19856
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>
2013-04-22 17:49:22 +00:00
James Williams 10bfe71e8a include attribute to exclude permissions based on plugins
specifically links the visibility of the permission
:manage_frozen_assignments to whether or not
the plugin :assignment_freezer is enabled

test plan:
* enable the assignment_freezer plugin
* confirm that ""Manage (edit / delete) frozen assignments"
 is shown in the list of account permissions

* disable the plugin
* confirm that the permission no longer is shown

closes #CNVS-5207

Change-Id: I4cd308531a057356bd335e134348c63b92868775
Reviewed-on: https://gerrit.instructure.com/19788
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
QA-Review: Adam Phillipps <adam@instructure.com>
2013-04-22 16:36:24 +00:00
Jacob Fugal 6465b20ec0 populate submission versions
back-populate submission_versions from existing versions for
submissions, and insert new index rows when new versions for submissions
are created.

refs CNVS-2802

test-plan:
  migration:
    - have at least two submission with at least one submission with
      multiple versions in your database before introduction of this
      code
    - run the migration
    - for every existing submission version record, there should now be
      a submission_versions record
    - the submission_versions records should have the correct metadata
      for the submission version
  trigger:
    - create a new submission
    - should create a new submission_versions record
    - modify the submission in a way that triggers a new version
    - should create a new submission_versions record

Change-Id: I9c4c39fa60926b037142abf3f01572c9deaa0643
Reviewed-on: https://gerrit.instructure.com/19605
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Duane Johnson <duane@instructure.com>
Product-Review: Duane Johnson <duane@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
2013-04-20 13:20:47 +00:00
Jacob Fugal 45aec302c4 EventStream abstraction
fixes CNVS-4159

Change-Id: I8a1ce45bd8d50bd767dfaaa6ca51dff6a0bdffd5
Reviewed-on: https://gerrit.instructure.com/19103
QA-Review: Clare Strong <clare@instructure.com>
Reviewed-by: Brian Palmer <brianp@instructure.com>
Tested-by: Brian Palmer <brianp@instructure.com>
Product-Review: Jacob Fugal <jacob@instructure.com>
2013-04-19 19:05:14 +00:00
James Williams bb6527f248 fixes for api translation of attachment links
test plan:
* create an object with html user content (such as an
assignment description)
* include a file download link (e.g.
 "/courses/:id/files/:file_id/download")
* retrieve the object through the API
* confirm that the translated link (that includes
a verifier param), still has "/courses/:id"
rather than just "/files/:file_id/download"

* include a file preview link (e.g.
 "/courses/:id/files/:file_id/preview")
* retrieve the object through the API
* confirm that the translated link has
"/courses/:id" and still has "/preview"
 as well as a verifier param
* confirm that following the link in the browser
results in downloading the file

closes #CNVS-5213 #CNVS-5214 #CNVS-5215

Change-Id: Ib2bb6b1857055dbfe2d1b9e0873600beaa70bf75
Reviewed-on: https://gerrit.instructure.com/19512
Reviewed-by: Brian Palmer <brianp@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Adam Phillipps <adam@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
2013-04-19 18:20:01 +00:00
Cameron Matheson 14fa60402d groundwork for background generation of quiz stats
This actually did do the stats generation in the background, but that
has been disabled temporarily since we don't have a front-end UI yet.

Test plan:
  make sure you can still download quiz stats csv

closes CNVS-4887

Change-Id: Ia84af0c8392396a054ceba2f6edbcaf7c8c40c90
Reviewed-on: https://gerrit.instructure.com/19397
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Myller de Araujo <myller@instructure.com>
Product-Review: Cameron Matheson <cameron@instructure.com>
2013-04-18 21:54:10 +00:00
Cameron Matheson 343922a99d track quiz_statistics.csv progress
refs CNVS-4887

Test plan:
  This isn't exposed anywhere in the UI yet, but if you really wanted to
  test this, you could download quiz stats csv for a large course and
  watch the progress attached to the quiz_statistics model increase
  while the csv was being generated

Change-Id: I0f1d703df38c2525a412414ce767505a6caf157d
Reviewed-on: https://gerrit.instructure.com/19323
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Stanley Stuart <stanley@instructure.com>
QA-Review: Amber Taniuchi <amber@instructure.com>
Product-Review: Cameron Matheson <cameron@instructure.com>
2013-04-18 21:54:00 +00:00
Ryan Florence b18af81c24 add users from courses/:id/users page
test plan:
1. go to /courses/:id/users
2. click 'add users'
3. should work much like the add users UI in
   the course settings -> users tab, but look
   a little different

Change-Id: Icec24a41385e595d8b79dc5a7232545f0aff926e
Reviewed-on: https://gerrit.instructure.com/18888
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Ryan Florence <ryanf@instructure.com>
Product-Review: Ryan Florence <ryanf@instructure.com>
QA-Review: Ryan Florence <ryanf@instructure.com>
2013-04-18 19:43:54 +00:00
Mark Severson 26a4204b87 fix failing specs (caused by libxml2 upgrade)
test plan:
 * specs pass

Change-Id: I2041fa39cbabfd11a51de5aae28d611cacb280e5
refs: #CNVS-5269
Reviewed-on: https://gerrit.instructure.com/19687
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
QA-Review: Bryan Madsen <bryan@instructure.com>
2013-04-18 16:29:44 +00:00
Cameron Matheson 1daa706def put statistics.csv in an attachment
refs CNVS-4887

Test plan:
  Make sure you can still download quiz statistics csv

Change-Id: I1dea60ce3465e4b536620f1dc6d515f4badf18e0
Reviewed-on: https://gerrit.instructure.com/19061
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Myller de Araujo <myller@instructure.com>
Product-Review: Cameron Matheson <cameron@instructure.com>
2013-04-17 17:22:56 +00:00
Mark Ericksen 828b42ce30 ui enabling admins to search notifications
adds account setting and new user permission

fixes CNVS-4726

Testing Notes:
============
* To enable...
  * Account Settings, check Feature
    "Admins can view notifications"
  * Account permission under "Account Roles"
    becomes available under "Admin Tools"
    group. Check "View notifications"
  * appears under account "Admin Tools"
    sidebar area on "View Notifications"
    tab.
    (EX: /accounts/[account_id]/admin_tools)
* Verify "View Notifications" tab does not
  appear if either account setting or user
  permission is disabled. (For AccountAdmins)
* Verify a SiteAdmin is able to access the
  feature.
* Verify that notifications are returned
  and displayed for a selected user
  and date range.
* Verify it displays "No messages found"
  when user doesn't exist or the user
  exists but the date range doesn't
  return data.
* Verify that the user_id is required when
  searching
* Verify that the "To Date" cannot be before
  the "From Date".
* Verify an invalid date like the word "couch"
  gets ignored and the actually used date/time
  is displayed in the overview text description.
* Verify searching by dates when either or both
  are left blank and when both are used.
* Verify that the messages automatically
  fetch more when you scroll down.
* Verify that before the results, it displays
  the user's name and the dates used for the
  results.

Change-Id: I9d2689b4760af57bbc2d15fd7d50610dcf593a7e
Reviewed-on: https://gerrit.instructure.com/18629
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Marc LeGendre <marc@instructure.com>
QA-Review: Marc LeGendre <marc@instructure.com>
Reviewed-by: Mark Ericksen <marke@instructure.com>
2013-04-16 22:11:16 +00:00
Bracken Mosbacker 7c4a35b80d allow content migrations to be hidden in the ui
There are some migration systems that aren't for course
content but they still show up in the course content
migration drop-down. So with this you can flag a system
to not show up for users

Test Plan:
 * On the "Import Content from Another System" page there
   shouldn't be a blank option.

closes CNVS-5327

Change-Id: Icb6e7b6e84b80613bc231488cc9f6b16b6ebfe24
Reviewed-on: https://gerrit.instructure.com/19608
QA-Review: Adam Phillipps <adam@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
2013-04-16 21:48:31 +00:00
Zach Pendleton 2befece7ff allow apostrophes in pseudonym unique_id field.
fixes CNVS-1808

test plan:
  * create a new user with a unique_id that has an
    apostrophe in it;
  * verify that it saves correctly and that the user
    can log in with it.

Change-Id: Idf46086b7ec6513eb4c2293686e4e92491e47fbc
Reviewed-on: https://gerrit.instructure.com/19564
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jon Willesen <jonw@instructure.com>
QA-Review: Marc LeGendre <marc@instructure.com>
Product-Review: Marc LeGendre <marc@instructure.com>
2013-04-15 16:49:16 +00:00
Mark Severson 19757eebba allow public access to the syllabus page on a non-public course
also cleaned up the calendar events api specs to make them a
little less error prone

test plan:
 * syllabus page:
   note: please verify against published courses
   * standard access (calendar events, assignments, appointment groups)
   * public course (calendar events, assignments)
   * public syllabus (calendar events, assignments)
 * courses api:
   * create w/public_syllabus
   * update w/public_syllabus
   * get w/include[]=public_syllabus
 * calendar events api (for public courses/public syllabus courses):
   * calendar events and assignments

fixes #CNVS-4811

Change-Id: I17e9f260117c031af008592a470b6e17df93c1d5
Reviewed-on: https://gerrit.instructure.com/19376
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
QA-Review: Adam Phillipps <adam@instructure.com>
Reviewed-by: Zach Pendleton <zachp@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
2013-04-15 15:42:33 +00:00