added some more data to agenda view events for screen readers

fixes CNVS-9226

test plan
- use a screen reader to read a variety of event in agenda view. be sure to
 include assignments, quizzes, appointment groups, vdd assignments, discussions
- ensure that the type of event, event title, event context (ie, course name),
 and event time (with 'due' or 'start at' prepended as appropriate) are read

Change-Id: I4cbf0664be5ce87851e3826da298ecb6e46a8026
Reviewed-on: https://gerrit.instructure.com/26227
Reviewed-by: Zach Pendleton <zachp@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Steven Shepherd <sshepherd@instructure.com>
Product-Review: Zach Pendleton <zachp@instructure.com>
improve accessibility of calendar2 buttonset

fixes CNVS-9218, CNVS-6672

test plan:
  * navigate to calendar2 and, using a screenreader,
    verify that:
  * the month/week/agenda/scheduler buttons read as radio
    buttons and that their selected state is properly read;
  * each button is only read once;
  * the month and week buttons warn the user that their
    views are not accessible;
  * all of the buttons render the browser's default focus
    style.

Change-Id: Ib8df18356a20d690d7749a23f16ac8a651a9a47a
Reviewed-on: https://gerrit.instructure.com/26306
Reviewed-by: Jon Willesen <jonw@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Steven Shepherd <sshepherd@instructure.com>
Product-Review: Zach Pendleton <zachp@instructure.com>
improve tooltip accessibility with tab focus

allow tooltips to be rendered with keyboard tab focus
fixes CNVS-8935

Test Plan
1) Navigate to a page with tooltips
   (e.g. large roster group UI index page, see '+' add user icon)
   (e.g. localhost:3000/styleguide#tooltips)
2) Using keyboard navigation, tab over the tooltip item
3) Ensure tooltip is rendered correctly
4) Ensure tooltip is removed correctly when focus is tabbed away

Change-Id: Ifb84fe2862227fc26dbb297b9e0caa95e83e5cb0
Reviewed-on: https://gerrit.instructure.com/26133
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jon Jensen <jon@instructure.com>
Product-Review: Marc LeGendre <marc@instructure.com>
QA-Review: Marc LeGendre <marc@instructure.com>
allow creating content migration with url to cartridge

Now a user can specify a url to the content to import instead
of having to upload the file directly to canvas.

Test Plan:
 * Using the content migration api, create a CC migration with
   a settings['file_url'] instead of doing an attachment
 * the file url must be publicly accessible from the canvas instance
 * it should happily import
 * Also do a zip file import

closes PLAT-206

Change-Id: Ide387b8e66625e5eb5c546054900a4a0fc50eb0c
Reviewed-on: https://gerrit.instructure.com/26287
Reviewed-by: James Williams  <jamesw@instructure.com>
QA-Review: Nathan Rogowski <nathan@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
fix write to slave in GradebooksController#show

fixes CNVS-2624

turns out that calling foo.build_bar touches bar if it already exists

Test plan:
  make sure gradebook download/upload still works in gb1

Change-Id: Id5bb09f3da8336de54eb576274f0a13e6c254b81
Reviewed-on: https://gerrit.instructure.com/26292
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Amber Taniuchi <amber@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
Product-Review: Cameron Matheson <cameron@instructure.com>
change swagger reference to relative from absolute

Code generation does not work with absolute URLs since swagger-
codegen appends the 'path' value directly on to the base. Change
to relative fixes the issue.

Change-Id: I93474ca603cc9675c5d7a4eb3dd9fce654c0959f
Reviewed-on: https://gerrit.instructure.com/24477
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Brian Palmer <brianp@instructure.com>
Product-Review: Duane Johnson <duane@instructure.com>
QA-Review: Duane Johnson <duane@instructure.com>
spec: fix fragile selenium spec

Change-Id: I63fd71ace0b58004b71486bea563fc5fa8daa7cc
Reviewed-on: https://gerrit.instructure.com/26365
Reviewed-by: Kyle Rosenbaum <kyler@instructure.com>
Product-Review: Kyle Rosenbaum <kyler@instructure.com>
QA-Review: Kyle Rosenbaum <kyler@instructure.com>
Tested-by: Bryan Madsen <bryan@instructure.com>
grade summary: only load submissions for active assignments

fixes CNVS-9309

Test plan:
  * make an assignment
  * submit homework for that assignment as a student (or give the
    student a grade on it)
  * delete the assignment
  * go the grade summary page for that student (as the student)
  * you should see grades instead of an error page

Change-Id: I4e51b0cf35b42c18d9ca662c7aa95589a120e8b1
Reviewed-on: https://gerrit.instructure.com/26004
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>
better handle varying number of parts for mailer

in the rails2 shim. refs CNVS-9184

test-plan:
 - configure canvas to send outgoing email
 - configure a user with a real eamil address and set notifications for
   this user to asap
 - have a different user initiate a conversation with the first user
 - check for a notification email from the conversation
   - entire email should have content-type multipart/alternative with
     both text and html parts
   - text part should have content-type text/plain
   - html part should have content-type text/html
   - both parts should have charset=utf-8 in their content-type
   - html format should still be displayed by default

