User:Indic-TechCom/Script/qrCode.js

From Meta, a Wikimedia project coordination wiki

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.
/*
    This is userscirpt to genreate qr Code on wiki.

    @Author [[User:Jayprakash12345]]
    @OwnBy [[meta:Indic-TechCom]]

	Please note The word "QR Code" is registered trademark of DENSO WAVE INCORPORATED
*/
mw.loader.using('mediawiki.util').then( function() {

        // Load module
        mw.loader.load( 'https://meta.wikimedia.org/w/index.php?title=User:Jayprakash12345/jquery-qrcode.min.js&action=raw&ctype=text/javascript' );

        // Add a portlet link. 
		var link = mw.util.addPortletLink(
			'p-tb',
			'#',
			'Genreate QR code'
		);

        // Trigger for portlet link
		$(link).click( function( e ) {
			e.preventDefault();
			
			pageName = mw.config.get( 'wgPageName' )
			url = 'https:' + mw.config.get( 'wgServer' ) + '/wiki/' + mw.config.get( 'wgPageName' );

			// Create dic with qrCode id
			qrCodeDiv = $( '<div/>' ).attr('id','qrCode');
			
			// Create paragraph
			para = $('<p/>').css('font-weight', 'bold').text('This is the QR Code for '+ url + ' URL.' )
			$( qrCodeDiv ).append( para, '<br/>' );
			
			
			$( '#bodyContent' ).children().hide();
			$( '#bodyContent' ).append( qrCodeDiv );
			
			var qrcode = $( '#qrCode' ).qrcode( {
	            render: 'canvas',
	            text: url,
	            size: '460'
        	} );
			
			mw.loader.using( 'oojs-ui-core' ).done( function () {

					var downloadBtn = new OO.ui.ButtonWidget( { label: 'Download PNG' } ),
						cancelBtn = new OO.ui.ButtonWidget( { label: 'Back to Page', flags: ['destructive' ] } );
					
					cancelBtn.on( 'click', function () {
						location.reload();
					} );
					
					downloadBtn.on( 'click', function () {
						var a      = document.createElement('a');
						a.href     = $(document).find('canvas').get(0).toDataURL('image/png');
						a.download = mw.config.get( 'wgPageName' ) + '-qrCode.png';
						document.body.appendChild(a); 
						a.click(); 
						document.body.removeChild(a);
					} );
					
					var notice = '<br/><br/><small>Notice: The word QR Code is registered trademark of DENSO WAVE INCORPORATED</small>';
					
					$( '#qrCode' ).append( '<br/><br/>', downloadBtn.$element, cancelBtn.$element, notice );
			} );
			
		});

});