跳转到内容

User:Wetitpig0/OnlineOffline.js

维基百科,自由的百科全书

这是本页的一个历史版本,由Wetitpig0留言 | 贡献2018年6月4日 (一) 05:02编辑。这可能和当前版本存在着巨大的差异。

注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google ChromeFirefoxMicrosoft EdgeSafari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。
(function($, mw) {
    // 只在用户或用户讨论名字空间显示
    var username = mw.config.get('wgRelevantUserName');
    
    if ( username ) {
    	var msg = '';
    	var string;
        
        // 需要元素
        var div = document.getElementById('content').insertBefore(document.createElement('div'), document.getElementById('bodyContent'));
        div.style.display = "none";
        
    	div.id = 'mw-status';
    	div.align = 'right';
    	div.appendChild(document.createTextNode('在綫情況:'));
        
    	var img = div.appendChild(document.createElement('img'));
        
        var showtime = false;

        var api = new mw.Api();
        // API:RecentChanges
        api.get({
            format: 'json',
            action: 'query',
            list: 'usercontribs',
            ucuser: username,
            ucprop: 'timestamp',
            uclimit: 1
        }).done(function (data1) {
            // API:LogEvents
            api.get({
                format: 'json',
                action: 'query',
                list: 'logevents',
                leuser: username,
                leprop: 'timestamp',
                lelimit: 1
            }).done(function (data2) {
            	// API:Users
            	api.get({
            		format: 'json',
            		action: 'query',
                	list: 'blocks',
                	bkusers: username,
                	bklimit: 1
            	}).done(function (data3) {
            		img.src = "/media/wikipedia/commons/";
            		
					// 被封禁
            		if ( data3.query.blocks.length === 1 ) {
            			// 被永久封禁
            			if ( data3.query.blocks[0].expiry === "infinity" ) {
            				img.src += "5/50/Less_Icon_C.svg";
            				msg = "已被永久封禁";
            			}
            			
            			// 被暫時封禁
            			else {
            				img.src += "f/f5/No_Cross.svg";
            				msg = "已被封禁;";
							
            				string = "封禁截止時間:";
            				string += data3.query.blocks[0].expiry.replace("T", " ").replace("Z", "");
            				showtime = true;
            			}
            		}
            		
            		// 未被封禁
            		else {
            			// 從未在綫IP用戶
            			if ( ( data1.query.usercontribs.length + data2.query.logevents.length ) === 0 ) {
            				img.src += "2/27/Disc_Plain_black.svg";
            				msg = "從未在綫 (IP用戶)";
            			}
            			// 只創建賬號的用戶
            			else if ( data1.query.usercontribs.length === 0 ) {
            				img.src += "2/27/Disc_Plain_black.svg";
            				msg = "未曾上綫的新用戶";
            			}
            			
            			else {
            				string = "上綫時間:";
            				showtime = true;
            				
            				if ( data2.query.logevents.length === 0 ) {
            					data2.query.logevents[0] = {"timestamp": 1};
            				}

            				// 比較大小
                			var hist = ( data1.query.usercontribs[0].timestamp > data2.query.logevents[0].timestamp ? new Date(data1.query.usercontribs[0].timestamp) : new Date(data2.query.logevents[0].timestamp) );
                			var diff = ( new Date().getTime() ) - hist.getTime();
                			
                			// 最後更改時間
                			string += hist.toISOString().replace("T", " ").split(".")[0];
                			
							// 離綫用紅點,可能離綫用黃點,在綫用綠點,非活躍用戶用藍點
                			if ( diff < 300000 ) {
                				img.src += "7/74/Disc_Plain_green.svg";
                	    		msg = "在綫;";
                			}
                			else if ( diff < 600000 ) {
                				img.src += "7/75/Disc_Plain_yellow_dark.svg";
                	    		msg = "可能在綫;";
                	    		string = "最後" + string;
                			}
                			else if ( diff > 2592000000 ) {
                				img.src += "0/02/Disc_Plain_blue.svg";
                				msg = "非活躍;";
                				string = "最後" + string;
                			}
                			else {
                				img.src += "1/13/Disc_Plain_red.svg";
                	    		msg = "離綫;";
                	    		string = "最後" + string;
                			}
            			}
            		}
            		
            		var p = document.createElement("p");
            		
                	p.innerHTML = msg;
                	
                	if ( showtime )
                		p.innerHTML += "<br/>" + string + " (UTC)";
                	
                	p.innerHTML += "<br/>(<a href='http://zh.wikipedia.org/w/index.php?title=User_talk:" + username + "' target='_blank' title='留言'>留言</a>)";
            		
                	img.onclick = function () {
                		mw.notify(p);
                	}; 
                	img.width = img.height = 25;
                	img.alt = msg;
                	
                	div.style.display = "block";
            	});
            });
        });
    }
})(jQuery, mw);