User:PleaseStand/highlight-comments.js: Difference between revisions
Appearance
Content deleted Content added
PleaseStand (talk | contribs) changing so that it will work with monobook |
PleaseStand (talk | contribs) m OK, IE cannot pass function args through setTimeout |
||
(8 intermediate revisions by the same user not shown) | |||
Line 12: | Line 12: | ||
// .mycomment { background: #ff9; } |
// .mycomment { background: #ff9; } |
||
/*global document, jQuery, wgFormattedNamespaces, wgUserName, |
/*global window, document, jQuery, wgFormattedNamespaces, wgUserName, |
||
HighlightCommentsJsDescription, importScriptURI, hookEvent*/ |
HighlightCommentsJsDescription, importScriptURI, hookEvent*/ |
||
Line 19: | Line 19: | ||
// Global variables |
// Global variables |
||
var HighlightCommentsJsWrapped = false; |
var HighlightCommentsJsWrapped = false, HighlightCommentsJsTries = 40; |
||
HighlightCommentsJsHighlight = function(){ |
HighlightCommentsJsHighlight = function(){ |
||
Line 45: | Line 45: | ||
jQuery(".mycomment").removeClass("mycomment").addClass("mycomment-off"); |
jQuery(".mycomment").removeClass("mycomment").addClass("mycomment-off"); |
||
}; |
}; |
||
function HighlightCommentsJsLoaded() { |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
} |
|||
function HighlightCommentsJsWaitForJquery() { |
|||
// We use globals since in Internet Explorer, we cannot pass |
|||
// function arguments through setTimeout. |
|||
if(typeof jQuery == "undefined" && HighlightCommentsJsTries) { |
|||
HighlightCommentsJsTries--; |
|||
return window.setTimeout(HighlightCommentsJsWaitForJquery, 250); |
|||
} |
|||
if(typeof jQuery == "function") { |
|||
HighlightCommentsJsLoaded(); |
|||
return true; |
|||
} |
|||
return false; |
|||
} |
|||
// Monobook skin, unlike the newer Vector skin, doesn't load jQuery :( |
// Monobook skin, unlike the newer Vector skin, doesn't load jQuery :( |
||
Line 51: | Line 84: | ||
} |
} |
||
hookEvent("load", function(){ |
|||
hookEvent("load", HighlightCommentsJsWaitForJquery); |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
}); |
|||
//</nowiki></pre> |
//</nowiki></pre> |
Revision as of 19:09, 11 April 2010
//<pre><nowiki>
// highlight-comments.js - written by PleaseStand, 2010.
// Source: http://en.wikipedia.org/wiki/User:PleaseStand/highlight-comments.js
// NOTE: This script is in the public domain (not copyrighted). For details, see
// http://en.wikipedia.org/wiki/Template:PD-self
// DESCRIPTION: Highlights your posts to discussion pages
// (at least a significant part). This is just the JS part; you need a
// corresponding CSS line to actually affect text color. An example:
// .mycomment { background: #ff9; }
/*global window, document, jQuery, wgFormattedNamespaces, wgUserName,
HighlightCommentsJsDescription, importScriptURI, hookEvent*/
// Function names
var HighlightCommentsJsHighlight, HighlightCommentsJsUnhighlight;
// Global variables
var HighlightCommentsJsWrapped = false, HighlightCommentsJsTries = 40;
HighlightCommentsJsHighlight = function(){
// Lists the tags that can contain comments/indented text respectively.
var commentTags = "dd,li,p";
var indentTags = "dl,ol,ul";
if(!HighlightCommentsJsWrapped) {
// Do the work, adding span wrappers
jQuery("a[title=\"" + (wgFormattedNamespaces[2] + ":" +
wgUserName).replace(/"/g, "\\\"") + "\"]").closest(commentTags).
contents().not(indentTags).
wrap(jQuery("<span class=\"mycomment\"/>"));
// Set the flag that wrapping is done
HighlightCommentsJsWrapped = true;
} else {
// Just change the classes
jQuery(".mycomment-off").removeClass("mycomment-off").
addClass("mycomment");
}
};
HighlightCommentsJsUnhighlight = function(){
// Change the classes
jQuery(".mycomment").removeClass("mycomment").addClass("mycomment-off");
};
function HighlightCommentsJsLoaded() {
var desc, button, buttonLink;
if(typeof HighlightCommentsJsDescription == "undefined") {
// Default toolbox link text
desc = "Toggle comment highlighting";
} else {
// User-defined toolbox link text
desc = HighlightCommentsJsDescription;
}
// Create and add the toolbox link
button = jQuery("<li id=\"n-highlightcomments\"/>").
append(buttonLink = jQuery("<a/>").html(desc));
jQuery("#p-tb ul").append(button);
buttonLink.toggle(HighlightCommentsJsHighlight,
HighlightCommentsJsUnhighlight);
}
function HighlightCommentsJsWaitForJquery() {
// We use globals since in Internet Explorer, we cannot pass
// function arguments through setTimeout.
if(typeof jQuery == "undefined" && HighlightCommentsJsTries) {
HighlightCommentsJsTries--;
return window.setTimeout(HighlightCommentsJsWaitForJquery, 250);
}
if(typeof jQuery == "function") {
HighlightCommentsJsLoaded();
return true;
}
return false;
}
// Monobook skin, unlike the newer Vector skin, doesn't load jQuery :(
if(typeof jQuery == "undefined") {
importScriptURI("http://bits.wikimedia.org/skins-1.5/common/jquery.min.js");
}
hookEvent("load", HighlightCommentsJsWaitForJquery);
//</nowiki></pre>