]>
Commit | Line | Data |
---|---|---|
f0ea2da5 AD |
1 | <html> |
2 | <script type="text/javascript"> | |
3 | ||
4 | var last_updated = 0; | |
5 | var prefs_last_updated = 0; | |
6 | ||
7 | function param_escape(arg) { | |
8 | if (typeof encodeURIComponent != 'undefined') | |
9 | return encodeURIComponent(arg); | |
10 | else | |
11 | return escape(arg); | |
12 | } | |
13 | ||
14 | function 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 | ||
108 | function 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 | ||
140 | function 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> |