]> git.wh0rd.org - tt-rss.git/blame - utils/notifier/background.html
notifier: fix to use public.php
[tt-rss.git] / utils / notifier / background.html
CommitLineData
f0ea2da5
AD
1<html>
2<script type="text/javascript">
3
4var last_updated = 0;
5var prefs_last_updated = 0;
6
7function param_escape(arg) {
8 if (typeof encodeURIComponent != 'undefined')
9 return encodeURIComponent(arg);
10 else
11 return escape(arg);
12}
13
14function update() {
15 var d = new Date();
16 var login = localStorage["login"];
36d146f8
AD
17 var single_user = localStorage["single_user"];
18
19 if (single_user == "1") login = "admin";
f0ea2da5 20
27aaf38a 21 var requestUrl = localStorage["site_url"] + "/public.php";
fa7c9e65 22 var params = "op=getUnread&fresh=1&login=" + param_escape(login);
f0ea2da5
AD
23
24 var xhr = new XMLHttpRequest();
25
26
27 xhr.open("POST", requestUrl, true);
28 xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
29 xhr.send(params);
30
31 xhr.onreadystatechange = function() {
32 if (xhr.readyState == 4) {
33
34 var icon = new Object();
35 var title = new Object();
01701654 36 var badge = new Object();
fa7c9e65 37 var badge_color = new Object();
01701654 38
36d146f8
AD
39 // init stuff
40 icon.path = "images/normal.png";
41 title.title = "";
42 badge.text = "";
43 badge_color.color = [0, 0, 0, 0];
44
fa7c9e65
AD
45 var show_badge = localStorage["show_badge"] == "1";
46 var show_fresh = localStorage["show_fresh"] == "1";
47
f0ea2da5 48 if (xhr.status == 200) {
fa7c9e65
AD
49 var response = xhr.responseText.split(";");
50
51 var unread = parseInt(response[0]);
52
36d146f8 53 if (isNaN(unread)) unread = 0;
fa7c9e65 54
36d146f8
AD
55 var fresh;
56
fa7c9e65
AD
57 if (response.length == 2)
58 fresh = parseInt(response[1]);
59 else
60 fresh = 0;
01701654 61
36d146f8
AD
62 if (isNaN(fresh)) fresh = 0;
63
fa7c9e65 64 if (unread > 0) {
01701654 65 icon.path = "images/alert.png";
f0ea2da5 66 title.title = "You have %s unread articles.".replace("%s", unread);
fa7c9e65 67
36d146f8 68 if (show_fresh && fresh > 0) {
fa7c9e65
AD
69 badge.text = fresh + "";
70 badge_color.color = [0, 200, 0, 255];
fa7c9e65
AD
71 } else {
72 badge.text = unread + "";
73 badge_color.color = [255, 0, 0, 255];
74 }
75
01701654
AD
76 } else if (unread == -1) {
77 icon.path = "images/error.png";
78
79 var errorMsg = xhr.responseText.split(";")[1];
80
81 title.title = "Error: %s.".replace("%s", errorMsg.trim());
01701654 82
f0ea2da5 83 } else {
f0ea2da5
AD
84 title.title = "You have no unread articles.";
85 }
86
87 localStorage["last_updated"] = d.getTime();
88 localStorage["last_error"] = "";
89 } else {
90 localStorage["last_error"] = xhr.responseText;
91
92 icon.path = "images/error.png";
01701654 93 title.title = "Error (%s) while updating.".replace("%s", xhr.status);
f0ea2da5
AD
94 }
95
fa7c9e65 96 if (!show_badge) badge.text = "";
01701654 97
fa7c9e65 98 chrome.browserAction.setBadgeBackgroundColor(badge_color);
01701654 99 chrome.browserAction.setBadgeText(badge);
f0ea2da5
AD
100 chrome.browserAction.setTitle(title);
101 chrome.browserAction.setIcon(icon);
102
103 }
104 };
105
106}
107
108function timeout() {
109
110 var update_interval;
111 var prefs_updated;
112
113 if (localStorage["update_interval"])
114 update_interval = localStorage["update_interval"] * 60 * 1000;
115 else
116 update_interval = 15 * 60 * 1000;
117
118 if (localStorage["prefs_updated"])
119 prefs_updated = localStorage["prefs_updated"];
120 else
121 prefs_updated = -1;
122
123 var d = new Date();
124
125 if (d.getTime() > last_updated + update_interval ||
126 prefs_updated != prefs_last_updated) {
127
128 last_updated = d.getTime();
129 prefs_last_updated = prefs_updated;
130 try {
131 update();
132 } catch (e) {
133 //
134 }
135 }
136
137 window.setTimeout("timeout()", 1000);
138}
139
140function init() {
141
142 chrome.browserAction.onClicked.addListener(function() {
143 var site_url = localStorage['site_url'];
144
145 if (site_url) {
146 var cp = new Object();
147
148 cp.url = site_url;
149
150 chrome.tabs.create(cp);
151 }
152
01701654 153 });
f0ea2da5
AD
154
155 window.setTimeout("timeout()", 1000);
156
157}
158</script>
159
160<body onload="init()"> </body>
161
162</html>