Commit Graph

8095 Commits

Author SHA1 Message Date
Derek DeVries a7f1c4736c treat flag_question as a checkbox role and toggle aria-checked when clicked
fixes CNVS-6632

test plan
- use screenreader to check/uncheck the flag question icon on a quiz question

Change-Id: I5ce10b44d1381d8b7ab188e13a9248dd35b732e2
Reviewed-on: https://gerrit.instructure.com/24888
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Josh Simpson <jsimpson@instructure.com>
QA-Review: Myller de Araujo <myller@instructure.com>
Product-Review: Derek DeVries <ddevries@instructure.com>
2013-10-02 18:17:31 +00:00
Derek DeVries 781b174ebd explicitly set quiz form method in attempt to fix 'only post request are allowed'
fixes CNVS-8473

test plan
- this should theoretically not change anything... but to be safe:
- quizzes should continue to submit correctly
- "next" button on quizzes taken one question at a time should work correctly
- nobody can reproduce this error, so this fix is basically a shot in the dark

Change-Id: Ic5208ff0cfdabb24adc17a88fc31a1b06c30fd02
Reviewed-on: https://gerrit.instructure.com/24886
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Myller de Araujo <myller@instructure.com>
Reviewed-by: Josh Simpson <jsimpson@instructure.com>
Product-Review: Derek DeVries <ddevries@instructure.com>
2013-10-02 18:17:19 +00:00
Jacob Fugal 3f0968bb52 application/json+canvas-string-ids Accept header
fixes CNVS-7597

when given this header, data structures passed to render :json are
pre-processed before serialization to json such that any integer values
in 'id', 'foo_id', or 'foo_ids' fields (also 'ids' fields, but we don't
have any of those currently that I'm aware off), at any level (e.g.
within a nested data structure), are cast to strings.

test-plan:
 - full regression testing of both the UI (as it makes API calls) and
   the documented API
 - no UI behavior should change
 - API behavior should change only as described above

Change-Id: I4e0a68957038be063cf488dd9ec2262452dea3cf
Reviewed-on: https://gerrit.instructure.com/23956
Reviewed-by: Jacob Fugal <jacob@instructure.com>
Product-Review: Jacob Fugal <jacob@instructure.com>
QA-Review: Jacob Fugal <jacob@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
2013-10-02 18:05:31 +00:00
Jacob Fugal b12791aa99 to_json unnecessary (and wrongish) in render :json
refs CNVS-7597

render :json => thing will call ActiveSupport::JSON.encode(thing) unless
thing is a String. ActiveSupport::JSON.encode(thing) just calls
thing.to_json but with some circular reference checking that we want. we
may also want enhance ActiveSupport::JSON.encode to do additional
processing, and calling to_json straight up would bypass that.

in the cases where we do need to do the structural transformation before
passing to render :json (e.g. because of need to pass arguments), use
as_json to do structural transformation only, vs. to_json that does
serialization of the as_json result.

adds a rake task to lint the controllers to enforce as_json over to_json
in render json calls.

test-plan: heavy regression testing; no end behavior should change
(except a pair of serialization bugs that got fixed)

Change-Id: I7a91a9fe0eca70456bc5bca233f0ed6b27a54aaf
Reviewed-on: https://gerrit.instructure.com/23650
Reviewed-by: Jacob Fugal <jacob@instructure.com>
Product-Review: Jacob Fugal <jacob@instructure.com>
QA-Review: Jacob Fugal <jacob@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
2013-10-02 18:05:22 +00:00
Cody Cutrer 1ffd9845c9 spec: remove deprecated helper
no longer necessary to do this manually in specs

Change-Id: I7f121743a5059234560c431c5225485124d85b5d
Reviewed-on: https://gerrit.instructure.com/24769
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Rob Orton <rob@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
2013-10-02 17:01:23 +00:00
Jacob Fugal 162f5d1e84 inline (and optimize) User.file_structure_for
refs CNVS-7597

this was the only call site, and the implementation did a lot in ruby
that is better done in the database

