]> git.wh0rd.org Git - tt-rss.git/commitdiff
filter editor uses prototype
authorAndrew Dolgov <fox@madoka.spb.ru>
Mon, 22 May 2006 03:54:51 +0000 (04:54 +0100)
committerAndrew Dolgov <fox@madoka.spb.ru>
Mon, 22 May 2006 03:54:51 +0000 (04:54 +0100)
backend.php
functions.php
prefs.js

index 941c789a520585cac9b0191de1043c9bb45251bf..a3ba821d1d76bb913652642aee9c567a4d7e7d51 100644 (file)
                $subop = $_GET["subop"];
                $quiet = $_GET["quiet"];
 
+               if ($subop == "edit") {
+
+                       $filter_id = db_escape_string($_GET["id"]);
+
+                       $result = db_query($link, 
+                               "SELECT * FROM ttrss_filters WHERE id = '$filter_id'");
+
+                       $reg_exp = htmlspecialchars(db_unescape_string(db_fetch_result($result, 0, "reg_exp")));
+                       $filter_type = db_fetch_result($result, 0, "filter_type");
+                       $feed_id = db_fetch_result($result, 0, "feed_id");
+                       $action_id = db_fetch_result($result, 0, "action_id");
+                               
+                       print "<div id=\"infoBoxTitle\">Filter editor</div>";
+                       print "<div class=\"infoBoxContents\">";
+
+                       print "<form id=\"filter_edit_form\">";
+
+                       print "<input type=\"hidden\" name=\"op\" value=\"pref-filters\">";
+                       print "<input type=\"hidden\" name=\"id\" value=\"$filter_id\">";
+                       print "<input type=\"hidden\" name=\"subop\" value=\"editSave\">"; 
+
+//                     print "<div class=\"notice\"><b>Note:</b> filter will only apply to new articles.</div>";
+                       
+                       $result = db_query($link, "SELECT id,description 
+                               FROM ttrss_filter_types ORDER BY description");
+       
+                       $filter_types = array();
+       
+                       while ($line = db_fetch_assoc($result)) {
+                               //array_push($filter_types, $line["description"]);
+                               $filter_types[$line["id"]] = $line["description"];
+                       }
+
+                       print "<table width='100%'>";
+
+                       print "<tr><td>Match:</td>
+                               <td><input onkeypress=\"return filterCR(event)\"
+                                        onkeyup=\"toggleSubmitNotEmpty(this, 'infobox_submit')\"
+                                       name=\"reg_exp\" size=\"30\" value=\"$reg_exp\">&nbsp;";
+                       
+                       print_select_hash("filter_type", $filter_type, $filter_types);  
+       
+                       print "</td></tr>";
+                       print "<tr><td>Feed:</td><td>";
+
+                       print_feed_select($link, "feed_id", $feed_id);
+                       
+                       print "</td></tr>";
+       
+                       print "<tr><td>Action:</td>";
+       
+                       print "<td><select name=\"action_id\">";
+       
+                       $result = db_query($link, "SELECT id,description FROM ttrss_filter_actions 
+                               ORDER BY name");
+
+                       while ($line = db_fetch_assoc($result)) {
+                               $is_sel = ($line["id"] == $action_id) ? "selected" : "";                        
+                               printf("<option value='%d' $is_sel>%s</option>", $line["id"], $line["description"]);
+                       }
+       
+                       print "</select>";
+
+                       print "</td></tr></table>";
+
+                       print "</form>";
+
+                       print "<div align='right'>";
+
+                       print "<input type=\"submit\" 
+                               id=\"infobox_submit\"
+                               class=\"button\" onclick=\"filterEditSave()\" 
+                               value=\"Save\"> ";
+
+                       print "<input class=\"button\"
+                               type=\"submit\" onclick=\"filterEditCancel()\" 
+                               value=\"Cancel\">";
+
+                       print "</div>";
+
+                       return;
+               }
+
+
                if ($subop == "editSave") {
 
                        $reg_exp = db_escape_string(trim($_GET["reg_exp"]));
                        if (!WEB_DEMO_MODE) {
 
                                $regexp = db_escape_string(trim($_GET["reg_exp"]));
-                               $match_id = db_escape_string(trim($_GET["match_id"]));
+                               $filter_type = db_escape_string(trim($_GET["filter_type"]));
                                $feed_id = db_escape_string($_GET["feed_id"]);
                                $action_id = db_escape_string($_GET["action_id"]); 
 
                                        "INSERT INTO ttrss_filters (reg_exp,filter_type,owner_uid,feed_id,
                                                action_id) 
                                        VALUES 
-                                               ('$regexp', '$match_id','".$_SESSION["uid"]."', 
+                                               ('$regexp', '$filter_type','".$_SESSION["uid"]."', 
                                                        $feed_id, '$action_id')");
                        } 
                }
        
                                print "<tr class=\"$class\" $this_row_id>";
        
-                               $line["regexp"] = htmlspecialchars($line["reg_exp"]);
+                               $line["reg_exp"] = htmlspecialchars(db_unescape_string($line["reg_exp"]));
        
                                if (!$line["feed_title"]) $line["feed_title"] = "All feeds";
-       
-                               if (!$edit_filter_id || $subop != "edit") {
 
-                                       print "<td align='center'><input onclick='toggleSelectPrefRow(this, \"filter\");' 
+                               $line["feed_title"] = htmlspecialchars(db_unescape_string($line["feed_title"]));
+
+                               print "<td align='center'><input onclick='toggleSelectPrefRow(this, \"filter\");' 
                                        type=\"checkbox\" id=\"FICHK-".$line["id"]."\"></td>";
        
-                                       print "<td><a href=\"javascript:editFilter($filter_id);\">" . 
-                                               $line["reg_exp"] . "</td>";             
+                               print "<td><a href=\"javascript:editFilter($filter_id);\">" . 
+                                       $line["reg_exp"] . "</td>";             
        
-                                       print "<td><a href=\"javascript:editFilter($filter_id);\">" . 
-                                               $line["feed_title"] . "</td>";                  
+                               print "<td><a href=\"javascript:editFilter($filter_id);\">" . 
+                                       $line["feed_title"] . "</td>";                  
        
-                                       print "<td><a href=\"javascript:editFilter($filter_id);\">" . 
-                                               $line["filter_type_descr"] . "</td>";           
+                               print "<td><a href=\"javascript:editFilter($filter_id);\">" . 
+                                       $line["filter_type_descr"] . "</td>";           
                
-                                       print "<td><a href=\"javascript:editFilter($filter_id);\">" . 
-                                               $line["action_description"] . "</td>";                  
-       
-                               } else if ($filter_id != $edit_filter_id) {
-       
-                                       if (!$line["description"]) $line["description"] = "[No description]";
-       
-                                       print "<td align='center'><input disabled=\"true\" type=\"checkbox\" 
-                                               id=\"FICHK-".$line["id"]."\"></td>";
-       
-                                       print "<td>".$line["reg_exp"]."</td>";          
-                                       print "<td>".$line["feed_title"]."</td>";
-                                       print "<td>".$line["filter_type_descr"]."</td>";
-                                       print "<td>".$line["action_description"]."</td>";               
-
-                               } else {
-       
-                                       print "<td align='center'><input disabled=\"true\" type=\"checkbox\" checked>";
-                                       
-                                       print "<input type=\"hidden\" name=\"id\" value=\"$filter_id\">";
-                                       print "<input type=\"hidden\" name=\"op\" value=\"pref-filters\">";
-                                       print "<input type=\"hidden\" name=\"subop\" value=\"editSave\">";
-
-                                       print "</td>";
-       
-                                       print "<td><input onkeypress=\"return filterCR(event)\"
-                                                class=\"iedit\" name=\"reg_exp\" value=\"".$line["reg_exp"]."\"></td>";
-       
-                                       print "<td>";   
-                                       print_feed_select($link, "feed_id", $line["feed_id"], "class=\"iedit\"");
-                                       print "</td>";
-                                       
-                                       print "<td>";
-                                       print_select_hash("filter_type", $line["filter_type"], $filter_types,   
-                                               "class=\"iedit\"");
-                                       print "</td>";
-
-                                       print "<td>";
-                                       print "<select name=\"action_id\" class=\"iedit\">";
-       
-                                       $tmp_result = db_query($link, "SELECT id,description FROM ttrss_filter_actions
-                                               ORDER BY description");
-
-                                       while ($tmp_line = db_fetch_assoc($tmp_result)) {
-                                               if ($tmp_line["description"] == $line["action_description"]) {
-                                                       $is_selected = "selected";
-                                               } else {
-                                                       $is_selected = "";
-                                               }
-                                               printf("<option $is_selected value='%d'>%s</option>", 
-                                                       $tmp_line["id"], $tmp_line["description"]);
-                                       }
-       
-                                       print "</select></td>";
-
-                                       print "</td>";
-                               }
+                               print "<td><a href=\"javascript:editFilter($filter_id);\">" . 
+                                       $line["action_description"] . "</td>";                  
                                
                                print "</tr>";
        
                                         onkeyup=\"toggleSubmitNotEmpty(this, 'infobox_submit')\"
                                        name=\"reg_exp\" size=\"30\">&nbsp;";
                        
-                       print_select_hash("match_id", 1, $filter_types);        
+                       print_select_hash("filter_type", 1, $filter_types);     
        
                        print "</td></tr>";
                        print "<tr><td>Feed:</td><td>";
index 73ef85774d9296cf513ac1f32abb886d64b30151..0c1a959a7bd4fe924d8aa272d196221cee0528e2 100644 (file)
                                $is_selected = "";
                        }
                        printf("<option $is_selected value='%d'>%s</option>", 
-                               $line["id"], db_unescape_string($line["title"]));
+                               $line["id"], htmlspecialchars(db_unescape_string($line["title"])));
                }
        
                print "</select>";
                                $is_selected = "";
                        }
                        printf("<option $is_selected value='%d'>%s</option>", 
-                               $line["id"], $line["title"]);
+                               $line["id"], htmlspecialchars(db_unescape_string($line["title"])));
                }
 
                print "</select>";
