Commit Graph

2979 Commits

Author SHA1 Message Date
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
Mark Severson 6caea0526c add user observee api endpoint
test plan:
 - as an admin (with rights) & as the user
 * exercise the observees api
   * /users/:user_id/observees
     * GET (list observees)
     * POST (add observee w/observee credentials)
   * /users/:user_id/observees/:observee_id
     * GET (show observee)
     * PUT (add observee by user id)
     * DELETE (remove observee by user id)
 - the user should automatically gain observer enrollments for courses
   the observees are enrolled in

 - note: only admins with rights can add/remove observees by id

closes CNVS-13400

Change-Id: I5d81bd68212f67281a1e2f3fda54e33d12cbccf1
Reviewed-on: https://gerrit.instructure.com/35868
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-06-17 20:31:18 +00:00
Cameron Matheson 31d2de08e5 fix another assignment editing bug
fixes CNVS-8100, refs CNVS-1672

This applies to complete/incomplete, and probably letter grade and gpa
scale

Test plan:
  * make a complete/incomplete assignment with 0 points possible
    * give it a due date, but no availability date
  * mark some students complete, some students incomplete
  * add an availability date
  * the complete/incomplete for each submission status should be retained

Change-Id: I84400145a57926aa2677aef515562b29a1f32463
Reviewed-on: https://gerrit.instructure.com/36383
Reviewed-by: Simon Williams <simon@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Amber Taniuchi <amber@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
2014-06-17 20:23:42 +00:00
Cameron Matheson e4648d39a7 get instead of post to create crocodoc_sessions
This redirects to the session url (like canvadocs) instead of returning
a session url.

refs CNVS-13322
fixes CNVS-13445

Test plan:
  * enable Crocodoc
  * make multiple submissions to the assignment (with the same student)
  * make sure you preview all submissions in the speedgrader (with
    Crocodoc)
  * disable Canvadocs
  * make sure the student can preview the submission attachments in his
    files page (in Crocodoc)

  * also make sure that canvadocs still works (just one preview is fine)

Change-Id: Icbea4b8986039d1405300a09f54a878ba1cc288f
Reviewed-on: https://gerrit.instructure.com/35931
Reviewed-by: Simon Williams <simon@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Amber Taniuchi <amber@instructure.com>
Product-Review: Cameron Matheson <cameron@instructure.com>
2014-06-17 20:23:21 +00:00
Braden Anderson f2d4d287f0 conversations: update unread count only for recipients
fixes CNVS-13639

test plan:
  * as user A, send a message to B and C
  * as user B, mark the conversation as read
  * as user C, reply privately to A
  * as user B, verify that your unread message count does not change

Change-Id: I9fbf9b7bfea507d51a95231568ec33211ddd14da
Reviewed-on: https://gerrit.instructure.com/36519
Reviewed-by: Drew Bowman <dbowman@instructure.com>
QA-Review: Trevor deHaan <tdehaan@instructure.com>
Product-Review: Braden Anderson <braden@instructure.com>
Tested-by: Bryan Madsen <bryan@instructure.com>
2014-06-17 16:50:00 +00:00
Jake Sorce 21d8f43f85 new publish and un-publish course buttons
closes PS-1602

test plan:
  1. enable draft state on a course
  2. go to the course
  3. you should see the new buttons
     in the top right
  4. play around with them
  5. you should not be able to see course
     status if there are graded submissions
     in the course
  6. go to course settings
  7. you should see the course status now
     in the top right (published or unpublished)
  8. if there are graded submissions you should
     be able to hover the course status and get
     a tooltip saying you cannot unpublish
Change-Id: Idb7c27503f84eb489e1970b2061eb903e452de09
Reviewed-on: https://gerrit.instructure.com/36041
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Jake Sorce <jake@instructure.com>
2014-06-16 21:56:14 +00:00
Eric Adams e6db8e37e1 add integration_data, integration_id for assignment through api
Test Plan: see SIS-281

fixes SIS-281

Change-Id: I25b7d18a7cd752826ff38d0f795cba0059b56df1
Reviewed-on: https://gerrit.instructure.com/35071
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Eric Adams <eadams@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
2014-06-16 17:31:43 +00:00
Ahmad Amireh 5dfc8a1d93 Quiz Stats - Set sanity limits
This patch makes the API reject generating stats for large quizzes. A
quiz is large based on two configurable settings:

  - quiz_statistics_max_questions (defaults to 100)
  - quiz_statistics_max_submissions (defaults to 1000)

They can be tuned using the console. Something similar to this:

    Setting.set('quiz_statistics_max_questions', 500)

The defaults can be changed by modifying constants in
Quizzes::QuizStatistics.

Closes CNVS-13330

