Skip to content

Commit

Permalink
Merge pull request #25 from classroom-interaction-environment/feature…
Browse files Browse the repository at this point in the history
…-groups

feature: group mode
  • Loading branch information
jankapunkt committed Mar 29, 2023
2 parents 1e144f7 + bddfe46 commit e5792eb
Show file tree
Hide file tree
Showing 97 changed files with 3,311 additions and 1,233 deletions.
20 changes: 10 additions & 10 deletions src/.meteor/packages
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@

meteor-base@1.5.1 # Packages every Meteor app needs to have
# mobile-experience@1.1.0 # Packages for a great mobile UX
mongo@1.15.0 # The database Meteor supports right now
mongo@1.16.4 # The database Meteor supports right now
blaze-html-templates # Compile .html files into Meteor Blaze views
jquery@3.0.0! # Wrapper package for npm-installed jquery
reactive-var@1.0.11 # Reactive variable for tracker
tracker@1.2.0 # Meteor's client-side reactive programming library
reactive-var@1.0.12 # Reactive variable for tracker
tracker@1.3.0 # Meteor's client-side reactive programming library

es5-shim@4.8.0 # ECMAScript 5 compatibility for older browsers
ecmascript@0.16.2 # Enable ECMAScript2015+ syntax in app code
typescript@4.5.4 # Enable TypeScript syntax in .ts and .tsx modules
ecmascript@0.16.5 # Enable ECMAScript2015+ syntax in app code
typescript@4.7.4 # Enable TypeScript syntax in .ts and .tsx modules
shell-server@0.5.0 # Server-side component of the `meteor shell` command

# hot-module-replacement@0.3.0 # Update code in development without reloading the page
Expand All @@ -31,26 +31,26 @@ shell-server@0.5.0 # Server-side component of the `meteor shell` comm
# jkuester:template-monitor

facts-base@1.0.1
facts-ui@1.0.0
facts-ui@1.0.1

#========================================
# Accounts
#========================================
accounts-base@2.2.3
accounts-password@2.3.1
accounts-base@2.2.6
accounts-password@2.3.3
danimal:userpresence
alanning:roles@3.3.0

#========================================
# MAIL SERVICE
#========================================
email@2.2.1
email@2.2.3

#========================================
# build system
#========================================
# standard-minifier-css@1.5.3 # CSS minifier run for production mode
standard-minifier-js@2.8.0 # JS minifier run for production mode
standard-minifier-js@2.8.1 # JS minifier run for production mode
fourseven:scss
seba:minifiers-autoprefixer # replace css minifier to run with sass

