diff options
author | Andrew Dolgov <[email protected]> | 2005-12-09 20:48:13 +0100 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2005-12-09 20:48:13 +0100 |
commit | a24f525cce32a6515532ac9392a5b02838ff82be (patch) | |
tree | f19d8acaf7f0fb7e7e5a0fa97c206c13204d2830 | |
parent | 3820a960c6cd28c61a43d88add853c3b0b4c9932 (diff) |
quick action to add filter, misc backend improvements
-rw-r--r-- | backend.php | 71 | ||||
-rw-r--r-- | functions.js | 1 | ||||
-rw-r--r-- | tt-rss.js | 52 | ||||
-rw-r--r-- | tt-rss.php | 7 |
4 files changed, 126 insertions, 5 deletions
diff --git a/backend.php b/backend.php index b1c57c3a9..a31afb61b 100644 --- a/backend.php +++ b/backend.php @@ -1268,6 +1268,7 @@ if ($op == "pref-feeds") { $subop = $_GET["subop"]; + $quiet = $_GET["quiet"]; if ($subop == "editSave") { $feed_title = db_escape_string($_GET["t"]); @@ -1442,6 +1443,8 @@ } + if ($quiet) return; + // print "<h3>Edit Feeds</h3>"; $result = db_query($link, "SELECT id,title,feed_url,last_error @@ -1896,6 +1899,7 @@ if ($op == "pref-filters") { $subop = $_GET["subop"]; + $quiet = $_GET["quiet"]; if ($subop == "editSave") { @@ -1960,6 +1964,8 @@ } } + if ($quiet) return; + $result = db_query($link, "SELECT description FROM ttrss_filter_types ORDER BY description"); @@ -2529,6 +2535,71 @@ } + if ($id == "quickAddFilter") { + + $result = db_query($link, "SELECT description + FROM ttrss_filter_types ORDER BY description"); + + $filter_types = array(); + + while ($line = db_fetch_assoc($result)) { + array_push($filter_types, $line["description"]); + } + + print "<table>"; + + print "<tr><td>Match:</td><td><input id=\"fadd_regexp\" size=\"40\"> "; + + print_select("fadd_match", "Title", $filter_types); + + print "</td></tr>"; + print "<tr><td>Feed:</td><td><select id=\"fadd_feed\">"; + + print "<option selected id=\"0\">All feeds</option>"; + + $result = db_query($link, "SELECT id,title FROM ttrss_feeds + WHERE owner_uid = ".$_SESSION["uid"]." ORDER BY title"); + + if (db_num_rows($result) > 0) { + print "<option disabled>--------</option>"; + } + + while ($line = db_fetch_assoc($result)) { + if ($param == $line["id"]) { + $selected = "selected"; + } else { + $selected = ""; + } + printf("<option id='%d' %s>%s</option>", $line["id"], $selected, $line["title"]); + } + + print "</select></td></tr>"; + + print "<tr><td>Action:</td>"; + + print "<td><select id=\"fadd_action\">"; + + $result = db_query($link, "SELECT id,description FROM ttrss_filter_actions + ORDER BY name"); + + while ($line = db_fetch_assoc($result)) { + printf("<option id='%d'>%s</option>", $line["id"], $line["description"]); + } + + print "</select>"; + + print "</td></tr><tr><td colspan=\"2\" align=\"right\">"; + + print "<input type=\"submit\" + class=\"button\" onclick=\"javascript:qaddFilter()\" + value=\"Add filter\"> "; + + print "<input class=\"button\" + type=\"submit\" onclick=\"javascript:closeDlg()\" + value=\"Close\">"; + + print "</td></tr></table>"; + } } // update feeds of all users, may be used anonymously diff --git a/functions.js b/functions.js index 17cab9d76..d901cbb90 100644 --- a/functions.js +++ b/functions.js @@ -689,3 +689,4 @@ function showBlockElement(id) { } } + @@ -46,12 +46,20 @@ function toggleTags() { function dlg_frefresh_callback() { if (xmlhttp.readyState == 4) { + notify(xmlhttp.responseText); updateFeedList(false, false); closeDlg(); } } -function dialog_refresh_callback() { +function dlg_submit_callback() { + if (xmlhttp.readyState == 4) { + notify(xmlhttp.responseText); + closeDlg(); + } +} + +function dlg_display_callback() { if (xmlhttp.readyState == 4) { var dlg = document.getElementById("userDlg"); var dlg_s = document.getElementById("userDlgShadow"); @@ -450,6 +458,10 @@ function quickMenuGo() { return; } + if (opid == "qmcAddFilter") { + displayDlg("quickAddFilter", getActiveFeedId()); + } + } function qafAdd() { @@ -470,7 +482,7 @@ function qafAdd() { feeds_doc.location.href = "backend.php?op=error&msg=Loading,%20please wait..."; - xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=add&link=" + + xmlhttp.open("GET", "backend.php?op=pref-feeds&quiet=1&subop=add&link=" + param_escape(link.value), true); xmlhttp.onreadystatechange=dlg_frefresh_callback; xmlhttp.send(null); @@ -480,13 +492,47 @@ function qafAdd() { } } +function qaddFilter() { + + if (!xmlhttp_ready(xmlhttp)) { + printLockingError(); + return + } + + var regexp = document.getElementById("fadd_regexp"); + var match = document.getElementById("fadd_match"); + var feed = document.getElementById("fadd_feed"); + var action = document.getElementById("fadd_action"); + + if (regexp.value.length == 0) { + notify("Missing filter expression."); + } else { + notify("Adding filter..."); + + var v_match = match[match.selectedIndex].text; + var feed_id = feed[feed.selectedIndex].id; + var action_id = action[action.selectedIndex].id; + + xmlhttp.open("GET", "backend.php?op=pref-filters&quiet=1&subop=add®exp=" + + param_escape(regexp.value) + "&match=" + v_match + + "&fid=" + param_escape(feed_id) + "&aid=" + param_escape(action_id), true); + + xmlhttp.onreadystatechange=dlg_submit_callback; + xmlhttp.send(null); + + regexp.value = ""; + } + +} + + function displayDlg(id, param) { notify(""); xmlhttp.open("GET", "backend.php?op=dlg&id=" + param_escape(id) + "¶m=" + param_escape(param), true); - xmlhttp.onreadystatechange=dialog_refresh_callback; + xmlhttp.onreadystatechange=dlg_display_callback; xmlhttp.send(null); } diff --git a/tt-rss.php b/tt-rss.php index 89feb8571..5c15a507b 100644 --- a/tt-rss.php +++ b/tt-rss.php @@ -194,14 +194,17 @@ <option id="qmcPrefs" selected>Preferences...</option> <option disabled>--------</option> <option style="color : #5050aa" disabled>Feed actions:</option> - <option id="qmcAddFeed"> Add new feed</option> - <option id="qmcRemoveFeed"> Remove this feed</option> + <option id="qmcAddFeed"> Add new feed...</option> + <option id="qmcRemoveFeed"> Remove this feed...</option> <!-- <option>Edit this feed</option> --> <option disabled>--------</option> <option style="color : #5050aa" disabled>All feeds:</option> <option id="qmcUpdateFeeds"> Update</option> <option id="qmcCatchupAll"> Mark as read</option> <option id="qmcShowOnlyUnread"> Show only unread</option> + <option disabled>--------</option> + <option style="color : #5050aa" disabled>Other actions:</option> + <option id="qmcAddFilter"> Add filter...</option> </select> <input type="submit" class="button" onclick="quickMenuGo()" value="Go"> </td> |