diff --git a/components/AddClosedEndedQuestion.vue b/components/AddClosedEndedQuestion.vue
index 9794c9a..37300de 100644
--- a/components/AddClosedEndedQuestion.vue
+++ b/components/AddClosedEndedQuestion.vue
@@ -52,7 +52,7 @@ import { collection, doc, addDoc, writeBatch } from 'firebase/firestore'
// https://vee-validate.logaretm.com/v3/guide/basics.html
import { ValidationProvider, ValidationObserver, extend } from 'vee-validate'
import { required } from 'vee-validate/dist/rules'
-import { ClosedEndedQuestion, ClosedEndedQuestionConverter } from '~/plugins/closed-ended-question'
+import { ClosedEndedQuestion, ClosedEndedQuestionConverter, states } from '~/plugins/closed-ended-question'
// Override the default error message of required fields
extend('required', {
@@ -75,6 +75,11 @@ export default {
}
},
methods: {
+ isAuthorized () {
+ const isTutor = this.$auth.currentUser.email.endsWith('@iu.org')
+ const isAdmin = this.$store.getters.isAdmin
+ return isTutor || isAdmin
+ },
submit () {
this.loading = true
@@ -86,14 +91,17 @@ export default {
this.$auth.currentUser.uid, // Ref: https://firebase.google.com/docs/reference/js/v8/firebase.User
Date.now() / 1000, // Current UNIX timestamp in seconds
this.comment ? [this.comment] : [],
- 'neu'
+ this.isAuthorized() ? states.approved : states.new
)
// Add a new document with a generated id
addDoc(collection(this.$db, `kurse/${this.$store.state.selectedCourse}/fragenGeschlossen`).withConverter(ClosedEndedQuestionConverter), q)
.then((docRef) => {
// Successfully added new question to database
- this.$toast({ content: 'Deine Frage wurde eingereicht!', color: 'success' })
+ const content = this.isAuthorized()
+ ? 'Die Frage wurde hinzugefügt!'
+ : 'Deine Frage wurde eingereicht und wartet auf Bestätigung durch den Tutor!'
+ this.$toast({ content, color: 'success' })
})
.catch((error) => {
// Failed to add question to database; display error message
@@ -131,7 +139,7 @@ export default {
this.$auth.currentUser.uid, // Ref: https://firebase.google.com/docs/reference/js/v8/firebase.User
Date.now() / 1000, // Current UNIX timestamp in seconds
[],
- 'genehmigt'
+ states.approved
)
const questionRef = doc(collection(this.$db, `kurse/${this.$store.state.selectedCourse}/fragenGeschlossen`).withConverter(ClosedEndedQuestionConverter))
diff --git a/components/Challenge.vue b/components/Challenge.vue
new file mode 100644
index 0000000..a45c3de
--- /dev/null
+++ b/components/Challenge.vue
@@ -0,0 +1,35 @@
+
+
+ Challenge
+
+
+ mdi-play
+ Quiz Spielen
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/Coop.vue b/components/Coop.vue
index b874841..2a14eb3 100644
--- a/components/Coop.vue
+++ b/components/Coop.vue
@@ -1,17 +1,22 @@
-
-
-
- {{ item.question }}
-
-
- {{ item.solution }}
-
-
-
+
+ Offene Fragen
+
+
+
+
+ {{ item.question }}
+
+
+ {{ item.solution }}
+
+
+
+
+
-
-
\ No newline at end of file
diff --git a/pages/courses/_course/index.vue b/pages/courses/_course/index.vue
index 6c5a7a0..68fef82 100644
--- a/pages/courses/_course/index.vue
+++ b/pages/courses/_course/index.vue
@@ -1,19 +1,22 @@
-
-
-
- Challenge Mode
-
-
-
-
-
-
-
-
-
-
-
+
+
+ {{ courseID.toUpperCase() }}
+ {{ $store.getters.getCourseByID(courseID).name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -26,15 +29,14 @@ export default {
}
},
computed: {
+ isAuthorized () {
+ const isTutor = this.$auth.currentUser.email.endsWith('@iu.org')
+ const isAdmin = this.$store.getters.isAdmin
+ return isTutor || isAdmin
+ }
},
created () {
this.courseID = this.$route.params.course
- },
- methods: {
- playVersus () {
- // TODO
- this.$router.push(`${this.$route.path}/play`)
- }
}
}
diff --git a/pages/courses/_course/play.vue b/pages/courses/_course/play.vue
index 151efb8..69f7878 100644
--- a/pages/courses/_course/play.vue
+++ b/pages/courses/_course/play.vue
@@ -41,7 +41,7 @@ import {
import _sampleSize from 'lodash-es/sampleSize'
import _shuffle from 'lodash-es/shuffle'
import _capitalize from 'lodash-es/capitalize'
-import { ClosedEndedQuestionConverter } from '~/plugins/closed-ended-question'
+import { ClosedEndedQuestionConverter, states } from '~/plugins/closed-ended-question'
import { Game, GameConverter } from '~/plugins/game'
export default {
@@ -101,7 +101,7 @@ export default {
// Create a query against the collection.
// Only questions with the status "approved" (=genehmigt) should be fetched from the database
- const q = query(questionsRef, where('status', '==', 'genehmigt'))
+ const q = query(questionsRef, where('status', '==', states.approved))
// Execute the query
return getDocs(q).then((querySnapshot) => {
diff --git a/plugins/closed-ended-question.js b/plugins/closed-ended-question.js
index 8d56c7d..eb042d7 100644
--- a/plugins/closed-ended-question.js
+++ b/plugins/closed-ended-question.js
@@ -11,6 +11,12 @@ export class ClosedEndedQuestion {
}
}
+export const states = {
+ new: 'neu',
+ approved: 'genehmigt',
+ declined: 'abgelehnt'
+}
+
// Firestore data converter
export const ClosedEndedQuestionConverter = {
toFirestore: (closedEndedQuestion) => {