test-plan:
  - regression testing on /api/v1/courses/123/files

Change-Id: I120438c58f1c8de34503a0d14fc51d3853eb9385
Reviewed-on: https://gerrit.instructure.com/23943
Reviewed-by: Jacob Fugal <jacob@instructure.com>
Product-Review: Jacob Fugal <jacob@instructure.com>
QA-Review: Jacob Fugal <jacob@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
2013-10-02 16:15:31 +00:00
Cody Cutrer 83de92811d clear plugin settings cache after transaction commit
Change-Id: I0f6a72d7e8562618dbd98ad128b55a970c532c82
Reviewed-on: https://gerrit.instructure.com/24640
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jacob Fugal <jacob@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
2013-10-01 23:51:18 +00:00
Cody Cutrer a19b3ef8dd spec: run transaction commit callbacks when down to 1 transaction
removes need for run_transaction_commit_callbacks all over the place

Change-Id: Id878276ed86bb37f625ef34412b16d1f75a63bca
Reviewed-on: https://gerrit.instructure.com/24758
Reviewed-by: Jacob Fugal <jacob@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
2013-10-01 23:51:04 +00:00
Brad Humphrey fa699dd1c4 unit tests for lit outcomes replace result
now we only automatically grade assignments when a grade is passed back,
otherwise we leave them ungraded so that the teacher will be notified.

Test Plan:
 - Install a homework submission tool
 - Submit a grade via LTI
   * Ensure that the grade submits correctly
 - Submit a url without a grade
   * Ensure that the teacher is notified of the ungraded assessment
   * Ensure that the url is recorded for that submission
 - Submit text without a grade
   * Ensure that the teacher is notified of the ungraded assessment
   * Ensure that the text is recorded for that submission

Change-Id: Ic941c54062685ef1bba0aa860682db40cff952e3
Reviewed-on: https://gerrit.instructure.com/24474
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Adam Phillipps <adam@instructure.com>
QA-Review: Adam Phillipps <adam@instructure.com>
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
2013-10-01 21:19:51 +00:00
Braden Anderson 1551548196 conversations: make links in messages clickable
fixes CNVS-8396

test plan:
  * send a conversation message containing a URL
  * open it in conversations beta
  * verify that your URL is a link

Change-Id: I2028c01e53f5efa30b36be51c023176fe2288f7c
Reviewed-on: https://gerrit.instructure.com/24667
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>
2013-10-01 19:54:28 +00:00
Matthew Irish 232479602a disable search on assignments index while loading
fixes CNVS-8285

added "disabled" to the input in the index template

added a handler that enables the input and removes itself when the
assignmentGroup collection is reset

test plan:
- enable draft state
- go to the assignments index page
- verify that the search input is disabled while items are loading
  (depending on how snappy things are being you might have to use
   network link conditioner or similar to slow things down)
- verify that you can type in the input after assignment groups finish
  loading

Change-Id: Id217a9372a8601bd1928ea958cb06a94e4531f4a
Reviewed-on: https://gerrit.instructure.com/24811
QA-Review: Amber Taniuchi <amber@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Liz Abinante <labinante@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
2013-10-01 19:48:48 +00:00
James Williams 66799050ba expand angel fill-in-multiple-blanks question answer importing
test plan:
* import the package referenced in the ticket
* check the quiz titled "Test 7"
* check the question titled
 "3.3 find p-value two-tailed mu with website"
* confirm that the question has answers

fixes #CNVS-5672

Change-Id: I8e2597475ead30a10e57b9a9edac18c0e10d6fe6
Reviewed-on: https://gerrit.instructure.com/24677
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Hannah Bottalla <hannah@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
2013-10-01 18:43:44 +00:00
James Williams b56d8dca5d extend discussion topic api index to restrict by pinned
test plan:
* referring to the discussion topic api documentation,
use the "scope" argument to make index calls, confirming
that you are able to retrieve either pinned discussions or
unpinned discussions

closes #CNVS-8436

