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") 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: -> 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