MediaWiki:Gadget-Clipboard.js

From JoJo's Bizarre Encyclopedia - JoJo Wiki
Revision as of 18:25, 25 February 2021 by Vish (talk | contribs) (Created page with "/** * Código para gestionar el contenido del portapapeles, debido a los constantes * plagios por parte de PlagioDex (el wiki de FANDOOM de donde nos fuimos). * Created by...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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.
/**
 * Código para gestionar el contenido del portapapeles, debido a los constantes
 * plagios por parte de PlagioDex (el wiki de FANDOOM de donde nos fuimos).
 * Created by Ciencia Al Poder on wikidex.net
 **/
(function( $, document ) {
	var _notice = '\nThis content comes from JoJo\'s Bizarre Encyclopedia (jojowiki.com), and must be attributed to its authors, as specified in the license. \nJoJo\'s Bizarre Wiki (the FANDOM wiki) is prohibited from using it, for repeatedly copying without giving attribution.',
	_init = function() {
		if ( mw.config.get( 'wgUserGroups', [] ).length < 4 ) {
			$( '#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 );