TEST PLAN
---- ----

  - create a quiz with like 10 questions
  - change the setting for the max questions to something like 5
    - verify that you can't get the stats from the API
    - visit ember quiz stats:
      - verify you get a different page, similar to the blank state one
        but with a different message
  - tune it back up to something like 15
    - verify you can now get the stats from the API and can see them in
      ember

Change-Id: I1b0626c1b460974976eec5b184e1b5989f50d210
Reviewed-on: https://gerrit.instructure.com/35561
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Derek DeVries <ddevries@instructure.com>
QA-Review: Caleb Guanzon <cguanzon@instructure.com>
Product-Review: Derek DeVries <ddevries@instructure.com>
2014-06-13 22:57:44 +00:00
Braden Anderson 4e83960eb4 conversations: fix last_authored_message_at
fixes CNVS-13598

test plan:
  * open your browser's network log
  * reply to a conversation
  * verify that in the response, last_authored_message_at
      matches the current time

Change-Id: I22db516bbe61fd341329fb4f6d3dd8c556edf0b2
Reviewed-on: https://gerrit.instructure.com/36326
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Drew Bowman <dbowman@instructure.com>
QA-Review: Trevor deHaan <tdehaan@instructure.com>
Product-Review: Braden Anderson <braden@instructure.com>
2014-06-13 21:26:58 +00:00
Anthus Williams b16e82feba remove some associations from the set of exportables
mostly has_many_through associations, where we are
already covered because we export the through
association as well

Change-Id: I95deb0f3c55059a480f1d77aa70ad32701267f91
Reviewed-on: https://gerrit.instructure.com/36335
Reviewed-by: Braden Anderson <braden@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Anthus Williams <awilliams@instructure.com>
QA-Review: Anthus Williams <awilliams@instructure.com>
2014-06-13 21:23:54 +00:00
Cameron Sutter c36566b5de rip out gb1 and srgb feature flag
fixes CNVS-13293

test plan:
 - regression on gb2 and srgb
   to make sure they both still work properly

Change-Id: I4ec554589b6a77a113d2faf46e7b530faa2d535f
Reviewed-on: https://gerrit.instructure.com/35501
Product-Review: Dana Danger <dana@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Amber Taniuchi <amber@instructure.com>
2014-06-13 20:16:16 +00:00
Derek DeVries ffe38fc635 make quiz stats use kept score instead of always using latest score
fixes CNVS-13561

test plan:
  - enable draft state and quiz stats
  - as a teacher
    - create a quiz that allows multiple attempts, and keep highest score
    - publish the quiz

  - as a student
    - take the quiz a first time, and get a perfect score
    - take the quiz a second time and get a worse score

  - as a teacher
    - view the quiz stats
    - it should show results from the kept score, not the latest

  - try this with keeping the highest score as well. Stats should use the
    correct kept score.

Change-Id: I8fb9998e800bfd91f9297a3bc30178f5f31aa59c
Reviewed-on: https://gerrit.instructure.com/36300
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jason Madsen <jmadsen@instructure.com>
QA-Review: Caleb Guanzon <cguanzon@instructure.com>
Product-Review: Derek DeVries <ddevries@instructure.com>
2014-06-13 17:46:53 +00:00
Cameron Matheson 27c731a6b9 fix complete/incomplete assignment editing bug
fixes CNVS-1501

Test plan:
  * make a complete/incomplete assignment
  * mark some students complete, some students incomplete
  * change the number of points possible on the assignment
  * the complete/incomplete status of each submission should be retained

Change-Id: Ice61d884936c908de977e1f2abdf99cbb26210ae
Reviewed-on: https://gerrit.instructure.com/36377
Reviewed-by: Liz Abinante <labinante@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Anna Koalenz <akoalenz@instructure.com>
Product-Review: Cameron Matheson <cameron@instructure.com>
2014-06-13 16:23:29 +00:00
Cody Cutrer f6f6f2f539 remove unused session variables
Change-Id: Iaf2322f880a59bfde1fa0e3f14fdaa15b8e5bdc7
2014-06-12 16:11:18 -06:00
Cody Cutrer bb0b5687fa clean up permission blocks a little
don't take a session param if it's unused

Change-Id: Ic24a17311bd6353892310e309b70397567e36ef8
Reviewed-on: https://gerrit.instructure.com/36251
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jacob Fugal <jacob@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
2014-06-12 22:10:41 +00:00
Cody Cutrer 7e5bc3ea24 remove unused switch_role functionality
this was replaced a long time ago by test student

Change-Id: I20981ada3e72df82da89d5bae1b81a3b31cfac66
Reviewed-on: https://gerrit.instructure.com/36309
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jacob Fugal <jacob@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
2014-06-12 22:03:07 +00:00
Tyler Pickett 1a7227ac7a add validation to prevent blank assignment titles
fixes CNVS-12938

