fixes CNVS-6505
test plan:
* enable kaltura;
* in conversations, click the "Compose a new message"
button and then, in the new message dialog, click the
media record button;
* using a screen reader, verify that the webcam and audio
buttons in the record media tab read as, "record with
webcam" and "record with microphone only" respectively.
Change-Id: If98ebb62efbc13d1b272d08ea51847ad6cbae27a
Reviewed-on: https://gerrit.instructure.com/24231
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Braden Anderson <banderson@instructure.com>
QA-Review: Cam Theriault <cam@instructure.com>
Product-Review: Zach Pendleton <zachp@instructure.com>
fixes CNVS-6704
test plan:
* navigate to a course home page;
* using a screen reader, navigate to the breadcrumbs and
verify that the home breadcrumb is read as, "My
Dashboard."
Change-Id: I099b41597b16ff8136d216b6d1e2d86fc61918b8
Reviewed-on: https://gerrit.instructure.com/24209
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Braden Anderson <banderson@instructure.com>
QA-Review: Cam Theriault <cam@instructure.com>
Product-Review: Zach Pendleton <zachp@instructure.com>
This would've helped some debugging I was doing today.
test plan: run delayed jobs, see that the "Processing <job tag> {job details}"
log line now includes the strand along with the other info
Change-Id: I569429d2f320486f161adbcab2985f93f9a68a99
Reviewed-on: https://gerrit.instructure.com/24169
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Brian Palmer <brianp@instructure.com>
fixes CNVS-7953
this commit allows users using the new conversations ui
to message other users directly from the course user page.
it removes the ability for non-admin users to
message other users from their profile page
(/about/:user_id).
test plan:
* navigate to a user page in a course, click "send
message" in the right pane and verify that you are
redirected to conversations and that the new message
dialog opens with the proper settings;
* as an admin, navigate to /users/:id, click the "send
message" button and verify that you are redirected to
conversations and that the new message dialog opens
with the proper settings;
* check both of these with the old conversations ui and
verify that it still works as expected.
Change-Id: Ifca5826ab8fe1c46ead1f38d2c4124ee9a6ff1d3
Reviewed-on: https://gerrit.instructure.com/24166
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Cam Theriault <cam@instructure.com>
Reviewed-by: Zach Pendleton <zachp@instructure.com>
Product-Review: Zach Pendleton <zachp@instructure.com>
fixes CNVS-7955, CNVS-6497
this commit makes a few small changes to the new
conversations ui:
* move the reply all icon into the gear menu of
individual messages;
* change author names in message details to static text
instead of a link;
* add tool tips to conversation buttons.
test plan:
* navigate to new conversations ui;
* click an existing conversation in the left pane;
* verify that individual messages in the right pane
have two buttons that appear on hover: reply and
more options;
* verify that "reply all" is present under the more
options menu;
* verify that author names in the right pane are bold
but are not links;
* mouse over the buttons in the inbox header as well as
the reply/more options buttons in the right pane and
verify that tooltips display (note: a tooltip will not
display on buttons that are currently disabled).
Change-Id: I43e16b05f5d3a4db95480c49a109327474818e9b
Reviewed-on: https://gerrit.instructure.com/24191
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Zach Pendleton <zachp@instructure.com>
Product-Review: Zach Pendleton <zachp@instructure.com>
QA-Review: Zach Pendleton <zachp@instructure.com>
Also update all flag checking to use context method
instead of doing settings[:enable_draft] checking
Test Plan:
* "Allow Draft" on a root account. (make sure you don't have
draft enabled for that account in the console)
* All courses in that account should now have an
"Enable Draft" option in "more options"
* If a course has draft enabled then it should be enabled for all sections
* the help dialogs should work and make sense
closes CNVS-7695
Change-Id: Ia5eff0c4868b8be9e5c8417f904cea83e9313bb3
Reviewed-on: https://gerrit.instructure.com/24229
QA-Review: August Thornton <august@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
fixes CNVS-7957
test plan:
* open conversations beta
* open course dropdown
* verify that optgroups have separator lines
* verify that abbreviated course names are not underlined,
including in the dropdown button when selected
* verify that checkmarks are not weird vertically
(easier to eyeball when focusing selected option)
Change-Id: Ifb7dd2c359c643864f906a2dd091101c5e6162d5
Reviewed-on: https://gerrit.instructure.com/24134
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Braden Anderson <banderson@instructure.com>
QA-Review: Braden Anderson <banderson@instructure.com>
Product-Review: Braden Anderson <banderson@instructure.com>
test plan:
- go to course users page
- examine the element for the gear menu,
and look for a screenreader-only element inside the link tag
that says "Manage username"
fixes CNVS-6521
Change-Id: Ib6598d2afd274c0e48deafe05f155e308dca0403
Reviewed-on: https://gerrit.instructure.com/24238
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
QA-Review: Hannah Bottalla <hannah@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
This reverts commit 7750505a3d.
There's a lot of duplicates (thousands) already in our production
database, including new ones still being created. Going to track down
cause and fix and determine how to sanitize before adding this index.
reopens CNVS-1194
Change-Id: I14409f8705f356db97d92083ab642717d41df230
test-plan: N/A
Reviewed-on: https://gerrit.instructure.com/24130
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: Jacob Fugal <jacob@instructure.com>
QA-Review: Jacob Fugal <jacob@instructure.com>
refs CNVS-5051
test plan:
- draft mode must be disabled
- go to assignments page
- click "+" to add new assignment
- fill out nec. fields
- type date in mm/dd/yy format
- click 'more options'
- verify that date is in correct format
- may be good to try a few diff dates
Change-Id: I04d0bc0565957e08c9048303e7a24d250e5219d3
Reviewed-on: https://gerrit.instructure.com/24056
Product-Review: Simon Williams <simon@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Amber Taniuchi <amber@instructure.com>
test plan:
- with draft state enabled
* start editing the front page of the course
- the delete menu item should be disabled
* attempt to delete the front page using the api
- the attempt should be rejected
refs CNVS-7027
Change-Id: Ic873d7c7102bcc09db2b777e36da3be295964f94
Reviewed-on: https://gerrit.instructure.com/24178
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
test plan:
- with draft state enabled
- 'Use as Front Page' should be disabled for unpublished pages
* set a published page as the front page
- the publish icon should be disabled
- the delete menu item should be disabled
* navigate to the front page
- there should be a visual indicator to indicate the front page
- the publish button should be disabled
- the delete menu item should be disabled
* all other pages should operate normally (edit, etc)
fixes CNVS-7027
Change-Id: I9ebff478c48ccadfbe8bc95f4479dd17552c82a0
Reviewed-on: https://gerrit.instructure.com/24146
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Prereq pill now added to each module. If there are 0 prereqs, the pill
does not show up, if there is 1 prereq, the name of the prereq module
is displayed and if there are more than 1 prereq then the number of the
prereqs are displayed with their names being displayed in a tooltip
when hovering over with a mouse
Test Plan
1. Go to the modules page. Ensure there are modules with 0, 1 and 2
prereqs created.
2. Ensure draft state is enabled.
3. The module with 0 prereqs should not display any prereqs "pill". The
module with 1 prereq should display the name of the prereq module in a
pill and the module with 2 prereqs should show the number "2" with a
tool tip displaying the names of the 2 modules when you hover over the
"pill"
fixes CNVS-7995
Change-Id: I07d0d2282a0fcbc6265e2d082e0747ef1a8938a5
Reviewed-on: https://gerrit.instructure.com/24141
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
fixes CNVS-7889
adds a plugin which will render a partial whenever the chat widget
should be inserted. useful partial to come later
test plan
- install our chat LTI tool at an account level
- the plugin sends a message to the javascript console when the
chat widget would appear
- with the plugin disabled, ensure that the message does not
appear (check the course index, where it normally would)
- with the plugin enabled, ensure that the message does not
appear when:
- you are on gradebook 1 or 2
- you are in speedgrader
- you are taking a quiz
- you are on a page without headers. these pages include:
- unauthorized action page
- the embedded submission on speedgrader
- the 'Join This Course' modal dialog
- you aren't logged in
- with the plugin enabled, ensure that the message appears when
you are on any other course page
- ensure that enabling the plugin on an account does not affect
a different account
Change-Id: I7c3fd9dd882b966160878ded0ca9194e53b11d21
Reviewed-on: https://gerrit.instructure.com/24127
Reviewed-by: Zach Pendleton <zachp@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Cam Theriault <cam@instructure.com>
Product-Review: Joel Hough <joel@instructure.com>
Replaces the @object User example description. Add :model to tags that
are shown to describe objects in the API docs. Uses model info to
reproduce the expected @object style API documentation.
Change-Id: I12ffca98aeef72851cd331794fa8268d14812315
Reviewed-on: https://gerrit.instructure.com/23967
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Duane Johnson <duane@instructure.com>
Tested-by: Duane Johnson <duane@instructure.com>
Reviewed-by: Duane Johnson <duane@instructure.com>
QA-Review: Adam Phillipps <adam@instructure.com>
fixes CNVS-7946
test plan:
* open new conversations
* open compose message dialog
* shrink dialog to minimum height
* open courses dropdown
* verify that dropdown can overflow the dialog
Change-Id: I25d8432ffb00013c325af547a6275b45cb29ae35
Reviewed-on: https://gerrit.instructure.com/24131
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jon Willesen <jonw@instructure.com>
QA-Review: Cam Theriault <cam@instructure.com>
Product-Review: Braden Anderson <banderson@instructure.com>
fixes CNVS-7790
test plan:
* open a threaded discussion
* verify that styling looks good, including when collapsing
entries
* select "Go to topic" on a reply to the topic
* verify that the topic's author receives keyboard focus
* select "Go to parent" on a deep reply
* verify that the parent's author receives keyboard focus
* verify that screenreaders announce the date and
the cog menu after the author in document order
Change-Id: I1a91baac18784c2b2fe3406f04ba836740142376
Reviewed-on: https://gerrit.instructure.com/24058
Reviewed-by: Zach Pendleton <zachp@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jon Willesen <jonw@instructure.com>
QA-Review: Cam Theriault <cam@instructure.com>
Product-Review: Braden Anderson <banderson@instructure.com>
fixes CNVS-2603
test plan:
- create new assignment
- set grading type to percentage, pts possible to 0
- save and verify error rendering
- clear pts possible field
- save and verify error rendering
- set pts possible to any string
- save and verify error rendering
Change-Id: I11b15fc9ad38376454635d7c08633d6f326813c0
Reviewed-on: https://gerrit.instructure.com/24029
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>
fixes CNVS-7190, CNVS-7652
test plan
1. editing
- click edit from cog menu
- edit in dialog
- edits should display after dialog closes
2. variable due dates
- add a section to the course in the settings
- edit an assignment, and add multiple due dates
- "multiple due dates" with a tooltip should show up in the index page
- on the edit modal, the due date is disabled and shows dates in a hover tooltip
Change-Id: I0ada6bc94964f34e8f6327edd6c52c2201637791
Reviewed-on: https://gerrit.instructure.com/23550
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Myller de Araujo <myller@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
Product-Review: Derek DeVries <ddevries@instructure.com>
fixes CNVS-7996
test plan:
* create a private conversation in the old conversations
ui;
* in the new ui, attempt to respond to that conversation;
* verify that your response successfully sends;
* verify that the "To:" field in the popup is disabled
and displays a tooltip, "You cannot add participants to
a private conversation."
Change-Id: I9b396953cc0dd3ef6b70abb78c675f239acc4a20
Reviewed-on: https://gerrit.instructure.com/24119
QA-Review: Cam Theriault <cam@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Zach Pendleton <zachp@instructure.com>
Product-Review: Zach Pendleton <zachp@instructure.com>
fixes CNVS-7956
test plan:
* in the new conversations ui, reply to an existing
conversation that isn't the top-most conversation in
the left-pane;
* verify that after your message sends, the left-pane
updates and that the conversation you just replied to
is at the top;
* verify that the conversation's time has updated along
with its position.
Change-Id: Ie2131fdedaf705a9ee9ccb58cc4e7b33b8b366d3
Reviewed-on: https://gerrit.instructure.com/24066
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Zach Pendleton <zachp@instructure.com>
Product-Review: Zach Pendleton <zachp@instructure.com>
QA-Review: Zach Pendleton <zachp@instructure.com>
adds retina-ready alternative images for the following:
* header background;
* header identity bar background;
* page background;
* "by instructure" link in footer;
* grading and grading_gray checkmarks.
also pngcrushes the already retina-ready logo for less
bits and great justice. ✨
Change-Id: I87b269cdfc5f2e650195dec604e279f0adfb3c38
Reviewed-on: https://gerrit.instructure.com/23960
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Braden Anderson <banderson@instructure.com>
QA-Review: Zach Pendleton <zachp@instructure.com>
Product-Review: Zach Pendleton <zachp@instructure.com>
Initiazing the wiki index page to be small, the sticky header bar
(when you have enought content to scroll) will no longer over flow out
of the main content.
Test
1. Go to the new wiki index page. Make sure you have enough items on
the index page that you can scroll.
2. Scroll down. The top bar should follow you as you scroll (fixed to
the page). The topbar should stay within the main content area as you
resize the window (width wise)
fixes CNVS-7920
Change-Id: Idc4f9ccc22c3f5e1ef9abae6df33504ba5383cfc
Reviewed-on: https://gerrit.instructure.com/23993
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Hannah Bottalla <hannah@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Reviewed-by: Aaron Shafovaloff <ashafovaloff@instructure.com>
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
test plan:
- with draft state enabled for the course
- index page
* ensure the toolbar sticks when scrolling
* ensure deleting a page works properly
* ensure editing a page works properly
- show page
* ensure the toolbar sticks when scrolling
- edit page (window #1)
* open another window to the corresponding show page (window #2)
* open another window to the same edit page (window #3)
* make a change to the page body in window #1
* save the change
- window #2 & #3 should show reload inicators within 30 seconds
- window #3 should indicate that someone else's changes will be
overwritten by the save
* click reload (window #2)
- the content should be updated to reflect the changes
* click reload (window #3)
- the content should be updated to reflect the changes
* making changes to the body and saving should still work
fixes CNVS-7510
Change-Id: Icf441771589950a0398bf4cbffb4449d1e19eb5b
Reviewed-on: https://gerrit.instructure.com/23951
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Hannah Bottalla <hannah@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Matt Goodwin <mattg@instructure.com>
- Explicitly describe path parameters (e.g. "id", "account_id") so
that swagger will autogenerate the correct code.
- Use :resources which is already grouped, rather than :object, which
is not.
- Guess type information from current sample @object models
- Accept @model in API docs as a better alternative to @object.
@model descriptions use the JSON-schema draft 4 specification,
which is what Swagger uses.
See https://github.com/wordnik/swagger-core/wiki/Datatypes
- Add some swagger json generator specs
- Fix SubmissionsController's "Submission" object
Change-Id: I71befe1d2cea039fd996124e7de9cab2e639e191
Reviewed-on: https://gerrit.instructure.com/23831
Reviewed-by: Brian Palmer <brianp@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Duane Johnson <duane@instructure.com>
QA-Review: Duane Johnson <duane@instructure.com>
fixes CNVS-3110
test plan:
- create a new learning outcome
- title must be greater than 255 chars
- save learning outcome
- verify presence of error dialog
Change-Id: I9f91b03f5bce60dc6e7c8ddf9fdcbf1719f8adb7
Reviewed-on: https://gerrit.instructure.com/24004
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
QA-Review: Amber Taniuchi <amber@instructure.com>
fixes CNVS-3277
testing steps:
- either create a new ePortfolio or edit
the settings for one (i.e. left side nav
when in a portfolio "ePortfolio Settings")
- in popup, enter text longer than 255 characters
and try to submit
- should display that "Name is too long"
- when creating a new ePortfolio and when editing,
verify that it requires a "Name" and gives
a descriptive error message
Change-Id: Id7b6b495a3e47290ea5c37054865812ddc7f1dec
Reviewed-on: https://gerrit.instructure.com/23829
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Landon Wilkins <lwilkins@instructure.com>
Product-Review: Marc LeGendre <marc@instructure.com>
QA-Review: Marc LeGendre <marc@instructure.com>
test plan:
- specs pass
Change-Id: Ie45ebc1ce4493485f00068145393ecc50c7cb540
Reviewed-on: https://gerrit.instructure.com/23945
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Matthew Irish <mirish@instructure.com>
Tested-by: Matthew Irish <mirish@instructure.com>
Product-Review: Stanley Stuart <stanley@instructure.com>
QA-Review: Stanley Stuart <stanley@instructure.com>
- added new ember application generator
- also Ember -> ember in AMD requires
Change-Id: I7914a2578161e4f8370fc05ed6596ed07347c897
Reviewed-on: https://gerrit.instructure.com/24038
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Aaron Shafovaloff <ashafovaloff@instructure.com>
Tested-by: Aaron Shafovaloff <ashafovaloff@instructure.com>
Product-Review: Ryan Florence <ryanf@instructure.com>
QA-Review: Ryan Florence <ryanf@instructure.com>
test plan:
* upload a relatively large file for import into a course
* try to navigate away or reload the page while the
file is uploading (as indicated by the spinner)
* a confirmation box should pop up
closes #CNVS-7692
Change-Id: Iaf24ef1c2d9c10472b711e7e9f06d14f31255255
Reviewed-on: https://gerrit.instructure.com/24022
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
QA-Review: August Thornton <august@instructure.com>
before, the conversation list would only paginate when you
reached the bottom and started scrolling the window. now it
should paginate as you scroll down.
fixes CNVS-7970
test plan:
- go to the new conversations page as a user that has many
conversations (> 20).
- scroll the left pane down slowly. you should see it paginate
before you reach the bottom of the list. you can tell when
it paginates because the scroll bar will jump.
- note that the exact position of when it paginates is
probably not optimal; it's caused by existing bugs in the
generic pagination code. fixing that is outside the scope of
this change and the current behavior is the best we can do
right now.
Change-Id: Ifabcc897b11a730c55f8be61ab6bc1c847346e32
Reviewed-on: https://gerrit.instructure.com/24059
Reviewed-by: Zach Pendleton <zachp@instructure.com>
QA-Review: Cam Theriault <cam@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Jon Willesen <jonw@instructure.com>
test plan:
* add a file with a long continuous name (without
spaces, dashes, underscores, etc.) so that the file name
will not wrap inside the wiki sidebar, but stretch beyond
the border and be partially unviewable.
* confirm that the full file name can still be viewed in
a popover tooltip when hovering over the item.
fixes #CNVS-7922
Change-Id: I5a54315b906842590c51c87273a6b22e94bc0879
Reviewed-on: https://gerrit.instructure.com/24028
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
QA-Review: Hannah Bottalla <hannah@instructure.com>
We have a fix on master that is not yet in a release gem
refs CNVS-7945
test plan: notifications should still be successfully sent in all situations,
such as replying to discussions. this new version of the gem also fixes
an issue where <img> tags weren't getting replaced with their alt text
in some situations, which is an unrelated bug "fix". this doesn't appear
to affect canvas negatively in my testing.
Change-Id: Idbf52aa006d04252b7870cd0a3208d7bdc0e20e3
Reviewed-on: https://gerrit.instructure.com/24024
Reviewed-by: Cody Cutrer <cody@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Brian Palmer <brianp@instructure.com>
fixes CNVS-6930
test plan
- go to the draft state assignment index page
- sort assignment groups
- refresh the page and the sorting should have stuck
- sort assignments within a group
- refresh and the sorting should have stuck
- drag assignments between groups
- refresh and the new groups should have stuck
Change-Id: Iaf77b7665603e8aa7b9759de4fbcee7e45f52576
Reviewed-on: https://gerrit.instructure.com/22730
Reviewed-by: Simon Williams <simon@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Amber Taniuchi <amber@instructure.com>
Product-Review: Cameron Sutter <csutter@instructure.com>
fixes CNVS-7937
test plan:
- create a course with a long name (>25 chars).
- go to the new conversations compose dialog and open the
courses dropdown. check the mouse pointer when it hovers over
the truncated course name.
Change-Id: Ie7cfbeb4d71b03cc3d47849337cb108031ae33cb
Reviewed-on: https://gerrit.instructure.com/24023
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Braden Anderson <banderson@instructure.com>
QA-Review: Cam Theriault <cam@instructure.com>
Product-Review: Braden Anderson <banderson@instructure.com>