]> git.wh0rd.org - tt-rss.git/blame - viewfeed.js
add sanity check & debug mode to prefs; misc code cleanups
[tt-rss.git] / viewfeed.js
CommitLineData
bb7cface 1var active_post_id = false;
f0601b87 2
a7565293 3var xmlhttp_rpc = Ajax.getTransport();
f0601b87 4
bb7cface 5function view(id, feed_id) {
ee1f45f4
AD
6
7 try {
f0601b87 8
ee1f45f4
AD
9 debug("loading article: " + id + "/" + feed_id);
10
11 var f_document = getFeedsContext().document;
12 var m_document = parent.document;
13
14 enableHotkeys();
15
16 var crow = document.getElementById("RROW-" + id);
17
18 crow.className = crow.className.replace("Unread", "");
19
20 cleanSelected("headlinesList");
21
22 var upd_img_pic = document.getElementById("FUPDPIC-" + id);
23
24 if (upd_img_pic) {
25 upd_img_pic.src = "images/blank_icon.gif";
26 }
27
28 active_post_id = id;
29 setActiveFeedId(feed_id);
30
31 var content = m_document.getElementById("content-frame");
32
33 content.src = "backend.php?op=view&id=" + param_escape(id) +
34 "&feed=" + param_escape(feed_id);
35
36 selectTableRowsByIdPrefix('headlinesList', 'RROW-', 'RCHK-', false);
37 markHeadline(active_post_id);
090e250b 38
ee1f45f4
AD
39 } catch (e) {
40 exception_error("view", e);
41 }
f0601b87
AD
42}
43
9932fb06 44function toggleMark(id) {
f0601b87 45
090e250b
AD
46 var f_document = parent.frames["feeds-frame"].document;
47
f0601b87
AD
48 if (!xmlhttp_ready(xmlhttp_rpc)) {
49 printLockingError();
50 return;
51 }
52
f0601b87
AD
53 var query = "backend.php?op=rpc&id=" + id + "&subop=mark";
54
7ba176d2 55 var mark_img = document.getElementById("FMARKPIC-" + id);
090e250b 56 var vfeedu = f_document.getElementById("FEEDU--1");
7ba176d2 57 var crow = document.getElementById("RROW-" + id);
254e0e4b 58
9932fb06 59 if (mark_img.alt != "Reset mark") {
f0601b87
AD
60 mark_img.src = "images/mark_set.png";
61 mark_img.alt = "Reset mark";
9932fb06 62 mark_img.setAttribute('onclick', 'javascript:toggleMark('+id+')');
f0601b87 63 query = query + "&mark=1";
254e0e4b 64
7ba176d2
AD
65 if (vfeedu && crow.className.match("Unread")) {
66 vfeedu.innerHTML = (+vfeedu.innerHTML) + 1;
67 }
68
f0601b87
AD
69 } else {
70 mark_img.src = "images/mark_unset.png";
71 mark_img.alt = "Set mark";
9932fb06 72 mark_img.setAttribute('onclick', 'javascript:toggleMark('+id+')');
f0601b87 73 query = query + "&mark=0";
254e0e4b 74
7ba176d2
AD
75 if (vfeedu && crow.className.match("Unread")) {
76 vfeedu.innerHTML = (+vfeedu.innerHTML) - 1;
77 }
254e0e4b
AD
78
79 }
80
090e250b 81 var vfeedctr = f_document.getElementById("FEEDCTR--1");
8add756a 82 var vfeedr = f_document.getElementById("FEEDR--1");
254e0e4b
AD
83
84 if (vfeedu && vfeedctr) {
85 if ((+vfeedu.innerHTML) > 0) {
7ba176d2 86 if (crow.className.match("Unread") && !vfeedr.className.match("Unread")) {
8add756a 87 vfeedr.className = vfeedr.className + "Unread";
7ba176d2 88 vfeedctr.className = "odd";
8add756a 89 }
254e0e4b
AD
90 } else {
91 vfeedctr.className = "invisible";
8add756a 92 vfeedr.className = vfeedr.className.replace("Unread", "");
254e0e4b 93 }
f0601b87
AD
94 }
95
772bc83b
AD
96 debug("toggle starred for aid " + id);
97
98 new Ajax.Request(query);
f0601b87
AD
99
100}
101
bb7cface 102function moveToPost(mode) {
f0601b87 103
4e51dd2b
AD
104 // check for combined mode
105 if (!document.getElementById("headlinesList"))
106 return;
107
bb7cface
AD
108 var rows = getVisibleHeadlineIds();
109
110 var prev_id;
111 var next_id;
112
113 if (active_post_id == false) {
114 next_id = getFirstVisibleHeadlineId();
115 prev_id = getLastVisibleHeadlineId();
116 } else {
117 for (var i = 0; i < rows.length; i++) {
118 if (rows[i] == active_post_id) {
119 prev_id = rows[i-1];
120 next_id = rows[i+1];
121 }
122 }
123 }
124
125 if (mode == "next") {
126 if (next_id != undefined) {
86741347 127 view(next_id, getActiveFeedId());
bb7cface
AD
128 }
129 }
130
131 if (mode == "prev") {
132 if ( prev_id != undefined) {
86741347 133 view(prev_id, getActiveFeedId());
bb7cface
AD
134 }
135 }
136}
137
2db4190c
AD
138function viewfeed(id) {
139 var f = parent.frames["feeds-frame"];
140 f.viewfeed(id, 0);
141}
142
5f51022a
AD
143function toggleUnread(id, cmode) {
144 try {
145 if (!xmlhttp_ready(xmlhttp_rpc)) {
146 printLockingError();
147 return;
148 }
149
150 var row = document.getElementById("RROW-" + id);
151 if (row) {
152 var nc = row.className;
153 nc = nc.replace("Unread", "");
154 nc = nc.replace("Selected", "");
155
156 if (row.className.match("Unread")) {
157 row.className = nc;
158 } else {
159 row.className = nc + "Unread";
160 }
161
162 if (!cmode) cmode = 2;
163
164 var query = "backend.php?op=rpc&subop=catchupSelected&ids=" +
165 param_escape(id) + "&cmode=" + param_escape(cmode);
166
167 xmlhttp_rpc.open("GET", query, true);
168 xmlhttp_rpc.onreadystatechange=all_counters_callback;
169 xmlhttp_rpc.send(null);
170
171 }
172
173
174 } catch (e) {
175 exception_error("toggleUnread", e);
176 }
177}
178
386cbf27 179function selectionToggleUnread(cdm_mode) {
1572afe5
AD
180 try {
181 if (!xmlhttp_ready(xmlhttp_rpc)) {
182 printLockingError();
183 return;
184 }
185
386cbf27
AD
186 var rows;
187
188 if (cdm_mode) {
189 rows = cdmGetSelectedArticles();
190 } else {
191 rows = getSelectedTableRowIds("headlinesList", "RROW", "RCHK");
192 }
1572afe5
AD
193
194 for (i = 0; i < rows.length; i++) {
f1f2db64
AD
195 var row = document.getElementById("RROW-" + rows[i]);
196 if (row) {
197 var nc = row.className;
198 nc = nc.replace("Unread", "");
199 nc = nc.replace("Selected", "");
200
201 if (row.className.match("Unread")) {
202 row.className = nc + "Selected";
203 } else {
204 row.className = nc + "UnreadSelected";
205 }
206 }
1572afe5
AD
207 }
208
209 if (rows.length > 0) {
210
211 var query = "backend.php?op=rpc&subop=catchupSelected&ids=" +
212 param_escape(rows.toString()) + "&cmode=2";
213
214 xmlhttp_rpc.open("GET", query, true);
215 xmlhttp_rpc.onreadystatechange=all_counters_callback;
216 xmlhttp_rpc.send(null);
217
218 }
219
220 } catch (e) {
83f043bb 221 exception_error("selectionToggleUnread", e);
1572afe5
AD
222 }
223}
224
386cbf27 225function selectionToggleMarked(cdm_mode) {
1572afe5
AD
226 try {
227 if (!xmlhttp_ready(xmlhttp_rpc)) {
228 printLockingError();
229 return;
230 }
231
386cbf27
AD
232 var rows;
233
234 if (cdm_mode) {
235 rows = cdmGetSelectedArticles();
236 } else {
237 rows = getSelectedTableRowIds("headlinesList", "RROW", "RCHK");
238 }
1572afe5
AD
239
240 for (i = 0; i < rows.length; i++) {
241 var row = document.getElementById("RROW-" + rows[i]);
242 var mark_img = document.getElementById("FMARKPIC-" + rows[i]);
243
244 if (row && mark_img) {
245
246 if (mark_img.alt == "Set mark") {
247 mark_img.src = "images/mark_set.png";
248 mark_img.alt = "Reset mark";
249 mark_img.setAttribute('onclick',
250 'javascript:toggleMark('+rows[i]+', false)');
251
252 } else {
253 mark_img.src = "images/mark_unset.png";
254 mark_img.alt = "Set mark";
255 mark_img.setAttribute('onclick',
256 'javascript:toggleMark('+rows[i]+', true)');
257 }
258 }
259 }
260
261 if (rows.length > 0) {
262
263 var query = "backend.php?op=rpc&subop=markSelected&ids=" +
264 param_escape(rows.toString()) + "&cmode=2";
265
266 xmlhttp_rpc.open("GET", query, true);
267 xmlhttp_rpc.onreadystatechange=all_counters_callback;
268 xmlhttp_rpc.send(null);
269
270 }
271
272 } catch (e) {
83f043bb 273 exception_error("selectionToggleMarked", e);
1572afe5
AD
274 }
275}
276
386cbf27
AD
277function cdmGetSelectedArticles() {
278 var sel_articles = new Array();
279 var container = document.getElementById("headlinesContainer");
280
281 for (i = 0; i < container.childNodes.length; i++) {
282 var child = container.childNodes[i];
283
284 if (child.id.match("RROW-") && child.className.match("Selected")) {
285 var c_id = child.id.replace("RROW-", "");
286 sel_articles.push(c_id);
287 }
288 }
289
290 return sel_articles;
291}
292
293// mode = all,none,unread
294function cdmSelectArticles(mode) {
295 var container = document.getElementById("headlinesContainer");
296
297 for (i = 0; i < container.childNodes.length; i++) {
298 var child = container.childNodes[i];
299
300 if (child.id.match("RROW-")) {
06d1a1c1
AD
301 var aid = child.id.replace("RROW-", "");
302
303 var cb = document.getElementById("RCHK-" + aid);
304
386cbf27
AD
305 if (mode == "all") {
306 if (!child.className.match("Selected")) {
307 child.className = child.className + "Selected";
06d1a1c1 308 cb.checked = true;
386cbf27
AD
309 }
310 } else if (mode == "unread") {
311 if (child.className.match("Unread") && !child.className.match("Selected")) {
312 child.className = child.className + "Selected";
06d1a1c1 313 cb.checked = true;
386cbf27
AD
314 }
315 } else {
316 child.className = child.className.replace("Selected", "");
06d1a1c1 317 cb.checked = false;
386cbf27
AD
318 }
319 }
320 }
321}
322
98bea1b1 323function catchupPage() {
6c7abfae
AD
324 selectTableRowsByIdPrefix('headlinesList', 'RROW-', 'RCHK-', true, 'Unread', true);
325 selectionToggleUnread();
326 selectTableRowsByIdPrefix('headlinesList', 'RROW-', 'RCHK-', false);
98bea1b1
AD
327}
328
329
b623b3ed 330function init() {
97dcd654
AD
331 if (arguments.callee.done) return;
332 arguments.callee.done = true;
894ebcf5
AD
333
334 if (parent.frames["feeds-frame"]) {
335 document.onkeydown = hotkey_handler;
336 }
e0a7121b
AD
337
338 var hw = document.getElementById("headlinesList").scrollHeight;
339 var pw = parent.document.getElementById("headlines").scrollHeight;
340
341 if (hw >= pw) {
342 var bt = document.getElementById("headlineActionsBottom");
343 bt.className = "headlinesSubToolbar";
344 }
345
b623b3ed 346}