diff --git a/package-lock.json b/package-lock.json
index a8248606..b00ce7e3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,16 +10,18 @@
"dependencies": {
"@fortawesome/fontawesome-free": "^5.15.4",
"@types/minimatch": "^3.0.5",
- "ag-client-typescript": "2.6.0",
+ "ag-client-typescript": "2.8.0",
"chart.js": "^3.9.1",
"chartjs-adapter-moment": "^1.0.1",
"chartjs-plugin-zoom": "^1.2.1",
+ "dompurify": "^3.1.6",
"file-saver": "^2.0.5",
"highlight.js": "^11.9.0",
"lodash": "^4.17.21",
"minimatch": "^3.1.2",
"moment": "^2.29.4",
"moment-timezone": "^0.5.43",
+ "showdown": "^2.1.0",
"vue": "^2.7.14",
"vue-class-component": "^7.2.6",
"vue-property-decorator": "^8.5.1",
@@ -28,9 +30,11 @@
},
"devDependencies": {
"@testing-library/jest-dom": "^5.11.9",
+ "@types/dompurify": "^3.0.5",
"@types/file-saver": "^2.0.1",
"@types/jest": "^25.2.3",
"@types/lodash": "^4.14.168",
+ "@types/showdown": "^2.0.6",
"@types/sinon": "^7.5.2",
"@vue/cli-plugin-typescript": "^4.5.11",
"@vue/cli-plugin-unit-jest": "^4.5.11",
@@ -2193,6 +2197,15 @@
"@types/node": "*"
}
},
+ "node_modules/@types/dompurify": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.0.5.tgz",
+ "integrity": "sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg==",
+ "dev": true,
+ "dependencies": {
+ "@types/trusted-types": "*"
+ }
+ },
"node_modules/@types/express": {
"version": "4.17.17",
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz",
@@ -2385,6 +2398,12 @@
"@types/node": "*"
}
},
+ "node_modules/@types/showdown": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@types/showdown/-/showdown-2.0.6.tgz",
+ "integrity": "sha512-pTvD/0CIeqe4x23+YJWlX2gArHa8G0J0Oh6GKaVXV7TAeickpkkZiNOgFcFcmLQ5lB/K0qBJL1FtRYltBfbGCQ==",
+ "dev": true
+ },
"node_modules/@types/sinon": {
"version": "7.5.2",
"resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-7.5.2.tgz",
@@ -2430,6 +2449,12 @@
"@types/jest": "*"
}
},
+ "node_modules/@types/trusted-types": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
+ "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
+ "dev": true
+ },
"node_modules/@types/uglify-js": {
"version": "3.17.1",
"resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.1.tgz",
@@ -4736,9 +4761,9 @@
}
},
"node_modules/ag-client-typescript": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/ag-client-typescript/-/ag-client-typescript-2.6.0.tgz",
- "integrity": "sha512-6WLbPhHISELCVC9hcTJzkKZnVbKJ8wM4ICif2s4O5TxSz5jc5/7GCnyzfEhrLn1NyCGCedppswK1uiLUkxm6jA==",
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/ag-client-typescript/-/ag-client-typescript-2.8.0.tgz",
+ "integrity": "sha512-U6wLZAJ28s6elwOJItU1Mk/1He1L6hRd1Oj37LmmlsJV/8Juk/HP5S9iRUwYVUXJo3GT80nH4HzO69x6liYQNw==",
"dependencies": {
"axios": "^0.21.1"
}
@@ -8203,6 +8228,11 @@
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
+ "node_modules/dompurify": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.6.tgz",
+ "integrity": "sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ=="
+ },
"node_modules/domutils": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
@@ -18421,6 +18451,29 @@
"integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==",
"dev": true
},
+ "node_modules/showdown": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/showdown/-/showdown-2.1.0.tgz",
+ "integrity": "sha512-/6NVYu4U819R2pUIk79n67SYgJHWCce0a5xTP979WbNp0FL9MN1I1QK662IDU1b6JzKTvmhgI7T7JYIxBi3kMQ==",
+ "dependencies": {
+ "commander": "^9.0.0"
+ },
+ "bin": {
+ "showdown": "bin/showdown.js"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://www.paypal.me/tiviesantos"
+ }
+ },
+ "node_modules/showdown/node_modules/commander": {
+ "version": "9.5.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
+ "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
+ "engines": {
+ "node": "^12.20.0 || >=14"
+ }
+ },
"node_modules/side-channel": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
diff --git a/package.json b/package.json
index 566a18b0..892d8c91 100644
--- a/package.json
+++ b/package.json
@@ -11,16 +11,18 @@
"dependencies": {
"@fortawesome/fontawesome-free": "^5.15.4",
"@types/minimatch": "^3.0.5",
- "ag-client-typescript": "2.6.0",
+ "ag-client-typescript": "2.8.0",
"chart.js": "^3.9.1",
"chartjs-adapter-moment": "^1.0.1",
"chartjs-plugin-zoom": "^1.2.1",
+ "dompurify": "^3.1.6",
"file-saver": "^2.0.5",
"highlight.js": "^11.9.0",
"lodash": "^4.17.21",
"minimatch": "^3.1.2",
"moment": "^2.29.4",
"moment-timezone": "^0.5.43",
+ "showdown": "^2.1.0",
"vue": "^2.7.14",
"vue-class-component": "^7.2.6",
"vue-property-decorator": "^8.5.1",
@@ -29,9 +31,11 @@
},
"devDependencies": {
"@testing-library/jest-dom": "^5.11.9",
+ "@types/dompurify": "^3.0.5",
"@types/file-saver": "^2.0.1",
"@types/jest": "^25.2.3",
"@types/lodash": "^4.14.168",
+ "@types/showdown": "^2.0.6",
"@types/sinon": "^7.5.2",
"@vue/cli-plugin-typescript": "^4.5.11",
"@vue/cli-plugin-unit-jest": "^4.5.11",
diff --git a/src/components/project_admin/ag_tests/ag_test_case_fdbk_config_panel.vue b/src/components/project_admin/ag_tests/ag_test_case_fdbk_config_panel.vue
index 47f78059..88ae2ec1 100644
--- a/src/components/project_admin/ag_tests/ag_test_case_fdbk_config_panel.vue
+++ b/src/components/project_admin/ag_tests/ag_test_case_fdbk_config_panel.vue
@@ -16,6 +16,17 @@
+
+
+
+
+
+
+
+
+
+ {{FeedbackConfigLabel.normal}}
+
+ {{FeedbackDescriptions.normal}}
+
+
+
+
+
+
+
+
+ {{FeedbackConfigLabel.ultimate_submission}}
+
+ {{FeedbackDescriptions.ultimate_submission}}
+
+
+
+
+
+
+
+
+ {{FeedbackConfigLabel.past_limit}}
+
+ {{FeedbackDescriptions.past_limit}}
+
+
+
+
+
+
+
+
+ {{FeedbackConfigLabel.staff_viewer}}
+
+ {{FeedbackDescriptions.staff_viewer}}
+
+
+
+
+
diff --git a/src/components/project_admin/ag_tests/ag_test_command_advanced_fdbk_settings.vue b/src/components/project_admin/ag_tests/ag_test_command_advanced_fdbk_settings.vue
index 270978cc..14c68918 100644
--- a/src/components/project_admin/ag_tests/ag_test_command_advanced_fdbk_settings.vue
+++ b/src/components/project_admin/ag_tests/ag_test_command_advanced_fdbk_settings.vue
@@ -13,6 +13,17 @@
+
+
+
+
diff --git a/src/components/project_admin/ag_tests/ag_test_command_settings.vue b/src/components/project_admin/ag_tests/ag_test_command_settings.vue
index 1f432b97..726fa012 100644
--- a/src/components/project_admin/ag_tests/ag_test_command_settings.vue
+++ b/src/components/project_admin/ag_tests/ag_test_command_settings.vue
@@ -62,6 +62,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+