MediaWiki:Gadget-Clipboard.js
Jump to navigation
Jump to search
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.
/**
* Code to manage the content of the clipboard, due to the constant
* plagiarism by the FANDOM wiki editors.
* Created by Ciencia Al Poder on wikidex.net
**/
(function( $, document ) {
var _notice = '\nThis content comes from JoJo\'s Bizarre Encyclopedia (https://jojowiki.com), and must be attributed to its authors if you are using it on another wiki or web page, as specified in the license. \nJoJo\'s Bizarre Wiki (the FANDOM wiki) is prohibited from using it, for repeatedly copying without giving credit.',
_init = function() {
if ( mw.config.get( 'wgUserGroups', [] ).length < 2 ) {
$( '#mw-content-text' ).on( 'cut copy', _copyevent );
$( document.body ).on( 'paste', '[contenteditable],input,textarea', _pasteevent );
}
},
_copyevent = function( e ) {
var text, $target;
$target = $( e.target );
if ( $target.closest( '.ace_editor' ).length > 0 ) {
return;
} else if ( $target.is( 'input,textarea' ) ) {
if ( e.type == 'cut' ) {
return;
}
text = $target.val().substring( e.target.selectionStart, e.target.selectionEnd );
} else {
text = document.getSelection().toString();
}
if ( text.length < 40 ) {
return;
}
text = text + _notice;
( e.originalEvent.clipboardData || window.clipboardData ).setData( 'text/plain', text );
e.preventDefault();
console.log( 'Content to be copied modified. Report any problems to Vish.' );
},
_pasteevent = function( e ) {
var paste, selection, input, startPos, endPos, text;
paste = ( e.originalEvent.clipboardData || window.clipboardData ).getData( 'text/plain' );
if ( paste.indexOf( _notice ) == -1 ) {
return;
}
paste = paste.replace( _notice, '');
if ( $( event.target ).is( '[contenteditable]' ) ) {
selection = window.getSelection();
if ( !selection.rangeCount ) {
return false;
}
selection.deleteFromDocument();
selection.getRangeAt( 0 ).insertNode( document.createTextNode( paste ) );
} else {
input = event.target;
if ( input.selectionStart !== undefined ) {
startPos = input.selectionStart;
endPos = input.selectionEnd;
text = $( input ).val();
text = text.substring( 0, startPos ) + paste + text.substring( endPos );
$( input ).val( text );
endPos = startPos + paste.length;
input.setSelectionRange( endPos, endPos );
}
}
console.log( 'Content to paste modified. Report any problems to Vish.' );
e.preventDefault();
};
$( _init );
})( jQuery, document );