From 2a739ea76583486ecb2b9fe63f78e5a2b9f94bb3 Mon Sep 17 00:00:00 2001
From: Scott Erickson <sderickson@gmail.com>
Date: Fri, 9 Oct 2015 13:45:33 -0700
Subject: [PATCH 1/3] Remove placeholder text in invite email box in course
 details page

Already duplicated it outside of the textbox, so it'd be visible even after an email had been entered. This is just removing the old placement.
---
 app/templates/courses/course-details.jade | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/app/templates/courses/course-details.jade b/app/templates/courses/course-details.jade
index ed424f25c..fae5ceeb2 100644
--- a/app/templates/courses/course-details.jade
+++ b/app/templates/courses/course-details.jade
@@ -265,8 +265,7 @@ mixin invite-tab
   p(data-i18n="courses.invite_link_p_2")
   .form
     .form-group
-      textarea#invite-emails-textarea.form-control(
-        rows=3, data-i18n="[placeholder]courses.enter_emails")
+      textarea#invite-emails-textarea.form-control
       .help-block(data-i18n="courses.enter_emails")
     .form-group
       button#invite-btn.btn.btn-success(data-i18n="courses.send_invites")

From 2d8d107a58b38c8d7faeacb2f6238f488398c075 Mon Sep 17 00:00:00 2001
From: Matt Lott <mattlott@live.com>
Date: Fri, 9 Oct 2015 14:24:59 -0700
Subject: [PATCH 2/3] Update Handler admin get query params

Unclear how this was supposed to work before these changes.
---
 server/commons/Handler.coffee | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)

diff --git a/server/commons/Handler.coffee b/server/commons/Handler.coffee
index 6117cf6b9..c8456e3fa 100644
--- a/server/commons/Handler.coffee
+++ b/server/commons/Handler.coffee
@@ -179,21 +179,18 @@ module.exports = class Handler
     # if it's not a text search but the user is an admin, let him try stuff anyway
     else if req.user?.isAdmin()
       # admins can send any sort of query down the wire
+      # Example URL: http://localhost:3000/db/user?filter[anonymous]=true
       filter = {}
-      filter[key] = (val for own key, val of req.query.filter when key not in specialParameters) if 'filter' of req.query
-
+      filter[key] = JSON.parse(val) for own key, val of req.query.filter when key not in specialParameters if 'filter' of req.query
       query = @modelClass.find(filter)
 
       # Conditions are chained query functions, for example: query.find().limit(20).sort('-dateCreated')
-      conditions = JSON.parse(req.query.conditions || '[]')
+      # Example URL: http://localhost:3000/db/user?conditions[limit]=20&conditions[sort]=-dateCreated
       hasLimit = false
       try
-        for condition in conditions
-          name = condition[0]
-          f = query[name]
-          args = condition[1..]
-          query = query[name](args...)
-          hasLimit ||= f is 'limit'
+        for own key, val of req.query.conditions
+          query = query[key](val)
+          hasLimit ||= key is 'limit'
       catch e
         return @sendError(res, 422, 'Badly formed conditions.')
       query.limit(2000) unless hasLimit

From 8fce82ce7292e41c547bb832d78283dc9d368408 Mon Sep 17 00:00:00 2001
From: Matt Lott <mattlott@live.com>
Date: Fri, 9 Oct 2015 14:25:53 -0700
Subject: [PATCH 3/3] Update trial requests approval page query to grab latest

Used to be limited to first 2000 requests, which was hit on 10/7/15.
---
 app/views/admin/TrialRequestsView.coffee | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/app/views/admin/TrialRequestsView.coffee b/app/views/admin/TrialRequestsView.coffee
index 5f2f9aec8..106702c02 100644
--- a/app/views/admin/TrialRequestsView.coffee
+++ b/app/views/admin/TrialRequestsView.coffee
@@ -30,7 +30,7 @@ module.exports = class TrialRequestsView extends RootView
           -1
         else
           1
-      @trialRequests = new CocoCollection([], { url: '/db/trial.request', model: TrialRequest, comparator: sortRequests })
+      @trialRequests = new CocoCollection([], { url: '/db/trial.request?conditions[sort]=-_id&conditions[limit]=500', model: TrialRequest, comparator: sortRequests })
       @supermodel.loadCollection(@trialRequests, 'trial-requests', {cache: false})
 
   getRenderData: ->