194 lines
4.0 KiB
HTML
194 lines
4.0 KiB
HTML
<html>
|
|
<script type="text/javascript">
|
|
|
|
var last_updated = 0;
|
|
var feeds_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_feeds() {
|
|
|
|
console.log("feeds update");
|
|
|
|
var requestUrl = localStorage["site_url"] + "/public.php?op=globalUpdateFeeds";
|
|
|
|
var xhr = new XMLHttpRequest();
|
|
|
|
xhr.open("POST", requestUrl, true);
|
|
xhr.send();
|
|
|
|
var d = new Date();
|
|
localStorage["last_feeds_updated"] = d.getTime();
|
|
}
|
|
|
|
function update() {
|
|
console.log("update");
|
|
|
|
var d = new Date();
|
|
var login = localStorage["login"];
|
|
var single_user = localStorage["single_user"];
|
|
|
|
if (single_user == "1") login = "admin";
|
|
|
|
var requestUrl = localStorage["site_url"] + "/public.php";
|
|
var params = "op=getUnread&fresh=1&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 badge_color = new Object();
|
|
|
|
// init stuff
|
|
icon.path = "images/normal.png";
|
|
title.title = "";
|
|
badge.text = "";
|
|
badge_color.color = [0, 0, 0, 0];
|
|
|
|
var show_badge = localStorage["show_badge"] == "1";
|
|
var show_fresh = localStorage["show_fresh"] == "1";
|
|
|
|
if (xhr.status == 200) {
|
|
var response = xhr.responseText.split(";");
|
|
|
|
var unread = parseInt(response[0]);
|
|
|
|
if (isNaN(unread)) unread = 0;
|
|
|
|
var fresh;
|
|
|
|
if (response.length == 2)
|
|
fresh = parseInt(response[1]);
|
|
else
|
|
fresh = 0;
|
|
|
|
if (isNaN(fresh)) fresh = 0;
|
|
|
|
if (unread > 0) {
|
|
icon.path = "images/alert.png";
|
|
title.title = "You have %s unread articles.".replace("%s", unread);
|
|
|
|
if (show_fresh && fresh > 0) {
|
|
badge.text = fresh + "";
|
|
badge_color.color = [0, 200, 0, 255];
|
|
} else {
|
|
badge.text = unread + "";
|
|
badge_color.color = [255, 0, 0, 255];
|
|
}
|
|
|
|
} else if (unread == -1) {
|
|
icon.path = "images/error.png";
|
|
|
|
var errorMsg = xhr.responseText.split(";")[1];
|
|
|
|
title.title = "Error: %s.".replace("%s", errorMsg.trim());
|
|
|
|
} else {
|
|
title.title = "You have no unread articles.";
|
|
}
|
|
|
|
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 (!show_badge) badge.text = "";
|
|
|
|
chrome.browserAction.setBadgeBackgroundColor(badge_color);
|
|
chrome.browserAction.setBadgeText(badge);
|
|
chrome.browserAction.setTitle(title);
|
|
chrome.browserAction.setIcon(icon);
|
|
|
|
}
|
|
};
|
|
|
|
}
|
|
|
|
function timeout() {
|
|
|
|
var update_interval;
|
|
var prefs_updated;
|
|
var feeds_update_interval = 30 * 60 * 1000;
|
|
|
|
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();
|
|
try {
|
|
update();
|
|
} catch (e) {
|
|
console.warn(e);
|
|
}
|
|
}
|
|
|
|
if (localStorage['update_feeds'] == 1 && (d.getTime() > feeds_last_updated + feeds_update_interval || prefs_updated != prefs_last_updated)) {
|
|
|
|
feeds_last_updated = d.getTime();
|
|
|
|
try {
|
|
update_feeds();
|
|
} catch (e) {
|
|
console.warn(e);
|
|
}
|
|
|
|
}
|
|
|
|
prefs_last_updated = prefs_updated;
|
|
|
|
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>
|