MediaWiki:Gadget-sidebar-tracking.js

From Old School Near-Reality Wiki
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.
 1 ;(function($, mw){
 2 	function trackSidebarClick(event) {
 3 		var $e = $(event.currentTarget),
 4 		    pagename = mw.config.get('wgPageName'),
 5 		    href,
 6 		    click_type,
 7 		    data;
 8 		href = $e.attr('href');
 9 		switch (event.which) {
10 			case 1:
11 				click_type = 'left';
12 				if (!(event.altKey || event.ctrlKey || event.altKey || event.metaKey)) {
13 					$e.attr({'x-href': href, 'x-leftclicked':'1'}).removeAttr('href');
14 				}
15 				break;
16 			case 2:
17 				click_type = 'middle';
18 				break;
19 			case 3:
20 				click_type = 'right';
21 				break;
22 			default:
23 				click_type = 'other: '+event.which;
24 		}
25 		if (event.shiftKey) {
26 			click_type += '-shift';
27 		}
28 		if (event.ctrlKey) {
29 			click_type += '-control';
30 		}
31 		if (event.altKey) {
32 			click_type += '-alt';
33 		}
34 		if (event.metaKey) {
35 			click_type += '-meta';
36 		}
37 		data = {
38 				page: pagename,
39 				link: href,
40 				click: click_type,
41 				wiki: mw.config.get('wgDBname')
42 		};
43 		console.log('Sending sidebar click data:', data);
44 		var req = $.ajax('https://chisel.weirdgloop.org/gazproj/track/sidebar', {
45 			method: 'POST',
46 			data: data
47 		});
48 		req.done(function(d, s, xhr){
49 			console.log('Data (success): ', d, s, xhr);
50 			if (click_type === 'left' && $e.attr('x-leftclicked') === '1') {
51 				$e.attr({'href':$e.attr('x-href'), 'x-leftclicked':'0'});
52 				$e.get(0).click();
53 			}
54 		});
55 		req.fail(function(d, s, xhr){
56 			console.log('Data (fail): ', d, s, xhr);
57 			if (click_type === 'left' && $e.attr('x-leftclicked') === '1') {
58 				$e.attr({'href':$e.attr('x-href'), 'x-leftclicked':'0'});
59 				$e.get(0).click();
60 			}
61     	});
62 	}
63 	function init(){
64 		$('#mw-panel a[href]').on('mousedown', trackSidebarClick);
65 	}
66 	$(init);
67 })(jQuery, mw);