test plan:
  - via api and via the old assignment index
  - try to create an assignment with name of " "
    (there is a space between those quotes)
  - this assignment doesn't save
  - assignments w/o blank names do save

Change-Id: I531f8be005b1c4b8f542cb281f0672669e181fb2
Reviewed-on: https://gerrit.instructure.com/35237
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Amber Taniuchi <amber@instructure.com>
Reviewed-by: Liz Abinante <labinante@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
2014-06-12 00:38:10 +00:00
Drew Bowman c14943380b prevent notifications when a course is soft concluded
fixes CNVS-4348

test plan:

- have a course that has an end date in the past

- create an announcment, it should not send a notification
- create an assignment, it should not send a notification
- create a discussion topic, it should not send a notification

Change-Id: Ic371d651ae00abe80c17e569f74e94e49c017708
Reviewed-on: https://gerrit.instructure.com/36229
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Braden Anderson <braden@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: Drew Bowman <dbowman@instructure.com>
2014-06-11 19:36:34 +00:00
Ethan Vizitei a0c96d6a41 Add reporting name for learning outcomes
fixes CNVS-13242

This adds a special field to learning outcomes
to use for friendly reporting in case the outcome's
actual name is quite complex or cryptic (like common core
standard outcomes).

TEST PLAN:
- login as an instructor
- create or edit an outcome and validate that you can add a "friendly"
  name and that it persists
- use that outcome for an assignment and let a student complete it
- navigate to the student mastery report for that student
- verify that by hovering over that outcome name on the student mastery
report you can see both the real title and the friendly name

Change-Id: I89d1a5de590666ddf6cbc82617e4475d1f7a5226
Reviewed-on: https://gerrit.instructure.com/35919
Reviewed-by: Drew Bowman <dbowman@instructure.com>
QA-Review: Steven Shepherd <sshepherd@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Drew Bowman <dbowman@instructure.com>
2014-06-11 17:25:33 +00:00
Braden Anderson ee1db6929c conversations: only mark conversations unread for participants
fixes CNVS-11312

test plan:
  * start a conversation from user A to B and C
  * as user B, mark the conversation as read
  * as user A, send a reply only to user C
  * as user B, verify that the conversation is still read

Change-Id: I7051eb39acd711ad10344e9e17700a0987a72b22
Reviewed-on: https://gerrit.instructure.com/36172
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Drew Bowman <dbowman@instructure.com>
QA-Review: Trevor deHaan <tdehaan@instructure.com>
Product-Review: Drew Bowman <dbowman@instructure.com>
2014-06-11 17:25:01 +00:00
Josh Simpson 53920a96ce add explicit poll choice ordering and poll_session deletion
fixes CNVS-13521,CNVS-13489
This commit adds 3 things.  One is a fix for deleting a poll_session when
there are poll_submissions created already for the poll_session. The
second is the addition of a new attribute on poll_choices called
'position'.
The 'position' attribute specifies the order a poll choice should be
returned in. The third is the visibility of poll sessions to students:
as long as a student is enrolled in the course (and course section, if
it exists on the poll session) associated with the poll session, they
can access it, whether or not it's open or closed.

Test plans
1. Deleting a poll session
As a teacher
- Create a poll and related poll session
- Open the poll session for submissions
As a student
- Create a submission for the newly created poll session
As a teacher
- You should be able to delete the poll session

2. Position ordering attribute
As a teacher
- Create a poll
- Create poll choices, passing along the 'position' attribute to specify
  ordering (try to mix these up, e.g. create a poll choice with a
  position
  of 2, then a poll choice with an position of 4, then a poll choice with
  an position of 3, then a poll choice with an position of 1)
- Retrieve the poll choices for the poll with the poll choices index
  endpoint
- The poll should be returned in the order they were specified using the
  'position' attribute

3. Poll session visibility to students
As a teacher
- Create a poll
- Create an associated poll session with a valid course
As a student enrolled in the given course
- You should be able to view the poll session whether or not it's open
  or closed.
As a student not enrolled in the given course
- You should not be able to view the poll session, whether or not it's
  open or closed.

Change-Id: Ifabd64540d843c83f3a22fb6668c4fcac8f728b0
Reviewed-on: https://gerrit.instructure.com/36087
Reviewed-by: Derek DeVries <ddevries@instructure.com>
QA-Review: Trevor deHaan <tdehaan@instructure.com>
Product-Review: Bryan Madsen <bryan@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Josh Simpson <jsimpson@instructure.com>
2014-06-11 00:48:16 +00:00
Ahmad Amireh 8b9e82ade8 Quiz Stats - don't count teacher previews
Exclude preview quiz submission from student analysis (item analysis was
already accounting for this) based on the "was_preview" field.

Closes CNVS-8203