Change-Id: I0dd1cf7aad6d51e808438946bce172d256ffceb7
Reviewed-on: https://gerrit.instructure.com/26295
Reviewed-by: Jon Willesen <jonw@instructure.com>
QA-Review: Jon Willesen <jonw@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Jacob Fugal <jacob@instructure.com>
increment a rubric cache key

fixes CNVS-9556

test plan:
- with caching enabled
- go to a submission page with a rubric that had been recently viewed
- it should look correct

Change-Id: I5288d03520af2761bf6c5296f8c2cf7b45c207b1
Reviewed-on: https://gerrit.instructure.com/26393
Reviewed-by: Brian Palmer <brianp@instructure.com>
Product-Review: Brian Palmer <brianp@instructure.com>
QA-Review: Brian Palmer <brianp@instructure.com>
Tested-by: Brian Palmer <brianp@instructure.com>
increment a rubric cache key

fixes CNVS-9556

test plan:
- with caching enabled
- go to a submission page with a rubric that had been recently viewed
- it should look correct

Change-Id: I5288d03520af2761bf6c5296f8c2cf7b45c207b1
Reviewed-on: https://gerrit.instructure.com/26393
Reviewed-by: Brian Palmer <brianp@instructure.com>
Product-Review: Brian Palmer <brianp@instructure.com>
QA-Review: Brian Palmer <brianp@instructure.com>
Tested-by: Brian Palmer <brianp@instructure.com>
spec: fix failing content migration selenium spec

Change-Id: I41212cf54bf1987b5256203ae0e8b78b65245275
Reviewed-on: https://gerrit.instructure.com/26385
Reviewed-by: Bryan Madsen <bryan@instructure.com>
Product-Review: Bryan Madsen <bryan@instructure.com>
QA-Review: Bryan Madsen <bryan@instructure.com>
Tested-by: Bryan Madsen <bryan@instructure.com>
don't error on submissions without cached assignment

fixes CNVS-9557

test plan:
- create an assignment, and give a student a grade
- change the assignment to 'not graded'
- go to the students grade page
- it should work

Change-Id: I364e28169d302976fa64745152dc642d5fbe48e2
Reviewed-on: https://gerrit.instructure.com/26394
Product-Review: Bryan Madsen <bryan@instructure.com>
QA-Review: Bryan Madsen <bryan@instructure.com>
Reviewed-by: Brian Palmer <brianp@instructure.com>
Tested-by: Bryan Madsen <bryan@instructure.com>
allow deleting communication channels by path

refs CNVS-5794

test plan:
 * add an e-mail address to your user
 * with the API, delete /api/v1/users/self/communication_channels/email/<your e-mail address>
 * it should work
 * try to delete again
 * it should 404

Change-Id: I5816501b7193b47618fd40c1bf40dcc508ee71c5
Reviewed-on: https://gerrit.instructure.com/26278
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Reviewed-by: Jacob Fugal <jacob@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
fix cross-shard json generation of wiki pages

fixes MBL-956

test plan:
 * access a wiki page from a shard it's not on (via the API)
 * it should work

Change-Id: Ia47966c359b1e33d38729ba0db9f108768ea3d57
Reviewed-on: https://gerrit.instructure.com/26323
QA-Review: August Thornton <august@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jacob Fugal <jacob@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
don't error on submissions without cached assignment

fixes CNVS-9557

test plan:
- create an assignment, and give a student a grade
- change the assignment to 'not graded'
- go to the students grade page
- it should work

Change-Id: I364e28169d302976fa64745152dc642d5fbe48e2
Reviewed-on: https://gerrit.instructure.com/26394
Product-Review: Bryan Madsen <bryan@instructure.com>
QA-Review: Bryan Madsen <bryan@instructure.com>
Reviewed-by: Brian Palmer <brianp@instructure.com>
Tested-by: Bryan Madsen <bryan@instructure.com>
fix cross-shard json generation of wiki pages

fixes MBL-956

test plan:
 * access a wiki page from a shard it's not on (via the API)
 * it should work

Change-Id: Ia47966c359b1e33d38729ba0db9f108768ea3d57
Reviewed-on: https://gerrit.instructure.com/26323
QA-Review: August Thornton <august@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jacob Fugal <jacob@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
allow oauth clients to provide a purpose to the oauth flow

refs CNVS-5794

test plan:
 * go through the oauth flow, adding purpose=something to the first
   step
 * at the end, when you view the access token in your user profile,
   it should show the purpose you put in

Change-Id: I3f7f55df5540931ef5844c7f265dc720af153372
Reviewed-on: https://gerrit.instructure.com/26249
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Reviewed-by: Jacob Fugal <jacob@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
explicitly add multi_json to gemfile

It wasn't getting loaded when development and test gem groups were
excluded, breaking production mode.

fixes CNVS-9503

Change-Id: I4dded45e4e066c4f0f479304566b8ae93431801d
Reviewed-on: https://gerrit.instructure.com/26388
Product-Review: Bryan Madsen <bryan@instructure.com>
Tested-by: Bryan Madsen <bryan@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
QA-Review: Brian Palmer <brianp@instructure.com>
remove some stray puts calls in specs

Change-Id: I9b40a37b2103b257af2b7da47188117e4a0a3c7a
Reviewed-on: https://gerrit.instructure.com/26177
Reviewed-by: Brian Palmer <brianp@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
QA-Review: Simon Williams <simon@instructure.com>