Okoun Check Lite

V pravidelných intervalech kontroluje oblíbené a novou poštu na serveru okoun.cz

当前为 2017-12-07 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name        Okoun Check Lite
// @namespace   ocl.okoun.cz
// @description V pravidelných intervalech kontroluje oblíbené a novou poštu na serveru okoun.cz
// @include     https://www.okoun.cz/favourites.jsp?new=1
// @author      BALCARENKO
// @version     1.2
// @grant       none
// ==/UserScript==

(function() {
	var TITLE = 'OCL';
	var RELOAD_IN_SECONDS = 77;
	
	document.body.id = TITLE;
	document.title = TITLE;
	
	// zmenime favico
	setFavicon();
	
	// najdeme link na posticku
	var posta = document.querySelector('.head .menu a[href="/msgbox.jsp"]');
	if(!posta) {
		// pokud nenajdeme, tak je uzivatel odhlasen => konec
		return;
	}
	
	// je-li nova posta, zmenime title a favicon
	if(posta.innerHTML!='Vzkazník') {
		document.title = TITLE + ' - nová pošta';
		setFavicon('mail');
		// po otevreni posty zmenime zpatky
		posta.addEventListener('click',function(){
			document.title = TITLE;
			setFavicon()
		},false);
	}
	
	// pokud je ve strance #sysmsgBox, tak jsme nejspis hned po prihlaseni
	// a nasledny reload by chtel znovu odesilat POST data, proto reload takto
	// toto by melo byt az po kontrole posty, jinak se reload provede i po odhlaseni uzivatele
	if(document.getElementById("sysmsgBox")) {
		location = location.href;
	}
	
	// skryt nadpisy kategorii
	var headers = document.querySelectorAll('.main .main h3');
	for(header of headers) {
		header.style.display = 'none';
	}
	
	// odkazy v zahlavi v novem okne
	var links = document.querySelectorAll('.head a, .footer a');
	for(link of links) {
		if(link.href.search(/javascript:|\?new=1/)==-1) { // krom logoutu a reloadu
			link.setAttribute('target','ocl');
		}
	}
	
	// odkazy na audirka
	var items = document.querySelectorAll('.main .item');
	for(var item of items) {
		
		// kdyz klikneme na nazev, tak jako by to bylo na nove (= otevre se na nejstrasich z novych)
		var links = item.getElementsByTagName('a');
		if(links.length == 2)
			links[0].href = links[1].href;
		
		// odkazy otevirame v novem okne
		// a po kliknuti skryjeme cely div
		for(var link of links) {
			link.setAttribute('target','_blank');
			link.onmouseup = function(e) {
				// leve nebo stredni tlacitko
				if(e.which !== 3) {
					var div = findParentDiv(this);
					if(div)
						div.style.display = 'none';
				}
			}
		}
	}
	
	function findParentDiv(node) {
		var div = node.parentNode;
		if(!div || (div.className.search(/item/) > -1))
			return div;
		findParentDiv(div);
	}
	
	// pripravime si tlacitko s odpoctem
	var countDownButton = document.createElement('button');
	with(countDownButton) {
		id = 'reload-button';
		style = 'display: inline-block; margin-left: 10px';
		innerHTML = 'Reload in: ' + sec2str(RELOAD_IN_SECONDS);
		onclick = function() {
			clearInterval(interval);
			RELOAD_IN_SECONDS = 1;
			countDown();
		}
	}
	
	// a umistime ho do okouni hlavicky
	var head = document.getElementsByClassName('head');
	if (head[0])
		head[0].insertBefore(countDownButton,head[0].lastElementChild);
	else
		document.body.appendChild(countDownButton);
	
	// zahajime odpocet
	var interval = setInterval(countDown, 1000);
	
	function countDown() {
		countDownButton.innerHTML = 'Reload in: ' + sec2str(--RELOAD_IN_SECONDS);
		
		if(RELOAD_IN_SECONDS > 0) return;

		// zastavit odpocet a reload kdyz to dojde do nuly
		clearInterval(interval);
		location.reload(true);
	}
	
	function sec2str(nsec) {
	//	var hours = Math.floor(nsec / 3600);
		var minutes = Math.floor(nsec / 60);
		var seconds = (nsec - minutes * 60);
		return minutes + ':' + ('0' + seconds).substr(-2);
	}
	
	// nastaveni ikony
	function setFavicon(what){
		
		//	okoun <link rel="shortcut icon" href="/static/201502020949/favicon.ico" type="image/x-icon">
		var link = document.querySelector('link[rel~="icon"]');
		if(!link) {
			link = document.createElement('link');
			link.setAttribute('rel','icon');
			document.head.appendChild(link);
		}
		
		link.setAttribute('id','favicon');
		if(what=='mail') {
			// blikaci dopisni obalka
			link.type = "image/gif";
			link.href = "data:image/gif;base64,R0lGODlhDAAIALIAAP8IAP///wAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFKAAHACwAAAAADAAIAAADFRi6vPAwqtcCtRZMrfF2UxVmkSQ2CQAh+QQFKAAHACwAAAAADAAIAAADFQi6vPEwqtcAtTZMrfF2UxVmkSQ2CQAh/ntUaGlzIGFuaW1hdGVkIEdJRiBmaWxlIHdhcyBjb25zdHJ1Y3RlZCB1c2luZyBVbGVhZCBHSUYgQW5pbWF0b3IsIHZpc2l0IHVzIGF0IGh0dHA6Ly93d3cudWxlYWQuY29tIHRvIGZpbmQgb3V0IG1vcmUuAVVTU1BDTVQAOw==";
		} else {
			// defaultni ikona OCL
			link.type = "image/gif";
			link.href = "data:image/gif;base64,R0lGODlhEAAQAKECAAAAAICAgP///////yH5BAEKAAIALAAAAAAQABAAAAImlI+pq+DvGIRhzVfbBTltbm0d8o3HByXByk6mRzGGKwt0za71UgAAOw==";
		}
	}

})();