TEST PLAN
---- ----

  - create a quiz
  - take it as a preview by the teacher
    - request the stats from the API (or visit ember quiz stats)
    - verify that your attempt does not show up
  - take it by a student
    - verify everything is ok
  - now preview it again as a teacher
    - verify your attempt still doesn't add to the stats

Change-Id: I62bf1dd6c0bedb26ee55d029ac0f015b2ad48e91
Reviewed-on: https://gerrit.instructure.com/35954
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Derek DeVries <ddevries@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: Derek DeVries <ddevries@instructure.com>
2014-06-11 00:24:28 +00:00
Josh Simpson 608b0896e2 improve polling performance
fixes CNVS-13440
this commit addresses bad polling performance, particularly in
poll_sessions. It also removes a foreign key constraint on the
poll_sessions poll_id, that would introduce sharding issues.

Test plan
- Test the following attributes on particular models to insure that
  they're still correct:
  - Poll#total_results should accurately return the aggregate results for all of
    the poll_sessions that belong to the poll
  - PollSession#results should accurately return the results of all poll
    submissions submitted for the particular poll session

Change-Id: Ic0d4aaeb77c735fa4ba6c5f73dfbf84d8e6ac615
Reviewed-on: https://gerrit.instructure.com/35860
Reviewed-by: Cody Cutrer <cody@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Trevor deHaan <tdehaan@instructure.com>
Product-Review: Josh Simpson <jsimpson@instructure.com>
2014-06-10 19:53:31 +00:00
Braden Anderson f4858b3b41 conversations: never send replies by email to multiple recipients
fixes CNVS-13377

test plan:
  * set up reply-by-email
  * open a group conversation from old conversations
  * send a message as one of the participants to all others
  * reply by email to the message
  * verify that the reply is sent only to the author

Change-Id: I0aac2e2137153cbc18b08ef234235f677564323f
Reviewed-on: https://gerrit.instructure.com/35729
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Drew Bowman <dbowman@instructure.com>
Product-Review: Marc LeGendre <marc@instructure.com>
QA-Review: Marc LeGendre <marc@instructure.com>
2014-06-10 15:46:44 +00:00
Joel Hough 4ec0d04bb9 live assessments api
fixes CNVS-12916

test plan
- as a teacher in a course, use the api to create a live
 assessment aligned with an outcome (see the api docs for how the
 endpoint works)
- create results for some students
- ensure that the results and the assessment can be read back using
 the index endpoints
