]>
git.wh0rd.org - tt-rss.git/blob - prefs.js
2 This program is Copyright (c) 2003-2005 Andrew Dolgov <cthulhoo@gmail.com>
3 Licensed under GPL v.2 or (at your preference) any later version.
8 var active_feed
= false;
9 var active_filter
= false;
10 var active_label
= false;
12 var active_tab
= false;
15 /*@if (@_jscript_version >= 5)
16 // JScript gives us Conditional compilation, we can cope with old IE versions.
17 // and security blocked creation of the objects.
19 xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
22 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
29 if (!xmlhttp
&& typeof XMLHttpRequest
!='undefined') {
30 xmlhttp
= new XMLHttpRequest();
33 function feedlist_callback() {
34 var container
= document
.getElementById('prefContent');
35 if (xmlhttp
.readyState
== 4) {
36 container
.innerHTML
=xmlhttp
.responseText
;
38 var row
= document
.getElementById("FEEDR-" + active_feed
);
40 if (!row
.className
.match("Selected")) {
41 row
.className
= row
.className
+ "Selected";
44 var checkbox
= document
.getElementById("FRCHK-" + active_feed
);
46 checkbox
.checked
= true;
53 function filterlist_callback() {
54 var container
= document
.getElementById('prefContent');
55 if (xmlhttp
.readyState
== 4) {
57 container
.innerHTML
=xmlhttp
.responseText
;
60 var row
= document
.getElementById("FILRR-" + active_filter
);
62 if (!row
.className
.match("Selected")) {
63 row
.className
= row
.className
+ "Selected";
66 var checkbox
= document
.getElementById("FICHK-" + active_filter
);
69 checkbox
.checked
= true;
76 function labellist_callback() {
77 var container
= document
.getElementById('prefContent');
78 if (xmlhttp
.readyState
== 4) {
79 container
.innerHTML
=xmlhttp
.responseText
;
82 var row
= document
.getElementById("LILRR-" + active_label
);
84 if (!row
.className
.match("Selected")) {
85 row
.className
= row
.className
+ "Selected";
88 var checkbox
= document
.getElementById("LICHK-" + active_label
);
91 checkbox
.checked
= true;
97 function notify_callback() {
98 var container
= document
.getElementById('notify');
99 if (xmlhttp
.readyState
== 4) {
100 container
.innerHTML
=xmlhttp
.responseText
;
105 function updateFeedList() {
107 if (!xmlhttp_ready(xmlhttp
)) {
112 // document.getElementById("prefContent").innerHTML = "Loading feeds, please wait...";
114 p_notify("Loading, please wait...");
116 xmlhttp
.open("GET", "backend.php?op=pref-feeds", true);
117 xmlhttp
.onreadystatechange
=feedlist_callback
;
122 function toggleSelectRow(sender
) {
123 var parent_row
= sender
.parentNode
.parentNode
;
125 if (sender
.checked
) {
126 if (!parent_row
.className
.match("Selected")) {
127 parent_row
.className
= parent_row
.className
+ "Selected";
130 if (parent_row
.className
.match("Selected")) {
131 parent_row
.className
= parent_row
.className
.replace("Selected", "");
136 function addLabel() {
138 if (!xmlhttp_ready(xmlhttp
)) {
143 var sqlexp
= document
.getElementById("ladd_expr");
145 if (sqlexp
.value
.length
== 0) {
146 notify("Missing SQL expression.");
148 notify("Adding label...");
150 xmlhttp
.open("GET", "backend.php?op=pref-labels&subop=add&exp=" +
151 param_escape(sqlexp
.value
), true);
153 xmlhttp
.onreadystatechange
=labellist_callback
;
161 function addFilter() {
163 if (!xmlhttp_ready(xmlhttp
)) {
168 var regexp
= document
.getElementById("fadd_regexp");
169 var match
= document
.getElementById("fadd_match");
171 if (regexp
.value
.length
== 0) {
172 notify("Missing filter expression.");
174 notify("Adding filter...");
176 var v_match
= match
[match
.selectedIndex
].text
;
178 xmlhttp
.open("GET", "backend.php?op=pref-filters&subop=add®exp=" +
179 param_escape(regexp
.value
) + "&match=" + v_match
, true);
181 xmlhttp
.onreadystatechange
=filterlist_callback
;
191 if (!xmlhttp_ready(xmlhttp
)) {
196 var link
= document
.getElementById("fadd_link");
198 if (link
.value
.length
== 0) {
199 notify("Missing feed URL.");
201 notify("Adding feed...");
203 xmlhttp
.open("GET", "backend.php?op=pref-feeds&subop=add&link=" +
204 param_escape(link
.value
), true);
205 xmlhttp
.onreadystatechange
=feedlist_callback
;
214 function editLabel(id
) {
216 if (!xmlhttp_ready(xmlhttp
)) {
223 xmlhttp
.open("GET", "backend.php?op=pref-labels&subop=edit&id=" +
224 param_escape(id
), true);
225 xmlhttp
.onreadystatechange
=labellist_callback
;
230 function editFilter(id
) {
232 if (!xmlhttp_ready(xmlhttp
)) {
239 xmlhttp
.open("GET", "backend.php?op=pref-filters&subop=edit&id=" +
240 param_escape(id
), true);
241 xmlhttp
.onreadystatechange
=filterlist_callback
;
246 function editFeed(feed
) {
248 // notify("Editing feed...");
250 if (!xmlhttp_ready(xmlhttp
)) {
257 xmlhttp
.open("GET", "backend.php?op=pref-feeds&subop=edit&id=" +
258 param_escape(feed
), true);
259 xmlhttp
.onreadystatechange
=feedlist_callback
;
264 function getSelectedLabels() {
266 var content
= document
.getElementById("prefLabelList");
268 var sel_rows
= new Array();
270 for (i
= 0; i
< content
.rows
.length
; i
++) {
271 if (content
.rows
[i
].className
.match("Selected")) {
272 var row_id
= content
.rows
[i
].id
.replace("LILRR-", "");
273 sel_rows
.push(row_id
);
281 function getSelectedFilters() {
283 var content
= document
.getElementById("prefFilterList");
285 var sel_rows
= new Array();
287 for (i
= 0; i
< content
.rows
.length
; i
++) {
288 if (content
.rows
[i
].className
.match("Selected")) {
289 var row_id
= content
.rows
[i
].id
.replace("FILRR-", "");
290 sel_rows
.push(row_id
);
297 function getSelectedFeeds() {
299 var content
= document
.getElementById("prefFeedList");
301 var sel_rows
= new Array();
303 for (i
= 0; i
< content
.rows
.length
; i
++) {
304 if (content
.rows
[i
].className
.match("Selected")) {
305 var row_id
= content
.rows
[i
].id
.replace("FEEDR-", "");
306 sel_rows
.push(row_id
);
313 function readSelectedFeeds() {
315 if (!xmlhttp_ready(xmlhttp
)) {
320 var sel_rows
= getSelectedFeeds();
322 if (sel_rows
.length
> 0) {
324 notify("Marking selected feeds as read...");
326 xmlhttp
.open("GET", "backend.php?op=pref-rpc&subop=unread&ids="+
327 param_escape(sel_rows
.toString()), true);
328 xmlhttp
.onreadystatechange
=notify_callback
;
333 notify("Please select some feeds first.");
338 function unreadSelectedFeeds() {
340 if (!xmlhttp_ready(xmlhttp
)) {
345 var sel_rows
= getSelectedFeeds();
347 if (sel_rows
.length
> 0) {
349 notify("Marking selected feeds as unread...");
351 xmlhttp
.open("GET", "backend.php?op=pref-rpc&subop=unread&ids="+
352 param_escape(sel_rows
.toString()), true);
353 xmlhttp
.onreadystatechange
=notify_callback
;
358 notify("Please select some feeds first.");
363 function removeSelectedLabels() {
365 if (!xmlhttp_ready(xmlhttp
)) {
370 var sel_rows
= getSelectedLabels();
372 if (sel_rows
.length
> 0) {
374 notify("Removing selected labels...");
376 xmlhttp
.open("GET", "backend.php?op=pref-labels&subop=remove&ids="+
377 param_escape(sel_rows
.toString()), true);
378 xmlhttp
.onreadystatechange
=labellist_callback
;
382 notify("Please select some labels first.");
386 function removeSelectedFilters() {
388 if (!xmlhttp_ready(xmlhttp
)) {
393 var sel_rows
= getSelectedFilters();
395 if (sel_rows
.length
> 0) {
397 notify("Removing selected filters...");
399 xmlhttp
.open("GET", "backend.php?op=pref-filters&subop=remove&ids="+
400 param_escape(sel_rows
.toString()), true);
401 xmlhttp
.onreadystatechange
=filterlist_callback
;
405 notify("Please select some filters first.");
410 function removeSelectedFeeds() {
412 if (!xmlhttp_ready(xmlhttp
)) {
417 var sel_rows
= getSelectedFeeds();
419 if (sel_rows
.length
> 0) {
421 notify("Removing selected feeds...");
423 xmlhttp
.open("GET", "backend.php?op=pref-feeds&subop=remove&ids="+
424 param_escape(sel_rows
.toString()), true);
425 xmlhttp
.onreadystatechange
=feedlist_callback
;
430 notify("Please select some feeds first.");
436 function feedEditCancel() {
438 if (!xmlhttp_ready(xmlhttp
)) {
445 notify("Operation cancelled.");
447 xmlhttp
.open("GET", "backend.php?op=pref-feeds", true);
448 xmlhttp
.onreadystatechange
=feedlist_callback
;
453 function feedEditSave() {
455 var feed
= active_feed
;
457 if (!xmlhttp_ready(xmlhttp
)) {
462 var link
= document
.getElementById("iedit_link").value
;
463 var title
= document
.getElementById("iedit_title").value
;
464 var upd_intl
= document
.getElementById("iedit_updintl").value
;
466 // notify("Saving feed.");
469 notify("Update interval must be >= 0 (0 = default)");
474 if (link
.length
== 0) {
475 notify("Feed link cannot be blank.");
479 if (title
.length
== 0) {
480 notify("Feed title cannot be blank.");
486 xmlhttp
.open("GET", "backend.php?op=pref-feeds&subop=editSave&id=" +
487 feed
+ "&l=" + param_escape(link
) + "&t=" + param_escape(title
) +
488 "&ui=" + param_escape(upd_intl
), true);
489 xmlhttp
.onreadystatechange
=feedlist_callback
;
494 function labelEditCancel() {
496 if (!xmlhttp_ready(xmlhttp
)) {
501 active_label
= false;
503 notify("Operation cancelled.");
505 xmlhttp
.open("GET", "backend.php?op=pref-labels", true);
506 xmlhttp
.onreadystatechange
=labellist_callback
;
512 function filterEditCancel() {
514 if (!xmlhttp_ready(xmlhttp
)) {
519 active_filter
= false;
521 notify("Operation cancelled.");
523 xmlhttp
.open("GET", "backend.php?op=pref-filters", true);
524 xmlhttp
.onreadystatechange
=filterlist_callback
;
529 function labelEditSave() {
531 var label
= active_label
;
533 if (!xmlhttp_ready(xmlhttp
)) {
538 var sqlexp
= document
.getElementById("iedit_expr").value
;
539 var descr
= document
.getElementById("iedit_descr").value
;
541 // notify("Saving label " + sqlexp + ": " + descr);
543 if (sqlexp
.length
== 0) {
544 notify("SQL expression cannot be blank.");
548 if (descr
.length
== 0) {
549 notify("Caption cannot be blank.");
553 active_label
= false;
555 xmlhttp
.open("GET", "backend.php?op=pref-labels&subop=editSave&id=" +
556 label
+ "&s=" + param_escape(sqlexp
) + "&d=" + param_escape(descr
),
559 xmlhttp
.onreadystatechange
=labellist_callback
;
564 function filterEditSave() {
566 var filter
= active_filter
;
568 if (!xmlhttp_ready(xmlhttp
)) {
573 var regexp
= document
.getElementById("iedit_regexp").value
;
574 var descr
= document
.getElementById("iedit_descr").value
;
575 var match
= document
.getElementById("iedit_match");
577 var v_match
= match
[match
.selectedIndex
].text
;
579 // notify("Saving filter " + filter + ": " + regexp + ", " + descr + ", " + match);
581 if (regexp
.length
== 0) {
582 notify("Filter expression cannot be blank.");
586 active_filter
= false;
588 xmlhttp
.open("GET", "backend.php?op=pref-filters&subop=editSave&id=" +
589 filter
+ "&r=" + param_escape(regexp
) + "&d=" + param_escape(descr
) +
590 "&m=" + param_escape(v_match
), true);
592 xmlhttp
.onreadystatechange
=filterlist_callback
;
597 function editSelectedLabel() {
598 var rows
= getSelectedLabels();
600 if (rows
.length
== 0) {
601 notify("No labels are selected.");
605 if (rows
.length
> 1) {
606 notify("Please select one label.");
615 function editSelectedFilter() {
616 var rows
= getSelectedFilters();
618 if (rows
.length
== 0) {
619 notify("No filters are selected.");
623 if (rows
.length
> 1) {
624 notify("Please select one filter.");
633 function editSelectedFeed() {
634 var rows
= getSelectedFeeds();
636 if (rows
.length
== 0) {
637 notify("No feeds are selected.");
641 if (rows
.length
> 1) {
642 notify("Please select one feed.");
650 function localPiggieFunction(enable
) {
652 piggie
.style
.display
= "block";
654 notify("I loveded it!!!");
656 piggie
.style
.display
= "none";
661 function validateOpmlImport() {
663 var opml_file
= document
.getElementById("opml_file");
665 if (opml_file
.value
.length
== 0) {
666 notify("Please select OPML file to upload.");
673 function updateFilterList() {
675 if (!xmlhttp_ready(xmlhttp
)) {
680 // document.getElementById("prefContent").innerHTML = "Loading filters, please wait...";
682 p_notify("Loading, please wait...");
684 xmlhttp
.open("GET", "backend.php?op=pref-filters", true);
685 xmlhttp
.onreadystatechange
=filterlist_callback
;
690 function updateLabelList() {
692 if (!xmlhttp_ready(xmlhttp
)) {
697 p_notify("Loading, please wait...");
699 // document.getElementById("prefContent").innerHTML = "Loading labels, please wait...";
701 xmlhttp
.open("GET", "backend.php?op=pref-labels", true);
702 xmlhttp
.onreadystatechange
=labellist_callback
;
706 function selectTab(id
) {
708 if (id
== "feedConfig") {
710 } else if (id
== "filterConfig") {
712 } else if (id
== "labelConfig") {
716 var tab
= document
.getElementById(active_tab
+ "Tab");
719 if (tab
.className
.match("Selected")) {
720 tab
.className
= "prefsTab";
724 tab
= document
.getElementById(id
+ "Tab");
727 if (!tab
.className
.match("Selected")) {
728 tab
.className
= tab
.className
+ "Selected";
741 document
.getElementById("prefContent").innerHTML
=
742 "<b>Fatal error:</b> This program needs XmlHttpRequest " +
743 "to function properly. Your browser doesn't seem to support it.";
747 selectTab("feedConfig");
749 document
.onkeydown
= hotkey_handler
;