Expand Down
2 changes: 1 addition & 1 deletion src/.meteor/release
Original file line number Diff line number Diff line change
@@ -1 +1 @@
METEOR@2.7.3
METEOR@2.10.0
75 changes: 37 additions & 38 deletions src/.meteor/versions
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
accounts-base@2.2.4
accounts-password@2.3.1
accounts-base@2.2.6
accounts-password@2.3.3
alanning:roles@3.4.0
aldeed:autoform@7.0.0
aldeed:collection2@3.5.0
allow-deny@1.1.1
arggh:teleport@1.1.2
audit-argument-checks@1.0.7
autoupdate@1.8.0
babel-compiler@7.9.2
babel-compiler@7.10.2
babel-runtime@1.5.1
base64@1.0.12
binary-heap@1.0.11
Expand All @@ -17,37 +17,37 @@ blaze-tools@1.1.3
boilerplate-generator@1.7.1
caching-compiler@1.2.2
caching-html-compiler@1.2.1
callback-hook@1.4.0
callback-hook@1.5.0
ccorcos:subs-cache@0.9.12
check@1.3.1
check@1.3.2
claire:item-range@1.0.0
claire:item-textarea@1.0.0
claire:plugin-registry@1.0.0
communitypackages:autoform-bootstrap4@1.0.6
danimal:userpresence@1.0.1
dburles:mongo-collection-instances@0.3.6
ddp@1.4.0
ddp-client@2.5.0
ddp@1.4.1
ddp-client@2.6.1
ddp-common@1.4.0
ddp-rate-limiter@1.1.0
ddp-server@2.5.0
ddp-rate-limiter@1.1.1
ddp-server@2.6.0
deps@1.0.12
diff-sequence@1.1.1
diff-sequence@1.1.2
dynamic-import@0.7.2
ecmascript@0.16.2
ecmascript@0.16.5
ecmascript-runtime@0.8.0
ecmascript-runtime-client@0.12.1
ecmascript-runtime-server@0.11.0
ejson@1.1.2
email@2.2.1
ejson@1.1.3
email@2.2.3
es5-shim@4.8.0
facts-base@1.0.1
facts-ui@1.0.0
fetch@0.1.1
facts-ui@1.0.1
fetch@0.1.3
force-ssl@1.1.0
force-ssl-common@1.1.0
fourseven:scss@4.15.0
geojson-utils@1.0.10
geojson-utils@1.0.11
hot-code-push@1.0.4
html-tools@1.1.3
htmljs@1.1.1
Expand All @@ -74,43 +74,42 @@ lmieulet:meteor-coverage@3.2.0
localstorage@1.2.0
logging@1.3.1
mdg:validated-method@1.2.0
meteor@1.10.0
meteor@1.11.0
meteor-base@1.5.1
meteortesting:browser-tests@1.5.1
meteortesting:mocha@2.0.3
meteortesting:mocha@2.0.4
meteortesting:mocha-core@8.1.2
minifier-css@1.6.1
minifier-css@1.6.2
minifier-js@2.7.5
minimongo@1.8.0
modern-browsers@0.1.8
modules@0.18.0
modules-runtime@0.13.0
minimongo@1.9.1
modern-browsers@0.1.9
modules@0.19.0
modules-runtime@0.13.1
momentjs:moment@2.29.3
mongo@1.15.0
mongo@1.16.4
mongo-decimal@0.1.3
mongo-dev-server@1.1.0
mongo-id@1.0.8
muqube:autoform-nouislider@0.5.2
npm-mongo@4.3.1
muqube:autoform-nouislider@0.6.0
npm-mongo@4.12.1
observe-sequence@1.0.20
ordered-dict@1.1.0
ostrio:cookies@2.7.2
ostrio:cstorage@4.0.1
ostrio:files@2.3.0
ostrio:files@2.3.2
ostrio:flow-router-extra@3.9.0
ostrio:i18n@3.2.0
promise@0.12.0
promise@0.12.2
raix:eventemitter@1.0.0
random@1.2.0
random@1.2.1
rate-limit@1.0.9
react-fast-refresh@0.2.3
reactive-dict@1.3.0
reactive-var@1.0.11
react-fast-refresh@0.2.5
reactive-dict@1.3.1
reactive-var@1.0.12
reload@1.3.1
retry@1.1.0
routepolicy@1.1.1
seba:minifiers-autoprefixer@2.0.1
service-configuration@1.3.0
sha@1.0.9
shell-server@0.5.0
socket-stream-client@0.5.0
Expand All @@ -122,11 +121,11 @@ templating-compiler@1.4.1
templating-runtime@1.6.1
templating-tools@1.2.2
tmeasday:check-npm-versions@1.0.2
tracker@1.2.0
typescript@4.5.4
tracker@1.3.0
typescript@4.7.4
ui@1.0.13
underscore@1.0.10
underscore@1.0.11
url@1.3.2
webapp@1.13.1
webapp-hashing@1.1.0
webapp@1.13.3
webapp-hashing@1.1.1
zodern:types@1.0.9
17 changes: 16 additions & 1 deletion src/.settings-schema.js
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,22 @@ const accountsFixtureSchema = schema({
})

const patchSchema = schema({
removeDeadReferences: Boolean
removeDeadReferences: {
type: Boolean,
optional: true
},
imageFiles: {
type: Boolean,
optional: true
},
admin: {
type: Boolean,
optional: true
},
roles: {
type: Boolean,
optional: true
}
})