Change-Id: Id82fef1903472d3bb6e39b79bc2b3edea9d2c6b5
Reviewed-on: https://gerrit.instructure.com/24720
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Cam Theriault <cam@instructure.com>
Product-Review: Zach Pendleton <zachp@instructure.com>
2013-10-01 18:42:02 +00:00
Cody Cutrer 8e1aab51a8 upgrade shackles
fixes CNVS-8317

test plan:
 * have a separate queue config, with a slave environment that uses
   a separate host
 * in script/console, execute the following:
   * Delayed::Job.connection_pool.spec.config
   * Shackles.activate!(:slave)
   * Delayed::Job.connection_pool.spec.config
   * Shackles.activate!(:master)
   * Delayed::Job.connection_pool.spec.config
 * The config output for the first and third should be identical; for
   the second time, the host key should be the one for the slave

Change-Id: Ied6ec2bea1ff0e07a47434a5ad6d80ccd06e3bee
Reviewed-on: https://gerrit.instructure.com/24819
Reviewed-by: Jacob Fugal <jacob@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
2013-10-01 18:28:44 +00:00
James Williams 20482e3ff8 extend content migration progress visibility and status view
refs #CNVS-8258

Change-Id: I154828d91802389e0fcd686433c1d075f6bee70c
Reviewed-on: https://gerrit.instructure.com/24638
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Hannah Bottalla <hannah@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
2013-10-01 18:17:21 +00:00
Simon Williams 31273df787 make speedgrader label more clear
fixes CNVS-8360

test plan:
- the label in speedgrader settings should say
  'Grade by question (beta)'

Change-Id: I16b32586713b962ab7ae4d5bad93faf9a19ed976
Reviewed-on: https://gerrit.instructure.com/24642
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Matthew Irish <mirish@instructure.com>
QA-Review: Amber Taniuchi <amber@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
2013-10-01 17:42:36 +00:00
Zach Pendleton 1d73da82a9 fix pinning of discussions on pages > 1
fixes CNVS-8314

test plan:
  * create over 100 discussions in a course;
  * as a teacher, navigate to the course discussions page;
  * scroll to the bottom of the page and, using the gear
    menu, attempt to pin the bottom-most discussion;
  * verify that it properly pins.

Change-Id: Icc064daf2316d8de37e6b45d6e6bb40320f5c90b
Reviewed-on: https://gerrit.instructure.com/24786
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Braden Anderson <banderson@instructure.com>
Product-Review: Zach Pendleton <zachp@instructure.com>
QA-Review: Zach Pendleton <zachp@instructure.com>
2013-10-01 17:28:28 +00:00
Wesley Smith c61a8efc94 expose API for hiding notifications
fixes CNVS-7863

testing steps:
- Create a discussion or something similar that will create a new stream item on the dashboard.
- With postman, send DELETE to the following endpoint: /api/v1/users/self/ignore_stream_item/<stream_item_id>
- Verify that the stream item has been hidden
- With postman, send DELETE to the following endpoint: /api/v1/users/self/ignore_stream_item
- Confirm that all stream items have been hidden
- Generate API docs, and veryify that under the USER api there is a doc for 'Hide a stream item'

Change-Id: Id3c19952bdf76d8ee3e6234a661fa98de002ea4e
Reviewed-on: https://gerrit.instructure.com/24152
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jon Jensen <jon@instructure.com>
Product-Review: Marc LeGendre <marc@instructure.com>
QA-Review: Marc LeGendre <marc@instructure.com>
2013-10-01 15:38:45 +00:00
Simon Williams 7418d289c6 force cuty_capt to send 'Accept-Language:en'
the default accept language header that cuty capt sends does not play nicely
with canvas' locale selection.  so for now, force it to send 'en'.  in the
future it would be nice to have it send the user's configured locale, if it
exists.

fixes CNVS-8421

test plan:
- on a machine with the fix applied, and with cuty capt enabled
- submit a url assignment that points to a canvas installation
  * note: the submitted url does not need the fix applied, just the requester
