]> git.wh0rd.org - tt-rss.git/blob - viewfeed.js
remove ACTFEEDID container, keep information in a cookie instead (getActiveFeedId...
[tt-rss.git] / viewfeed.js
1 var active_post_id = false;
2 var total_unread = 0;
3
4 var xmlhttp_rpc = false;
5
6 /*@cc_on @*/
7 /*@if (@_jscript_version >= 5)
8 // JScript gives us Conditional compilation, we can cope with old IE versions.
9 // and security blocked creation of the objects.
10 try {
11 xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
12 } catch (e) {
13 try {
14 xmlhttp_rpc = new ActiveXObject("Microsoft.XMLHTTP");
15 } catch (E) {
16 xmlhttp_rpc = false;
17 }
18 }
19 @end @*/
20
21 if (!xmlhttp_rpc && typeof XMLHttpRequest!='undefined') {
22 xmlhttp_rpc = new XMLHttpRequest();
23 }
24
25 function view(id, feed_id) {
26
27 // p_notify("Loading article...");
28
29 enableHotkeys();
30
31 var crow = document.getElementById("RROW-" + id);
32
33 var f_doc = parent.frames["feeds-frame"].document;
34
35 if (crow.className.match("Unread")) {
36 var umark = f_doc.getElementById("FEEDU-" + feed_id);
37
38 umark.innerHTML = umark.innerHTML - 1;
39 crow.className = crow.className.replace("Unread", "");
40
41 if (umark.innerHTML == "0") {
42 var feedr = f_doc.getElementById("FEEDR-" + feed_id);
43 feedr.className = feedr.className.replace("Unread", "");
44
45 var feedctr = f_doc.getElementById("FEEDCTR-" + feed_id);
46
47 if (feedctr) {
48 feedctr.className = "invisible";
49 }
50 }
51
52 total_unread--;
53 }
54
55
56 cleanSelected("headlinesList");
57
58 var upd_img_pic = document.getElementById("FUPDPIC-" + id);
59
60 if (upd_img_pic) {
61 upd_img_pic.src = "images/blank_icon.gif";
62 }
63
64 var unread_rows = getVisibleUnreadHeadlines();
65
66 if (unread_rows.length == 0) {
67 var button = document.getElementById("btnCatchupPage");
68 if (button) {
69 button.className = "disabledButton";
70 button.href = "";
71 }
72 }
73
74 active_post_id = id;
75 setActiveFeedId(feed_id);
76
77 var content = parent.document.getElementById("content-frame");
78
79 if (content) {
80 content.src = "backend.php?op=view&addheader=true&id=" + param_escape(id);
81 markHeadline(active_post_id);
82 }
83 }
84
85
86 function toggleMark(id, toggle) {
87
88 if (!xmlhttp_ready(xmlhttp_rpc)) {
89 printLockingError();
90 return;
91 }
92
93 var mark_img = document.getElementById("FMARKPIC-" + id);
94
95 var query = "backend.php?op=rpc&id=" + id + "&subop=mark";
96
97 if (toggle == true) {
98 mark_img.src = "images/mark_set.png";
99 mark_img.alt = "Reset mark";
100 mark_img.setAttribute('onclick', 'javascript:toggleMark('+id+', false)');
101 query = query + "&mark=1";
102 } else {
103 mark_img.src = "images/mark_unset.png";
104 mark_img.alt = "Set mark";
105 mark_img.setAttribute('onclick', 'javascript:toggleMark('+id+', true)');
106 query = query + "&mark=0";
107 }
108
109 xmlhttp_rpc.open("GET", query, true);
110 xmlhttp_rpc.onreadystatechange=rpc_notify_callback;
111 xmlhttp_rpc.send(null);
112
113 }
114
115 function moveToPost(mode) {
116
117 var rows = getVisibleHeadlineIds();
118
119 var prev_id;
120 var next_id;
121
122 if (active_post_id == false) {
123 next_id = getFirstVisibleHeadlineId();
124 prev_id = getLastVisibleHeadlineId();
125 } else {
126 for (var i = 0; i < rows.length; i++) {
127 if (rows[i] == active_post_id) {
128 prev_id = rows[i-1];
129 next_id = rows[i+1];
130 }
131 }
132 }
133
134 if (mode == "next") {
135 if (next_id != undefined) {
136 view(next_id, getActiveFeedId());
137 }
138 }
139
140 if (mode == "prev") {
141 if ( prev_id != undefined) {
142 view(prev_id, getActiveFeedId());
143 }
144 }
145 }
146
147 function localHotkeyHandler(keycode) {
148
149 if (keycode == 78) {
150 return moveToPost('next');
151 }
152
153 if (keycode == 80) {
154 return moveToPost('prev');
155 }
156
157 // FIXME
158 // if (keycode == 85) {
159 // return viewfeed(active_feed_id, active_offset, "ForceUpdate");
160 // }
161
162 // alert("KC: " + keycode);
163
164 }