There is 1 plant in blossom on March the 12th.
Coltsfoot Tussilago farfara blossoms between Mar 15 and Apr 15 |
Toot-O-Matic with Java 2 v1.4.2_05 GreaseMonkey Userscripts - Really Valid? - Really Valid CSS? - Troll Blocker - Troll Blocker 2 - Troll Blocker 3 - No Pop-up Links phpBB2 Forum MODs - Easy Banned Ordering - Easy No BBcode Links - Block DNSBL Blacklisted Posting - Block DNSBL Blacklisted Posting - Black WordPress - Clean Options Plugin - Error Reporting Plugin - Ping Watcher Plugin - widgets.php Hack - 2.2 Classes and Functions - 2.3 Classes and Functions - 2.6 Classes and Functions - 2.7 Classes and Functions - 2.8 Classes and Functions - 2.9 Classes and Functions bbPress - 1.0 Constants, Classes and Functions - 1.0 Actions and Filters - 1.0 Actions and Filters (refined list) anti-SPAM - DShield's IP list // ==UserScript== // @name Troll Blocker 3 // @namespace http://www.mittineague.com/dev/ // @description blocks out annoying troll posts // @include http://blog01.kintera.com/christianalliance/* // ==/UserScript== /* * Troll Blocker 3 - trollblocker3.user.js version 1.2 * Author: Mittineague <N/A> (N/A) http://www.mittineague.com * * Change Log * version 1.0 - Nov 12, 2006 * version 1.1 - Nov 13, 2006 // fixed so new spans are only added to comments * version 1.2 - November 15, 2006 // added (function(){ [CODE] })(); * // changed event capture to bubble for Opera compatibility * * script hosted at http://www.mittineague.com/dev/trollblocker3.user.js * and can be found at http://userscripts.org/scripts/show/6334 * * This script was created specifically for the * Christian Alliance for Progress * blogs at blog01.kintera.com/christianalliance/ * * The blogs use this DOM mark-up * ........ * <div> | * <p> | The div section * [CONTENT HERE] | is replaced with * </p> | a new empty div * </div> |_______________ * <p class="posted"> | * text - "Posted by:" | The p section * <a> | is replaced with * [USER NAME] | a new p saying * </a> | that it has * text - "at Date and Time" | been replaced * </p> | * * CURRENT SCRIPT ACTIONS * script replaces <div> and <p> (with it's contents) of known trolls with new <div> <p> * script inserts <span> after each user before closing </p> tag on all posts * script replaces <div> and <p> (with it's contents) of newly blocked trolls with new <div> <p> * * Tired of seeing known troll posts on page load? * Add known trolls to array sequentially starting with "0" * Names are Case sensitive * ie. "mittineague" is not the same as "Mittineague", or "MITTINEAGUE" * knownTrolls = new Array(); * knownTrolls[0] = "first known troll's name"; * knownTrolls[1] = "second known troll's name"; * knownTrolls[2] = "third known troll's name"; * knownTrolls[3] = "fourth known troll's name"; * etc. etc. */ (function(){ /* add known trolls beneath the following array as shown above * names added here will be filtered from all threads * names must be removed from array to see posts again */ knownTrolls = new Array(); var dataItems, thisDataItem, userName; var newItems, thisNewItem; dataItems = document.evaluate( "//p[@class='posted']/a", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = 0; i < dataItems.snapshotLength; i++) { thisDataItem = dataItems.snapshotItem(i); userName = thisDataItem.innerHTML; /* Don't want to add "block this" to main post's time or comments links */ if( (userName.search(/:/g) == -1 ) && (userName.search(/Comments /gi) == -1 ) ) { var newSpan = document.createElement('span'); var blockText = document.createTextNode(" - Troll?? Block " + userName); newSpan.appendChild(blockText); newSpan.style.color = "#811400"; newSpan.style.textDecoration = "underline"; newSpan.style.cursor = "pointer"; newSpan.style.marginLeft = "2em"; newSpan.setAttribute("posterName",userName); newSpan.addEventListener( "mouseover", function() { this.style.textDecoration = "none"; }, false); newSpan.addEventListener( "mouseout", function() { this.style.textDecoration = "underline"; }, false); newSpan.addEventListener( "click", function() { var newName = this.getAttribute("posterName"); hideNewTroll(newName); }, false); thisDataItem.parentNode.appendChild(newSpan); } /* hide known Trolls */ for (var m = 0; m < knownTrolls.length; m++) { if ( userName == knownTrolls[m] ) { var newPara = document.createElement('p'); var newDiv = document.createElement('div'); newPara.style.marginTop = "2em"; newPara.style.marginBottom = "2em"; newPara.style.color = "#f00"; var newText = document.createTextNode("All posts by " + knownTrolls[m] + " have been Blocked, to view posts by this person you must edit the trollblocker3.user.js file."); newPara.appendChild(newText); var atNode = thisDataItem.parentNode; // P var wsNode = atNode.previousSibling; // #text (whitespace) var postNode = wsNode.previousSibling; // Div atNode.parentNode.replaceChild(newDiv, postNode); atNode.parentNode.replaceChild(newPara, atNode); } } userName = ""; } function hideNewTroll(newName){ newItems = document.evaluate( "//span[@posterName ='" + newName + "']", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); for (var n = 0; n < newItems.snapshotLength; n++) { thisNewItem = newItems.snapshotItem(n); var replacement = document.createElement('p'); var companion = document.createElement('div'); replacement.style.marginTop = "2em"; replacement.style.marginBottom = "2em"; replacement.style.color = "#f00"; var newText = document.createTextNode("All posts by " + newName + " have been Blocked on this web page, to view posts by this person, you must Reload this web page."); replacement.appendChild(newText); var upperNode = thisNewItem.parentNode; // P var textNode = upperNode.previousSibling; // #text (whitespace) var commentNode = textNode.previousSibling; // Div upperNode.parentNode.replaceChild(companion, commentNode); upperNode.parentNode.replaceChild(replacement, upperNode); } } })(); | ||||||||
|
Wireless devices: |
|||||||||