- the screenshot should be in english

Change-Id: I56a534d4d1eaed92c2615ea500b5960708e49112
Reviewed-on: https://gerrit.instructure.com/24716
QA-Review: Amber Taniuchi <amber@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Cameron Sutter <csutter@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
2013-10-01 14:12:51 +00:00
Transifreq ef0502a536 Updated es translation 2013-10-01 02:04:31 -06:00
James Williams 5b853484ef improve folder_as_options performance
test plan:
* create a course
* create many folders for the course in the console
(replacing <COURSE_ID> with the id of the course):

c = Course.find(<COURSE_ID>)
f = Folder.root_folders(c).first
2000.times{|i| f.sub_folders.create!(:name => "folder #{i}",
 :context => c)}

* visit the course content_migrations page
* should not take a long time to load or time out

fixes #CNVS-8366

Change-Id: I66785f9948c7d3d34319f6074ad5a7d7d0750038
Reviewed-on: https://gerrit.instructure.com/24713
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Hannah Bottalla <hannah@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
2013-10-01 01:02:37 +00:00
Braden Anderson 79bb5e1c14 conversations: constrain subject length
test plan:
  * verify that the API docs for "Create a conversation" document that
      the maximum subject length is 255 characters
  * post a conversation to the API with a subject longer than 255 chars
  * verify that you get a model validation error
  * open new conversations
  * compose a message
  * try to enter more than 255 characters in the subject field
  * verify that your input is constrained

Change-Id: Ibf569c8b7aa17677a5968859b57b0e0c3c373603
Reviewed-on: https://gerrit.instructure.com/23521
QA-Review: Cam Theriault <cam@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Zach Pendleton <zachp@instructure.com>
Product-Review: Braden Anderson <banderson@instructure.com>
2013-09-30 20:52:47 +00:00
Duane Johnson 8563caf03b fix swagger argument parser and add specs
Argument parser was not detecting optional/required args properly.
Added specs, improved parsing success rate.

Change-Id: Id101ab92cdba32c95a91488c9fab1a912b0b6a0f
Reviewed-on: https://gerrit.instructure.com/24560
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Brandon Broschinsky <brandonbr@instructure.com>
Product-Review: Duane Johnson <duane@instructure.com>
QA-Review: Duane Johnson <duane@instructure.com>
2013-09-30 20:13:41 +00:00
James Williams d2965eb750 improve grade summary "what-if" scores
test plan:
* create a course with weighted assignment groups and
assignments
* as a student that has some graded assignments and some
ungraded assignments, click on the empty score boxes for
the ungraded assignments ("-") to save "what-if" scores
* refresh the page
* click on 'Show Saved "What-If" Scores'
* should update the total percentage
* click on "Revert to Actual Score"
* should correctly update the total percentage to the
 previous value

fixes #CNVS-3723 #CNVS-3933

Change-Id: I6efaf9033e1a6fb3e2a08b6190de6d9c98c99763
Reviewed-on: https://gerrit.instructure.com/24683
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Hannah Bottalla <hannah@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
2013-09-30 20:11:52 +00:00
Derek DeVries bc043d8e3c add relative margin of error in formula questions
closes CNVS-7197

test plan:
- add a formula question type in a quiz
- create your variable definitions and formula definitions

  scenario 1:
- generate possible solutions, and add a margin of +/- a percentage value (5%)
- make sure that when a student answers a quiz question that it allows the
  percentage margin of error entered

  scenario 2:
- generate possible solutions, and add a margin of +/- a point value (2.0)
- make sure that when a student answers a quiz question that it allows the
  margin of error entered (as it worked previously)

Change-Id: Ib819cdd2b3412dfb080e44cacf6516ceb8fa4944
Reviewed-on: https://gerrit.instructure.com/24539
Reviewed-by: Josh Simpson <jsimpson@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Myller de Araujo <myller@instructure.com>
Product-Review: Derek DeVries <ddevries@instructure.com>
2013-09-30 20:08:21 +00:00
James Williams 099efdf2be fix user_content_spec failures
fixes #CNVS-8465

