Skip to content

Commit f8f1324

Browse files
committed
implement report question modal using SSI
1 parent 7d6d3af commit f8f1324

9 files changed

Lines changed: 59 additions & 175 deletions

File tree

client/db/index.html

Lines changed: 1 addition & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -43,42 +43,7 @@
4343
</div>
4444
</div>
4545

46-
<div class="modal" id="report-question-modal" tabindex="-2">
47-
<div class="modal-dialog">
48-
<div class="modal-content">
49-
<div class="modal-header">
50-
<h5 class="modal-title">Report Question</h5>
51-
<button class="btn-close" data-bs-dismiss="modal" type="button" aria-label="Close"></button>
52-
</div>
53-
<div class="modal-body">
54-
<form>
55-
<div class="mb-3">
56-
<label class="col-form-label" for="report-question-id">Question ID:</label>
57-
<input class="form-control" id="report-question-id" type="text" disabled>
58-
</div>
59-
<div class="mb-3">
60-
<label class="col-form-label" for="report-question-reason">Reason:</label>
61-
<select class="form-select" id="report-question-reason" aria-label="Default select example">
62-
<option value="wrong-category" selected>Wrong category/subcategory</option>
63-
<option value="answer-checking">Incorrect answer checking</option>
64-
<option value="text-error">Error in question or answer text</option>
65-
<option value="other">Other</option>
66-
</select>
67-
</div>
68-
<div>
69-
<label class="col-form-label" for="report-question-description">Additional
70-
Information:</label>
71-
<textarea class="form-control" id="report-question-description" rows="3"></textarea>
72-
</div>
73-
</form>
74-
</div>
75-
<div class="modal-footer">
76-
<button class="btn btn-secondary" id="report-question-close" data-bs-dismiss="modal" type="button">Close</button>
77-
<button class="btn btn-primary" id="report-question-submit" type="button">Submit</button>
78-
</div>
79-
</div>
80-
</div>
81-
</div>
46+
<!--#include virtual="/ssi/report-question-modal.html" -->
8247

8348
<div class="modal" id="tossup-stats-modal" tabindex="-3">
8449
<div class="modal-dialog">

client/play/bonuses/index.html

Lines changed: 1 addition & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -153,46 +153,7 @@ <h1 id="funny-toast-text" class="me-auto text-danger"></h1>
153153

154154
<div id="category-modal-root"></div>
155155

156-
<div class="modal" id="report-question-modal" tabindex="-2">
157-
<div class="modal-dialog">
158-
<div class="modal-content">
159-
<div class="modal-header">
160-
<h5 class="modal-title">Report Question</h5>
161-
<button class="btn-close" data-bs-dismiss="modal" type="button" aria-label="Close"></button>
162-
</div>
163-
<div class="modal-body">
164-
<form>
165-
<div class="mb-3">
166-
<label class="col-form-label" for="report-question-id">Question ID:</label>
167-
<input class="form-control" id="report-question-id" type="text" disabled>
168-
</div>
169-
<div class="mb-3">
170-
<label class="col-form-label" for="report-question-reason">Reason:</label>
171-
<select class="form-select" id="report-question-reason" aria-label="Default select example">
172-
<option value="wrong-category" selected>Wrong category/subcategory</option>
173-
<option value="answer-checking">Incorrect answer checking</option>
174-
<option value="text-error">Error in question or answer text</option>
175-
<option value="other">Other</option>
176-
</select>
177-
</div>
178-
<div>
179-
<p class="text-muted">If your answer was parsed incorrectly, please enter what answer you
180-
gave below.</p>
181-
<label class="col-form-label" for="report-question-description">Additional
182-
Information:</label>
183-
<textarea class="form-control" id="report-question-description" rows="3"></textarea>
184-
</div>
185-
</form>
186-
</div>
187-
<div class="modal-footer">
188-
<button class="btn btn-secondary" id="report-question-close" data-bs-dismiss="modal" type="button">Close</button>
189-
<button class="btn btn-primary" id="report-question-submit" type="button">Submit</button>
190-
</div>
191-
</div>
192-
</div>
193-
</div>
194-
195-
156+
<!--#include virtual="/ssi/report-question-modal.html" -->
196157