index f9ec1a5b508b75110ff2604962488ed700502c4f..d7a616f37ff3d360891923d1a6eb51582408f2e5 100644 (file)
--- a/prefs.js
+++ b/prefs.js
@@ -1,7 +1,6 @@
 var xmlhttp = false;
 
 var active_feed_cat = false;
-var active_filter = false;
 var active_label = false;
 var active_tab = false;
 var feed_to_expand = false;
@@ -54,22 +53,7 @@ function feedlist_callback() {
 function filterlist_callback() {
        var container = document.getElementById('prefContent');
        if (xmlhttp.readyState == 4) {
-
                container.innerHTML=xmlhttp.responseText;
-
-               if (active_filter) {
-                       var row = document.getElementById("FILRR-" + active_filter);
-                       if (row) {
-                               if (!row.className.match("Selected")) {
-                                       row.className = row.className + "Selected";
-                               }               
-                       }
-                       var checkbox = document.getElementById("FICHK-" + active_filter);
-                       
-                       if (checkbox) {
-                               checkbox.checked = true;
-                       }
-               }
                notify("");
        }
 }
@@ -354,13 +338,12 @@ function editFilter(id) {
                return
        }
 
-       active_filter = id;
+       selectTableRowsByIdPrefix('prefFilterList', 'FILRR-', 'FICHK-', false);
+       selectTableRowById('FILRR-'+id, 'FICHK-'+id, true);
 
-       xmlhttp.open("GET", "backend.php?op=pref-filters&subop=edit&id=" +
-               param_escape(id), true);
-       xmlhttp.onreadystatechange=filterlist_callback;
+       xmlhttp.open("GET", "backend.php?op=pref-filters&subop=edit&id=" + param_escape(id), true);
+       xmlhttp.onreadystatechange=infobox_callback;
        xmlhttp.send(null);
-
 }
 
 function editFeed(feed) {
@@ -713,7 +696,6 @@ function userEditCancel() {
        }
 
        selectPrefRows('user', false); // cleanup feed selection
-
        closeInfoBox();
 }
 
@@ -723,15 +705,9 @@ function filterEditCancel() {
                printLockingError();
                return
        }
-
-       active_filter = false;
-
-//     notify("Operation cancelled.");
-
-       xmlhttp.open("GET", "backend.php?op=pref-filters", true);
-       xmlhttp.onreadystatechange=filterlist_callback;
-       xmlhttp.send(null);
-
+       
+       selectPrefRows('filter', false); // cleanup feed selection
+       closeInfoBox();
 }
 
 function labelEditSave() {
@@ -809,10 +785,10 @@ function filterEditSave() {
 
        notify("Saving filter...");
 
-       active_filter = false;
-
        var query = Form.serialize("filter_edit_form");
 
+       closeInfoBox();
+
        xmlhttp.open("GET", "backend.php?" + query, true);
        xmlhttp.onreadystatechange=filterlist_callback;
        xmlhttp.send(null);
@@ -1137,7 +1113,6 @@ function selectTab(id, noupdate) {
 
                // clean up all current selections, just in case
                active_feed_cat = false;
-               active_filter = false;
                active_label = false;
 
                if (id == "feedConfig") {