fixes CNVS-14406
Test Plan:
- Go to the account level user page
(/accounts/##/users/##)
- In the enrollments section, tabbing through should go to the
course name before the unenroll link.
- A screenreader should read the course name prior to the
unenroll link.
Change-Id: I4436915218d89663a5d4563541e8e251af910038
Reviewed-on: https://gerrit.instructure.com/43767
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Dan Minkevitch <dan@instructure.com>
QA-Review: Jahnavi Yetukuri <jyetukuri@instructure.com>
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
fixes CNVS-16481
A user must have permission to update a pseudonym in order to delete it.
In addition, a user cannot delete a system-created pseudonym unless they
can also change its SIS ID.
test-plan:
being able to delete a pseudonym entails being able to DELETE
/users/:user/pseudonyms/:id
* given
- Sally who's an admin with the :manage_user_logins
permission on one account (Account1) and a student on another
account (Account2)
- Bob who's a student on both accounts
- Alice who's an admin on Account1 with greater permissions than
Sally
* Sally should:
- be able to delete her Account1 pseudonym
- be able to delete Bob's Account1 pseudonym
- not be able to delete her Account2 pseudonym
- not be able to delete Bob's Account2 pseudonym
- not be able to delete Alice's Account1 pseudonym
* given pseudonyms have SIS ids are set and Sally doesn't have the
:manage_sis permission on Account1, Sally should:
- no longer be able to delete her Account1 pseudonym
- no longer be able to delete Bob's Account1 pseudonym
Change-Id: Iad54c6ceb5efcbd32ca1ba3fd011ebe0aa699c94
Reviewed-on: https://gerrit.instructure.com/42776
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Reviewed-by: Rob Orton <rob@instructure.com>
Product-Review: Jacob Fugal <jacob@instructure.com>
fixes CNVS-16480
A user has permission to merge any user for which he can manage at least
one pseudonym (doesn't need permission to manage all pseudonyms). To
merge two users, the acting user must have permission to merge each of
them.
test-plan:
being able to merge two users entails being able to:
- GET /users/:user1/admin_merge?pending_user_id=:user2
- GET /users/:user1/admin_merge?new_user_id=:user2
- POST /users/:user1/merge?new_user_id=:user2
- PUT /api/v1/users/:user1/merge_into/:user2
they should either all succeed or all fail
* given
- Sally who's an admin with the :manage_user_logins
permission on one account (Account1) and a student on another
account (Account2)
- Sally2 who's a student in Account1, admin in Account2
- Bob who's a student on both accounts
- Bob2 who's a student in Account1, admin in Account2
- Alice who's an admin on Account1 with greater permissions than
Sally
* Sally should:
- not see "Merge with Another User" link at /users/:alice
- see "Merge with Another User" link at /users/:sally
- see "Merge with Another User" link at /users/:sally2
- see "Merge with Another User" link at /users/:bob
- see "Merge with Another User" link at /users/:bob2
- not be able to merge herself with Alice
- be able to merge herself with Sally2
- be able to merge Bob with Bob2
* Bob should:
- not see "Merge with Another User" link at /users/:bob
- not be able to merge himself with Bob2
Change-Id: I840077e80fbdb35ea5b9ef6c80d6af8e41e90ce9
Reviewed-on: https://gerrit.instructure.com/42775
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Reviewed-by: Rob Orton <rob@instructure.com>
Product-Review: Jacob Fugal <jacob@instructure.com>
fixes CNVS-16478
A user can only reset their own MFA if the setting is not required of
them. They can only reset another user's MFA if they have the :update
permission on all of the other user's pseudonyms (even if it's required
for that other user, since it's just a reset, not full out disabling).
test-plan:
being able to reset MFA on a user entails being able to DELETE
/users/:target_user/mfa
* given
- Sally who's an admin with the :manage_user_logins
permission on one account (Account1) and a student on another
account (Account2)
- Bob who's a student on both accounts
- Charlie who's a student in Account1 only
- Alice who's an admin on Account1 with greater permissions than
Sally
* Sally should:
- see the "Reset Multi-Factor Authentication" link at /users/:sally
- see the "Reset Multi-Factor Authentication" link at /users/:charlie
- not see the "Reset Multi-Factor Authentication" link at /users/:bob
- not see the "Reset Multi-Factor Authentication" link at
/users/:alice
- be able to reset her own MFA
- be able to reset Charlie's MFA
- not be able to reset Bob's MFA
- not be able to reset Alice's MFA
* given MFA is required on Account1, Sally should:
- no longer see the "Reset Multi-Factor Authentication" link at
/users/:sally
- still see the "Reset Multi-Factor Authentication" link at
/users/:charlie
- no longer be able to reset her own MFA
- still be able to reset Charlie's MFA
Change-Id: I38afc269c0baa8a72be77714254f088569b22116
Reviewed-on: https://gerrit.instructure.com/42773
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Rob Orton <rob@instructure.com>
Product-Review: Jacob Fugal <jacob@instructure.com>
QA-Review: Jacob Fugal <jacob@instructure.com>
fixes CNVS-16477
The :update permission allows a user to update the pseudonym. Specific
portions of the pseudonym may be controlled by more specific permissions
(see below). To update a user's pseudonym requires :manage_user_logins
permissions on the pseudonym's account. A non-admin can only update
their password (see below) on their own pseudonym, which is separate
from this permission.
The :change_password permission allows a user to update a pseudonym's
password. An admin updating another user's pseudonym can only update the
non-managed password if the account allows admins to change passwords
(:admins_can_change_passwords setting). A user (admin or not) can always
update their own non-managed password. Managed passwords can never be
updated through Canvas.
The :manage_sis permission allows a user to update a pseudonym's SIS id
(sis_user_id attribute). It is simply inherited from the pseudonym's
account.
test-plan:
* given
- Sally who's an admin with the :manage_user_logins
permission on one account (Account1) and a student on another
account (Account2)
- Bob who's a student on both accounts
- Alice who's an admin on Account1 with greater permissions than
Sally
UNIQUE IDS:
being able to update a unique ID entails being able to PUT to
/users/:target_user/pseudonyms/:target_pseudonym?
pseudonym[unique_id]=new_unique_id
* Sally should:
- be able to update her Account1 unique ID
- be able to update Bob's Account1 unique ID
- not be able to update her Account2 unique ID
- not be able to update Bob's Account2 unique ID
- not be able to update Alice's Account1 unique ID
PASSWORDS:
being able to update a password entails being able to PUT to
/users/:target_user/pseudonyms/:target_pseudonym?
pseudonym[password]=new_password&
pseudonym[password_confirmation]=new_password
* given both accounts allow admins changing passwords, Sally should:
- be able to update her Account1 password
- be able to update her Account2 password
- be able to update Bob's Account1 password
- not be able to update Bob's Account2 password
- not be able to update Alice's Account1 password
* given both accounts have managed passwords (pseudonyms have SIS ids
set and accounts have non-password authentication), and still allow
admins changing passwords, Sally should:
- no longer be able to update her Account1 password
- no longer be able to update her Account2 password
- no longer be able to update Bob's Account1 password
* given Account1 disallows admins changing passwords, Sally should:
- still be able to update her Account1 password
- no longer be able to update Bob's Account1 password
SIS IDS:
being able to update an SIS ID entails being able to PUT to
/users/:target_user/pseudonyms/:target_pseudonym?
pseudonym[sis_user_id]=new_sis_user_id
* given Sally doesn't have the :manage_sis permission on Account1,
Sally should:
- not be able to update her Account1 SIS ID
- not be able to update her Account2 SIS ID
- not be able to update Bob's Account1 SIS ID
- not be able to update Bob's Account2 SIS ID
- not be able to update Alice's Account1 SIS ID
* given Sally has the :manage_sis permission on Account1, Sally
should:
- be able to update her Account1 SIS ID
- be able to update Bob's Account1 SIS ID
- still not be able to update her Account2 SIS ID
- still not be able to update Bob's Account2 SIS ID
- still not be able to update Alice's Account1 SIS ID
Change-Id: I9b08ed67db8e2c664c057bb9259a8b18999b0863
Reviewed-on: https://gerrit.instructure.com/42772
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Reviewed-by: Rob Orton <rob@instructure.com>
Product-Review: Jacob Fugal <jacob@instructure.com>
fixes CNVS-14266
test plan
- all account reports should still work
Change-Id: Ibc378d76571569760e733bd1b8ad87e299a7bff8
Reviewed-on: https://gerrit.instructure.com/41419
Product-Review: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
Tested-by: Rob Orton <rob@instructure.com>
Reviewed-by: Jacob Fugal <jacob@instructure.com>
Fixes CNVS-16494
test plan
- configure yo plugin with an api token
- configure a user's yo service with their yo username
(you'll need to install the yo app and register a user)
- set yo notification preferences to asap
- cause a notification to be sent
- ensure canvas yo's you
- ensure the yo link links back to canvas
Change-Id: I36ed467ed19842c2e92285ae20a3553272698f22
Reviewed-on: https://gerrit.instructure.com/42896
Product-Review: Joel Hough <joel@instructure.com>
QA-Review: Joel Hough <joel@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Matthew Wheeler <mwheeler@instructure.com>
This commit deals specifically with the Modules page.
fixes CNVS-16527
Test Plan:
- Using a screenreader, go to the modules page.
- As a student you shouldn't hear anything about moving modules
- As a teacher you should get messages about using the move to dialog.
Change-Id: Ifcd90c27d1d2d8fd9856cf755c52e391828a24cd
Reviewed-on: https://gerrit.instructure.com/43743
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Jahnavi Yetukuri <jyetukuri@instructure.com>
refactor everything that used to use strings for roles
to use actual role_ids
the apis should be backwards compatible so we don't need
to update (most of) the UI's right away in this commit
test plan:
* regression tests for permissions, role overrides,
alerts (for account roles), enrolling users,
adding account admins, etc.
refs #CNVS-15481
Change-Id: Id57fd3104c5c518b6fbf180609950dcddcdd474d
Reviewed-on: https://gerrit.instructure.com/41208
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
QA-Review: Steven Shepherd <sshepherd@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
fixes CNVS-16476
instead of using the buggy :manage_logins permission on user, make it
more appropriate to the specific account and obvious what's being
checked.
Sally can create a pseudonym for Bob on account XYZ only if Sally has
admin rights on XYZ (:manage_user_logins in particular), Sally's
permissions on XYZ are a superset of Bob's existing permissions on XYZ
(if any), and Sally can already see Bob on some account.
test-plan:
being able to create a pseudonym on an account entails being able to
POST to /users/:user/pseudonyms?pseudonym[account_id]=:account
* given
- Sally who's an admin with the :manage_user_logins
permission on one account (Account1) and a student on another
account (Account2)
- Bob who's a student on both accounts
- Charlie who's a student on Account2 only
- Alice who's an admin on Account1 with greater permissions than
Sally
* Sally should:
- see the "Add Login" link for Account1 at /users/:sally
- not see the "Add Login" link for Account2 at /users/:sally
- see the "Add Login" link for Account1 at /users/:bob
- not see an entry for Account2 at /users/:bob
- not see the "Add Login" link for Alice at /users/:alice
- be able create a pseudonym for herself on Account1
- not be able create a pseudonym for herself on Account2
- be able create a pseudonym for Bob on Account1
- not be able create a pseudonym for Bob on Account2
- not be able create a pseudonym for Charlie on Account1
- not be able create a pseudonym for Alice on Account1
Change-Id: I5e1e02b6a55a82d8ed1916abccbf545e2f24c2f7
Reviewed-on: https://gerrit.instructure.com/42771
Reviewed-by: Jacob Fugal <jacob@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Jacob Fugal <jacob@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
fixes CNVS-16479
the can_manage_admin_users variable -- meant to help control whether the
acting user can edit/become/merge/delete the shown user and also whether
the acting user can edit the shown user's time zone -- was always
truthy, since even an empty array is truthy
test-plan:
* given Bob is a teacher and Sally a TA in the same course, with Sally
logged in
- visit /courses/:that_course/users/:bob
- Sally should not see the "Edit" link
* given Bob is a student and Sally a TA in the same course, with Sally
logged in
- visit /courses/:that_course/users/:bob
- Sally should see the "Edit" link
- after clicking the "Edit" link, Sally should not be able to change
Bob's time zone.
Change-Id: I429a0752a034cc5ff10962dcbacee747cd6ec650
Reviewed-on: https://gerrit.instructure.com/42774
Reviewed-by: Jacob Fugal <jacob@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Jacob Fugal <jacob@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
caused by a regression from updating routes for rails 4
fixes CNVS-16474
test plan:
- as a teacher
- create a quiz with a question
- publish the quiz
- update a question on the quiz, but don't save the quiz itself
- refresh the page
- you should get a notice that 'you have made changes to questions...'
- click the 'save it now' button
- it should save successfully
Change-Id: Id1a8ea918d5d968c63e883c8ee145222ab55a0b9
Reviewed-on: https://gerrit.instructure.com/43560
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Ahmad Amireh <ahmad@instructure.com>
QA-Review: Trevor deHaan <tdehaan@instructure.com>
Product-Review: Derek DeVries <ddevries@instructure.com>
extraction and runtime for vanilla handlebars. ember will be part II
because its strings currently don't even get extracted on master
¯\_(ツ)_/¯
differences in generated yml:
1. `%h{...}` placeholders from hbs are just `%{...}`, since html-safety is
inferred at runtime without needing a placeholder hint (6 occcurrences)
2. inline `{{t ...}}` calls are now extracted (6 occurrences)
3. some trivial whitespace difference around some wrappers (2 occurrences)
4. html-entities are correctly converted into unicode equivalents, e.g.
`Move To…` -> `Move To…` (1 occurrence)
test plan:
1. verify string extraction:
1. `rake js:generate i18n:generate` before and after this commit
2. confirm `config/locales/generated/en.yml` is identical, except the
differences listed above
2. verify js translation file generation:
1. `rake i18n:generate_js` before and after this commit
2. confirm the files in public/javascripts/translations are identical
3. verify hbs translation keys/scope behavior at runtime:
1. run canvas w/ RAILS_LOAD_ALL_LOCALES=true and optimized js
2. use canvas in spanish
3. confirm that todo está bien
4. confirm you can now use i18nliner-y features:
1. block helper with no key `{{#t}}hello world{{/t}}`
2. inline helper with no key `{{t "hello world"}}`
Change-Id: Ic2a2c5cf102ca482919cbb91ac1c154467029685
Reviewed-on: https://gerrit.instructure.com/42942
Reviewed-by: Jennifer Stern <jstern@instructure.com>
Product-Review: Jennifer Stern <jstern@instructure.com>
QA-Review: Matt Fairbourn <mfairbourn@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
this swaps out (most of) our ruby haax with i18nliner
test plan:
1. verify string extraction:
1. `rake i18n:generate` before and after this commit
2. confirm `config/locales/generated/en.yml` is identical
2. verify english defaults:
1. use canvas in english
2. confirm everything looks correct
3. verify translation keys/scopes:
1. run canvas w/ RAILS_LOAD_ALL_LOCALES=true and optimized js
2. use canvas in spanish
3. confirm that todo está bien
4. confirm you can now use i18nliner-y features:
1. call `t` without a key
2. use the fancy erb block syntax
Change-Id: I979479c0889fe7e31ee0c962a4bd1998ab54d711
Reviewed-on: https://gerrit.instructure.com/42785
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jennifer Stern <jstern@instructure.com>
Product-Review: Jennifer Stern <jstern@instructure.com>
QA-Review: Matt Fairbourn <mfairbourn@instructure.com>
closes CNVS-15193
test plan:
-Create a custom grading scheme
-Create an assignment
-Set "Display Grade as" to Letter Grade
-Click "View Grading Scheme"
-Click "Select another scheme" and select your custom scheme
-Save the assignment
-Edit the assignment again and click View Grading Scheme
-Note that it shows the new, custom grading scheme (this was
incorrectly always showing the default scheme before)
Change-Id: If9b2064964b57a6939d24904b8cacf8178a8dfbe
Reviewed-on: https://gerrit.instructure.com/43368
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Josh Simpson <jsimpson@instructure.com>
QA-Review: Amber Taniuchi <amber@instructure.com>
Product-Review: Spencer Olson <solson@instructure.com>
fixes CNVS-2467
test plan
- verify you can set up the diigo plugin with the information in gollum https://gollum.instructure.com/OtherServiceTestAccounts
- on the user settings page, verify you can use your diigo username and password to register the service
Change-Id: I8d33a8c1c29a013c681488fcc38bbfe7b83cd398
Reviewed-on: https://gerrit.instructure.com/39942
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
fixes CNVS-15199
Added STUDENT_CAN_ORGANIZE_GROUPS_FOR_COURSE to ENV for check to see if students
are allowed to create groups.
Test Plan
- Allow "New Student Groups Page" in Feature Options tab of Account Settings
- Disable "Let students organize their own groups" in a course
- As a student, visit Groups page and notice that the "+ Group" button
is hidden
Change-Id: I1379834ad44c0cedb13a41ec636547d4c3ffa1bb
Reviewed-on: https://gerrit.instructure.com/43259
Reviewed-by: Matthew Wheeler <mwheeler@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Steven Shepherd <sshepherd@instructure.com>
Product-Review: Matthew Wheeler <mwheeler@instructure.com>
fixes CNVS-14604
Test Plan:
- Make a course publicly available.
- Set it to have a Creative Commons license
- Go to the Syllabus page
- The Alt Text of the CC image at the bottom should be
more descriptive of the license something like
"CC Attribution" rather than "CC_by"
Change-Id: I09cfa277283f301c63775e05de577632657aeb31
Reviewed-on: https://gerrit.instructure.com/43269
Reviewed-by: Dan Minkevitch <dan@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Jahnavi Yetukuri <jyetukuri@instructure.com>
Product-Review: Cosme Salazar <cosme@instructure.com>
refs #CNVS-15563
Change-Id: Ic68e0374f820b4e37814f2e585d1d046993489ef
Reviewed-on: https://gerrit.instructure.com/43329
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
fixes CNVS-16170
when a user cant see a DA'ed assignment there
is no longer a link to access it
test plan:
- make a DA'ed discussion
- make some comments on as a student
- take away visibility to this student
- add it to your eportfolio as the student
- there should not be a link to go to the discussion
when viewing as the student
- as the teacher or a student with visibility, there
should be a link to go to the discussion
Change-Id: Id72c39985f74b2f52b27edf70923bcb9d75f7ab2
Reviewed-on: https://gerrit.instructure.com/42973
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Cameron Sutter <csutter@instructure.com>
QA-Review: Sean Lewis <slewis@instructure.com>
Product-Review: Hilary Scharton <hilary@instructure.com>
Adds a PandaPub client and settings UI. This commit doesn't add any new
functionality or feature that use PandaPub - just the plumbing.
running and configuring PandaPub:
* Start up a local PandaPub instance. Easiest way is with Docker:
docker run --rm -ti -p 49000:3000 -e ADMIN_USERNAME=admin \
-e ADMIN_PASSWORD=password zwily/pandapub:latest
* Log into PandaPub at:
http://$(boot2docker ip 2>/dev/null):49000/admin
with admin/password.
* Create a new application named "canvas"
* Create a new key with an expiration date in the future. Record
the key_id and secret.
* Log into Canvas and go to PandaPub plugin settings:
base_url: http://{DOCKER IP}:49000/
application_id: <id from created application>
key_id: <id from created key>
key_secret: <secret from created key>
* In your PandaPub admin section, open the "Console" tab for your
created application. In the "Subscribe" section, enter "**" in the
input box, and hit "Subscribe". This will show you the first 50
events that arrive for the canvas application you just created.
test plan for settings:
* Verify that the /plugins/pandapub settings page works, saving,
disabling, etc.
test plan for client via console:
* Set up and configure PandaPub in Canvas
* Open a Rails console
* Run this command to post a pandapub message:
CanvasPandaPub.post_update("/public/foo", {"a" => 1})
* Verify that the message showed up in your PandaPub console.
Change-Id: Ifddcbd335293c2a29f532b1e5fd44c23c8b910c4
Reviewed-on: https://gerrit.instructure.com/40311
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jacob Fugal <jacob@instructure.com>
QA-Review: Sean Lewis <slewis@instructure.com>
Product-Review: Zach Wily <zach@instructure.com>
fixes SIS-600
partially reverses g/32659
test plan:
- for a course with and integration id and post grades feature enabled
post grades button in gradebook should open dialog
- remove due dates for assignments in course
- confirm you're able to add dates in post grades dialog
Notes:
- regression test
Change-Id: I7c7b2109ef083750289290fbb161e47b47bfc4b9
Reviewed-on: https://gerrit.instructure.com/43293
Reviewed-by: Ken Romney <kromney@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Duane Johnson <duane@instructure.com>
closes CNVS-15881
This mostly involved adding hooks to the gem for things that we were
directly modifying in Canvas, then hooking into those points in the
canvas config/initializers/delayed_job.rb file.
Periodic jobs scheduling changed a bit as well -- there's no longer
support in the extracted gem for reading a special file under config/,
so I moved our periodic_jobs.rb file to a normal initializer.
test plan: delayed jobs should still work as before, including queuing
jobs, running the worker pool, and in tests.
Change-Id: I9ce57091d18f21f4355011fcb75230193d53facb
Reviewed-on: https://gerrit.instructure.com/42027
Reviewed-by: Cody Cutrer <cody@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Brian Palmer <brianp@instructure.com>
change the course settings form so it's
always a form (similar to the account settings form)
so that way the labels always have referenced elements
test plan:
* using a screenreader, the labels should always reference
the proper input items (rather than labelling nothing
until the "edit" button is clicked)
closes #CNVS-16234
Change-Id: I66d64c5000c6e43291c34536452518ba1dee0945
Reviewed-on: https://gerrit.instructure.com/43091
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Nathan Rogowski <nathan@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Cosme Salazar <cosme@instructure.com>
fixes: PLAT-635 PLAT-652 PLAT-654 PLAT-655
test-plan:
*setup:
register an lti tool using the following url template
/courses/#{course_id}/lti/tool_proxy_registration?
tool_consumer_url=http://lti-tool-provider-example.herokuapp.com/tool_proxy
ignore the canvaception during the registration
testing:
*add some lti tools to module items, including 'default tool'
*make sure all launches, and selecting tools still works
*test the same things for assignments external tools
Change-Id: I0642c10c9b416057764b327d925cb6158fbf5cc9
Reviewed-on: https://gerrit.instructure.com/41726
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Reviewed-by: Brad Humphrey <brad@instructure.com>
Product-Review: Nathan Mills <nathanm@instructure.com>
- The "New Quiz Statistics" feature flag now converts the regular
statistics page into the new one that uses the React/CQS client app
- All Ember quizzes code gone
- canvas_ember_urls gem gone
- quiz_moderate feature flag gone
- quiz_stats feature flag is now allowed in prod
- statistics_cqs explicit/hidden route gone, but the statistics_cqs ERB
and coffee bundle are still there to help ease the transition later
Closes CNVS-16330
TEST PLAN
---- ----
- go to /courses/:course_id/quizzes/:quiz_id/statistics
+ verify you get the old/regular stats page
- enable the "New Quiz Statistics" feature flag
+ refresh that page, verify you see the new app
Now turn the flag on and off and play around the quizzes pages, verify
everything looks OK.
Change-Id: I01fc5da80fd206df08338823ffb446a1e3a06ed0
Reviewed-on: https://gerrit.instructure.com/42965
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Ryan Taylor <rtaylor@instructure.com>
Reviewed-by: Derek DeVries <ddevries@instructure.com>
QA-Review: Trevor deHaan <tdehaan@instructure.com>
Product-Review: Ahmad Amireh <ahmad@instructure.com>
fixes CNVS-15693
fixes CNVS-15694
test plan
- regression test conversations
- test submission comments in the inbox
Change-Id: I0da5cea276f6d03ac08aab51143fe13d40503ee7
Reviewed-on: https://gerrit.instructure.com/42063
Reviewed-by: Matthew Wheeler <mwheeler@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Steven Shepherd <sshepherd@instructure.com>
Product-Review: Joel Hough <joel@instructure.com>
fixes CNVS-14758
test plan
- ensure that buttons for all frequencies on the notification
preference settings page are screenreader accessible
Change-Id: I4ae1651d8d9b7b702fce2b9226b5cb1f49e06403
Reviewed-on: https://gerrit.instructure.com/43186
Reviewed-by: Matthew Wheeler <mwheeler@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Nathan Rogowski <nathan@instructure.com>
Product-Review: Joel Hough <joel@instructure.com>
The quiz icons are hidden away until the appropriate features are out to
allow for monitoring of gradebook/speedgrader edits to quiz scores which
are pending review because of their question types.
Closes CNVS-16399
Change-Id: I689f1dcc94a647a32fe619b215f6b641a8376f84
Reviewed-on: https://gerrit.instructure.com/43180
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Derek DeVries <ddevries@instructure.com>
QA-Review: Trevor deHaan <tdehaan@instructure.com>
Product-Review: Ryan Taylor <rtaylor@instructure.com>
Submissions will no longer be creatable if the course has been deemed
concluded (softly; in the sense that its `end_at` overrides the term's
`end_at`, or its term has ended).
In this scenario, we now display a message to students (and teachers):
"This quiz is no longer available as the course had been concluded."
Closes CNVS-15934
TEST PLAN
---- ----
- create a course and open its settings page
- set an end date to sometime in the past
+ do NOT check the option "Users can only participate in the course
between these dates" yet
- create a quiz in that course, with like a single question and
unlimited attempts, and then publish it
- in another tab as a student, go to the quiz take page, and take it
once, hand it in, then stay on that page where you can see "Take
this Quiz Again"
- now in the teacher tab, edit the course settings and turn that
option on, save
- go back to the student tab, do not refrehs, just click that button
for taking the quiz... and:
+ verify you are redirected back to the same page (e.g, not taken to
the take quiz page)
+ verify no new attempts have been registered
+ verify you now see the alert message in a red box
- turn that option back off, refresh the page:
+ you should be able to re-take the quiz
- try on and off, see if you can get anything funny going on
Change-Id: I83a373258cc7e615c98e416ef7d630fa9ccb7331
Reviewed-on: https://gerrit.instructure.com/43204
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Ryan Taylor <rtaylor@instructure.com>
Reviewed-by: Derek DeVries <ddevries@instructure.com>
QA-Review: Trevor deHaan <tdehaan@instructure.com>
Product-Review: Hilary Scharton <hilary@instructure.com>
test plan:
* create a course with a teacher/ta/designer enrollment
* using the "Terms" link on the account navigation sidebar,
set a term start date in the future, but leave the term dates for
teachers/ta's/designers blank
* the UI should correctly state that teachers/ta's/designers
can access before the term start
* a teacher/ta/designer should be able to access the course
* override the default term limits for the teacher/ta/designer
to explicitly restrict their access until a future date
* they should not be able to access the course now
closes #CNVS-9681
Change-Id: Icec6bc24b2a199bf7aae541573590c1dd71fbd49
Reviewed-on: https://gerrit.instructure.com/42413
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Jahnavi Yetukuri <jyetukuri@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Matt Fairbourn <mfairbourn@instructure.com>
fixes CNVS-5622
updated format on public syllabus to be short
and on the hour
TEST PLAN:
1. Create a course with the public syllabus
setting allowed
2. Create multiple sections for the course
3. |Calendar|
4. Click on a day and then change the calendar to
the course you just set up for this test
5. |More Options|
6. |"Use a different date for each section"|
7. Set up two dates that are over a month apart
8. |Update Event|
9. Log out and go to the syllabus for that
course by using the URL
10 you should see a nicely formatted date
Change-Id: I5de5e1e22152d5f556f50cdc1d067cb44a3e7d09
Reviewed-on: https://gerrit.instructure.com/42226
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Matthew Wheeler <mwheeler@instructure.com>
Product-Review: Matthew Wheeler <mwheeler@instructure.com>
QA-Review: Steven Shepherd <sshepherd@instructure.com>
student name is announced after clicking next/prev buttons, or grading assigment
fixes CNVS-15546
test plan:
- go to speedgrader with voiceover enabled
- click on next button and previous buttons
- name and grade status of student should be announced
- add a grade to current assignment
- name and grade should be announced
- repeat for removing grade
- repeat process with student names hidden to ensure names remain anonymous
Change-Id: I8c4c7d4acad1009e74b2df3d05c9fcc84e86e7ab
Reviewed-on: https://gerrit.instructure.com/42191
QA-Review: Sean Lewis <slewis@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
Product-Review: Aaron Cannon <acannon@instructure.com>
test plan:
* create a course with a graded discussion with an
upcoming due date
* confirm that the gear menu on the index no longer
has an option to "Close for comments" (that didn't work)
* confirm that dragging the discussion into the
"Closed for Comments" group does not let you
drop it in
closes #CNVS-16029
Change-Id: I50c21fc528409c4d5e90344149d751ff25f86389
Reviewed-on: https://gerrit.instructure.com/42720
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Steven Shepherd <sshepherd@instructure.com>
Product-Review: Matt Fairbourn <mfairbourn@instructure.com>
Product-Review: Janelle Seegmiller <jseegmiller@instructure.com>
Reviewed-by: Matthew Wheeler <mwheeler@instructure.com>
fixes CNVS-16237
test plan:
* open calendar as a student
* verify that assignments you have submitted are marked
* open calendar as a grader
* verify that past due assignments with no ungraded submissions are marked
Change-Id: Ie84c436c49feab94d5c896ab0c79306013c75185
Reviewed-on: https://gerrit.instructure.com/42759
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Brad Horrocks <bhorrocks@instructure.com>
Product-Review: Hilary Scharton <hilary@instructure.com>
QA-Review: Amber Taniuchi <amber@instructure.com>
test plan:
0. upload the following types of files into a course, and
note their IDs:
a) document of some type (such as Word, PDF)
b) image (such as JPEG, PNG, GIF)
c) media (such as MP3, MP4, MOV)
1. enable canvadocs and google docs previews in account
settings.
2. test the document preview by hitting the following
in a new browser tab:
/courses/X/files/Y/file_preview
(where X is the course ID and Y is the file ID
of the document file)
- You should see a Canvadocs preview of the document.
- There should be no Canvas chrome in the window, just
the document preview.
3. disable canvadocs but leave google doc previews
enabled.
4. hit the URL from step 2.
- you should see a Google preview of the document
5. disable Google docs previews.
6. hit the URL from step 2.
- you should see a message indicating that no preview is
available, with a link to download the file.
7. hit the URL from step 2, but substitute the file ID
with the ID of an image instead of a document.
- you should see the image (and nothing else).
8. hit the URL from step 2, but substitute the file ID
with the ID of a media file.
- You should see a functioning media player (or a message
indicating the media has not been converted yet)
9. add a document to a module, and set a "must view"
completion requirement
10. use this endpoint to preview the document, and confirm
that the module completion requirement is fulfilled
fixes CNVS-15827
Change-Id: Id0ecaa7f003248cb3d8f163e48c3b16631ee59cf
Reviewed-on: https://gerrit.instructure.com/42438
Reviewed-by: Ryan Shaw <ryan@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Jahnavi Yetukuri <jyetukuri@instructure.com>
Product-Review: Cosme Salazar <cosme@instructure.com>
fixes CNVS-14666
altered styles and markup to include form elements
in group category edit view.
abstracted some element handling for autoloader
controls into edit view to be shared by create view.
updated group category API to include auto_leader
in JSON serialization (so the edit form
can set the state correctly)
Changed edit view to set form state based on
auto_leader value in GroupCategory model from API.
add tests for GroupCategoryEditView in coffee script
update GroupCategories::Params to favor form
submission value over raw api value for auto leader
if both are specified and the form version is
enabled.
add ability to nil out auto_leader status by
unchecking checkbox on form
TEST PLAN:
- login as a teacher
- create a group set
- edit the group set
- you should be able to change the
group leadership settings
- you should be able to nil out autoloader settings
by unchecking the checkbox on the edit form
- ensure that as students are added to the groups
the leadership settings are effective (that is
a leader still gets assigned at random
or by first joining student depending on
leadership strategy selected)
Change-Id: Iecbb4829f5efccda1bd97bca1d99c3bd4c15bffe
Reviewed-on: https://gerrit.instructure.com/41965
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Trevor deHaan <tdehaan@instructure.com>
Reviewed-by: Matthew Wheeler <mwheeler@instructure.com>
Product-Review: Ethan Vizitei <evizitei@instructure.com>
test plan:
1. go to the Modules / Student Progress page
/courses/1/modules/progressions
2. click a name on the right under "Student Progresses"
3. "Module Progress for X" on the top of the page should contain
a working link and not visible HTML code
fixes CNVS-16134
Change-Id: I4eb37c3b375f9c14fe851b14da058eb8d9a40bb2
Reviewed-on: https://gerrit.instructure.com/42560
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: James Williams <jamesw@instructure.com>
Product-Review: Matt Fairbourn <mfairbourn@instructure.com>
QA-Review: Trevor deHaan <tdehaan@instructure.com>
Previous workaround for student submissions which were outstanding was
to visit each individual quiz show page from the moderate page. This
cleans up the moderate page with the ember styling, and adds the
functionality of outstanding quiz checking and submitting through the
API endpoint.
Closes CNVS-15502, CNVS-16197
Test Plan:
- Basically, a QA regression of the quiz moderate page
- ensure all quiz extensions still function
- ensure icons for manually unlocked, in progress time alterations,
and quiz extension notices are present
- Check for outstanding quiz extensions button functionality
- Shows an alert on page refresh if outstanding quiz submissions
exist
- Submits the selected submissions
- Hides alert if all the outstanding submissions were submitted,
otherwise shows the success flash message, but retains the alert
- Overflows with large lists
Change-Id: Idba6a4849a3dc32fe9c077236a7fa13a6db6ce00
Reviewed-on: https://gerrit.instructure.com/41441
QA-Review: Trevor deHaan <tdehaan@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Derek DeVries <ddevries@instructure.com>
Product-Review: Ryan Taylor <rtaylor@instructure.com>
Change screenreader text to say Manage Announcement
Fixes CNVS-13974
Test Plan:
- NVDA in FF
- Go to the Announcements page
- Select an Announcement
- Navigate to the Manage Announcements link (Gear icon that comes after the edit button)
- Verify it say manage announcement
Change-Id: I059cd0a6d339569729df90df25246282860ecf1e
Reviewed-on: https://gerrit.instructure.com/42398
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Mark Severson <markse@instructure.com>
QA-Review: Trevor deHaan <tdehaan@instructure.com>
Product-Review: Brad Horrocks <bhorrocks@instructure.com>
Corrected any noticed accessibility issues for quiz show control
buttons.
Closes: CNVS-6764
Test-Plan:
- Test that quiz show buttons are buttons
- Test that screenreaders read the buttons properly
Change-Id: I860b911e123500401d7925195a652918e56a33a1
Reviewed-on: https://gerrit.instructure.com/42106
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Trevor deHaan <tdehaan@instructure.com>
Reviewed-by: Derek DeVries <ddevries@instructure.com>
Product-Review: Ryan Taylor <rtaylor@instructure.com>
when unlocking a quiz (with no time limit or for a specified period), the
quiz will now unlock correctly, and the students will be able to take it.
fixes CNVS-11727
test plan:
- Create a quiz. Set a due date, but no "from" or "until" date.
- Save and publish the quiz.
- Lock the quiz; note that the date/time at which you lock it now appears in the "until" field.
- Unlock the quiz with "No time limit". Note that the current date/time appears in the
"Available from" cell, and the "Until" date has been cleared out.
- Verify that you are able to take the quiz as a student, and note that there is no
specified end date for the quiz.
- Lock the quiz again, then unlock the quiz with a time limit (choose any date). Note that
the current date appears in the "Available from" cell, and the specified end date
appears in the "Until" cell.
- Verify that you are able to take the quiz as a student, and note that there is a specified
end date for the quiz.
Change-Id: I94ed3e26b7c91e84728c27e58c0e130444ef95a2
Reviewed-on: https://gerrit.instructure.com/42016
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Derek DeVries <ddevries@instructure.com>
QA-Review: Trevor deHaan <tdehaan@instructure.com>
Product-Review: Spencer Olson <solson@instructure.com>
remove worse-than-useless policy block (the controllers are not
using it, checking :manage_grades on the context instead), and
let the view check whether the grading standard has assessed an
assignment, consistent with learning outcomes.
(Also, consistent with learning outcomes, the API can still edit
them. we just make it hard to mess with them accidentally in the
UI. I don't actually like this much, but apparently people
depend on this behavior.)
test plan:
1. link an assignment to a grading scheme
2. verify the grading scheme can still be edited
on the grading schemes page
3. as a student, submit the assignment
4. verify the grading scheme can still be edited
5. as a teacher, grade the student's submission
6. verify the grading scheme cannot be edited on
the grading standards page (no pencil icon appears)
fixes CNVS-15933
Change-Id: I21b67a25083169312c8b1c929d8e8ef305adc36c
Reviewed-on: https://gerrit.instructure.com/42234
Product-Review: Hilary Scharton <hilary@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Jahnavi Yetukuri <jyetukuri@instructure.com>
Adds a status and selection field that have an aria-live attribute. Allowing
the fields to announce changes to it. Each time a result is
calculated for the autocomplete, the fields are updated and
the screen reader announces the changes.
fixes CNVS-12803
Test Plan:
- Activate a screenreader
- Go to /conversations
- Create a message.
- When you navigate to the To field and start typing the
autocomplete should popup. The screenreader should also
announce the number of items showing up in the list.
Change-Id: I80c38c412e0ce8eb3022ac26ce1bb733ef4b4b65
Reviewed-on: https://gerrit.instructure.com/41758
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Brad Horrocks <bhorrocks@instructure.com>
Reviewed-by: Mark Severson <markse@instructure.com>
Product-Review: Aaron Cannon <acannon@instructure.com>
QA-Review: Steven Shepherd <sshepherd@instructure.com>
test plan:
* enable localization and choose a language for the course
with a different date format (e.g. Japanese)
* create a module and set an unlock date
* reload the page
* try to edit the module
* confirm that it did not localize the date inside the input box,
thus breaking the form
closes #CNVS-14984
Change-Id: Ice4b4d83c9bffa06d3292b123c2e10c632801718
Reviewed-on: https://gerrit.instructure.com/42177
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Jahnavi Yetukuri <jyetukuri@instructure.com>
Product-Review: Hilary Scharton <hilary@instructure.com>
fixes CNVS-15853
test plan:
- with DA on
- make a differentiated assignment and dont assign it to every section
- when saving there should be a new warning message
"Not all sections will be assigned this item"...
- with DA off
- do the same (make sure "everybody else" is not checked)
- dialog should give the old warning
- in both scenarios the Go Back button should be on the left now
Change-Id: I0f8728cda8e56e295b40c01e1b8d8b2956694092
Reviewed-on: https://gerrit.instructure.com/41857
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Sean Lewis <slewis@instructure.com>
Product-Review: Hilary Scharton <hilary@instructure.com>
fixes: CNVS-14514
CNVS-12805
test-plan:
1.) Make sure your user is in a group
2.) Navigate to conversations
3.) With screenreader on, navigate to course filter
4.) Verify that the drop down is navigable
5.) Navigate to compose message and verify that the
course filter there is also navigable
Change-Id: I10d8f2131645adb59fab4a9b200591c1fd341010
Reviewed-on: https://gerrit.instructure.com/41915
Product-Review: Aaron Cannon <acannon@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Brad Horrocks <bhorrocks@instructure.com>
QA-Review: Steven Shepherd <sshepherd@instructure.com>