197158
<script src="https://cdn.jsdelivr.net/npm/react@18.2.0/umd/react.production.min.js"
198159
integrity="sha384-tMH8h3BGESGckSAVGZ82T9n90ztNXxvdwvdM6UoR56cYcf+0iGXBliJ29D+wZ/x8" crossorigin="anonymous"></script>

client/play/mp/room.html

Lines changed: 1 addition & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -209,44 +209,7 @@ <h1 id="funny-toast-text" class="me-auto text-danger"></h1>
209209

210210
<div id="category-modal-root"></div>
211211

212-
<div class="modal" id="report-question-modal" tabindex="-2">
213-
<div class="modal-dialog">
214-
<div class="modal-content">
215-
<div class="modal-header">
216-
<h5 class="modal-title">Report Question</h5>
217-
<button class="btn-close" data-bs-dismiss="modal" type="button" aria-label="Close"></button>
218-
</div>
219-
<div class="modal-body">
220-
<form>
221-
<div class="mb-3">
222-
<label class="col-form-label" for="report-question-id">Question ID:</label>
223-
<input class="form-control" id="report-question-id" type="text" disabled>
224-
</div>
225-
<div class="mb-3">
226-
<label class="col-form-label" for="report-question-reason">Reason:</label>
227-
<select class="form-select" id="report-question-reason" aria-label="Default select example">
228-
<option value="wrong-category" selected>Wrong category/subcategory</option>
229-
<option value="answer-checking">Incorrect answer checking</option>
230-
<option value="text-error">Error in question or answer text</option>
231-
<option value="other">Other</option>
232-
</select>
233-
</div>
234-
<div>
235-
<p class="text-muted">If your answer was parsed incorrectly, please enter what answer you
236-
gave below.</p>
237-
<label class="col-form-label" for="report-question-description">Additional
238-
Information:</label>
239-
<textarea class="form-control" id="report-question-description" rows="3"></textarea>
240-
</div>
241-
</form>
242-
</div>
243-
<div class="modal-footer">
244-
<button class="btn btn-secondary" id="report-question-close" data-bs-dismiss="modal" type="button">Close</button>
245-
<button class="btn btn-primary" id="report-question-submit" type="button">Submit</button>
246-
</div>
247-
</div>
248-
</div>
249-
</div>
212+
<!--#include virtual="/ssi/report-question-modal.html" -->
250213

251214
<div class="modal fade" id="alert-modal" tabindex="-1" aria-labelledby="alert-modal-text" aria-hidden="true"
252215
data-bs-backdrop="static" data-bs-keyboard="false">

client/play/tossups/index.html

Lines changed: 1 addition & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -187,47 +187,7 @@ <h5 class="modal-title">AI Settings</h5>
187187
</div>
188188
</div>
189189

