add push communication channel type

fixes CNVS-5794

links to an access token to get the proper ARN

test plan:
 * set up an SNS app in AWS
 * configure your credentials in sns.yml
 * set sns_arn on a developer key to be the ARN of the app in SNS
 * using an access token created from that developer key,
   you should be able to create a push channel
 * you should see that channel in your profile (named after your developer
   key)

Change-Id: I183241d02715252bf558c495d72d4995cea4232d
Reviewed-on: https://gerrit.instructure.com/25281
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
fix for render_unauthorized_action

This commit was tested before, but merged after, 335afba10

Change-Id: I4250ba29fcc531ca3a159e05bd979563e5b6be32
Reviewed-on: https://gerrit.instructure.com/26562
Reviewed-by: Cody Cutrer <cody@instructure.com>
Reviewed-by: Jacob Fugal <jacob@instructure.com>
Reviewed-by: Nick Cloward <ncloward@instructure.com>
Tested-by: Brian Palmer <brianp@instructure.com>
QA-Review: Brian Palmer <brianp@instructure.com>
Product-Review: Brian Palmer <brianp@instructure.com>
fix datepicker selected date styles

fixes CNVS-9163

test plan:
  * navigate to a page with a datepicker (e.g. the new
    assignment form;
  * click on the datepicker and select a date;
  * verify that the selected date is readable and not
    styled as white text on a white background.

Change-Id: Ic34e6b3580c05b8d154314d2479466f0856ebab8
Reviewed-on: https://gerrit.instructure.com/26457
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jon Willesen <jonw@instructure.com>
QA-Review: Steven Shepherd <sshepherd@instructure.com>
Product-Review: Zach Pendleton <zachp@instructure.com>
hide selected message on conversations search

fixes CNVS-9140

when searching in new conversations, any selected
message now disappears from the right pane.

test plan:
  * navigate to new conversations as a user with more
    than one message thread;
  * select a message thread in the left pane and verify
    that it loads in the right pane;
  * using the "search by user" textbox in the header,
    search for a user in another thread;
  * verify that the current message in the right pane is
    removed and that you can properly select a message in
    the filtered results in the left pane.

Change-Id: I0d51cb3f858c1f21ff09fdc57d0e47d4e9329acd
Reviewed-on: https://gerrit.instructure.com/26540
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jon Willesen <jonw@instructure.com>
QA-Review: Steven Shepherd <sshepherd@instructure.com>
Product-Review: Zach Pendleton <zachp@instructure.com>
updating the variable substitution methodology

Test Plan:
 - Add a tool with variable substitution and anonymous privacy level
 - It should substitute all of the variables that it can based on the context

here is a list of the valid substitution variables:

$Canvas.api.domain
$Canvas.assignment.id
$Canvas.assignment.title
$Canvas.assignment.points_possible
$Canvas.context.id
$Canvas.context.sis_source_id
$Canvas.enrollment.enrollment_state
$Canvas.membership.concluded_roles
$Canvas.user.id
$Canvas.user.login_id
$Person.name.full
$Person.name.family
$Person.name.given
$Person.address.timezone

fixes PLAT-187

Change-Id: I53619e1888b768cd4e9c327a44b6597bb00c6195
Reviewed-on: https://gerrit.instructure.com/26366
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Nathan Rogowski <nathan@instructure.com>
fixes time limit bug in quiz taking

fixes CNVS-8280
this addresses a bug where if there's no time limit, but there's a
due date, students (not teachers) are relayed the wrong messaging
when taking the quiz ('time running' with a countdown, rather than
'time elapsed' with a time accumulator)

Testplan
- Create an untimed quiz with a due date
- Take the quiz as a student
- Verify that 'Time Elapsed' and an appropriate accumulation of time
is in the right sidebar.

Change-Id: I802b9924546372c4696a8f742071fe5ef29460de
Reviewed-on: https://gerrit.instructure.com/26521
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jason Madsen <jmadsen@instructure.com>
QA-Review: Myller de Araujo <myller@instructure.com>
Reviewed-by: Derek DeVries <ddevries@instructure.com>
Product-Review: Josh Simpson <jsimpson@instructure.com>
favorite courses customization accessibility

fixes CNVS-6701

test plan:
  * open Canvas with JAWS or VoiceOver
  * focus "Courses & Groups" in the top menu
  * verify that you can focus the "Customize" link by tabbing
  * click "Customize"
  * verify that the customize section comes immediately after
    the toggle link in tab order
  * verify that you can select and deselect courses
  * verify that courses are announced as checkboxes
  * verify that focus is moved into the customization section
    when opening it and back out when closing it

Change-Id: I759ec47f4a2ca3946d923bcbadaa92832c165664
Reviewed-on: https://gerrit.instructure.com/26423
Reviewed-by: Braden Anderson <banderson@instructure.com>
QA-Review: Braden Anderson <banderson@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Braden Anderson <banderson@instructure.com>
Updated de translation
Updated de translation
Updated zh translation
Updated zh translation
Updated pt translation
Updated pt translation
frozen columns in new slickgrid for gradebook 2

removes multi_grid in favor of using frozen columns from the instructure
fork of slickgrid

restores the ability to minimize columns and the highlight of column
headers when hovering a column

fixes CNVS-8351

test plan
=========
- verify that column re-ordering works as expected
- verify that you can set default grades for a specific section
- verify you can minimize a column and it stays minimized on refresh
- verify that when resizing one of the first two columns, the divider
  between them and the rest of the columns moves as well
- verify that when dragging a column header for re-ordering, it is the
  only header with the highlight gradient

Change-Id: Ib3c2dc6f20e477ed866c696b6c333dbb6ebcb7c4
Reviewed-on: https://gerrit.instructure.com/26297
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Amber Taniuchi <amber@instructure.com>
Product-Review: Matthew Irish <mirish@instructure.com>
do not fail specs if redis gem group is not installed

test plan:
- bundle install --without=redis
- spec spec/lib/canvas/request_throttle_spec.rb
- you should not get errors

Change-Id: Ia4b86ab0edd2e916abdb9b7b651693bc12ab56f0
Reviewed-on: https://gerrit.instructure.com/26164
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Bryan Madsen <bryan@instructure.com>
Product-Review: Bryan Madsen <bryan@instructure.com>
Reviewed-by: Liz Abinante <labinante@instructure.com>
Quiz question refactor / api implementation

fixes CNVS-7982
Changes parsing mechanisms for question data, and adds
API for quiz questions.

Change-Id: I483fc9c4718af50e1bed2ee3547905f857de6285
Reviewed-on: https://gerrit.instructure.com/25346
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Derek DeVries <ddevries@instructure.com>
QA-Review: Caleb Guanzon <cguanzon@instructure.com>
Product-Review: Josh Simpson <jsimpson@instructure.com>
calendar: display true times for events after 11:30

fixes CNVS-9270

test plan:
  * open calendar 2 with agenda view enabled
  * create events/assignments/vdd assignments at or near midnight
  * open agenda view
  * confirm that times are not displayed as 11:30 and that events
      are sorted properly
  * open the details popup for an event
  * verify that the correct time is displayed
  * open week view
  * verify that events after 11:30 are positioned as though
      they were starting at 11:30
  * verify that assignments due after 11:30 have their time listed

Change-Id: I506930592bc97e7fcc1df401832f1e77d6f2b3a0
Reviewed-on: https://gerrit.instructure.com/26314
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Matt Fairbourn <mfairbourn@instructure.com>
Reviewed-by: Jon Willesen <jonw@instructure.com>
Product-Review: Braden Anderson <banderson@instructure.com>
quiz groups create and update accept collection of documents per jsonapi format

fixes CNVS-8964

test plan:
- In the existing quiz creation form
  - creating quiz groups should continue to work as expected
  - updating quiz groups should continue to work as expected

Change-Id: I7aa29faa9377d28de6dc6436b47171a68d8c34fd
Reviewed-on: https://gerrit.instructure.com/26563
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Ahmad Amireh <ahmad@instructure.com>
QA-Review: Myller de Araujo <myller@instructure.com>
Product-Review: Derek DeVries <ddevries@instructure.com>
fix basic navigation on the module page

Currently there is no distinction between module items and modules.
Now there is. Also, module items and modules show up in the screen
readers Item Chooser.

fixes CNVS-5290

Test Steps
1. Go to the modules page. Make sure you are a teacher and logged in so
you can see all of the options.
2. Navigate around. Module Items should be heading level 4 while Modules
should be module level 3.
3. Module Items should also say "Module Item" next to the group name.
4. You should also be able to open your screenreader Item Chooser and
see the headings for the page.

Change-Id: I4f41bd785cbfd8dba34c9abc5650a29d1e0a9b66
Reviewed-on: https://gerrit.instructure.com/26485
Reviewed-by: James Williams  <jamesw@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Hannah Bottalla <hannah@instructure.com>
QA-Review: Matt Fairbourn <mfairbourn@instructure.com>
rubyzip 1.0.0 upgrade

test plan: zip functionality should continue to work, including:
 * course exports and imports
 * zip file uploads
 * zip submissions

also, the selenium dependency on rubyzip 1.0.0 is resolved
and we're making progress toward > 4GB exports

Change-Id: I58c5b0644b1e7fbb289821c9c0901f00750988de
Reviewed-on: https://gerrit.instructure.com/25474
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Bryan Madsen <bryan@instructure.com>
Product-Review: Bryan Madsen <bryan@instructure.com>
QA-Review: Matt Fairbourn <mfairbourn@instructure.com>