]> git.wh0rd.org - tt-rss.git/blobdiff - modules/pref-filters.php
rework filter dialogs to use dijit.Form
[tt-rss.git] / modules / pref-filters.php
index 777e9ba8178e7d1c66eb1127f3525f9614821e7f..28f30fa691c687c0a310ab51448a8d9cd73c5ae7 100644 (file)
 <?php
        function module_pref_filters($link) {
-               $subop = $_GET["subop"];
-               $quiet = $_GET["quiet"];
+               $subop = $_REQUEST["subop"];
+               $quiet = $_REQUEST["quiet"];
+
+               if ($subop == "getfiltertree") {
+                       $root = array();
+                       $root['id'] = 'root';
+                       $root['name'] = __('Filters');
+                       $root['items'] = array();
+
+                       $result = db_query($link, "SELECT 
+                                       ttrss_filters.id AS id,reg_exp,
+                                       ttrss_filter_types.name AS filter_type_name,
+                                       ttrss_filter_types.description AS filter_type_descr,
+                                       enabled,
+                                       inverse,
+                                       feed_id,
+                                       action_id,
+                                       filter_param,
+                                       filter_type,
+                                       ttrss_filter_actions.description AS action_description,
+                                       ttrss_feeds.title AS feed_title,
+                                       ttrss_filter_actions.name AS action_name,
+                                       ttrss_filters.action_param AS action_param
+                               FROM 
+                                       ttrss_filter_types,ttrss_filter_actions,ttrss_filters LEFT JOIN
+                                               ttrss_feeds ON (ttrss_filters.feed_id = ttrss_feeds.id)
+                               WHERE
+                                       filter_type = ttrss_filter_types.id AND
+                                       ttrss_filter_actions.id = action_id AND
+                                       ttrss_filters.owner_uid = ".$_SESSION["uid"]."
+                               ORDER by action_description, reg_exp");
+
+                       $cat = false;
+                       $cur_action_description = "";
+
+                       while ($line = db_fetch_assoc($result)) {
+                               if ($cur_action_description != $line['action_description']) {
+
+                                       if ($cat)
+                                               array_push($root['items'], $cat);
+
+                                       $cat = array();
+                                       $cat['id'] = 'ACTION:' . $line['action_id'];
+                                       $cat['name'] = $line['action_description'];
+                                       $cat['items'] = array();
+
+                                       $cur_action_description = $line['action_description'];
+                               }
+
+                               if (array_search($line["action_name"], 
+                                       array("score", "tag", "label")) === false) {
+
+                                               $line["action_param"] = '';
+                               } else {
+                                       if ($line['action_name'] == 'label') {
+
+                                               $tmp_result = db_query($link, "SELECT fg_color, bg_color
+                                                       FROM ttrss_labels2 WHERE caption = '".
+                                                               db_escape_string($line["action_param"])."' AND
+                                                               owner_uid = " . $_SESSION["uid"]);
+
+                                               if (db_num_rows($tmp_result) != 0) {
+                                                       $fg_color = db_fetch_result($tmp_result, 0, "fg_color");
+                                                       $bg_color = db_fetch_result($tmp_result, 0, "bg_color");
+
+                                                       $tmp = "<span class=\"labelColorIndicator\" style='color : $fg_color; background-color : $bg_color'>&alpha;</span> " . $line['action_param'];
+
+                                                       $line['action_param'] = $tmp;
+                                               }
+                                       }
+                               }
+
+                               $filter = array();
+                               $filter['id'] = 'FILTER:' . $line['id'];
+                               $filter['bare_id'] = $line['id'];
+                               $filter['name'] = $line['reg_exp'];
+                               $filter['type'] = $line['filter_type'];
+                               $filter['enabled'] = sql_bool_to_bool($line['enabled']);
+                               $filter['param'] = $line['action_param'];
+                               $filter['inverse'] = sql_bool_to_bool($line['inverse']);
+                               $filter['checkbox'] = false;
+
+                               if ($line['feed_id'])
+                                       $filter['feed'] = $line['feed_title']; 
+
+                               array_push($cat['items'], $filter);
+                       }
+
+                       array_push($root['items'], $cat);
+
+                       $fl = array();
+                       $fl['identifier'] = 'id';
+                       $fl['label'] = 'name';
+                       $fl['items'] = array($root);
+
+                       print json_encode($fl);
+                       return;
+               }
 
                if ($subop == "edit") {
 
-                       $filter_id = db_escape_string($_GET["id"]);
+                       $filter_id = db_escape_string($_REQUEST["id"]);
 
                        $result = db_query($link, 
                                "SELECT * FROM ttrss_filters WHERE id = '$filter_id' AND owner_uid = " . $_SESSION["uid"]);
                        $enabled = sql_bool_to_bool(db_fetch_result($result, 0, "enabled"));
                        $inverse = sql_bool_to_bool(db_fetch_result($result, 0, "inverse"));
 
-                       print "<div id=\"infoBoxTitle\">".__('Filter Editor')."</div>";
-                       print "<div class=\"infoBoxContents\">";
-
                        print "<form id=\"filter_edit_form\" onsubmit='return false'>";
 
-                       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 "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"pref-filters\">";
+                       print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"id\" value=\"$filter_id\">";
+                       print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"subop\" value=\"editSave\">"; 
                        
                        $result = db_query($link, "SELECT id,description 
                                FROM ttrss_filter_types ORDER BY description");
                        print "<div class=\"dlgSecCont\">";
 
                        if ($filter_type != 5) {
-                               $date_ops_invisible = 'style=\"display : none\"';
+                               $date_ops_invisible = 'style="display : none"';
                        }
 
-                       print "<span id=\"filter_dlg_date_mod_box\" $date_ops_invisible>";
+                       print "<span id=\"filterDlg_dateModBox\" $date_ops_invisible>";
                        print __("Date") . " ";
 
                        $filter_params = array(
                                "after" => __("after"));
 
                        print_select_hash("filter_date_modifier", $filter_param,
-                               $filter_params);
+                               $filter_params, 'dojoType="dijit.form.Select"');
 
                        print "&nbsp;</span>";
 
-                       print "<input onkeypress=\"return filterCR(event, filterEditSave)\"
-                                        onkeyup=\"toggleSubmitNotEmpty(this, 'infobox_submit')\"
-                                        onchange=\"toggleSubmitNotEmpty(this, 'infobox_submit')\"
-                                        name=\"reg_exp\" size=\"30\" value=\"$reg_exp\">";
+                       print "<input dojoType=\"dijit.form.ValidationTextBox\"
+                                        required=\"1\"
+                                        name=\"reg_exp\" style=\"font-size : 16px;\" value=\"$reg_exp\">";
 
-                       print "<span id=\"filter_dlg_date_chk_box\" $date_ops_invisible>";                      
-                       print "&nbsp;<input class=\"button\"
-                               type=\"submit\" onclick=\"return filterDlgCheckDate()\" 
-                               value=\"".__('Check it')."\">";
+                       print "<span id=\"filterDlg_dateChkBox\" $date_ops_invisible>";                 
+                       print "&nbsp;<button onclick=\"return filterDlgCheckDate()\">".
+                               __('Check it')."</button>";
                        print "</span>";
 
                        print "<br/> " . __("on field") . " ";
                        print_select_hash("filter_type", $filter_type, $filter_types,
-                               'onchange="filterDlgCheckType(this)"');
+                               'onchange="filterDlgCheckType(this)" dojoType="dijit.form.Select"');
 
                        print "<br/>";
 
                        print __("in") . " ";
-                       print_feed_select($link, "feed_id", $feed_id);
+                       print_feed_select($link, "feed_id", $feed_id,
+                               'dojoType="dijit.form.FilteringSelect"');
 
                        print "</div>";
 
 
                        print "<div class=\"dlgSecCont\">";
 
-                       print "<select name=\"action_id\"
+                       print "<select name=\"action_id\" dojoType=\"dijit.form.Select\"
                                onchange=\"filterDlgCheckAction(this)\">";
        
                        $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" : "";                        
+                               $is_sel = ($line["id"] == $action_id) ? "selected=\"1\"" : "";                  
                                printf("<option value='%d' $is_sel>%s</option>", $line["id"], __($line["description"]));
                        }
        
                        print "</select>";
 
-                       $param_hidden = ($action_id == 4 || $action_id == 6) ? "" : "display : none";
+                       $param_hidden = ($action_id == 4 || $action_id == 6 || $action_id == 7) ? "" : "display : none";
 
-                       print "<span id=\"filter_dlg_param_box\" style=\"$param_hidden\">";
+                       print "<span id=\"filterDlg_paramBox\" style=\"$param_hidden\">";
                        print " " . __("with parameters:") . " ";
-                       print "<input size=\"20\"
-                                       onkeypress=\"return filterCR(event, filterEditSave)\"           
+
+                       $param_int_hidden = ($action_id != 7) ? "" : "display : none";
+
+                       print "<input style=\"$param_int_hidden\"
+                                       dojoType=\"dijit.form.TextBox\" id=\"filterDlg_actionParam\"
                                        name=\"action_param\" value=\"$action_param\">";
+
+                       $param_int_hidden = ($action_id == 7) ? "" : "display : none";
+
+                       print_label_select($link, "action_param_label", $action_param, 
+                        "style=\"$param_int_hidden\"" . 
+                        'id="filterDlg_actionParamLabel" dojoType="dijit.form.Select"');
+
                        print "</span>";
 
                        print "&nbsp;"; // tiny layout hack
                        print "<div style=\"line-height : 100%\">";
 
                        if ($enabled) {
-                               $checked = "checked";
+                               $checked = "checked=\"1\"";
                        } else {
                                $checked = "";
                        }
 
-                       print "<input type=\"checkbox\" name=\"enabled\" id=\"enabled\" $checked>
+                       print "<input dojoType=\"dijit.form.CheckBox\" type=\"checkbox\" name=\"enabled\" id=\"enabled\" $checked>
                                        <label for=\"enabled\">".__('Enabled')."</label><br/>";
 
                        if ($inverse) {
-                               $checked = "checked";
+                               $checked = "checked=\"1\"";
                        } else {
                                $checked = "";
                        }
 
-                       print "<input type=\"checkbox\" name=\"inverse\" id=\"inverse\" $checked>
+                       print "<input dojoType=\"dijit.form.CheckBox\" type=\"checkbox\" name=\"inverse\" id=\"inverse\" $checked>
                                <label for=\"inverse\">".__('Inverse match')."</label>";
 
                        print "</div>";
                        $reg_exp = htmlspecialchars($reg_exp, ENT_QUOTES); // second escaping seems to be needed for javascript
 
                        print "<div style=\"float : left\">";
-                       print "<input type=\"submit\" 
-                               class=\"button\" onclick='return removeFilter($filter_id, \"$reg_exp\")' 
-                               value=\"".__('Remove')."\"> ";
+                       print "<button onclick='return removeFilter($filter_id, \"$reg_exp\")'>".
+                               __('Remove')."</button>";
                        print "</div>";
 
-                       print "<input type=\"submit\" 
-                               id=\"infobox_submit\"
-                               class=\"button\" onclick=\"return filterEditSave()\" 
-                               value=\"".__('Save')."\"> ";
+                       print "<button onclick=\"return dijit.byId('filterEditDlg').execute()\">".
+                               __('Save')."</button> ";
 
-                       print "<input class=\"button\"
-                               type=\"submit\" onclick=\"return filterEditCancel()\" 
-                               value=\"".__('Cancel')."\">";
+                       print "<button onclick=\"return dijit.byId('filterEditDlg').hide()\">".
+                               __('Cancel')."</button>";
 
                        print "</div>";
 
 
                if ($subop == "editSave") {
 
-                       $reg_exp = db_escape_string(trim($_GET["reg_exp"]));
-                       $filter_type = db_escape_string(trim($_GET["filter_type"]));
-                       $filter_id = db_escape_string($_GET["id"]);
-                       $feed_id = db_escape_string($_GET["feed_id"]);
-                       $action_id = db_escape_string($_GET["action_id"]); 
-                       $action_param = db_escape_string($_GET["action_param"]); 
-                       $enabled = checkbox_to_sql_bool(db_escape_string($_GET["enabled"]));
-                       $inverse = checkbox_to_sql_bool(db_escape_string($_GET["inverse"]));
+                       global $memcache;
+
+                       if ($memcache) $memcache->flush();
+
+                       $reg_exp = db_escape_string(trim($_REQUEST["reg_exp"]));
+                       $filter_type = db_escape_string(trim($_REQUEST["filter_type"]));
+                       $filter_id = db_escape_string($_REQUEST["id"]);
+                       $feed_id = db_escape_string($_REQUEST["feed_id"]);
+                       $action_id = db_escape_string($_REQUEST["action_id"]); 
+                       $action_param = db_escape_string($_REQUEST["action_param"]); 
+                       $action_param_label = db_escape_string($_REQUEST["action_param_label"]); 
+                       $enabled = checkbox_to_sql_bool(db_escape_string($_REQUEST["enabled"]));
+                       $inverse = checkbox_to_sql_bool(db_escape_string($_REQUEST["inverse"]));
 
                        # for the time being, no other filters use params anyway...
-                       $filter_param = db_escape_string($_GET["filter_date_modifier"]);
+                       $filter_param = db_escape_string($_REQUEST["filter_date_modifier"]);
 
                        if (!$feed_id) {
                                $feed_id = 'NULL';
                        } else {
                                $feed_id = sprintf("'%s'", db_escape_string($feed_id));
                        }
-                       
+
+                       /* When processing 'assign label' filters, action_param_label dropbox
+                        * overrides action_param */
+
+                       if ($action_id == 7) {
+                               $action_param = $action_param_label;
+                       }
+
                        $result = db_query($link, "UPDATE ttrss_filters SET 
                                        reg_exp = '$reg_exp', 
                                        feed_id = $feed_id,
                                        action_param = '$action_param',
                                        filter_param = '$filter_param'
                                        WHERE id = '$filter_id' AND owner_uid = " . $_SESSION["uid"]);
-
-                       if (db_affected_rows($link, $result) != 0) {
-                               print_notice(T_sprintf("Saved filter <b>%s</b>", htmlspecialchars($reg_exp)));
-                       }
-
                }
 
                if ($subop == "remove") {
+                       
+                       if ($memcache) $memcache->flush();
 
-                       $ids = split(",", db_escape_string($_GET["ids"]));
+                       $ids = split(",", db_escape_string($_REQUEST["ids"]));
 
                        foreach ($ids as $id) {
                                db_query($link, "DELETE FROM ttrss_filters WHERE id = '$id' AND owner_uid = ". $_SESSION["uid"]);
                }
 
                if ($subop == "add") {
-               
-                       $regexp = db_escape_string(trim($_GET["reg_exp"]));
-                       $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"]); 
-                       $action_param = db_escape_string($_GET["action_param"]); 
-                       $inverse = checkbox_to_sql_bool(db_escape_string($_GET["inverse"]));
+
+                       if ($memcache) $memcache->flush();
+
+                       $regexp = db_escape_string(trim($_REQUEST["reg_exp"]));
+                       $filter_type = db_escape_string(trim($_REQUEST["filter_type"]));
+                       $feed_id = db_escape_string($_REQUEST["feed_id"]);
+                       $action_id = db_escape_string($_REQUEST["action_id"]); 
+                       $action_param = db_escape_string($_REQUEST["action_param"]); 
+                       $action_param_label = db_escape_string($_REQUEST["action_param_label"]); 
+                       $inverse = checkbox_to_sql_bool(db_escape_string($_REQUEST["inverse"]));
 
                        # for the time being, no other filters use params anyway...
-                       $filter_param = db_escape_string($_GET["filter_date_modifier"]);
+                       $filter_param = db_escape_string($_REQUEST["filter_date_modifier"]);
 
                        if (!$regexp) return;
 
                                $feed_id = sprintf("'%s'", db_escape_string($feed_id));
                        }
 
+                       /* When processing 'assign label' filters, action_param_label dropbox
+                        * overrides action_param */
+
+                       if ($action_id == 7) {
+                               $action_param = $action_param_label;
+                       }
+
                        $result = db_query($link,
                                "INSERT INTO ttrss_filters (reg_exp,filter_type,owner_uid,feed_id,
                                        action_id, action_param, inverse, filter_param) 
 
                if ($quiet) return;
 
-               set_pref($link, "_PREFS_ACTIVE_TAB", "filterConfig");
-
-               $sort = db_escape_string($_GET["sort"]);
+               $sort = db_escape_string($_REQUEST["sort"]);
 
                if (!$sort || $sort == "undefined") {
                        $sort = "reg_exp";
                }
 
-//             print "<div id=\"infoBoxShadow\"><div id=\"infoBox\">PLACEHOLDER</div></div>";
-
                $result = db_query($link, "SELECT id,description 
                        FROM ttrss_filter_types ORDER BY description");
 
                }
 
 
-               $filter_search = db_escape_string($_GET["search"]);
+               $filter_search = db_escape_string($_REQUEST["search"]);
 
-               if (array_key_exists("search", $_GET)) {
+               if (array_key_exists("search", $_REQUEST)) {
                        $_SESSION["prefs_filter_search"] = $filter_search;
                } else {
                        $filter_search = $_SESSION["prefs_filter_search"];
                }
+               
+               print "<div id=\"pref-filter-wrap\" dojoType=\"dijit.layout.BorderContainer\" gutters=\"false\">";
+               print "<div id=\"pref-filter-header\" dojoType=\"dijit.layout.ContentPane\" region=\"top\">";
+               print "<div id=\"pref-filter-toolbar\" dojoType=\"dijit.Toolbar\">";
+
+               print "<div dojoType=\"dijit.form.DropDownButton\">".
+                               "<span>" . __('Select')."</span>";
+               print "<div dojoType=\"dijit.Menu\" style=\"display: none;\">";
+               print "<div onclick=\"dijit.byId('filterTree').model.setAllChecked(true)\" 
+                       dojoType=\"dijit.MenuItem\">".__('All')."</div>";
+               print "<div onclick=\"dijit.byId('filterTree').model.setAllChecked(false)\" 
+                       dojoType=\"dijit.MenuItem\">".__('None')."</div>";
+               print "</div></div>";
+               
+               print "<button dojoType=\"dijit.form.Button\" onclick=\"return quickAddFilter()\">".
+                       __('Create filter')."</button dojoType=\"dijit.form.Button\"> "; 
 
-               print "<div class=\"feedEditSearch\">
-                       <input id=\"filter_search\" size=\"20\" type=\"search\"
-                               onfocus=\"javascript:disableHotkeys();\" 
-                               onblur=\"javascript:enableHotkeys();\"
-                               onchange=\"javascript:updateFilterList()\" value=\"$filter_search\">
-                       <input type=\"submit\" class=\"button\" 
-                       onclick=\"javascript:updateFilterList()\" value=\"".__('Search')."\">
-                       <p<a class='helpLinkPic' href=\"javascript:displayHelpInfobox(2)\">
-                       <img src='images/sign_quest.gif'></a></p>
-                       </div>";
-
-
-               print "<input type=\"submit\" 
-                       class=\"button\" 
-                       onclick=\"return displayDlg('quickAddFilter', false)\" 
-                       id=\"create_filter_btn\"
-                       value=\"".__('Create filter')."\">"; 
-
-               print "&nbsp;";
-
-               print "<input type=\"submit\" 
-                       class=\"button\" 
-                       onclick=\"rescore_all_feeds()\" 
-                       value=\"".__('Rescore articles')."\">"; 
-
-               if ($filter_search) {
-                       $filter_search = db_escape_string($filter_search);
-                       $filter_search_query = "(
-                               UPPER(ttrss_filter_actions.description) LIKE UPPER('%$filter_search%') OR 
-                               UPPER(reg_exp) LIKE UPPER('%$filter_search%') OR 
-                               UPPER(ttrss_feeds.title) LIKE UPPER('%$filter_search%') OR
-                               UPPER(ttrss_filter_types.description) LIKE UPPER('%$filter_search%')) AND";
-               } else {
-                       $filter_search_query = "";
-               }
-
-               $result = db_query($link, "SELECT 
-                               ttrss_filters.id AS id,reg_exp,
-                               ttrss_filter_types.name AS filter_type_name,
-                               ttrss_filter_types.description AS filter_type_descr,
-                               enabled,
-                               inverse,
-                               feed_id,
-                               ttrss_filter_actions.description AS action_description,
-                               ttrss_feeds.title AS feed_title,
-                               ttrss_filter_actions.name AS action_name,
-                               ttrss_filters.action_param AS action_param
-                       FROM 
-                               ttrss_filter_types,ttrss_filter_actions,ttrss_filters LEFT JOIN
-                                       ttrss_feeds ON (ttrss_filters.feed_id = ttrss_feeds.id)
-                       WHERE
-                               filter_type = ttrss_filter_types.id AND
-                               $filter_search_query
-                               ttrss_filter_actions.id = action_id AND
-                               ttrss_filters.owner_uid = ".$_SESSION["uid"]."
-                       ORDER by action_description, $sort");
-
-               if (db_num_rows($result) != 0) {
-
-                       print "<p><table width=\"100%\" cellspacing=\"0\" class=\"prefFilterList\" 
-                               id=\"prefFilterList\">";
-
-                       print "<tr><td class=\"selectPrompt\" colspan=\"8\">
-                               ".__('Select:')." 
-                                       <a href=\"javascript:selectPrefRows('filter', true)\">".__('All')."</a>,
-                                       <a href=\"javascript:selectPrefRows('filter', false)\">".__('None')."</a>
-                               </td</tr>";
-
-                       $lnum = 0;
-
-                       $cur_action_description = "";
-
-                       while ($line = db_fetch_assoc($result)) {
-       
-                               $class = ($lnum % 2) ? "even" : "odd";
-       
-                               $filter_id = $line["id"];
-                               $edit_filter_id = $_GET["id"];
-
-                               $enabled = sql_bool_to_bool($line["enabled"]);
-                               $inverse = sql_bool_to_bool($line["inverse"]);
-
-                               if ($subop == "edit" && $filter_id != $edit_filter_id) {
-                                       $class .= "Grayed";
-                                       $this_row_id = "";
-                               } else {
-                                       $this_row_id = "id=\"FILRR-$filter_id\"";
-                               }
-
-                               $line["filter_type_descr"] = __($line["filter_type_descr"]);
-                               $line["action_description"] = __($line["action_description"]);
-
-                               if ($line["action_description"] != $cur_action_description) {
-                                       $cur_action_description = $line["action_description"];
-
-                                       print "<tr><td class='filterEditCat' colspan='6'>$cur_action_description</td></tr>";
-
-                                       print "<tr class=\"title\">
-                                               <td align='center' width=\"5%\">&nbsp;</td>
-                                               <td width=\"20%\"><a href=\"javascript:updateFilterList('reg_exp')\">".__('Match')."</a></td>
-                                               <td width=\"\"><a href=\"javascript:updateFilterList('feed_title')\">".__('Feed')."</a></td>
-                                               <td width=\"20%\"><a href=\"javascript:updateFilterList('filter_type')\">".__('Field')."</a></td>
-                                               <td width=\"20%\"><a href=\"javascript:updateFilterList('action_param')\">".__('Params')."</a></td>"; 
-
-                               }
-
-                               print "<tr class=\"$class\" $this_row_id>";
-       
-                               $line["reg_exp"] = htmlspecialchars($line["reg_exp"]);
-       
-                               if (!$line["feed_title"]) $line["feed_title"] = __("All feeds");
-
-                               if (!$line["action_param"]) {
-                                       $line["action_param"] = "&mdash;";
-                               } else if ($line["action_name"] == "score") {
-
-                                       $score_pic = get_score_pic($line["action_param"]);
-
-                                       $score_pic = "<img class='hlScorePic' src=\"images/$score_pic\">";
-
-                                       $line["action_param"] = "$score_pic " . $line["action_param"];
-
-                               }
-
-                               $line["feed_title"] = htmlspecialchars($line["feed_title"]);
-
-                               print "<td align='center'><input onclick='toggleSelectPrefRow(this, \"filter\");' 
-                                       type=\"checkbox\" id=\"FICHK-".$line["id"]."\"></td>";
-
-                               if (!$enabled) {
-                                       $line["reg_exp"] = "<span class=\"insensitive\">" . 
-                                               $line["reg_exp"] . " " .  __("(Disabled)")."</span>";
-                                       $line["feed_title"] = "<span class=\"insensitive\">" . 
-                                               $line["feed_title"] . "</span>";
-                                       $line["filter_type_descr"] = "<span class=\"insensitive\">" . 
-                                               $line["filter_type_descr"] . "</span>";
-                                       $line["action_description"] = "<span class=\"insensitive\">" . 
-                                               $line["action_description"] . "</span>";
-                                       $line["action_param"] = "<span class=\"insensitive\">" . 
-                                               $line["action_param"] . "</span>";
-                               }       
-
-                               $onclick = "onclick='editFilter($filter_id)' title='".__('Click to edit')."'";
-
-                               print "<td $onclick>" . $line["reg_exp"] . "</td>";             
-                               print "<td $onclick>" . $line["feed_title"] . "</td>";                  
-
-                               $inverse_label = "";
-
-                               if ($inverse) {
-                                       $inverse_label = " <span class='insensitive'>".__('(Inverse)')."</span>";
-                               }
-       
-                               print "<td $onclick>" . $line["filter_type_descr"] . "$inverse_label</td>";
-                               print "<td $onclick>" . $line["action_param"] . "</td>";
-
-                               print "</tr>";
-       
-                               ++$lnum;
-                       }
-
-                       print "</table>";
-
-                       print "<p id=\"filterOpToolbar\">";
-
-                       print "<input type=\"submit\" class=\"button\" disabled=\"true\"
-                                       onclick=\"return editSelectedFilter()\" value=\"".__('Edit')."\">
-                               <input type=\"submit\" class=\"button\" disabled=\"true\"
-                                       onclick=\"return removeSelectedFilters()\" value=\"".__('Remove')."\">";
-
-                       print "</p>";
-
-               } else {
+               print "<button dojoType=\"dijit.form.Button\" onclick=\"return editSelectedFilter()\">".
+                       __('Edit')."</button dojoType=\"dijit.form.Button\"> ";
 
-                       print "<p>";
-                       if (!$filter_search) {
-                               print __('No filters defined.');
-                       } else {
-                               print __('No matching filters found.');
-                       }
-                       print "</p>";
+               print "<button dojoType=\"dijit.form.Button\" onclick=\"return removeSelectedFilters()\">".
+                       __('Remove')."</button dojoType=\"dijit.form.Button\"> ";
 
+               if (defined('_ENABLE_FEED_DEBUGGING')) {
+                       print "<button dojoType=\"dijit.form.Button\" onclick=\"rescore_all_feeds()\">".
+                               __('Rescore articles')."</button dojoType=\"dijit.form.Button\"> "; 
                }
+
+               print "</div>"; # toolbar
+               print "</div>"; # toolbar-frame
+               print "<div id=\"pref-filter-content\" dojoType=\"dijit.layout.ContentPane\" region=\"center\">";
+
+               print "<div id=\"filterlistLoading\">
+               <img src='images/indicator_tiny.gif'>".
+                __("Loading, please wait...")."</div>";
+
+               print "<div dojoType=\"dojo.data.ItemFileWriteStore\" jsId=\"filterStore\" 
+                       url=\"backend.php?op=pref-filters&subop=getfiltertree\">
+               </div>
+               <div dojoType=\"lib.CheckBoxStoreModel\" jsId=\"filterModel\" store=\"filterStore\"
+               query=\"{id:'root'}\" rootId=\"root\" rootLabel=\"Feeds\"
+                       childrenAttrs=\"items\" checkboxStrict=\"false\" checkboxAll=\"false\">
+               </div>
+               <div dojoType=\"fox.PrefFilterTree\" id=\"filterTree\" 
+                       model=\"filterModel\" openOnClick=\"true\">
+               <script type=\"dojo/method\" event=\"onLoad\" args=\"item\">
+                       Element.hide(\"filterlistLoading\");
+               </script>
+               </div>";
+
+               print "</div>"; #pane
+               print "</div>"; #container
        }
+
 ?>