190-
<div class="modal" id="report-question-modal" tabindex="-3">
191-
<div class="modal-dialog">
192-
<div class="modal-content">
193-
<div class="modal-header">
194-
<h5 class="modal-title">Report Question</h5>
195-
<button class="btn-close" data-bs-dismiss="modal" type="button" aria-label="Close"></button>
196-
</div>
197-
<div class="modal-body">
198-
<form>
199-
<div class="mb-3">
200-
<label class="col-form-label" for="report-question-id">Question ID:</label>
201-
<input class="form-control" id="report-question-id" type="text" disabled>
202-
</div>
203-
<div class="mb-3">
204-
<label class="col-form-label" for="report-question-reason">Reason:</label>
205-
<select class="form-select" id="report-question-reason" aria-label="Default select example">
206-
<option value="wrong-category" selected>Wrong category/subcategory</option>
207-
<option value="answer-checking">Incorrect answer checking</option>
208-
<option value="text-error">Error in question or answer text</option>
209-
<option value="other">Other</option>
210-
</select>
211-
</div>
212-
<div>
213-
<p class="text-muted">
214-
If your answer was parsed incorrectly, please enter what answer you gave below.
215-
</p>
216-
<label class="col-form-label" for="report-question-description">Additional
217-
Information:</label>
218-
<textarea class="form-control" id="report-question-description" rows="3"></textarea>
219-
</div>
220-
</form>
221-
</div>
222-
<div class="modal-footer">
223-
<button class="btn btn-secondary" id="report-question-close" data-bs-dismiss="modal" type="button">Close</button>
224-
<button class="btn btn-primary" id="report-question-submit" type="button">Submit</button>
225-
</div>
226-
</div>
227-
</div>
228-
</div>
229-
230-
190+
<!--#include virtual="/ssi/report-question-modal.html" -->
231191

232192
<script src="https://cdn.jsdelivr.net/npm/react@18.2.0/umd/react.production.min.js"
233193
integrity="sha384-tMH8h3BGESGckSAVGZ82T9n90ztNXxvdwvdM6UoR56cYcf+0iGXBliJ29D+wZ/x8" crossorigin="anonymous"></script>
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<div class="modal" id="report-question-modal" tabindex="-3">
2+
<div class="modal-dialog">
3+
<div class="modal-content">
4+
<div class="modal-header">
5+
<h5 class="modal-title">Report Question</h5>
6+
<button class="btn-close" data-bs-dismiss="modal" type="button" aria-label="Close"></button>
7+
</div>
8+
<div class="modal-body">
9+
<form>
10+
<div class="mb-3">
11+
<label class="col-form-label" for="report-question-id">Question ID:</label>
12+
<input class="form-control" id="report-question-id" type="text" disabled>
13+
</div>
14+
<div class="mb-3">
15+
<label class="col-form-label" for="report-question-reason">Reason:</label>
16+
<select class="form-select" id="report-question-reason" aria-label="Default select example">
17+
<option value="wrong-category" selected>Wrong category/subcategory</option>
18+
<option value="answer-checking">Incorrect answer checking</option>
19+
<option value="text-error">Error in question or answer text</option>
20+
<option value="other">Other</option>
21+
</select>
22+
</div>
23+
<div>
24+
<p class="text-muted">If your answer was parsed incorrectly, please enter what answer you gave below.</p>
25+
<label class="col-form-label" for="report-question-description">Additional Information:</label>
26+
<textarea class="form-control" id="report-question-description" rows="3"></textarea>
27+
</div>
28+
</form>
29+
</div>
30+
<div class="modal-footer">
31+
<button class="btn btn-secondary" id="report-question-close" data-bs-dismiss="modal" type="button">Close</button>
32+
<button class="btn btn-primary" id="report-question-submit" type="button">Submit</button>
33+
</div>
34+
</div>
35+
</div>
36+
</div>

routes/db/bonus.js

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { replaceSSI } from '../ssi-middleware.js';
12
import * as validateObjectId from '../validators/object-id.js';
23
import { escapeHTML } from '../../client/scripts/utilities/strings.js';
34
import getBonus from '../../database/qbreader/get-bonus.js';
@@ -7,16 +8,12 @@ import { Router } from 'express';
78
import fs from 'fs';
89
const router = Router();
910