- ensure that the assessment shows up in the web ui at
 /course/:course_id/outcomes/users/:student_id (click 'Show All
 Artifacts')

- try to create an assessment using the same key as an existing
 assessment
- ensure that the existing assessment is returned (check the id)

- fetch results specifying a user id to filter by
- ensure that only results for that user are returned

Change-Id: I2d09691f772658aea3ccdd36cff2df5835b1f2cd
Reviewed-on: https://gerrit.instructure.com/35092
Reviewed-by: Ethan Vizitei <evizitei@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Steven Shepherd <sshepherd@instructure.com>
Product-Review: Derrick Hathaway <derrick@instructure.com>
2014-06-10 14:53:40 +00:00
Jon Willesen 3c65211658 add course_home_sub_navigation extension to external tools
this puts lti app links on the right side bar of the course
home page.

fixes RAN-53, RAN-55

test plan:
 - modify an lti app's xml to include the
   course_home_sub_navigation extension
 - configure an lti app via modified xml
 - navigate to a course home page, where you should see a button
   for the configured tool on the right sidebar.
 - clicking on the button should launch the tool.
 - configure another tool the same way, but include a
   "visibility" property in new extension with a value of
   "admins"
 - view the course home page as a teacher. you should be able
   to tee the newly configured tool, in addition to the
   previously configured tool.
 - view the course home page as a student. you should only see
   the first tool you configured, and not see the tool with the
   limited visibility property.

Change-Id: Ibe50c649f6d5f6806a87f0c8e8402f1209b9ed40
Reviewed-on: https://gerrit.instructure.com/35161
Reviewed-by: Brad Humphrey <brad@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Nathan Rogowski <nathan@instructure.com>
Product-Review: Jon Willesen <jonw@instructure.com>
2014-06-09 23:30:43 +00:00
Rob Orton d644a287d8 allow report titles to be translatable
refs CNVS-3134

test plan
 - go to /accounts/self/settings#tab-reports
 - titles should be translatable

Change-Id: I32d47572929a729e1d5f9dc0a2f20a229005fcca
Reviewed-on: https://gerrit.instructure.com/35827
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
2014-06-09 20:04:43 +00:00
Jeremy Stanley 9f5997a77c don't break unicode sequenecs when truncating filenames
also, don't round-trip the display_name through the truncated
CGI-escaped filename, since UTF-8 chars become nine-character
sequences, limiting entirely non-Latin filenames to 28 chars
(255 / 9).

fixes CNVS-13426

test plan:
 - all files attached to the ticket should
   (1) upload to the files page without error
   (2) with the filename preserved and untruncated

Change-Id: I41322595e858892313276544607fd3ff2a0310ec
Reviewed-on: https://gerrit.instructure.com/36046
Reviewed-by: Mark Severson <markse@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
2014-06-09 14:57:51 +00:00
Josh Simpson f20f1631ee add Poll#associated_shards
This commit adds the Poll#associated_shards method so that
with_each_shard acts sane.

Test plan
- The poll_choices index endpoint should work correctly

Change-Id: Iabb0f3db25aec7e60ec1013424b534fa2c08102a
Reviewed-on: https://gerrit.instructure.com/36068
Reviewed-by: Derek DeVries <ddevries@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Matt Fairbourn <mfairbourn@instructure.com>
Product-Review: Matt Fairbourn <mfairbourn@instructure.com>
2014-06-08 05:52:31 +00:00
Josh Simpson 38917d0c32 expose poll_choice#is_correct to students when available
fixes CNVS-13474
This commit exposes the is_correct attribute on poll_choices when a
student has submitted their answer to the latest poll_session, and that
poll_session has been closed.

Test plan
- As a teacher, create a poll, relevant poll choices, and a poll session
- Publish the poll session
- As a student, at this point is_correct should not be viewable on poll
  choices
- As a student, submit a poll submission
- As a student, at this point is_correct should not be viewable on poll
  choices
- As a teacher, close the poll session
- As a student, at this point is_correct should be viewable on poll
  choices

Change-Id: I20a8bb534affe5e1a23c1dddbb727043535dd23d
Reviewed-on: https://gerrit.instructure.com/36031
Reviewed-by: Jason Madsen <jmadsen@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Trevor deHaan <tdehaan@instructure.com>
Product-Review: Josh Simpson <jsimpson@instructure.com>
2014-06-06 22:41:04 +00:00
Jeremy Stanley aeabb72960 don't create observer enrollments in foreign root accounts
test plan:
 1. have a student enrolled in courses at multiple institutions
    (with no trust relationship between them)
 2. enable parent self-registration at one institution
 3. sign up a parent at that institution
 4. the newly enrolled parent should only receive course invites
    for that institution, and should not see the other
    institution's courses

fixes CNVS-13421

Change-Id: I20baa6fab1989aeb0a1f4eab02b0ca0660333bf6
Reviewed-on: https://gerrit.instructure.com/35937
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: James Williams  <jamesw@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: Hilary Scharton <hilary@instructure.com>
2014-06-06 18:25:58 +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
Braden Anderson 0fb77b4079 profile: fix valid page views context
fixes CNVS-13451

test plan:
  * enable page view storage in cassandra
  * open Canvas
  * click "Settings", in the top right
  * verify that the page renders successfully

Change-Id: Ia4193f59e41f6993b61a05bbb853a8e601285d8f
Reviewed-on: https://gerrit.instructure.com/35950
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Anthus Williams <awilliams@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Braden Anderson <banderson@instructure.com>
2014-06-05 15:45:53 +00:00
Ahmad Amireh 4964865302 Quiz Stats - Whitelist exposed question data
Changes:

  - drops unused attributes from the api output, the only things we
    expose now are question id, type, text, and position (for sorting)
  - drops logic in ember that is no longer necessary
  - stringifies IDs in the serializer output

Closes CNVS-13388

TEST PLAN
---- ----

  - BEFORE YOU CHECK THIS OUT:
    - create a quiz with all question types
    - hit the stats API and save the JSON output in some text file
  - now check this patch out:
    - use the same quiz, hit the stats api
    - verify that each question document in "question_statistics" has
      the following fields beside the metrics:
      "id", "question_type", "question_name", and "position"
    - verify that MChoice/TF questions still contain the "item analysis"
      report data (like point_biserials, etc.)
    - check out the ember quiz stats and make sure everything is OK

Note: i found a small tool that can help you see the differences in the
API output if you push the old JSON and the new one into it: try it out
maybe it will make things easier: http://tlrobinson.net/

Note 2: the docs are really out-of-date now and need to be adjusted.
There is CNVS-13387 for that.

Change-Id: I2d2e8c4dcb0e406378b50cd63f5aba14efe8c2ef
Reviewed-on: https://gerrit.instructure.com/35739
Reviewed-by: Jason Madsen <jmadsen@instructure.com>
QA-Review: Caleb Guanzon <cguanzon@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Ahmad Amireh <ahmad@instructure.com>
2014-06-05 09:12:33 +00:00
Josh Simpson 824cbe580d fix polling api 500 errors
fixes CNVS-13434
This commit addresses several 500 errors the polling api was emitting in
various circumstances.

Test plan
- Create a poll session with an invalid course section id
  - The API should return a 404 and JSON response of 'resource not found'

- Create a poll session with a blank has_public_results attribute
  - The poll session should be created with a 'false' has_public_results
    attribute

- Update a poll session with a new course_id and valid course_section id
  - The poll session should be updated successfully

- Create a poll submission with no poll_choice_id supplied.
  - The API should return a 404 and JSON response of 'resource not found'

- Create a poll submission who has made a submission for a different
  session on the same poll
  - The poll submission should be created successfully

Change-Id: I435067488914b2d1a3e48e2df5eda835228759c2
Reviewed-on: https://gerrit.instructure.com/35936
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Caleb Guanzon <cguanzon@instructure.com>
Reviewed-by: Jason Madsen <jmadsen@instructure.com>
Product-Review: Josh Simpson <jsimpson@instructure.com>
2014-06-05 01:21:00 +00:00
James Williams 03c1106a80 fix course copy wiki front page assignment
test plan:
* create a course with a front page
* create a new empty course
* copy from the first course to the second
* should set the front page

* also should not override an already existing
 front page

fixes #CNVS-13398

Change-Id: Iaeb73804d99f362129e3418106d3d9afd5cb4922
Reviewed-on: https://gerrit.instructure.com/35817
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Mark Severson <markse@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
2014-06-04 17:30:33 +00:00
Derek DeVries e93073b793 add feature flags for quiz statistics and moderate pages
fixes CNVS-13228

the old way of enabling fabulous quizzes is no more. Now we're using proper
course based feature flags, and we have two different feature flags for
the new statistics page and moderate pages. You can enable these flags from
your account settings page.

In the code we now check these using:
  @context.feature_enabled?(:quiz_stats)
  @context.feature_enabled?(:quiz_moderate)

In ember we have a new environment attribute to check if moderate is enabled:
  env.get("moderateEnabled")

This also moves "take quiz" to the top item in the list, and changes its icon
to be a play icon to not have so many circles as icons in the menu

test plan:
  - feature flag changes
    - as a site admin
      - disable both quiz stats and quiz moderate
      - visit the quiz index/show/moderate/statistics pages
      - they should all be the non-ember versions of the pages

     - enable the quiz stats feature
       - as a teacher
         - visit the quiz index/show/statistics pages
         - this should be the ember version of these pages
         - visit a quiz page
         - this should enable the ember version of these pages
         - there should be a link to moderate the quiz in the dropdown menu
         - try to visit the moderate page (quizzes/123/moderate)
         - this page should render correctly as the old moderate page
         - the moderate tab should not be there

    - enable the quiz moderate feature
      - as a teacher
        - visit the quiz page
        - the moderate link in the drop down menu should be gone
        - this should enable the moderate tab in ember
        - visit the quiz moderate page, this should be the ember version
        - if you try to visit quizzes/123/moderate directly it should
          redirect you to the moderate page

  - api changes
    - as a teacher
      - request the quizzes api endpoint for a single quiz
      - you should see a new "moderate_url" property in the payload

    - as a student
      - request the quizzes api endpoint for a single quiz
      - you should NOT see the "moderate_url" property in the payload

  - other changes
    - with stats enables, the take quiz should be at the top of the dropdown
    - the take quiz icon has been changed

Change-Id: I04639890b425b1c5abf3305892e4b5b9d804b525
Reviewed-on: https://gerrit.instructure.com/35810
Reviewed-by: Jason Madsen <jmadsen@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Caleb Guanzon <cguanzon@instructure.com>
Product-Review: Derek DeVries <ddevries@instructure.com>
2014-06-04 00:32:34 +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
Landon Wilkins 8f9d33a9ae ignore unpublished module items for course progress
fixes CAT-79

test plan:
1. Enable Draftstate on a course that has gallery set up
2. Set up a module with multiple module items
3. unpublish some of the module items ( individually)
* verify that the "requirement_count" adjusts to the
* unpublishing of items for the following endpoint:

/courses/:course_id?include[]=course_progress

Change-Id: I092b8c7a76a1abf4b05bd0a0ed654bee98de0217
Reviewed-on: https://gerrit.instructure.com/35654
Reviewed-by: Jeff Belser <jbelser@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Marc LeGendre <marc@instructure.com>
QA-Review: Marc LeGendre <marc@instructure.com>
2014-06-02 22:56:46 +00:00
Jon Willesen 79f84cb830 add display_type configuration to external tools
this setting should allow tools to choose how they are displayed
in the canvas interface. the new full width display removes the
canvas sidebars, footer, and breadcrumbs.

test plan:
 - install a tool with course_navigation and account_navigation
   extensions.
 - make sure the tool displays normally without a display_type
   configuration.
 - use a console to set display_type = 'full_width' in a tool's
   course_navigation settings.
 - the tool should display as a "full width" tool when viewed
   by the course navigation link. full width means without the
   left or right side bar, without breadcrumbs, and without a
   footer. the canvas header should still be displayed.
 - the tool should display normally when viewed by the account
   navigation link.
 - use the console to set the display_type = 'full_width' in the
   tool's top level settings.
 - tool tool should now display full width using the account
   navigation link.

Change-Id: Idc19c0c96031bd80a45ce984241c23e4ce1efe78
Reviewed-on: https://gerrit.instructure.com/35160
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Brad Humphrey <brad@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Jon Willesen <jonw@instructure.com>
2014-06-02 22:41:30 +00:00
Derek DeVries df6be76cc3 fix issue with republish quiz not working correctly pre-draft state
fixes CNVS-13391

test plan:
  - turn off draft state
  - as a teacher
    - create a new quiz
    - publish the quiz
    - make changes to the quiz questions
    - make sure the notification shows that you have unpublished changes
    - republish the quiz
    - the quiz changes should be published

  - make sure there are no regressions with CNVS-13003

  - make sure that publish/unpublish of a quiz with DS continues to work
    as expected
  - mess around with any way you can think to publish the quiz via modules
    etc.

Change-Id: I1365609f8c4fc10056de42a806a3629155e6643e
Reviewed-on: https://gerrit.instructure.com/35754
Reviewed-by: Jason Madsen <jmadsen@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Caleb Guanzon <cguanzon@instructure.com>
Product-Review: Derek DeVries <ddevries@instructure.com>
2014-06-02 21:34:36 +00:00
Jeremy Stanley b8310e49f5 track attachments through overwrite+rename/move via replacement_attachment_id
test plan:
 1. upload a file to a folder in a course
 2. link to the file from course content (such as a wiki page
    or assignment body)
 3. overwrite the file with another file of the same name
 4. rename the file
 5. view the course content and ensure the file link still works
 6. repeat steps 1-5, replacing step 4 by "move the file to another folder"

fixes CNVS-12359

Change-Id: I11832c307f286920174ba4731af2e88490497f92
Reviewed-on: https://gerrit.instructure.com/35677
Reviewed-by: James Williams  <jamesw@instructure.com>
Reviewed-by: Mark Severson <markse@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Hilary Scharton <hilary@instructure.com>
2014-06-02 17:11:51 +00:00
Coraline Ehmke c1e65e04b2 Possible points server-side validation
fixes CNVS-7565

test plan:
- From Assignments screen, click 'Add Assignment'
in sidebar
- Click 'more options'
- On the resulting page, enter a negative number
for Points
- Submit the form
- You should see a message stating that the points
have to be a positive number

- From Assignments screen, click to edit an existing
assignment
- On the resulting page, enter a negative number
for Points
- Submit the form
- You should see a message stating that the points
have to be a positive number

Change-Id: I7e618dd8409c123e836ee3e192ad42cdf9d909d5
Reviewed-on: https://gerrit.instructure.com/33535
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Anna Koalenz <akoalenz@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
2014-06-02 15:25:15 +00:00
Derek DeVries a8dfe3a4e8 add extend time modal link and dialog for ember quizzes moderate
fixes CNVS-12448

test plan:
- as a teacher
  - enable fabulous quizzes
  - enroll a few students in the course

  - create a quiz with a time limit
  - publish the quiz
  - visit the quiz moderate page

- in a different browser / session as a student
  - start the quiz as a student
  - don't submit the quiz yet!

- as a teacher
  - refresh the moderate page
  - you should be shown a clock icon for the students with currently running
    quizzes.
  - you can now click on this icon!
  - this will bring up a modal dialog to extend time for the current attempt
  - try out extending the quiz by a few minutes from now
  - try out extending the quiz by a few minutes from the end date

- also try these out with multiple students taking the quiz at once.
- changing the options in the modal should persist until you choose a different
  student, at which point it will reset the form in the dialog

Change-Id: I0adf1ed2133b6adaf8501b5131bd70365b06c249
Reviewed-on: https://gerrit.instructure.com/35343
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Ahmad Amireh <ahmad@instructure.com>
QA-Review: Caleb Guanzon <cguanzon@instructure.com>
Product-Review: Derek DeVries <ddevries@instructure.com>
2014-06-02 15:23:10 +00:00
Josh Simpson ff0b544ad1 fix poll visibility issue for students
fixes CNVS-13374
This commit addresses a mistaken assumption about poll visibility for
students.  Previously, there had to be opened poll sessions for a
student to have read access to the poll. This has been changed to be
based around a students enrollments - if the poll has a poll session
associated with a course or course_section the student is enrolled in,
then they are able to read the poll.

Test plan
- Create a poll as a teacher
- Create a poll session associated with a particular course
  - A student enrolled in the associated course should be able to access
   the poll via #show, regardless of whether or not the session is opened.

  - A student who isn't enrolled in the associated course should not be
   able to access the poll via #show, regardless of whether or not the
   session is opened.

Change-Id: Idf7d4ebeac27d15ce8d37ef498ebc3ab871a6d7e
Reviewed-on: https://gerrit.instructure.com/35722
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jason Madsen <jmadsen@instructure.com>
QA-Review: Caleb Guanzon <cguanzon@instructure.com>
Product-Review: Josh Simpson <jsimpson@instructure.com>
2014-05-31 23:16:42 +00:00
Ethan Vizitei 39a35ab09e Use source user as "FROM" for emails
This gives certain user-triggered events
a "look" as though they came directly from
that user (the FROM and REPLY-TO headers
have the name of the source user).

This also introduces "letter_opener" into the
dev environment.  If you use "letter_opener"
as your send method for dev emails, it will
open all emails in a browser tab. Very useful.

closes: CNVS-11837

TEST PLAN:

Validate each of the following notifications
looks like it's "from" the source user:

- Submitting an assignment
- Resubmitting an assignment
- Posting to a discussion
- sending a conversation message
- posting a comment on a submission

Change-Id: I0e04aa9aa5bf31a590e69507e04b86b637247acf
Conflicts:
	app/models/message.rb
Reviewed-on: https://gerrit.instructure.com/35362
Reviewed-by: Drew Bowman <dbowman@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Steven Shepherd <sshepherd@instructure.com>
Product-Review: Drew Bowman <dbowman@instructure.com>
2014-05-31 01:02:14 +00:00
Jayce Higgins d5af57e0bc Better formatting for emails and add avatar for conversations
Fixes: CNVS-12970

We needed an avatar and signature for notifications
sent out via conversations. Also reformatted all the
notifications to take on a cleaner and more easy to
read format.

The majority of testing can be done on the conversation
notifications. I was using letter opener to do this.
I have included letter opener and the relevant setup
stuff in this commit so that it can be tested.

Test-Plan:
-Make sure that your organization has allowed avatars
-Give a student or a teacher an avatar
-Send a conversation message to another user from
  the user that has an avatar
-If you have letter_opener installed, the email
  should be intercepted and you'll see its formatting.
  Otherwise, use whatever method you'd like to view
  the email.
-Verify that everything looks alright and we have
  an avatar and good formatting.

-STEP 2-
-Disable avatars
-Send another email and verify that the avatar isn't
  showing up

Change-Id: I876dc119c5daefa10811c75c08b315722a50f63d
Reviewed-on: https://gerrit.instructure.com/35144
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Ethan Vizitei <evizitei@instructure.com>
QA-Review: Trevor deHaan <tdehaan@instructure.com>
Product-Review: Drew Bowman <dbowman@instructure.com>
2014-05-30 23:24:03 +00:00
Rob Orton 1049ef654e validate assignment titles
fixes CNVS-10160

test plan
 - attempt to save assignment with title over 255 char
 - should fail and not generate db error

Change-Id: If5633aea38fb10d71367900af841b3ed070c1085
Reviewed-on: https://gerrit.instructure.com/35664
Reviewed-by: Cody Cutrer <cody@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
2014-05-30 22:54:03 +00:00
Rob Orton e694dedc86 update user cache on enrollment deletion
fixes CNVS-12427

test plan
 - enroll a user in a course
 - delete the enrollment
 - as the user make a GET api call to 
 - <canvas_url>/api/v1/courses (can use ?as_user_id=ID)
 - should return unauthorized

Change-Id: I949640ad9ad8d9d702ac3f7b79dd19f35f4f98b5
Reviewed-on: https://gerrit.instructure.com/35658
Reviewed-by: Cody Cutrer <cody@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
2014-05-30 22:53:49 +00:00
Brandon Broschinsky de263055ce save context_id on lti launch
fixes: PS-1538

**test plan
configure and launch lti tool, upon lti tool launch the
lti_context_id for user should be set, and if course launch
the lti_context_id on course object, if account launch, then
lti_context_id on account.  Once these are set, api calls to the
corresponding object can be made using the syntax lti_context_id:id

Change-Id: Icdf02e4f99691be417c024adb2a2751ba2aa9335
Reviewed-on: https://gerrit.instructure.com/35380
Reviewed-by: Brad Humphrey <brad@instructure.com>
Reviewed-by: Rob Orton <rob@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Adam Phillipps <adam@instructure.com>
QA-Review: Adam Phillipps <adam@instructure.com>
2014-05-30 22:26:52 +00:00