Change-Id: Ia93c3bf6c91fbd181b6886ca108520984897db02
Reviewed-on: https://gerrit.instructure.com/24773
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Bryan Madsen <bryan@instructure.com>
Product-Review: Bryan Madsen <bryan@instructure.com>
QA-Review: Bryan Madsen <bryan@instructure.com>
2013-09-30 18:38:30 +00:00
Mark Severson e82c49bc87 change the way the selenium in-proc server chooses ports
the process of selecting ports at random is an error-prone and slow
way of selecting a free port. instead, we simply bind against port 0,
which indicates to the OS to select a free port for us.

test plan:
 - selenium tests pass

Change-Id: I86dd05aaa469f8f2765ec5d56fff5f1e812cbdfc
Reviewed-on: https://gerrit.instructure.com/24728
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Bryan Madsen <bryan@instructure.com>
Product-Review: Bryan Madsen <bryan@instructure.com>
QA-Review: Bryan Madsen <bryan@instructure.com>
2013-09-30 16:43:01 +00:00
Jeff Belser cf40555e78 corrects assign to group menu position bug
popover menu positioning refactored into seperate backbone view with boundary and collision handling. fixes CNVS-8151.

Test Plan:
(test in both the new groups UI and old)
1) Click into a course with multiple unassigned students
2) Create a new group set with 11 or so groups
3) Click the '+' button within the unassigned students sidebar menu
4) Continue clicking the '+' button at different locations within the page
taking note of the position of the popover menu as it appears.

Change-Id: Icb9e02baba8da8e345c6e56ae537c44263251ffe
Reviewed-on: https://gerrit.instructure.com/24489
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Marc LeGendre <marc@instructure.com>
QA-Review: Marc LeGendre <marc@instructure.com>
Reviewed-by: Mark Ericksen <marke@instructure.com>
2013-09-30 15:44:08 +00:00
Nick Cloward 14b5840ae3 Add a permission option in the api to return if the user can create topics.
closes CNVS-6824

This adds a permissions attribute to the returned json for discussion topic
contexts (Course, Group).

The permissions attribute contains an optional permission of
"create_discission_topic" which returns true or false depending on whether the
current user can create discussion topics for the course or group.  For
performance reasons this is only added to a single course/group json and not in
lists so the only call that will return it is /api/v1/<context>/<context_id>
where context is a course or group.  Since we did not want to include this on
every response its a custom permissions attribute for course and groups in the
course_json or group_json serialization methods.

Using the includes parameter for the API supplying a value of "permissions"
will include the permissions with "create_discussion_topic" for a group and
course.  When the object is serialized to json it checked to see if the model
implements a serialize_permissions method and calls that to render or override
permissions generated from the policies.

- Create a test Course. Make sure the course allows members to post topics.
- Add a student to the course.
- Make a call to /api/v1/courses/<id> where "<id>" is the id of the created
  course.
- The response should include a permissions attribute with a boolean value for
  "create_discission_topic" see the example below.

- Make a call to /api/v1/courses to return a list of course objects.
- The permissions attribute should not be included in the response.

- Create a test Group tied to the course created in the first step.
- Add a mamber to the group.
- Make a call to /api/v1/groups/<id> where "<id>" is the id of the created
  group.
- The response should include a permissions attribute with a boolean value for
  "create_discission_topic" see the example below.

- Make a call to /api/v1/groups to return a list of group objects.
- The permissions attribute should not be included in the response.

Example Response:
{
	id: 42,
	...
	permissions: {
		create_discission_topic: true
	}
}

