// ==UserScript==
// @name Trigger Warning
// @namespace http://everything2.com
// @description Hide content marked with a trigger warning behind a clickwall.
// @include http://everything2.com/*
// @include http://www.everything2.com/*
// @include http://everything2.net/*
// @include http://www.everything2.net/*
// @include http://everything2.org/*
// @include http://www.everything2.org/*
// @author raincomplex
// ==/UserScript==
/*
FUNCTION
For a writeup in at least one category whose name
begins with "Trigger Warning: ", the content will
be replaced by the following message:
This writeup is marked with a trigger warning.
Click here to show the content.
Upon clicking there, the message is removed and
the writeup is shown as normal.
*/
var pagebody = document.getElementById('pagebody')
for (i = 0; i < pagebody.children.length; i++) {
var div = pagebody.children[i]
if (div.className.search(/(^| )item( |$)/) != -1) {
var content = div.children[1]
var footer = div.children[2]
var warnings = 0
var str = footer.innerHTML
var regex = new RegExp("<[^<>]+>Trigger Warning: [^<>]+</a>", 'gi')
while (true) {
var m = regex.exec(str)
if (m == null) break
warnings += 1
}
if (warnings > 0) {
var warn = 'a trigger warning'
if (warnings > 1)
warn = 'trigger warnings'
content.innerHTML = '<div id="triggerwarning' + i + '">'
+ '<p><b>This writeup is marked with ' + warn + '.</b>'
+ '<p><a href="" onclick="'
+ 'document.getElementById(\'triggerwarning' + i + '\').style.display = \'none\'; '
+ 'document.getElementById(\'triggercontent' + i + '\').style.display = \'block\'; '
+ 'return false">Click here</a> to show the content.</div>'
+ '<div style="display: none" id="triggercontent' + i + '">' + content.innerHTML + '</div>'
}
}
}
// vim: ts=4 et