User:SHEIKH/highlight.js
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
//কোন কমেন্টে আপনাকে হাইলাইট করবে
( function ( mw, $ ) {
"use strict";
var settings = {
highlighterFunction: function ( hc ) {
hc.addColorForUsers( '#FFFFE0', [mw.config.get( 'wgUserName' )] );
hc.wrapComments();
hc.addMenuItem();
}
};
var msg = {
highlightText: 'দৃষ্টিগোচর',
highlightTooltip: 'এই পৃষ্ঠায় আপনার নিজস্ব মন্তব্যের দৃষ্টিগোচর সক্রিয় করুন',
unhighlightText: 'দৃষ্টি অগোচর',
unhighlightTooltip: 'এই পৃষ্ঠায় আপনার নিজস্ব মন্তব্যের দৃষ্টিগোচর নিষ্ক্রিয় করুন'
};
var translations = {
};
$.extend( msg, translations[document.documentElement.lang] );
var linkMap = Object.create( null ), classNumber = 0, pageRE = null, commentsAreHighlighted = false;
function buildPageRE() {
var articlePathParts = mw.config.get( 'wgArticlePath' ).split( '$1' );
var articlePathStartRE = mw.util.escapeRegExp( articlePathParts[0] );
var articlePathEndRE = mw.util.escapeRegExp( articlePathParts[1] );
var indexPathRE = mw.util.escapeRegExp( mw.util.wikiScript( 'index' ) );
return new RegExp(
'^(?:' + articlePathStartRE + '([^?#]+)' + articlePathEndRE + '|' +
indexPathRE + '\\?(?:[^&#]*&)*title=([^&#]+))'
);
}
function findPageNameFromHref( href ) {
var m = pageRE.exec( href );
return m ? decodeURIComponent(
( m[1] || m[2] ).replace( /\+/g, '%20' )
).replace( / /g, '_' ) : null;
}
function wrapComments() {
wrapElementComments( $( '.mw-highlight-comments' ) );
commentsAreHighlighted = true;
addMenuItem( true );
}
function wrapElementComments( content ) {
var commentTags = 'dd, li, p', indentTags = 'dl, ol, ul';
$( 'a', content ).each( function () {
var pageName = findPageNameFromHref( this.getAttribute( 'href' ) );
if ( pageName && pageName in linkMap ) {
var className = linkMap[pageName];
$( this ).closest( commentTags ).contents().each( function () {
if ( this.nodeType === 1 ) {
var $elem = $( this );
if ( !$elem.is( indentTags ) && !$elem.hasClass( className ) ) {
$elem
.addClass( className )
.attr( 'data-mw-highlighted-comment-class', className );
}
} else {
$( this ).wrap( $( '<span>', {
'class': className,
'data-mw-highlighted-comment-wrapper': ''
} ) );
}
} );
}
} );
}
function unwrapComments() {
$( '[data-mw-highlighted-comment-wrapper]' ).replaceWith( function () {
return this.childNodes;
} );
$( '[data-mw-highlighted-comment-class]' ).removeClass( function () {
var klass = $( this ).attr( 'data-mw-highlighted-comment-class' );
$( this ).removeAttr( 'data-mw-highlighted-comment-class' );
return klass;
} );
commentsAreHighlighted = false;
addMenuItem( true );
}
function addClassForUsers( className, users ) {
var ns = mw.config.get( 'wgFormattedNamespaces' );
for ( var i = 0; i < users.length; ++i ) {
var userName = users[i].replace( / /g, '_' );
var userPage = ns[2] + ':' + userName, userTalkPage = ns[3] + ':' + userName;
linkMap[userPage] = className;
linkMap[userTalkPage] = className;
}
}
function addColorForUsers( color, users ) {
var className = 'highlighted-comment-' + classNumber++;
addClassForUsers( className, users );
return mw.util.addCSS( '.' + className + ' { background-color: ' + color + '; }' );
}
function addMenuItem( updateOnly ) {
var text, tooltip, $oldItem = $( '#ca-highlightcomments' );
if ( updateOnly && !$oldItem.length ) {
return;
}
if ( commentsAreHighlighted ) {
text = msg.unhighlightText;
tooltip = msg.unhighlightTooltip;
} else {
text = msg.highlightText;
tooltip = msg.highlightTooltip;
}
var link = mw.util.addPortletLink(
'p-cactions', '#', text, 'ca-highlightcomments', tooltip, null, $oldItem[0]
);
$oldItem.remove();
$( link ).click(function () {
if ( commentsAreHighlighted ) {
unwrapComments();
} else {
wrapComments();
}
});
}
var hc = {
addClassForUsers: addClassForUsers,
addColorForUsers: addColorForUsers,
addMenuItem: addMenuItem,
wrapComments: wrapComments
};
mw.loader.using( [ 'mediawiki.util' ], function () {
pageRE = buildPageRE();
$( function () {
$.extend( settings, window.highlightCommentsSettings );
settings.highlighterFunction( hc );
} );
mw.hook( 'wikipage.content' ).add( function ( $content ) {
$content.addClass( 'mw-highlight-comments' );
if ( commentsAreHighlighted ) {
wrapElementComments( $content );
}
} );
} );
}( mediaWiki, jQuery ) );