Change-Id: Ia02d5aa67e345740a93dd0f63e357e7cb5e1efd6
Reviewed-on: https://gerrit.instructure.com/24478
Reviewed-by: Jacob Fugal <jacob@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Nick Cloward <ncloward@instructure.com>
2013-09-30 14:32:48 +00:00
Transifreq afa8493c62 Updated ja translation 2013-09-28 02:04:35 -06:00
James Williams 68539cbf69 fix broken content migration selenium test
Change-Id: I0a4c7d27a932be856ab2f5522ed906b87b412846
Reviewed-on: https://gerrit.instructure.com/24757
Reviewed-by: Bryan Madsen <bryan@instructure.com>
Product-Review: Bryan Madsen <bryan@instructure.com>
QA-Review: Bryan Madsen <bryan@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
2013-09-27 19:24:46 +00:00
Zach Pendleton 27104bbeb6 properly serialize empty recordings from BBB
fixes CNVS-8461

test plan:
  * create a big blue button conference with recording
    enabled;
  * start and end the conference;
  * reload the conferences page and verify that it loads
    as expected.

Change-Id: I159765d894f37261d650ee633023b6415f19f6f4
Reviewed-on: https://gerrit.instructure.com/24766
Reviewed-by: Jon Willesen <jonw@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Cam Theriault <cam@instructure.com>
Product-Review: Zach Pendleton <zachp@instructure.com>
2013-09-27 18:15:35 +00:00
Transifreq 65468c4b9c Updated pt translation 2013-09-27 02:08:17 -06:00
Transifreq faa371db46 Updated zh translation 2013-09-27 02:07:20 -06:00
Transifreq 181b999b6a Updated fr translation 2013-09-27 02:06:21 -06:00
Transifreq 6548d2a1ad Updated es translation 2013-09-27 02:04:28 -06:00
Shawn Meredith 497ffa9f1e spec: selenium splitting
Change-Id: I431d30cd846b4a781e3219ccb8680dcd1cef4698
Reviewed-on: https://gerrit.instructure.com/24688
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Bryan Madsen <bryan@instructure.com>
Product-Review: Bryan Madsen <bryan@instructure.com>
QA-Review: Bryan Madsen <bryan@instructure.com>
2013-09-26 23:06:55 +00:00
Mark Ericksen 76f2e61744 add ability to message all unassigned students in groups
fixes CNVS-7162

testing steps:
- on the new groups UI, use a group's cog
  menu to select "Message All Unassigned Students"
- dialog should appear allowing message to be sent
  to multiple users
- verify several users have received a message
  ie: [canvas]/users/1/messages
- with many unassigned users, when additional pages
  of users haven't been loaded yet, they should
  be fetched before the dialog appears and should
  all be displayed in the users list.
- in a large_roster course, the "Message All Unassigned
  Students" menu option should not be shown
- in a course where unassigned users are paginated,
  it should load all users before displaying dialog