module.exports = schema({
Expand Down
6 changes: 3 additions & 3 deletions src/imports/api/accounts/emailTemplates/enrollAccount.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { Meteor } from 'meteor/meteor'
import { getCredentialsAsBuffer, getFullName } from './common'
import { createLog } from '../../log/createLog'

const debug = createLog({ name: 'enrollAccount', type: 'debug' })
const log = createLog({ name: 'enrollAccount', type: 'log' })

export const getEnrollAccountSubject = ({ siteName, defaultLocale }) => user => {
const locale = user?.locale || defaultLocale
Expand All @@ -24,8 +24,8 @@ export const getEnrollAccountText = ({ expiration, defaultLocale, supportEmail }
const text = i18n.get(locale, 'accounts.enroll.text', textOptions)

if (Meteor.isDevelopment && !Meteor.isTest) {
debug(textOptions)
debug(text)
log(textOptions)
log(text)
}

return text
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/* eslint-env mocha */
import { expect } from 'chai'
import { Meteor } from 'meteor/meteor'
import { getEnrollmentExpiration } from '../getEnrollmentExpiration'

const { passwordEnrollTokenExpirationInDays } = Meteor.settings.accounts.config

describe(getEnrollmentExpiration.name, function () {
it('returns the given expiration of days in ms from given date', () => {
const now = new Date()
const expires = getEnrollmentExpiration(now)
const diff = expires - now.getTime()
expect(diff / 86400000).to.equal(passwordEnrollTokenExpirationInDays)
})
})
1 change: 1 addition & 0 deletions src/imports/api/accounts/registration/tests/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ describe('registration', function () {
import './UserFactory.tests'
import './registerUserSchema'
import './rollbackAccount.tests'
import './getEnrollmentExpiration.tests'
})
2 changes: 1 addition & 1 deletion src/imports/api/accounts/user/getUserByEmail.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { getUsersCollection } from '../../utils/getUsersCollection'

export const getUserByEmail = email => {
return getUsersCollection().findOne({ emails: { address: email } })
return getUsersCollection().findOne({ emails: { $elemMatch: { address: email } } })
}
4 changes: 2 additions & 2 deletions src/imports/api/config/Features.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,15 @@ export const Features = {}

Features.get = (name) => {
if (!name || !Object.hasOwnProperty.call(features, name)) {
throw new Error(`Features have no feature by name ${name}`)
throw new Error(`Features have no feature by name "${name}"`)
}
return features[name]
}

Features.ensure = (name, value = true) => {
const current = Features.get(name)
if (current !== value) {
throw new Error(`Feature is expected to be ${value} but is ${current}`)
throw new Error(`Feature "${name}" is expected to be ${value} but is ${current}`)
}
}

Expand Down
8 changes: 6 additions & 2 deletions src/imports/api/response/ResponseProcessorAPI.js
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,12 @@ ResponseProcessorAPI.create = (itemData, templateInstance) => {
actionHandlers.set(actionId, actionHandler)
}
},
document: context.schema && (() => {
return getCollection(context.name).findOne({ lessonId, taskId, itemId })
document: context.schema && (({ groupId }) => {
const query = { lessonId, taskId, itemId }
if (groupId) {
query.groupId = groupId
}
return getCollection(context.name).findOne(query)
}),
onResize: function (callback) {
resizeListeners.set(actionId, callback)
Expand Down
1 change: 1 addition & 0 deletions src/imports/api/schema/Schema.js
Original file line number Diff line number Diff line change
Expand Up @@ -154,3 +154,4 @@ SimpleSchema.ErrorTypes.GENERIC = 'genericError'

export const RegEx = SimpleSchema.RegEx
export const ErrorTypes = SimpleSchema.ErrorTypes
export const Integer = SimpleSchema.Integer
5 changes: 4 additions & 1 deletion src/imports/api/utils/getUsersCollection.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { getCollection } from './getCollection'
import { getLocalCollection } from '../../infrastructure/collection/getLocalCollection'

/**
* This is a special case, since in Meteor the users collection is
Expand All @@ -10,4 +11,6 @@ import { getCollection } from './getCollection'
* it's value as convention.
* @return {Mongo.Collection} the Meteor.users collection
*/
export const getUsersCollection = () => getCollection('users')
export const getUsersCollection = (local = false) => local
? getLocalCollection('users')
: getCollection('users')
32 changes: 32 additions & 0 deletions src/imports/api/utils/object/withProperty.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/**
* Ensures that a property exists on a given object
* @param target {object}
* @param name {string}
* @param factory {function|*}
* @return {object}
* @throws {Error} if target is not an object
*/
export const withProperty = (target, name, factory) => {
const type = typeof target
if (type !== 'object') {
throw new Error(`Expected object, get ${type}`)
}

if (name in target) {
return target
}

if (typeof factory === 'function') {
return factory(target, name)
}
else {
const descriptor = Object.create(null)
descriptor.value = factory
descriptor.enumerable = true
descriptor.writable = true
descriptor.configurable = true
Object.defineProperty(target, name, descriptor)
}

return target
}
Loading

0 comments on commit e5792eb

Please sign in to comment.