Jump to content

User:PleaseStand/highlight-comments.js: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
changing so that it will work with monobook
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() {
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 :(
// Monobook skin, unlike the newer Vector skin, doesn't load jQuery :(
Line 51: Line 84:
}
}



hookEvent("load", function(){
hookEvent("load", HighlightCommentsJsWaitForJquery);
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);
});
//</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>