User:Gary/comment highlighter.js: Difference between revisions

Content deleted Content added
another fix
Updated quite a bit, to fix a bug, and to support my second username.
Line 6:
FIXME Fix on [[WP:RFA]] nominations (!votes, as in comments wrapped in <li>s).
*/
 
if (typeof(unsafeWindow) != 'undefined')
addOnloadHook = unsafeWindow.addOnloadHook;
mw = unsafeWindow.mw;
 
function commentHighlighter()
Line 21 ⟶ 15:
}
 
function getCommentParent(node, commentDivsExist)
{
var possibleParentNodes = ['DD', 'DIV', 'LI', 'P'];
Line 27 ⟶ 21:
var parent = node.parent();
if (parent.parentsUntil('.diff').parent().hasClass('diff')) return $();
else if (commentDivsExist && $.inArray(parent[0].nodeName, possibleParentNodes) !=> -1) return parent;
 
var possibleParents = [];
Line 38 ⟶ 32:
possibleParents.sort(sortParents);
if (possibleParents[0][1]) parent = possibleParents[0][0];
else return parent;
if (parent.length && !commentDivsExist && parent.contents().length)
{
var newParent = $('<div class="comment"></div>');
parent.contents().each(function()
{
var node = $(this);
if (node[0].nodeName == 'DL') return $();
newParent.append(node);
});
 
parent.prepend(newParent);
return newParent;
}
else return parent;
}
 
Line 85 ⟶ 65:
// Highlight discussion sections that I am linked from (i.e. that I participated or was mentioned in).
// Also highlight the line itself.
var formattedUsernamemyUsername = 'User:' + mw.config.get('wgUserName').replace(/ /g, '_');
var formattedUsername = 'User:' + myUsername.replace(/ /g, '_');
var usernameBackground = '#eef';
 
if (myUsername == 'Gary') var secondUsername = 'User:Gary_King';
else var secondUsername;
 
function linkLinksToUsername(username, link)
{
if (link && link.attr('href') && link.attr('href').indexOf(formattedUsernameusername) !=> -1 && link.attr('href').indexOf(formattedUsernameusername) == (link.attr('href').length - formattedUsernameusername.length)) &&return !link.parents('#contentSub').length)true;
else return newParentfalse;
}
 
$('#bodyContent a').each(function()
{
var link = $(this);
var linkIsGood = link && link.attr('href');
if (link && link.attr('href') && link.attr('href').indexOf(formattedUsername) != -1 && link.attr('href').indexOf(formattedUsername) == (link.attr('href').length - formattedUsername.length) && !link.parents('#contentSub').length)
var usernameCheck = linkLinksToUsername(formattedUsername, link);
if (secondUsername) var secondUsernameCheck = linkLinksToUsername(secondUsername, link);
else var secondUsernameCheck = false;
if (linkIsGood && (usernameCheck || secondUsernameCheck) && !link.parents('#contentSub').length)
{
var parent = getCommentParent(link, true);
if (!parent.length) return true;
parent.css('background-color', usernameBackground);
Line 104 ⟶ 99:
{
eval(data);
if ($.inArray(mw.config.get('wgPageName').split('/')[0].replace(/_/g, ' '), discussionPages) !=> -1) commentHighlighter();
}
 
Line 112 ⟶ 107:
if (mw.config.get('wgAction') != 'view') return false;
// checkCheck if this is a discussion page
var isDiscussionPage = mw.config.get('wgCanonicalNamespace').indexOf('talk') !=> -1 || mw.config.get('wgCanonicalNamespace').indexOf('Talk') !=> -1 || ($('#ca-addsection').length ? true : false) || mw.config.get('wgPageName').indexOf('/Archive_') !=> -1;
if (!isDiscussionPage) $.get(mw.config.get('wgScript') + '?title=User:Gary/discussion_pages.js&action=raw', checkIfDiscussionPage);
else commentHighlighter();