A web app for keeping track of media that passes or fails The Queerbait-Tragicqueer-Straightcomfort Test
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

558 lines
25 KiB

  1. <?php
  2. include_once ("config.php");
  3. $rows = get_front_page_table ();
  4. ?><!DOCTYPE html>
  5. <html lang="en">
  6. <head>
  7. <meta charset="utf-8">
  8. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  9. <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  10. <title>The Queerbait-Tragicqueer-Straightcomfort Test</title>
  11. <!-- Bootstrap -->
  12. <link href="<?php echo SITE_URL; ?>css/bootstrap.min.css" rel="stylesheet">
  13. <!-- QT css -->
  14. <link href="<?php echo SITE_URL; ?>qt.css" rel="stylesheet">
  15. <meta name="author" content="Benjamin Gregory Carlisle PhD Email: murph@bgcarlisle.com Website: https://www.bgcarlisle.com/ Social media: https://scholar.social/@bgcarlisle">
  16. </head>
  17. <body>
  18. <nav class="nav">
  19. <a class="nav-link" href="#" onclick="show_citation(event);">Cite</a>
  20. <a class="nav-link" href="https://codeberg.org/bgcarlisle/QueerTestTracker" target="_blank">Source</a>
  21. <a class="nav-link" href="https://scholar.social/@bgcarlisle" target="_blank">Social media</a>
  22. <a class="nav-link" href="<?php echo SITE_URL; ?>admin/">Admin</a>
  23. </nav>
  24. <div id="citeMask" class="hidden" onclick="hide_dialog (event);">&nbsp;</div>
  25. <div id="cite" class="notes">
  26. <h2>How to cite The Queerbait-Tragicqueer-Straightcomfort Test</h2>
  27. <h3>BibTeX</h3>
  28. <pre>
  29. @software{carlisle_qt_2020,
  30. location = {{Retrieved from https://qt.bgcarlisle.com/}},
  31. title = {The Queerbait-Tragicqueer-Straightcomfort Test},
  32. url = {https://qt.bgcarlisle.com/},
  33. organization = {{The Grey Literature}},
  34. date = {2020-04},
  35. author = {Carlisle, Benjamin Gregory}
  36. }
  37. </pre>
  38. <h3>Vancouver</h3>
  39. <p>Carlisle BG. The Queerbait-Tragicqueer-Straightcomfort Test [Internet]. Retrieved from https://qt.bgcarlisle.com/: The Grey Literature; 2020. Available from: https://qt.bgcarlisle.com/</p>
  40. <h3>AMA</h3>
  41. <p>Carlisle BG. <i>The Queerbait-Tragicqueer-Straightcomfort Test</i>. Retrieved from https://qt.bgcarlisle.com/: The Grey Literature; 2020. https://qt.bgcarlisle.com/.</p>
  42. <h3>MLA</h3>
  43. <p>Carlisle, Benjamin Gregory. <i>The Queerbait-Tragicqueer-Straightcomfort Test.</i> The Grey Literature, 2020, https://qt.bgcarlisle.com/.</p>
  44. <button onclick="hide_dialog(event);" class="btn btn-block btn-primary" style="margin-bottom: 40px;">Close citation information</button>
  45. </div>
  46. <?php
  47. foreach ( $rows as $note ) {
  48. if ( ! is_null ( $note['notes'] ) ) { ?>
  49. <div id="notes<?php echo $note['id']; ?>" class="notes">
  50. <button class="btn btn-secondary btn-sm" style="float: right;" onclick="hide_dialog(event);">Close notes</button>
  51. <h2>Notes for <?php echo $note['title']; ?><?php if ( ! is_null ( $note['year'] ) ) { echo " (" . $note['year'] . ")"; } ?></h2>
  52. <?php if ( ! is_null ( $note['details'] ) ) {
  53. echo '<p style="font-style: italic;">' . $note['details'] . '</p>';
  54. }
  55. if ( $note['notes_contain_spoilers'] == 1) {
  56. echo '<p><span class="badge badge-warning">These notes contain possible spoilers</span></p>';
  57. echo '<p class="hidden" id="notes_content_' . $note['id'] . '">' . str_replace ("\n", "<br>", $note['notes']) . '</p>';
  58. echo '<button class="btn btn-primary btn-block" onclick="$(\'#notes_content_' . $note['id'] . '\').slideToggle();">Show/hide notes that may include spoilers</button>';
  59. } else {
  60. echo '<p>' . str_replace ("\n", "<br>", $note['notes']) . '</p>';
  61. }?>
  62. </div>
  63. <?php }
  64. }
  65. ?>
  66. <div class="notes" id="submit">
  67. <button class="btn btn-secondary btn-sm" style="float: right;" onclick="hide_dialog(event);">Close</button>
  68. <h2>Submit a piece of media</h2>
  69. <p>Please do not provide individual ratings of many related media where one summary rating will be equally informative. For example, I have included one entry for all the numbered episodes for Star Wars films, rather than a separate entry for each one.</p>
  70. <p>Submissions will be reviewed for accuracy and informativeness before being posted.</p>
  71. <form action="<?php echo SITE_URL; ?>submit.php" method="post">
  72. <div class="form-group">
  73. <label for="type">Media type</label>
  74. <input type="text" class="form-control" id="type" name="type" aria-describedby="textHelp">
  75. <small id="textHelp" class="form-text text-muted">E.g. Film, Television series, Television programme</small>
  76. </div>
  77. <div class="form-group">
  78. <label for="type">Title</label>
  79. <input type="text" class="form-control" id="title" name="title" aria-describedby="titleHelp">
  80. <small id="titleHelp" class="form-text text-muted">E.g. Star Trek: Deep Space Nine</small>
  81. </div>
  82. <div class="form-group">
  83. <label for="type">Year</label>
  84. <input type="text" class="form-control" id="year" name="year" aria-describedby="yearHelp">
  85. <small id="yearHelp" class="form-text text-muted">E.g. 1999</small>
  86. </div>
  87. <div class="form-group">
  88. <label for="type">Details</label>
  89. <input type="text" class="form-control" id="details" name="details" aria-describedby="detailsHelp">
  90. <small id="detailsHelp" class="form-text text-muted">If it is an individual television programme, give the season, episode number and episode title, if any, in the following format: e.g. S07E14, "Chimera". If all the entries in a film series can be covered with a single entry, do so, e.g. for Star Wars, write "All the numbered episodes".</small>
  91. </div>
  92. <div class="form-group">
  93. <label for="type">Link</label>
  94. <input type="text" class="form-control" id="imdb_link" name="imdb_link" aria-describedby="imdbHelp">
  95. <small id="imdbHelp" class="form-text text-muted">Provide a link to the IMDB or Wikipedia entry that corresponds to the media in question.</small>
  96. </div>
  97. <div class="form-group">
  98. <label for="queer_character">Is there at least one queer character?</label>
  99. <select class="form-control" id="queer_character" name="queer_character">
  100. <option value="na"></option>
  101. <option value="1">At least one queer character</option>
  102. <option value="0">No queer characters</option>
  103. </select>
  104. <small id="queer_characterHelp" class="form-text text-muted">Do not include fan-theories or details disclosed outside the media itself. Do not include campy or kinky straight people. Only include in-canon queer representation.</small>
  105. </div>
  106. <p>If you selected "No queer characters" above, please leave the remaining blank. Scroll down to the bottom and click "Submit."</p>
  107. <div class="form-group">
  108. <label for="named">Does this queer character have a name?</label>
  109. <select class="form-control" id="named" name="named">
  110. <option value="na"></option>
  111. <option value="1">The queer character has a name</option>
  112. <option value="0">The queer character is not named</option>
  113. </select>
  114. <small id="namedHelp" class="form-text text-muted">The name of the queer character that passes or comes closest to passing all the requirements of The Queerbait-Tragicqueer-Straightcomfort Test. In the case that there are many queer characters who would score the same, the first in alphabetical order.</small>
  115. </div>
  116. <div class="form-group">
  117. <label for="name">What is the name of the queer character?</label>
  118. <input type="text" class="form-control" id="name" name="name" aria-describedby="nameHelp">
  119. <small id="nameHelp" class="form-text text-muted">E.g. Odo</small>
  120. </div>
  121. <div class="form-group">
  122. <label for="non_deniable">Would it be difficult to mis-read this character as straight?</label>
  123. <select class="form-control" id="non_deniable" name="non_deniable">
  124. <option value="na"></option>
  125. <option value="1">Yes, this character is clearly queer</option>
  126. <option value="0">No, this character is ambiguously queer</option>
  127. </select>
  128. <small id="non_deniableHelp" class="form-text text-muted">Would mis-reading this queer character as a straight person be very difficult for even a naive straight person, or one who is very determined to refuse to believe a character is queer? Of course it is impossible to write a queer character in such a way that the most determined straight person couldn't refuse to acknowledge it.</small>
  129. </div>
  130. <div class="form-group">
  131. <label for="blink_miss_it">Is this blink-and-you-miss-it "representation"?</label>
  132. <select class="form-control" id="blink_miss_it" name="blink_miss_it">
  133. <option value="na"></option>
  134. <option value="1">Blink-and-you-miss-it</option>
  135. <option value="0">Non-blink-and-you-miss-it</option>
  136. </select>
  137. <small id="blink_miss_itHelp" class="form-text text-muted">If the canonicity of a character's queerness depends entirely on a very small detail or a very short scene, it is blink-and-you-miss-it queer representation.</small>
  138. </div>
  139. <div class="form-group">
  140. <label for="tragic">Is this tragic queer representation?</label>
  141. <select class="form-control" id="tragic" name="tragic">
  142. <option value="na"></option>
  143. <option value="1">Tragic</option>
  144. <option value="0">Non-tragic</option>
  145. </select>
  146. <small id="tragicHelp" class="form-text text-muted">Does the queer character in question meet with a sad ending, or is their story primarily about their misfortunes? This includes, but is not limited to "bury your gays" media, where the queer character is killed.</small>
  147. </div>
  148. <div class="form-group">
  149. <label for="straight_comfort">Is this queer character mainly written for straight comfort?</label>
  150. <select class="form-control" id="straight_comfort" name="straight_comfort">
  151. <option value="na"></option>
  152. <option value="1">Written for straight comfort</option>
  153. <option value="0">Not written for straight comfort</option>
  154. </select>
  155. <small id="straight_comfortHelp" class="form-text text-muted">Does this character seem to have been written mainly to coddle the sensibilities of straight people, or to make the point that queer people are, or should be, indistinguishable from straight people? The case of a writer who bragged about how you won't be able to tell that a character is gay would qualify as queer representation designed for straight comfort. A gay character who is in the closet, however, might not.</small>
  156. </div>
  157. <div class="form-group">
  158. <label for="notes">Notes</label>
  159. <textarea class="form-control" id="notes" name="notes" rows="5"></textarea>
  160. <small id="notesHelp" class="form-text text-muted">Include anything that will provide context to the decisions made, but try to keep it short.</small>
  161. </div>
  162. <div class="form-group">
  163. <label for="notes_contain_spoilers">Do these notes contain spoilers?</label>
  164. <select class="form-control" id="notes_contain_spoilers" name="notes_contain_spoilers">
  165. <option value="na"></option>
  166. <option value="1">Yes, spoilers</option>
  167. <option value="0">No spoilers</option>
  168. </select>
  169. <small id="notesHelp" class="form-text text-muted">If a prospective reader might be surprised by the contents of the notes entered above, please indicate this.</small>
  170. </div>
  171. <div class="form-group">
  172. <label for="type">Your email</label>
  173. <input type="text" class="form-control" id="submitter" name="submitter" aria-describedby="submitterHelp">
  174. <small id="submitterHelp" class="form-text text-muted">Optional; but if I have questions and I can't contact you, your submission might just get deleted. For privacy reasons, as soon as I approve a submission, the submitter's email is removed from the database.</small>
  175. </div>
  176. <div class="alert alert-warning">Your submission may be edited before being posted for accuracy or informativeness.</div>
  177. <button class="btn btn-block btn-primary" style="margin-bottom: 40px;">Submit a new piece of media</button>
  178. </form>
  179. </div>
  180. <div class="notes" id="correction">
  181. <button class="btn btn-secondary btn-sm" style="float: right;" onclick="hide_dialog(event);">Close</button>
  182. <h2>Suggest a correction</h2>
  183. <p>Please indicate the piece of media to be corrected, what needs to be fixed, and provide a short justification for why.</p>
  184. <form action="<?php echo SITE_URL; ?>correction.php" method="post">
  185. <div class="form-group">
  186. <label for="media">What piece of media needs to be corrected?</label>
  187. <select class="form-control" id="media" name="media">
  188. <option value="na"></option>
  189. <?php
  190. foreach ($rows as $media) {
  191. if (! is_null ($media['details'])) {
  192. $details = " " . $media['details'];
  193. } else {
  194. $details = "";
  195. }
  196. ?><option value="<?php echo $media['id']; ?>"><?php echo $media['title']; ?> (<?php echo $media['year']; ?>)<?php echo $details; ?></option><?php
  197. }
  198. ?>
  199. </select>
  200. <small id="mediaHelp" class="form-text text-muted"></small>
  201. </div>
  202. <div class="form-group">
  203. <label for="suggestion">Suggested correction</label>
  204. <textarea class="form-control" id="suggestion" name="suggestion" rows="5"></textarea>
  205. <small id="suggestionHelp" class="form-text text-muted">Please indicate what the error is and provide a brief explanation, if necessary.</small>
  206. </div>
  207. <div class="form-group">
  208. <label for="submitter">Your email</label>
  209. <input type="text" class="form-control" id="submitter" name="submitter" aria-describedby="submitterHelp">
  210. <small id="submitterHelp" class="form-text text-muted">Optional; but if I have questions and I can't contact you, your suggested correction might just get deleted. For privacy reasons, all suggested corrections (including the submitter's email address) are deleted from the database automatically after 72 hours.</small>
  211. </div>
  212. <button class="btn btn-block btn-primary" style="margin-bottom: 40px;">Suggest correction</button>
  213. </form>
  214. </div>
  215. <div class="container-fluid">
  216. <div class="row">
  217. <div class="col">
  218. <?php
  219. echo $success_notice;
  220. ?>
  221. <h1>The Queerbait-Tragicqueer-Straightcomfort Test</h1>
  222. <p style="font-style: italic;">Benjamin Gregory Carlisle PhD</p>
  223. <img src="cc-by-nc.png" style="margin-bottom: 20px;" title="This license lets others remix, adapt, and build upon this work non-commercially, and although their new works must also acknowledge Dr Carlisle and be non-commercial, they don’t have to license their derivative works on the same terms.">
  224. <a class="btn btn-primary btn-sm" href="<?php echo SITE_URL; ?>export.tsv" style="margin-bottom: 20px;">Download this data set</a>
  225. <p>Does this piece of media have at least one (1) named queer character who:</p>
  226. <ul>
  227. <li>Can't easily be read as a straight character (blink-and-you-miss-it "representation" doesn't count)</li>
  228. <li>Doesn't have a tragic ending, and</li>
  229. <li>Hasn't been written primarily to make straight people comfortable?</li>
  230. </ul>
  231. <button class="btn btn-primary" onclick="show_submit(event);" style="margin-bottom: 40px;">Submit a piece of media</button>
  232. <button class="btn btn-secondary" onclick="show_correct(event);" style="margin-bottom: 40px;">Suggest a correction</button>
  233. </div>
  234. </div>
  235. <div class="row">
  236. <div class="col-md-3">
  237. <div class="input-group" style="margin-bottom: 40px;">
  238. <input type="text" id="filter-table-input" class="form-control" placeholder="Filter table" aria-label="Filter table" aria-describedby="filter-table-button" value="<?php echo $_GET['s']; ?>">
  239. <div class="input-group-append">
  240. <button class="btn btn-primary" type="button" id="filter-table-button" onclick="event.preventDefault();filter_table();">Filter table</button>
  241. </div>
  242. </div>
  243. </div>
  244. <div class="col-md-3">
  245. <button class="btn btn-success btn-block" onclick="toggle_non_fullmarks(event);" style="margin-bottom: 40px;">Hide media with less than "full marks"</button>
  246. </div>
  247. <div class="col-md-3">
  248. <button class="btn btn-info btn-block" onclick="toggle_no_queer_characters(event);" style="margin-bottom: 40px;">Hide media with no queer characters</button>
  249. </div>
  250. <div class="col-md-3">
  251. <button class="btn btn-secondary btn-block" type="button" onclick="$('#filter-table-input').val('');event.preventDefault();filter_table();" style="margin-bottom: 40px;">Show all</button>
  252. </div>
  253. </div>
  254. <div class="row">
  255. <div class="col">
  256. <div class="table-responsive">
  257. <table class="table table-striped table-hover table-sm">
  258. <thead class="thead-light">
  259. <tr>
  260. <th scope="col">Media</th>
  261. <th scope="col">Queer character(s)<sup><a href="#queer_character_notes" onclick="highlight_paragraph('queer_character_notes');">1</a></sup></th>
  262. <th scope="col">Name<sup><a href="#name_notes" onclick="highlight_paragraph('name_notes');">2</a></sup> <button class="btn btn-warning btn-sm" onclick="unblur_all(event);">Unblur all</button></th>
  263. <th scope="col">Difficult to mis-read as straight<sup><a href="#difficult_to_read_as_straight" onclick="highlight_paragraph('difficult_to_read_as_straight');">3</a></sup></th>
  264. <th scope="col">Non-blink-and-you-miss-it<sup><a href="#blink_and_you_miss_it" onclick="highlight_paragraph('blink_and_you_miss_it');">4</a></sup></th>
  265. <th scope="col">Non-tragic<sup><a href="#tragic_notes" onclick="highlight_paragraph('tragic_notes');">5</a></sup></th>
  266. <th scope="col">Not written for straight comfort<sup><a href="#straight_comfort_notes" onclick="highlight_paragraph('straight_comfort_notes');">6</a></sup></th>
  267. <th scope="col">Notes</th>
  268. </tr>
  269. </thead>
  270. <tbody>
  271. <?php
  272. foreach ($rows as $row) {
  273. $full_marks = FALSE;
  274. if ( $row['queer_character'] == 1 ) {
  275. $queer_character = '<td class="table-success">Yes</td>';
  276. if ( $row['named'] == 1 ) {
  277. $name = '<td class="table-success name-column blurry-text">' . $row['name'] . '</td>';
  278. } else {
  279. $name = '<td class="table-danger">-</td>';
  280. }
  281. if ( $row['non_deniable'] == 1 ) {
  282. $non_deniable = '<td class="table-success">Yes</td>';
  283. } else {
  284. $non_deniable = '<td class="table-danger">No</td>';
  285. }
  286. if ( $row['blink_miss_it'] == 1 ) {
  287. $blink_miss_it = '<td class="table-danger">No</td>';
  288. } else {
  289. $blink_miss_it = '<td class="table-success">Yes</td>';
  290. }
  291. if ( $row['tragic'] == 1 ) {
  292. $tragic = '<td class="table-danger">No</td>';
  293. } else {
  294. if ( is_null ( $row['tragic'] ) ) {
  295. $tragic = '<td class="table-warning">See notes</td>';
  296. } else {
  297. $tragic = '<td class="table-success">Yes</td>';
  298. }
  299. }
  300. if ( $row['straight_comfort'] == 1 ) {
  301. $straight_comfort = '<td class="table-danger">No</td>';
  302. } else {
  303. if ( is_null ( $row['straight_comfort'] ) ) {
  304. $straight_comfort = '<td class="table-warning">See notes</td>';
  305. } else {
  306. $straight_comfort = '<td class="table-success">Yes</td>';
  307. }
  308. }
  309. // Calculate whether the piece of media gets "full marks"
  310. $show_row_class = TRUE;
  311. if ( $row['named'] == 1 & $row['non_deniable'] == 1 & $row['blink_miss_it'] == 0 & $row['tragic'] == 0 & $row['straight_comfort'] == 0 ) {
  312. $row_class = ' class="fullmarks hasqueercharacter"';
  313. } else {
  314. $row_class = ' class="hasqueercharacter"';
  315. }
  316. } else {
  317. $queer_character = '<td class="table-danger">No</td>';
  318. $name = '<td class="table-danger">-</td>';
  319. $non_deniable = '<td class="table-danger">-</td>';
  320. $blink_miss_it = '<td class="table-danger">-</td>';
  321. $tragic = '<td class="table-danger">-</td>';
  322. $straight_comfort = '<td class="table-danger">-</td>';
  323. $show_row_class = FALSE;
  324. }
  325. ?><tr<?php if ($show_row_class) { echo $row_class; } ?>>
  326. <th scope="row"><?php if ( ! is_null ( $row['imdb_link'] ) ) { ?><a href="<?php echo $row['imdb_link']; ?>" target="_blank"><?php } ?><?php echo $row['title']; ?><?php if ( ! is_null ( $row['year'] )) { ?> (<?php echo $row['year']; ?>)<?php } ?><?php if ( ! is_null ( $row['imdb_link'] ) ) { ?></a><?php } ?> <span class="badge badge-secondary"><?php echo $row['type']; ?></span><?php if ( ! is_null ( $row['details'] ) ) { ?><?php echo "<br>" . $row['details']; ?><?php } ?></th>
  327. <?php echo $queer_character; ?>
  328. <?php echo $name; ?>
  329. <?php echo $non_deniable; ?>
  330. <?php echo $blink_miss_it; ?>
  331. <?php echo $tragic; ?>
  332. <?php echo $straight_comfort; ?>
  333. <td><?php if ( ! is_null ( $row['notes'] ) ) { ?><button class="btn btn-primary btn-sm" onclick="show_notes(event, <?php echo $row['id']; ?>);">View</button><?php } else { echo "-"; } ?></td>
  334. </tr><?php
  335. }
  336. ?>
  337. </tbody>
  338. </table>
  339. </div>
  340. </div>
  341. </div>
  342. <div class="row">
  343. <div class="col">
  344. <h2>Notes</h2>
  345. <a name="queer_character_notes"></a>
  346. <p id="queer_character_notes">1. Does not include fan-theories or details disclosed outside the media itself. Does not include campy or kinky straight people. This only includes in-canon queer representation.</p>
  347. <a name="name_notes"></a>
  348. <p id="name_notes">2. The name of the queer character that passes or comes closest to passing all the requirements of The Queerbait-Tragicqueer-Straightcomfort Test. In the case that there are many queer characters who would score the same, the first in alphabetical order. Because the name of a queer character may itself be a spoiler, they have been blurred. Mouse-over the cell in the table to reveal the name, or tap it on a mobile browser.</p>
  349. <a name="difficult_to_read_as_straight"></a>
  350. <p id ="difficult_to_read_as_straight">3. Would mis-reading this queer character as a straight person be very difficult for even a naive straight person, or one who is very determined to refuse to believe a character is queer? Of course it is impossible to write a queer character in such a way that the most determined straight person couldn't refuse to acknowledge it.</p>
  351. <a name="blink_and_you_miss_it"></a>
  352. <p id="blink_and_you_miss_it">4. If the canonicity of a character's queerness depends entirely on a very small detail or a very short scene, it is blink-and-you-miss-it queer representation.</p>
  353. <a name="tragic_notes"></a>
  354. <p id="tragic_notes">5. Does the queer character in question meet with a sad ending, or is their story primarily about their misfortunes? This includes, but is not limited to "bury your gays" media, where the queer character is killed.</p>
  355. <a name="straight_comfort_notes"></a>
  356. <p id="straight_comfort_notes">6. Does this character seem to have been written mainly to coddle the sensibilities of straight people, or to make the point that queer people are, or should be, indistinguishable from straight people? The case of a writer who bragged about how you won't be able to tell that a character is gay would qualify as queer representation designed for straight comfort. A gay character who is in the closet, however, might not.</p>
  357. </div>
  358. </div>
  359. </div>
  360. <!-- jQuery -->
  361. <script src="<?php echo SITE_URL; ?>jquery-3.4.1.min.js"></script>
  362. <!-- Popper.js -->
  363. <script src="<?php echo SITE_URL; ?>js/bootstrap.bundle.min.js"></script>
  364. <!-- Bootstrap JS -->
  365. <script src="<?php echo SITE_URL; ?>js/bootstrap.min.js"></script>
  366. <!-- QT JS -->
  367. <script>
  368. function show_citation (event) {
  369. event.preventDefault();
  370. $('#citeMask').fadeIn(400, function () {
  371. $('#cite').slideDown();
  372. });
  373. }
  374. function show_notes (event, id) {
  375. event.preventDefault();
  376. $('#citeMask').fadeIn(400, function () {
  377. $('#notes' + id).slideDown();
  378. });
  379. }
  380. function hide_dialog (event) {
  381. event.preventDefault();
  382. $('.notes').slideUp(0, function () {
  383. $('#citeMask').fadeOut();
  384. });
  385. }
  386. function show_submit (event) {
  387. event.preventDefault();
  388. $('#citeMask').fadeIn(400, function () {
  389. $('#submit').slideDown();
  390. });
  391. }
  392. function show_correct (event) {
  393. event.preventDefault();
  394. $('#citeMask').fadeIn(400, function () {
  395. $('#correction').slideDown();
  396. });
  397. }
  398. function toggle_non_fullmarks (event) {
  399. event.preventDefault();
  400. if ($('#filter-table-input').val() != '') {
  401. $('#filter-table-input').val('');
  402. filter_table();
  403. }
  404. $('tbody tr:not(.fullmarks)').fadeOut(0);
  405. }
  406. function toggle_no_queer_characters (event) {
  407. event.preventDefault();
  408. if ($('#filter-table-input').val() != '') {
  409. $('#filter-table-input').val('');
  410. filter_table();
  411. }
  412. $('tbody tr:not(.hasqueercharacter)').fadeOut(0);
  413. }
  414. function unblur_all (event) {
  415. event.preventDefault();
  416. $('.name-column').toggleClass('blurry-text');
  417. }
  418. function filter_table () {
  419. query = $('#filter-table-input').val();
  420. if ( query == '' ) {
  421. $('tbody th').parent().fadeIn(0);
  422. } else {
  423. $('tbody th').parent().fadeOut(0);
  424. $('tbody th').each( function (index) {
  425. cell_value = $(this).html();
  426. if (cell_value.toLowerCase().search(query.toLowerCase()) != -1) {
  427. $(this).parent().fadeIn(0);
  428. }
  429. });
  430. }
  431. }
  432. function highlight_paragraph (para_id) {
  433. $('p').removeClass('paragraph-highlight');
  434. $('#' + para_id).addClass('paragraph-highlight');
  435. setTimeout(function () {
  436. $('#' + para_id).removeClass('paragraph-highlight');
  437. }, 15000);
  438. }
  439. $('#filter-table-input').on('input', function (e) {
  440. filter_table ();
  441. });
  442. $(document).ready(function () {
  443. if ( $('#filter-table-input').val() != '' ) {
  444. filter_table();
  445. }
  446. });
  447. </script>
  448. </body>
  449. </html>