User:Patsagorn Y./js/secWatch.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.
/*
// #################################################
//  secWatch v0.2-beta
//  Author: de.wikipedia.org/wiki/User:FNDE
//  Date: 25.01.2017 
//  Documentation at:[[:de:Benutzer:FNDE/secWatch]]
//  Adapt to thwiki wiki by User:Patsagorn Y.
//  Date: 14.12.2019
//  <nowiki> 
// #################################################
*/

( function ( mw, $ ) {
	
	"use strict";
	
	function request(mode,user) {
		
		$.ajax({
		
			type: 'GET',
			cache: false,
			dataType: 'json',
			data: {user:user, history:"14"},
			url: "https://tools.wmflabs.org/request/FNBot/get_dev.php",
			error: function (jqXHR, textStatus, errorThrown) {
			
				startInterval(2, user, defaultInterval);
			
			},
		
		success: function (msg) {
			
			$.ajax({
				
				type: 'POST',
				cache: false,
				dataType: 'json',
				data: {action:"parse", text:msg.content, format:'json', 
				prop:'text', contentmodel:'wikitext', disablelimitreport:1},
				url: "https://th.wikipedia.org/w/api.php",
				error: function (jqXHR, textStatus, errorThrown) {
						
					startInterval(2, user, defaultInterval);
				
				},
				
				success: function (msg_output) {
									
					last_update = false;
					
					update_interval = startInterval(2, user, defaultInterval);
					
					if(mode==1) {	
						
						$(container).hide().html(msg_output.parse.text['*']).slideToggle();
					
					}
					
					else {
						
						$(container).promise().done(function(){
							
							$(this).html(msg_output.parse.text['*']);
							$(this).fadeTo(250, 1);
						
						});
					
					}
					
				}
				
			});
	
		}
		
	});
		
	}
	
	function updateSecWatch(mode, user) {
	
		if(hidden_window===false) {

			if(mode!=1) { 

				$(container).fadeTo(250, 0.5);	

			}
			
			request(mode, user);
		
		}
	
		else { 
		
			last_update = true; 
			clearTimeout(update_interval);
		
		}

	}	

	function startInterval(mode, user, interval) {
			
		return setTimeout(function(){ updateSecWatch(mode, user); }, interval);
		
	}
	
	function ini() {
			
		$('<style>#secWatch_content ul{margin-top:-5px;margin-bottom:10px;}</style>').insertBefore(container);	
		updateSecWatch(1, get_user_name);
		
		$(window).focus(function(){
			
			hidden_window = false;
			
			if(last_update===true) { 
			
			updateSecWatch(2, get_user_name);
			
			}
			
		});
		
		$(window).blur(function(){
			
			hidden_window = true;
			
		});
		
	}
	
	var container = '#secWatch_content';
	
	if($(container).length) {
		
		var last_update = false;
		var hidden_window = false;
		var update_interval = false;
		var get_user_name = false;		
		var defaultInterval = 60000;
		
		mw.loader.using( ['mediawiki.user'], function () {
		
			get_user_name = mw.user.getName();
			
			ini();
		
		});

	}	   

}( window.mediaWiki, window.jQuery ) ); // </nowiki>