Change-Id: I66b258763ab7f2dd99e821a5da9235d36ea541b4
Reviewed-on: https://gerrit.instructure.com/24518
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jon Jensen <jon@instructure.com>
Product-Review: Marc LeGendre <marc@instructure.com>
QA-Review: Marc LeGendre <marc@instructure.com>
2013-09-26 21:28:06 +00:00
Transifreq 5eab559346 Updated zh translation 2013-09-26 02:05:29 -06:00
Transifreq a4d02e018a Updated ru translation 2013-09-26 02:04:31 -06:00
Cody Cutrer 22319f1402 use IANA timezone for LTI variable, and only in standard variable
* use IANA timezone names, not Rails weird names
 * don't send the offset (it will just be a source of bugs)
 * don't allow a custom variable name when a standard
   (http://www.imsglobal.org/LTI/v2p0pd2/uml/purl.imsglobal.org/vocab/lti/v2/variable/index.html)
   one will do just fine

Change-Id: I774a8b34b14507c6e65b1c1b144369ba09d50af3
Reviewed-on: https://gerrit.instructure.com/24665
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Brad Humphrey <brad@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
2013-09-25 22:03:01 +00:00
Brandon Broschinsky 11593a2b8c fixed report helper to account for user account timezone
fixed PS-534

Change-Id: I8b5233d80edf179337efdb23e33e959bfda1c72d
Reviewed-on: https://gerrit.instructure.com/24504
Reviewed-by: Rob Orton <rob@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Brandon Broschinsky <brandonbr@instructure.com>
QA-Review: Brandon Broschinsky <brandonbr@instructure.com>
2013-09-25 20:04:27 +00:00
Shawn Meredith 60ce5f3aec spec: selenium node provisioning bug fix
Change-Id: I1a055eb8ab5c51b790b14455cdd45a56c9e7cab0
Reviewed-on: https://gerrit.instructure.com/24684
Reviewed-by: Shawn Meredith <shawn@instructure.com>
Product-Review: Shawn Meredith <shawn@instructure.com>
QA-Review: Shawn Meredith <shawn@instructure.com>
Tested-by: Shawn Meredith <shawn@instructure.com>
2013-09-25 19:39:31 +00:00
Matthew Irish dfd7b896c3 accessible drag and drop
fixes CNVS-7043

Added a `MoveToDialogView` that presents the user
with one or two (if there are nested collections)
<select>s. Each select (and corresponding label)
is its own view called `MoveDialogSelect`.

Using this new view, Assignments and Assignment Groups
are now re-orderable from these dialogs (as well as drag
and drop).

Updated SortableCollectionView and DraggableCollectionView to sort the
collection after updating positions and to also enforce uniqueness of
the "position" attribute on DraggableCollectionView.

Changed the `reorder_assignments` method on the
AssignmentGroupsController to only return ids of active assignments.

Test plan:
- turn on draft state
- with only one Assignment Group, there should be no "Move To ..." item
  in the cog menu
- with more than one Assignment Group, there should be a "Move To ..."
  item
  - when clicked the "Move To" should open a dialog asking you where you
    want to move the Assignment group verify that:
        - the title of the Assignment Group is in dialog "Where would you
          like to move {AG Name here}?"
        - There is 1 select that does not include the Assignment Group
          as a value
        - the label for the select reads "Place Before:"
        - the select has an option to move to the bottom of the list

- with multiple assignments, it is similar to the above with the
  exceptions:
        - the "Move To" menu item should disappear when there's
          only one assignment and one assignment group
        - there should be two selects in the dialog. One with the label
          "Place Before:", and one listing the assignment groups with
          the label "Assignment Group:"
        - the select for "Assignment Group" should have the current
          Assignment Group selected when the dialog is opened
        - when the Assignment Group select is changed, it should update
          the value of the "Place Before:" select with the names of the
          assignments in that Assignment Group

- after saving, the items should update their order on the page

- after moving an assignment once, bring up the move dialog again
  and verify that the Assignment Group select has the updated assignment
  group as the selected value

Change-Id: Ifb6c1df155d3011949e25afeac111c230f5ff56a
Reviewed-on: https://gerrit.instructure.com/24362
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Amber Taniuchi <amber@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
2013-09-25 19:23:51 +00:00
Jon Willesen c71bbb1380 disable recording checkbox after conference has started
the recording checkbox should have been disabled after the
conference has started, like other conference controls, because
you can't change the recording setting after the conference has
started.

fixes CNVS-8288

test plan:
 - create a BBB conference, recording checkbox should be
   editable.
 - edit the BBB conference, recording checkbox should still be
   editable.
 - start the BBB conference, recording checkbox should no
   longer be editable.

Change-Id: I8ee65b45448c9a469516c6c246ea2cbd354e634a
Reviewed-on: https://gerrit.instructure.com/24635
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Zach Pendleton <zachp@instructure.com>
QA-Review: Cam Theriault <cam@instructure.com>
Product-Review: Jon Willesen <jonw@instructure.com>
2013-09-25 16:51:25 +00:00
Jon Willesen 3a4c1c24fd add timeouts to incoming message processor
incoming message processor should not wait indefinitely on
external connections. it now implements timeouts on external
connections that are controlled by the Canvas.timeout_protection
method. It uses incoming_message_processor as the serivce name,
which makes these meaningful settings to change the timeout
behavior:
 - service_incoming_message_processor_timeout
 - service_incoming_message_processor_cutoff
 - service_incoming_message_processor_error_ttl

fixes CNVS-8198

test plan:
 - see the incoming message processor wiki page for instructions
   on how to do the configuration and run these tests.
 - create a fifo in an empty directory, configure
   incoming_mail.yml to read from the directory, run
   script/process_incoming_emails and make sure it exits in
   30 seconds or so.
 - use nc -l <port> to listen on a port, configure
   incoming_mail.yml to access that port on localhost, and run
   script/process_incoming_emails and make sure it exits in
   30 seconds or so.
 - run script/process_incoming_emails against an actual email
   account and make sure it can still process emails normally.

Change-Id: I23c67c1e8c0581a1e6ca69ab2c7b8855090688d1
Reviewed-on: https://gerrit.instructure.com/24483
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Cam Theriault <cam@instructure.com>
Reviewed-by: Jon Willesen <jonw@instructure.com>
Product-Review: Jon Willesen <jonw@instructure.com>
2013-09-25 16:47:02 +00:00
Braden Anderson 5fa5a63e05 chat: use iframe for including minichat
fixes CNVS-8154

test plan:
  * set up a chat server with https://gerrit.instructure.com/24593
  * add the chat LTI tool as an app
  * navigate to a course page other than chat
  * verify that minichat still works

Change-Id: I547d34f012d0a846163fc906bc4d3328dbc03f36
Reviewed-on: https://gerrit.instructure.com/24592
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Joel Hough <joel@instructure.com>
QA-Review: Cam Theriault <cam@instructure.com>
Product-Review: Braden Anderson <banderson@instructure.com>
2013-09-25 16:24:18 +00:00
Josh Simpson 9c704eecff fix for interval saving for quizzes
fixes: CNVS-4676
because we use the same function to do both auto saving (on a 30 second
interval), and event-based saving (e.g. when the user answers a question
or otherwise interacts with the quiz form), sometimes the auto interval
wouldn't fire due to various circumstances.  we bypass this by
explicitly declaring that we're performing an interval save (vs an event
based submission save). i've also added new messaging when we try to
save, but when there's no new data to save (giving the user a time stamp for the
latest save attempt).