10-
const head = fs.readFileSync('./client/ssi/head.html', 'utf8');
11-
const nav = fs.readFileSync('./client/ssi/nav.html', 'utf8');
12-
const file = fs.readFileSync('./client/db/bonus/index.html', 'utf8')
13-
.replace('<!--#include virtual="/ssi/head.html" -->', head)
14-
.replace('<!--#include virtual="/ssi/nav.html" -->', nav);
15-
1611
function removeParentheses (answer) {
1712
return answer.replace(/[([].*/g, '');
1813
}
1914

15+
const file = replaceSSI(fs.readFileSync('./client/db/bonus/index.html', 'utf8'));
16+
2017
router.get('/', async (req, res) => {
2118
if (req.originalUrl.split('?')[0].at(-1) !== '/') { return queryRedirect('/db/bonus/')(req, res); }
2219

routes/db/tossup.js

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { replaceSSI } from '../ssi-middleware.js';
12
import * as validateObjectId from '../validators/object-id.js';
23
import { escapeHTML } from '../../client/scripts/utilities/strings.js';
34
import getTossup from '../../database/qbreader/get-tossup.js';
@@ -7,16 +8,12 @@ import { Router } from 'express';
78
import fs from 'fs';
89
const router = Router();
910

10-
const head = fs.readFileSync('./client/ssi/head.html', 'utf8');
11-
const nav = fs.readFileSync('./client/ssi/nav.html', 'utf8');
12-
const file = fs.readFileSync('./client/db/tossup/index.html', 'utf8')
13-
.replace('<!--#include virtual="/ssi/head.html" -->', head)
14-
.replace('<!--#include virtual="/ssi/nav.html" -->', nav);
15-
1611
function removeParentheses (answer) {
1712
return answer.replace(/[([].*/g, '');
1813
}
1914

15+
const file = replaceSSI(fs.readFileSync('./client/db/tossup/index.html', 'utf8'));
16+
2017
router.get('/', async (req, res) => {
2118
if (req.originalUrl.split('?')[0].at(-1) !== '/') { return queryRedirect('/db/tossup/')(req, res); }
2219

routes/play/mp.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
1-
import fs from 'fs';
1+
import { replaceSSI } from '../ssi-middleware.js';
22

33
import { Router } from 'express';
4+
import fs from 'fs';
5+
46
const router = Router();
57

6-
const head = fs.readFileSync('./client/ssi/head.html', 'utf8');
7-
const nav = fs.readFileSync('./client/ssi/nav.html', 'utf8');
8-
const room = fs.readFileSync('./client/play/mp/room.html', 'utf8')
9-
.replace('<!--#include virtual="/ssi/nav.html" -->', nav)
10-
.replace('<!--#include virtual="/ssi/head.html" -->', head);
8+
const room = replaceSSI(fs.readFileSync('./client/play/mp/room.html', 'utf8'));
119

1210
// only match paths that don't have a file extension
1311
router.get(/^\/[^.]+$/, (_req, res) => {

routes/ssi-middleware.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,14 @@ import path from 'path';
33

44
const head = fs.readFileSync('./client/ssi/head.html', 'utf8');
55
const nav = fs.readFileSync('./client/ssi/nav.html', 'utf8');
6+
const reportQuestionModal = fs.readFileSync('./client/ssi/report-question-modal.html', 'utf8');
7+
8+
export function replaceSSI (html) {
9+
html = html.replace('<!--#include virtual="/ssi/head.html" -->', head);
10+
html = html.replace('<!--#include virtual="/ssi/nav.html" -->', nav);
11+
html = html.replace('<!--#include virtual="/ssi/report-question-modal.html" -->', reportQuestionModal);
12+
return html;
13+
}
614

715
export default function (req, res, next) {
816
if (path.extname(req.path) !== '') { return next(); }
@@ -12,8 +20,7 @@ export default function (req, res, next) {
1220
if (!filePath.startsWith(path.resolve('./client'))) { return next(); }
1321
fs.readFile(filePath, 'utf8', (err, data) => {
1422
if (err) return next();
15-
data = data.replace('<!--#include virtual="/ssi/head.html" -->', head);
16-
data = data.replace('<!--#include virtual="/ssi/nav.html" -->', nav);
23+
data = replaceSSI(data);
1724
res.send(data);
1825
});
1926
}

0 commit comments

Comments
 (0)