135 lines
2.7 KiB
HTML
135 lines
2.7 KiB
HTML
<html>
|
|
<script type="text/javascript">
|
|
|
|
var last_updated = 0;
|
|
var prefs_last_updated = 0;
|
|
|
|
function param_escape(arg) {
|
|
if (typeof encodeURIComponent != 'undefined')
|
|
return encodeURIComponent(arg);
|
|
else
|
|
return escape(arg);
|
|
}
|
|
|
|
function update() {
|
|
var d = new Date();
|
|
var login = localStorage["login"];
|
|
|
|
var requestUrl = localStorage["site_url"] + "/backend.php";
|
|
var params = "op=getUnread&login=" + param_escape(login);
|
|
|
|
var xhr = new XMLHttpRequest();
|
|
|
|
|
|
xhr.open("POST", requestUrl, true);
|
|
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
|
|
xhr.send(params);
|
|
|
|
xhr.onreadystatechange = function() {
|
|
if (xhr.readyState == 4) {
|
|
|
|
var icon = new Object();
|
|
var title = new Object();
|
|
var badge = new Object();
|
|
|
|
var showBadge = localStorage["show_badge"];
|
|
|
|
if (xhr.status == 200) {
|
|
var unread = parseInt(xhr.responseText);
|
|
|
|
if (unread > 0) {
|
|
|
|
icon.path = "images/alert.png";
|
|
title.title = "You have %s unread articles.".replace("%s", unread);
|
|
badge.text = unread + "";
|
|
} else if (unread == -1) {
|
|
icon.path = "images/error.png";
|
|
|
|
var errorMsg = xhr.responseText.split(";")[1];
|
|
|
|
title.title = "Error: %s.".replace("%s", errorMsg.trim());
|
|
badge.text = "";
|
|
|
|
} else {
|
|
icon.path = "images/normal.png";
|
|
title.title = "You have no unread articles.";
|
|
badge.text = "";
|
|
}
|
|
|
|
localStorage["last_updated"] = d.getTime();
|
|
localStorage["last_error"] = "";
|
|
} else {
|
|
localStorage["last_error"] = xhr.responseText;
|
|
|
|
icon.path = "images/error.png";
|
|
title.title = "Error (%s) while updating.".replace("%s", xhr.status);
|
|
}
|
|
|
|
if (showBadge !== "1") badge.text = "";
|
|
|
|
chrome.browserAction.setBadgeText(badge);
|
|
|
|
chrome.browserAction.setTitle(title);
|
|
chrome.browserAction.setIcon(icon);
|
|
|
|
}
|
|
};
|
|
|
|
}
|
|
|
|
function timeout() {
|
|
|
|
var update_interval;
|
|
var prefs_updated;
|
|
|
|
if (localStorage["update_interval"])
|
|
update_interval = localStorage["update_interval"] * 60 * 1000;
|
|
else
|
|
update_interval = 15 * 60 * 1000;
|
|
|
|
if (localStorage["prefs_updated"])
|
|
prefs_updated = localStorage["prefs_updated"];
|
|
else
|
|
prefs_updated = -1;
|
|
|
|
var d = new Date();
|
|
|
|
if (d.getTime() > last_updated + update_interval ||
|
|
prefs_updated != prefs_last_updated) {
|
|
|
|
last_updated = d.getTime();
|
|
prefs_last_updated = prefs_updated;
|
|
try {
|
|
update();
|
|
} catch (e) {
|
|
//
|
|
}
|
|
}
|
|
|
|
window.setTimeout("timeout()", 1000);
|
|
}
|
|
|
|
function init() {
|
|
|
|
chrome.browserAction.onClicked.addListener(function() {
|
|
var site_url = localStorage['site_url'];
|
|
|
|
if (site_url) {
|
|
var cp = new Object();
|
|
|
|
cp.url = site_url;
|
|
|
|
chrome.tabs.create(cp);
|
|
}
|
|
|
|
});
|
|
|
|
window.setTimeout("timeout()", 1000);
|
|
|
|
}
|
|
</script>
|
|
|
|
<body onload="init()"> </body>
|
|
|
|
</html>
|