test plan:
(this can be confusing to test)
1. take a quiz
2. answer a question
- note that the quiz is still saving (or attempting to save, if there's
  no new data to save) at a regular interval

Change-Id: I139f94cb5b3cdae1d8b316d1c9510f1352d83ae3
Reviewed-on: https://gerrit.instructure.com/24558
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Derek DeVries <ddevries@instructure.com>
QA-Review: Myller de Araujo <myller@instructure.com>
Product-Review: Josh Simpson <jsimpson@instructure.com>
2013-09-25 16:16:53 +00:00
James Williams 9ef3adb6b0 preserve course links in group html content
test plan:
* create a course with a group
* create a wiki page for the group
* inside the group, add a link to content for the course
(e.g. "/courses/:course_id/files")
* it should not translate the link to point to "/groups/:group_id"

fixes #CNVS-8313

Change-Id: Icd64cf11668481cee34d4bcddd1332431826959f
Reviewed-on: https://gerrit.instructure.com/24606
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Hannah Bottalla <hannah@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
2013-09-25 13:31:22 +00:00
James Williams 2326917a0a fix course copy and content migration date adjustment processing
test plan:
* import a content migration package through
"/courses/:course_id/content_migrations",
checking the field to "adjust events and due dates"
* manually type in dates of various formats
(e.g. "MM/DD/YYYY")
* should adjust the dates accordingly

* copy a course through the "copy this course" link
shown in "/courses/:course_id/settings"
* should adjust the dates here as well

fixes #CNVS-5771

Change-Id: Ib3c74f57ce3e351f6d3df88883b055bb8aa77101
Reviewed-on: https://gerrit.instructure.com/24246
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Hannah Bottalla <hannah@instructure.com>
Product-Review: Bracken Mosbacker <bracken@instructure.com>
2013-09-25 13:31:19 +00:00