fixes: #10342
also fixed css so it looks good in firefox and IE
the ticket also mentioned that "the x button to
clear search also does not display" but not going
to fix that, it is because IE does not have any native
special styling for input type=search.
test plan:
* make sure that the box looks good in IE, firefox,
and chrome. (like this: http://cl.ly/image/1p2g0Q2L2a2w )
* make sure results are filtered after you press a
a key in in IE
Change-Id: I690fa5a06b1cbd0e7195070e7ef0109094742ac2
Reviewed-on: https://gerrit.instructure.com/13635
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Ryan Florence <ryanf@instructure.com>
test plan:
* create a SIS import that enrolls a student after an observer
* the student's enrollment should not have an associated user ID
Change-Id: I6b05e1c7cc4a634a77795b5d8ddc7ba269810479
Reviewed-on: https://gerrit.instructure.com/13776
Reviewed-by: Jacob Fugal <jacob@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
closes#10292
Test plan:
1) enable calendar2 on an account
2) set up a user to prefer the old calendar
3) set the 'calendar2_only' setting to true on the account
4) go to the calendar as the user from step 2, you should be
redirected to calendar2
* there should be no way to get to the old calendar
Change-Id: I6280caf2878d04ef3f73efdbc61187906aeb5113
Reviewed-on: https://gerrit.instructure.com/13756
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Joe Tanner <joe@instructure.com>
don't proxy uploads through canvas
also fix ui so that file picker goes away after saving
test plan:
1. w/ s3 file store, edit an eportfolio
2. add a file/image
3. it should work
4. repeat steps 1-3 for local file store
5. edit an eportfolio
6. add a file from your existing user files
7. it should work
Change-Id: I1518e06dec495180371eef75af2e6659d49d36b1
Reviewed-on: https://gerrit.instructure.com/13692
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
test plan:
* enter valid ldap settings, except for filter
* test them, but don't put in a username and password
* you should get an error about invalid filter syntax
Change-Id: I61339085cbd902ba6e1234a098181db32cd42385
Reviewed-on: https://gerrit.instructure.com/13754
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
test plan:
* set up an LDAP config with invalid filter syntax
* try to log in with a user that exists
* go to /error_reports; you should see the error, report, and it
should have a link to the account
Change-Id: I2d89befbfeb4672fc6fdcb5653b16bd5f04fd795
Reviewed-on: https://gerrit.instructure.com/13761
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Brian Palmer <brianp@instructure.com>
when a link is clicked to display a course wizard, move focus
to the wizard to accommodate users using screen readers.
test plan:
* using voiceover or another screen reader, navigate to the
assignments page;
* click the "How Do I...?" link in the right sidebar and verify
that focus is assigned to the wizard popup box.
* click the close link in the wizard and verify that focus is
returned to the "How Do I...?" link.
Change-Id: Ie3b09e2fc43439f6c09c87694a6f6150a62f9982
Reviewed-on: https://gerrit.instructure.com/13474
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Ryan Florence <ryanf@instructure.com>
add scope="col" to the headers on the student grades table to
improve navigation for users with screen readers.
test plan:
* as a student, navigate to the grades page of a course;
* view source and verify that scope="col" is present on table
headers.
Change-Id: I2c9e0d1a1036b1129211a1b4c4d0dd34a3fa82ec
Reviewed-on: https://gerrit.instructure.com/13465
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Ryan Florence <ryanf@instructure.com>
html_url for Canvas web links
url for API endpoints
test plan: field names should match the above convention
refs #10404
Change-Id: Idba0cd491d10cc67795a4ee7336ebe72d00f66a0
Reviewed-on: https://gerrit.instructure.com/13745
Reviewed-by: Brian Palmer <brianp@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
fixes#10491
test plan:
- make an api call to a paginated endpoint that has a query parameter as part
of the call (courses/<id>/users with enrollment_type=student is a good one)
- the pagination link header links that come back should maintain the query
parameter (in the example above, they would include enrollment_type=student)
- also try one that has an "include[]=" type parameter
- read the api pagination documentation (linked from the api sidebar) and make
sure it makes sense.
Change-Id: I6c1649513553bb2ac9c1cfc137ff16c21e50a6a3
Reviewed-on: https://gerrit.instructure.com/13641
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Brian Palmer <brianp@instructure.com>
also modifies the discussion topic and assignment API
controllers to make sure "must_view" requirements are
fulfilled
test plan:
* check the API documentation; ensure it looks okay
* create a course with module items of each supported type
* set completion criteria of each supported type
* create another module, so you can set prerequisites
* use the list modules API and verify its output matches
the course and the documentation
* as a teacher, "state" should be missing
* as a student, "state" should be "locked", "unlocked",
"started", or "completed"
* use the show module API and verify the correct information
is returned for a single module
* use the list module items API and verify the output
* as a teacher, the "completion_requirement" omits the
"completed" flag
* as a student, "completed" should be true or false,
depending on whether the requirement was met
* use the show module API and verify the correct information
is returned for a single module item
* last but not least, verify "must view" requirements can
be fulfilled through the api_data_endpoints supplied
for files, pages, discussions, and assignments
* files are viewed when downloading their content
* pages are viewed by the show action (where content
is returned)
* discussions are viewed when marked read via the
mark_topic_read or mark_all_read actions
* assignments are viewed by the show action
(where description is returned). they are not viewed
if the assignment is locked and the user does not
have access to the content yet.
Change-Id: I0cbbbc542f69215e7b396a501d4d86ff2f76c149
Reviewed-on: https://gerrit.instructure.com/13626
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
This avoids issues with get_all_pertinent_contexts, which may want to do
writes, for example in the case where a course has no assignment groups
yet.
refs #9647
test plan: with a slave configured for reading, enroll yourself in a
course that has no assignment groups (maybe created via SIS) and get
your user calendar .ics feed. you shouldn't get an error.
Change-Id: I05fb543d4d1b0e2a9018f72e347119c920f74a2b
Reviewed-on: https://gerrit.instructure.com/13741
Reviewed-by: Cody Cutrer <cody@instructure.com>
Reviewed-by: Jon Jensen <jon@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
test plan
* hide final grades in a course
* the should be shown in the get course api
* create a course with hide final grades set to
true through the api
* update the hide final grades through the api
* all api calls should reflect course UI setting
Change-Id: Iebd4c42ebb7c8f11285c5c85d1749348331fa8f8
Reviewed-on: https://gerrit.instructure.com/13685
Reviewed-by: Cody Cutrer <cody@instructure.com>
Tested-by: Cody Cutrer <cody@instructure.com>
test plan:
* configure LDAP to look up pseudonym by a specific attribute
* log in with an SIS pseudonym
* it should not give a page error when logging in
Change-Id: Id031760ebcf1a34720bfc6d2c2cd2dca7bf5a9ef
Reviewed-on: https://gerrit.instructure.com/13736
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
- can fetch page: next, prev, first, last, bottom,
or top page
- can listen to 'fetch', 'fetch:next', etc.
- can listen to 'beforeFetch', 'beforeFetch:next'
etc.
Change-Id: I6f6a97fae6e2337d42e4c5e6e2d60c3cceea8dc4
Reviewed-on: https://gerrit.instructure.com/13644
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Zach Pendleton <zachp@instructure.com>
test plan: create a file config/test.yml that contains nothing but
whitespace. in a console, run Setting.from_config('test') and verify nil
is returned, no error is raised.
Change-Id: Ibc276626c50ac2d719021dcec82ae02f8459df98
Reviewed-on: https://gerrit.instructure.com/13722
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
the problem was, the same calendar event object was placed in
course.imported_migration_items twice, and thus had the date
shifted twice, moving it further in the future than it should go.
test plan:
* copy the course referenced in #9514, shifting the dates
forward (but still start on a Sunday, and end on the Tuesday
two weeks and two days later)
* the calendar events should stay on the same days as the
assignment events with the same number
Change-Id: I220003dcae596ec895cc04e4f7e7323246cde96f
Reviewed-on: https://gerrit.instructure.com/13669
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
no functional changes, just reorganizing things. needed for #7277
test plan:
1. all conversation specs should pass
Change-Id: If380ca04942e2923401a0de1883386c67199a832
Reviewed-on: https://gerrit.instructure.com/13616
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Joe Tanner <joe@instructure.com>
fixes#10583
see also #6233, the same bug, but non-zip case. this changeset
makes zip uploads go through the same Attachment#handle_duplicates
workflow (but keeps the ability to batch-delete overwritten files).
test plan:
* have a module with file items
* overwrite the files via zip upload
* make sure the module items don't disappear, and that they
refer to the new version of the file
Change-Id: Ib5f530021285da3303b64bbd8d4b5b2746206ef6
Reviewed-on: https://gerrit.instructure.com/13720
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Files weren't being replaced if they had a filename different
from their display_name.
The content_tags for modules are cleared before they are
imported so that only the items aren't duplicated.
Test Plan:
* Import a package twice
* The modules should be correct and not have 2 items for each item
* The files should also not be duplicated
closes#10405
Change-Id: I3cb15c2530734185675a2b8bb9017bdf6ac35202
Reviewed-on: https://gerrit.instructure.com/13695
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
on the show rubric page, when a user edited a rubric, saved it,
and then clicked the edit rubric button again, it wasn't opening
the edit form.
test plan:
* from course outcomes page, click 'manage rubrics' button;
* create a new rubric;
* click the 'edit rubric' button and then click the 'update rubric'
button;
* without refreshing the page, click 'edit rubric' again and verify
that the edit form displays as expected.
Change-Id: If65785f09f1a0f5034d67b503597bc674d79f2d5
Reviewed-on: https://gerrit.instructure.com/13688
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Ryan Florence <ryanf@instructure.com>
fixes#10347, #10440
this commit also replaces the display of login_id with the
user's email address.
test plan:
* create a course with users;
* navigate to courses/:id/users and verify that students and
teachers/tas are being sorted by sortable_name;
* make some test calls to /api/v1/courses/:id/users and verify
that it continues to work as expected.
* confirm that user's email address is displayed instead of their
login_id.
Change-Id: Id67557d98e8e2c0c42402ee64528e1f27c91b78c
Reviewed-on: https://gerrit.instructure.com/13592
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Ryan Florence <ryanf@instructure.com>
test plan:
* on any canvas page, tab to the logo link and verify that
its outline styles are displayed.
Change-Id: Ifdbd35902bef9e8201d10d6b52921551d391f19d
Reviewed-on: https://gerrit.instructure.com/13579
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Joe Tanner <joe@instructure.com>
test plan:
- try to create a new rubric with a title longer than 255 characters
Change-Id: I83f17aafbd6e322132a9af67a10971aff5382d0a
Reviewed-on: https://gerrit.instructure.com/13707
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
fixes#10573
this api endpoint accidentally got switched to be paginated, but we need to
continue supporting it unpaginated for now, even though it is deprecated.
test plan:
- in a course with > 10 students
- query /api/v1/courses/<id>/students
- you should get all the students back
Change-Id: I62928c5f4a2b6f0c7854be8afc5e9341e6481b37
Reviewed-on: https://gerrit.instructure.com/13684
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Brian Palmer <brianp@instructure.com>
new inputs on discussion and announcement pages were using
placeholder attributes in place of labels, which was making them
unreadable by some screen readers.
this commit adds labels to each of these inputs. it also focuses the
new/edit form when creating a new discussion or announcement.
test plan:
* using voiceover or another screen reader, navigate to the
course discussion page;
* verify that the search input's label is spoken when navigated
to;
* click the "start a discussion" button and verify that the title
input is spoken and focused on page load.
Change-Id: I7bb9fd950d8d6c234b6b82eba98b059e8355e69d
Reviewed-on: https://gerrit.instructure.com/13453
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Cameron Matheson <cameron@instructure.com>
test plan
* create a course
* conclude the course
* the course should be in the provisioning report with
status 'concluded'
Change-Id: I111fd9f05fd8c7f460e2241ec3338bec5cbe3ea9
Reviewed-on: https://gerrit.instructure.com/13664
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
fixes gh#211
test plan:
* use the /api/v1/courses/{courseId}/recent_students endpoint with
a mysql backend
Change-Id: Id19944044cf6cce1e11a847b60c7d7294dd33c89
Reviewed-on: https://gerrit.instructure.com/13628
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
fixes: #10343
test plan:
load courses/x/discussion_topics with a discussion
with a really long name.
resize your browser window really big and really
small and make sure it works all the way between
the sizes.
Change-Id: I0a120d292a82296b59dcf856a79d4b8e7600d42d
Reviewed-on: https://gerrit.instructure.com/13662
Reviewed-by: Mark Ericksen <marke@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
test plan:
* go to gradebook2 and change a grade
* go to /gradebook/history for the course, and view the grade change
you just made. it should say it was you that did it
Change-Id: Ie3f91b7ceadbe99b3cccff33a957595e5d8c2cf6
Reviewed-on: https://gerrit.instructure.com/13653
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
fixes#9278
when navigating the modules and assignments pages with
a screen reader, display the on-hover links and actions to the user.
test plan:
* using a screen reader, navigate to a course modules page and the
course assignments page;
* navigate each page and verify that the move, edit, and
delete links are read as expected.
Change-Id: Ib8a4b3770fc155169675c147f982bd508a5d1d03
Reviewed-on: https://gerrit.instructure.com/13514
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Ryan Shaw <ryan@instructure.com>
only grant observer permissions if the user is tied to the student as an
observer, and in the same course. do not grant observer permissions if
the user is tied to the student via a StudentEnrollment (how does this
tie get created?) or if the user is tied to the student as an observer
in a different course.
fixes#10508
test-plan:
- enroll students John and Jane in course A and course B
- set Jane as the associated_user_id on John's StudentEnrollment
- John should not be able to read Jane's grades
- add Bob as an observer of Jane in course A and as an observer of John
in course B.
- Bob should not be able to read Jane's grades in course B nor John's
grades in course A.
Change-Id: I292e518fe9fbebeaf9e36ee0c85d97279049ae55
Reviewed-on: https://gerrit.instructure.com/13659
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
set_need_notify is called in a before_save. don't let it fail and
prevent the update when the attachment doesn't have a folder.
fixed#10402
test-plan:
- perform an action that creates an attachment with no folder
(e.g. try to download the grades csv for an assignment)
- attempt to modify and then save the attachment (via console, or e.g.
the ContentZipper job triggered by downloading the grades csv for an
assignment)
- should not raise an error
Change-Id: I04f854c0fe9b7e554e62f4ecb35b537048b60a75
Reviewed-on: https://gerrit.instructure.com/13666
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
test plan: Set up your logging.yml to go to syslog, with a log_level
defined (see logging.yml.example). If you're on OS X you already have
syslog running, just open Console.app and view system.log. Note though
that syslog is probably set to filter < warn or error logs.
Change-Id: I828a09329fae612d46e43fe761849a6e1336a4d3
Reviewed-on: https://gerrit.instructure.com/13623
Reviewed-by: Brian Palmer <brianp@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
fixes#8177, #9253
this commit also improves accessibility in the grades table
by adding an aria-label to dropped assignment cells that can
be read by screen readers.
Test plan:
* Go to the gradebook2
- compare grades and dropped assignments to those listed on the
grade_summary page (you can get to the grade_summary page by
clicking on a student's name in the gradebook). Be sure to
compare the grades with and without including ungraded assignments
* as a student, go to the grades page
- try changing some scores and make sure the final grade, assignment
group totals, and dropped assignments change accordingly.
Change-Id: I938354781e6925018bc7c3669e71dc18e2b7ab1b
Reviewed-on: https://gerrit.instructure.com/12682
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Ryan Shaw <ryan@instructure.com>
The blue link text and notification page text is currently difficult to
read for some users because of the low contrast with other colors.
test-plan:
* verify link text on the discussions and dashboard are readable.
* verify blue text on the notifications page is still readable
Change-Id: I1ff16ef23d0c8cb67fc89072948d1789f273a96c
Reviewed-on: https://gerrit.instructure.com/13399
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jon Jensen <jon@instructure.com>
currently this only works for the user's calendar feed, not the
individual course calendar feed, since that feed doesn't include any
information on which user is requesting the data. that's a further TODO.
fixes#9647
test plan:
* create a course event in calendar2 which has different times for
different sections in the course.
* go to /calendar and load the Calendar Feed as a teacher, verify that
two separate individual events are shown one for each section, just
like in the web ui.
* go to /calendar and load the Calendar Feed as a student, verify that
just the one event for that section is shown
* in both cases, there shouldn't be a separate copy of the event that
spans both time periods, like there is on prod right now
Change-Id: I3244121ef3ff911eac043a5f69bb5944556a828a
Reviewed-on: https://gerrit.instructure.com/13394
Reviewed-by: Bryan Madsen <bryan@instructure.com>
Tested-by: Bryan Madsen <bryan@instructure.com>