See the code comment for rationale
test plan: Without this patch applied, you will get encoding errors on
some pages in ruby 1.9.3. With this patch you should no longer get those
errors.
Change-Id: I52fff9c3087ec319cd336e675077e25869abeed3
Reviewed-on: https://gerrit.instructure.com/15467
Reviewed-by: Stanley Stuart <stanley+gerrit@instructure.com>
Tested-by: Stanley Stuart <stanley+gerrit@instructure.com>
This made a class instead of module for processing lti
xml, allowing it to be used easier in different places.
Test Plan:
* Adding an external tool by url should work beautifully
closes#11878
Change-Id: I1f0c1d1bddafd735d443d4093de30bfa161a8720
Reviewed-on: https://gerrit.instructure.com/15452
Reviewed-by: James Williams <jamesw@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
fixes#11565
test plan:
- look at generated documentation for sections api
- create, update, and delete course sections with the API,
checking the following:
- verify documented parameters are accepted
- verify the Section json object is returned
- verify the SIS ID can only be set by admins
- verify students can't create/modify/delete sections
- verify you can't delete a section that has
active enrollments
- cross-list a section using the API
- make sure it requires admin privileges
- make sure it fails if the target course is in
a different root account
- un-cross-list a section using the API
- make sure it requires admin privileges
- make sure it fails if the section isn't
cross-listed
Change-Id: I9dbf2541f5f88f015514830e6cc79a564b1ff3c3
Reviewed-on: https://gerrit.instructure.com/15234
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Sterling Cobb <sterling@instructure.com>
There are still several issues that need to be resolved with this, so it's
being removed from master for now.
Commits being reverted are:
f77b1d77f0
"make media_object info action not an api, fixes: #11464"
497156a4f7
"fix error when viewing a video file that has an unknown source type"
39eaab2269
"use the playlist urls to get kaltura urls"
a22f8c13a3
"Use html5 to show videos by default & show subtitles"
Change-Id: Iefcef83a42174634485e1c61e993244b0029aae2
Reviewed-on: https://gerrit.instructure.com/15440
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Ryan Shaw <ryan@instructure.com>
fixed a problem where checking the "Overwrite assessment
content with matching IDs" on the "Import Quizzes" page
wasn't actually overwriting the content
test plan:
* import the original quiz file from redmine
* look at the quiz questions
* import the updated quiz file from redmine, checking
the "overwrite" option
* confirm that another quiz has not been added
and that the original quiz questions have been updated
closes#11662
Change-Id: Ib4ec5d79e062a4ae3e8abad4cbdede96b600a64a
Reviewed-on: https://gerrit.instructure.com/15282
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
fixes#11847
test plan:
- create an assignment
- click on the assignment in calendar 2 to show details
- click on the title link in the assignment details dialog
- should be taken to the assignment page
Change-Id: I1fe7f0923fcb21a4e0208698ebeb7ea897ef16d8
Reviewed-on: https://gerrit.instructure.com/15385
Reviewed-by: Mark Ericksen <marke@instructure.com>
Tested-by: Bryan Madsen <bryan@instructure.com>
fixes#11388
This should work for single and multiple accounts.
You can now enable a plugin that lets you set
how long (in minutes) before users on your account
are automatically logged of because of inactivity.
You are required to set this to at least 20
minutes or more.
Test Plan
Steps:
1. log in as a site admin
2. [plugins]
3. [Sessions]
4. on the account drop down menu, select all
accounts, then enter a time in the text field
in minutes. At least 20 minutes
5. [Apply]
6. log out
7. go to /login and make sure the
"stay signed in" checkbox is checked
8. log in with any user that can get on the
account you enabled the plugin to work for
9. wait for a little longer than the amount of
time you set the plugin for
10. try to complete an action, like clicking on
course or the canvas home page logo
You should be logged out
Thanks Adam for writing this test plan.
Change-Id: If7dc772e4a1a59e646645c698d732308d3e0a19f
Reviewed-on: https://gerrit.instructure.com/15231
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
test plan
* existing specs should all pass
* when including teacher enrollments from course conditions should keep enrollments.type
Change-Id: Ic99fc40069b4d5ab003ed43cd1b7c9f34454a43f
Reviewed-on: https://gerrit.instructure.com/15097
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jacob Fugal <jacob@instructure.com>
basically use ids, not uuids
test plan:
* as a site admin
* go to a user
* click "merge with another user"
* in the id field, put in a global id
* it should pull up that user
* finish the merge
* it should succeed
Change-Id: I11f6a2e989f8342d748c5a7ba63aac414f340ca4
Reviewed-on: https://gerrit.instructure.com/15366
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jacob Fugal <jacob@instructure.com>
this removes all the css/javascript for collections
and some communities stuff, we can reintroduce them
if/when we actually use them
Change-Id: I7751bdf4653eac869d9d20eaed8c8835a8649930
Reviewed-on: https://gerrit.instructure.com/15358
Reviewed-by: Ryan Florence <ryanf@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
This was causing db errors trying to do ErrorReport.find("none")
fixes#11816
test plan: configure rails to render the public error pages (turn off
local mode), then add a line to generate a low-level error (such as a
marshal error when reading a cache value, which is how we discovered
this). in the error form the id should be blank, rather than "none".
Change-Id: I83367d1073739bc5588e8cfb59318c502c3eb41a
Reviewed-on: https://gerrit.instructure.com/15367
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Zach Pendleton <zachp@instructure.com>
this improves voiceover support, because voiceover explodes
on role="tree" elements.
test plan:
* using voiceover, attempt to use the outcomes navigation and
verify that it is read.
Change-Id: I94b7932aed7c262e97f6863fc82167fd00103759
Reviewed-on: https://gerrit.instructure.com/15228
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Bryan Madsen <bryan@instructure.com>
test plan:
1. delete a root entry
2. load the page (it should work)
Change-Id: I7a6a27bf8253955f74c518981ade3f5b87fee972
Reviewed-on: https://gerrit.instructure.com/15332
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Ryan Shaw <ryan@instructure.com>
test plan:
1. expand comments in a side-comment discussion
2. observe the authors don't all say "unknown"
Change-Id: Ib8392ef5d5c9a145a8812555cfbe154594b0a39c
Reviewed-on: https://gerrit.instructure.com/15328
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Ryan Shaw <ryan@instructure.com>
fixes#11777
we were filtering the list of submissions once for every assignment in the
course, rather than filtering once and saving that filter.
test plan:
- in a large course (eg 700 students, 50 assignments, 40k submissions)
- go to a student grade page (/courses/x/grades/y)
- it should load
- make sure grade distribution graphs still work for regular sized courses
Change-Id: Ib14718d4725aa9ddd547018d3875449fb515e073
Reviewed-on: https://gerrit.instructure.com/15351
Reviewed-by: Stanley Stuart <stanley+gerrit@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
fixes#11846
test plan: create a new group category with self-signup and specify to
create 500 new groups. only 200 should be created.
Change-Id: Ie5189cf528af96c96a5f2e9e28dce93e9a97e955
Reviewed-on: https://gerrit.instructure.com/15378
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
Reviewed-by: Jacob Fugal <jacob@instructure.com>
+ specs for ContextModulesController#update_item
test plan:
* create an external tool module item
* edit the item and change the url
* the change should stick
fixes#11831
Change-Id: I36d6d31c2ab9de963292afec73adb1eb375c7783
Reviewed-on: https://gerrit.instructure.com/15362
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
test plan:
* place a zip file at /var/tmp/test.zip
* create an eportfolio named "/../../../../../../../../../var/tmp/test"
* export it
* the contents of the zip should be the eportfolio, not the contents
of /var/tmp/test.zip
Change-Id: I9c1991aefa46f439cf9b6543dadc76516d2f5b84
Reviewed-on: https://gerrit.instructure.com/15372
Reviewed-by: Brian Palmer <brianp@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
in order to not have to support buttons with .ui-button AND
.button AND .btn classes this simplifies and and makes our
codebase more consistent by deprecating the .button class
with .btn
Change-Id: I4802d785a47b36aa477f302e6ac8c87715db8a62
Reviewed-on: https://gerrit.instructure.com/15194
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Ryan Shaw <ryan@instructure.com>
and take AssetUserAccess.for_users back out since it's redundant
test-plan:
- all works as before
- you can now do PageView.for_users([a_user_id]) without error
- and AssetUserAccess.for_user(a_user_id)
Change-Id: Ic9abc5bc3a0d376ab4386a780e1fc74446efeab4
Reviewed-on: https://gerrit.instructure.com/15295
Reviewed-by: Brian Palmer <brianp@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
changed the context_external_tool url matching so that extra
parameters in the launch url will be ignored
however, if the tool url has parameters, then those have to match
test plan:
* Add an external tool to a course (e.g. http://example.com)
* Add a external tool item to a module, including query params
in the url (e.g. http://example.com?parameter=value)
* Confirm that it still uses the right tool
closes#8903
Change-Id: I2f57d600dd64d479a80b188b9ab0100a389ec519
Reviewed-on: https://gerrit.instructure.com/15160
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
fixes a problem where quiz questions imported from a qti
file would always be added to the "Imported Questions"
bank, rather than a quiz specific bank.
test plan:
* import the qti quiz file from redmine
* go to quizzes -> question banks
* confirm that the questions were added to a question bank
with the same title as the imported quiz
closes#11689
Change-Id: Id97ceef6f3db6c835ec8897ed94e6516e5b5b7c1
Reviewed-on: https://gerrit.instructure.com/15266
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Sterling Cobb <sterling@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
The create method is too late to assign a shard.
refs #11772
test plan: with cassandra page views enabled, the
PageView.process_cache_queue job should not fail with ReadOnly errors.
Change-Id: I39c2510be3a871bacb11f8fe5aa73def6af51e02
Reviewed-on: https://gerrit.instructure.com/15329
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Ethan Vizitei <ethan@12spokes.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
test plan:
* add an sms channel to a user
* retire that channel
* merge that user with a user in a different shard
Change-Id: Ibd24978c7456505b813961044b635b99b6beec6b
Reviewed-on: https://gerrit.instructure.com/15318
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Brian Palmer <brianp@instructure.com>
The following changes have been made:
- Assignment Created
- students see the due date that applies to them
- admins see "Multiple Dates"
- Assignment Due Date Changed
- students see the due date that applies to them;
they receive no notification if their date doesn't change
- admins receive a separate notification for each due
date that changes, that they have access to;
the message indicates which section or group applies
(section-limited TAs will not get messages about due dates
in sections they can't see)
- Assignment Submitted Late
- the message text does not change, but the student's overridden
due date is checked
- Group Assignment Submitted Late
- same as previous
There were some bugs fixed along the way:
- no longer send duplicate Assignment Submitted and
Assignment Resubmitted notifications when an assignment
is resubmitted
- Group Assignment Submitted Late actually goes out
(there was a typo in the whenever clause)
Test plan:
- Create a course with two sections and a teacher
- Enroll a student in each section
- Enroll a section-limited TA in each section
- Make sure everybody involved is signed up for "Due Date"
notifications, ASAP
- Using the API, Create an assignment with a default due date
(in the past) and an overridden due date for section 2
(in the future). the assignment and override must be
created in the same request (use the "Create an assignment"
API and supply assignment[assignment_overrides]; it may
be easier to use a JSON request body)
- Verify that everybody got an "Assignment Created"
message (use /users/X/messages)
- the teacher should see "Multiple Dates",
as should the TA in section 2 (because the default date
is still visible to him)
- the student and the TA in section 1 should see
the default due date
- the student in section 2 should see the overridden
due date
- "Due Date Changed" messages will not go out for assignments
that were created less than 3 hours ago (by design, and not
new with this changeset), so for the remaining items, you
either need to wait 3 hours, or falsify created_at for the
assignment you just made...
- Change the default due date for the assignment, leaving it
in the past
- Everybody except the student in section 2 should get a
notification with the new date
- Change the overridden due date for section 2, leaving it
in the future
- everybody except the teacher and TA in section 1 should get
a notification about the new date
- the teacher and section-2 TA's notifications should indicate
that they apply to section 2 (the student's should not)
- submit the assignment as each student
- the teacher should get one notification about each submission:
the one about the student in section 1 should say it's late;
the one about the student in section 2 should not
- submit again
- the teacher should get one notification about each submission:
the one about the student in section 1 should say it's late;
the one about the student in section 2 should not, and should
be identified as a resubmission
(there is no late-re-submission notification)
Change-Id: I26e57807ea0c83b69e2b532ec8822f6570ba1701
Reviewed-on: https://gerrit.instructure.com/14662
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
test plan
* run report through ui or
run report with api passing empty string for term
* report should work
Change-Id: Ib3a325209bc003c91e86d402f154232c8d62de5b
Reviewed-on: https://gerrit.instructure.com/15258
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Rob Orton <rob@instructure.com>
The new version contains a fix to treat TypeErrors during unmarshalling
as a cache miss, to help facilitate the 1.8 -> 1.9 transition.
refs #11768
Change-Id: If8ddf3636fb7b09f60e48c36767cfc576b09a91c
Reviewed-on: https://gerrit.instructure.com/15322
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Stanley Stuart <stanley+gerrit@instructure.com>
now looks like: http://cl.ly/image/3Q2R0l0n3e15
cleaned up styling so it used real dialog buttons.
refactored code to lazy-load math quill css, js
and font only when first needed.
Change-Id: I7cf0894222d7fb7d6fc2ddb09935b2c849bbd4ac
Reviewed-on: https://gerrit.instructure.com/14562
Reviewed-by: Jon Jensen <jon@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
to fix problems with connection sharing across fork boundaries
test plan:
* set worker_max_job_count: 2 in config/delayed_jobs.yml
* queue up a ton of jobs
* start a delayed jobs pool
* it should not die off
Change-Id: I248743a401a8f434270b64da43f1da85d67cd8f1
Reviewed-on: https://gerrit.instructure.com/15312
Reviewed-by: Brian Palmer <brianp@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
This had the unintended behavior of also making it Enumerable, iterating
over the one struct field, which made it quack like a AssociationProxy
(except of course, not working correctly).
refs #11409
test plan: no visible changes, specs should still pass
Change-Id: Ia45feee6f4d504517d9256948fe61009c0f13a73
Reviewed-on: https://gerrit.instructure.com/15323
Reviewed-by: Jacob Fugal <jacob@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
fixes#10236
test plan:
check each updated form to ensure it looks correct and works
Change-Id: I073c3bff5860bab0b892fecbf61a41a8e9c5ec76
Reviewed-on: https://gerrit.instructure.com/13904
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Ryan Shaw <ryan@instructure.com>
fixes: #11476
restyle mobile login page to handle different
screen dimensions and resolution (retina/non-retina)
so that it works on new iPhone, android browsers, etc.
use mobile_login for iPad iOS app and android app too
the iOS and android apps are now going to pass a
query string param of mobile=1 when it loads the
webview for login. it will set a cookie to
remember that it prefers the mobile optimized
login screen so that if it goes through any
redirection (bad user/pass) it still looks right.
fixes: #11686
Change-Id: Iafdc7522189dc44be5c5bc4592c5cb194a188612
Reviewed-on: https://gerrit.instructure.com/15283
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Chris Hart <chris@12spokes.com>
if you try to start the rails console from
another directory on beta it explodes. This
just allows the config file to require
the plugin_assets class based upon a relative
pathing from the rails root directory.
TEST PLAN:
SERVER
1) Start the server process
2) you should be able to browse to
the server and have appropriate
styles for any plugins (like the
analytics area)
CONSOLE
3) 'cd' to any subdirectory of the rails
root directory
4) start the rails console
5) the console should start without exploding
Change-Id: Ia14aa10d33ceeb830baf3ae640ef3c17f4c7d908
Reviewed-on: https://gerrit.instructure.com/15281
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Brian Palmer <brianp@instructure.com>
Change-Id: I89fea8c83110fae8f0eff77909a0c8acf3507462
Reviewed-on: https://gerrit.instructure.com/15268
Reviewed-by: Brian Palmer <brianp@instructure.com>
Reviewed-by: Stanley Stuart <stanley+gerrit@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
There's now a UI for this, no need to use the console.
Change-Id: Iffdb70d41c5b4cca94a6bb442107d3923911e16d
Reviewed-on: https://gerrit.instructure.com/15232
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
* Add CommunicationChannel#merge_candidates and use that in
CommunicationChannelsController#confirm, UsersController#create,
and profile settings view
* change a few pseudonym accesses to be based off the account, not
the user
* search all_pseudonyms in a few places
* shorten @communication_channel.confirmation_code to @nonce in
several places
test plan:
* create a normal user in shard 1. invite the same e-mail address to
a course in shard 2. accept the invitation as you're existing user
(you should have to log in)
* invite a different e-mail address to a course in shard 2. accept
the invitation while logged in as the user from the previous step
Change-Id: I9e7a4adb0b816650f444210c7a110b08858ec037
Reviewed-on: https://gerrit.instructure.com/15121
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jacob Fugal <jacob@instructure.com>
test plan:
* turn on cross-shard invitations in the console
(Setting.set('cross_shard_invitations', '1'))
* create a user with an email address in a shard (NOT
a site admin)
* in an unrelated shard with open registration on,
as an admin invite that e-mail address to a course
* log in as the original user on the first shard; the invitation
should show up on your dashboard
* accepting/rejecting that invitation is *not* yet supported
Change-Id: I3b0c9657fe0dd37a737af9f4253ea8ef8b2f2b91
Reviewed-on: https://gerrit.instructure.com/14903
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jacob Fugal <jacob@instructure.com>
allows it to be a different shard than where the file is. I had
to remove type casting from dynamic finders that don't know how
to deal with non-integral global ids.
also cache s3 urls on the same shard as the attachment
test plan:
* have multiple shards and S3 storage
* have a single safe files domain
* you should be able to upload and download files in all shards
* verify that it's going against the files domain, not the normal
domain
Change-Id: I2b498fc1df20d5b43bf20f702580451621eeaf6a
Reviewed-on: https://gerrit.instructure.com/15158
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Brian Palmer <brianp@instructure.com>