]> git.wh0rd.org - tt-rss.git/blobdiff - modules/popup-dialog.php
rework email article dialog
[tt-rss.git] / modules / popup-dialog.php
index 2805f76537cbc94c4f5bcb2be70888a4631890a7..ad3ca0c3a6d04340189a4ff1a77b19f2b7296214 100644 (file)
 <?php
        function module_popup_dialog($link) {
-               $id = $_GET["id"];
-               $param = db_escape_string($_GET["param"]);
+               $id = $_REQUEST["id"];
+               $param = db_escape_string($_REQUEST["param"]);
+
+               print "<dlg id=\"$id\">";
+
+               if ($id == "importOpml") {
+                       print "<title>".__('OPML Import')."</title>";
+                       print "<content><![CDATA[";
+
+                       print "<div class=\"prefFeedCatHolder\">";
+
+                       $owner_uid = $_SESSION["uid"];
+
+                       db_query($link, "BEGIN");
+
+                       /* create Imported feeds category just in case */
+
+                       $result = db_query($link, "SELECT id FROM
+                               ttrss_feed_categories WHERE title = 'Imported feeds' AND
+                               owner_uid = '$owner_uid' LIMIT 1");
+
+                       if (db_num_rows($result) == 0) {
+                               db_query($link, "INSERT INTO ttrss_feed_categories
+                                       (title,owner_uid) 
+                                               VALUES ('Imported feeds', '$owner_uid')");
+                       }
+
+                       db_query($link, "COMMIT");
+
+                       /* Handle OPML import by DOMXML/DOMDocument */
+
+                       if (function_exists('domxml_open_file')) {
+                               print "<ul class='nomarks'>";
+                               print "<li>".__("Importing using DOMXML.")."</li>";
+                               require_once "opml_domxml.php";
+                               opml_import_domxml($link, $owner_uid);
+                               print "</ul>";
+                       } else if (PHP_VERSION >= 5) {
+                               print "<ul class='nomarks'>";
+                               print "<li>".__("Importing using DOMDocument.")."</li>";
+                               require_once "opml_domdoc.php";
+                               opml_import_domdoc($link, $owner_uid);
+                               print "</ul>";
+                       } else {
+                               print_error(__("DOMXML extension is not found. It is required for PHP versions below 5."));
+                       }
+
+                       print "</div>";
+
+                       print "<div align='center'>";
+
+                       print "<button onclick=\"return opmlImportDone()\">".
+                               __('Close this window')."</button>";
+
+                       print "</div>";
+
+                       print "<script type=\"text/javascript\">";
+                       print "parent.opmlImportHandler(this)";
+                       print "</script>";
+
+                       print "</div>";
+                       print "]]></content>";
+
+                       //return;
+               }
+
+               if ($id == "editPrefProfiles") {
+
+                       print "<title>".__('Settings Profiles')."</title>";
+                       print "<content><![CDATA[";
+
+                       print "<div><input id=\"fadd_profile\" 
+                                       onkeypress=\"return filterCR(event, addPrefProfile)\"
+                                       size=\"40\">
+                                       <button onclick=\"javascript:addPrefProfile()\">".
+                                       __('Create profile')."</button></div>";
+
+                       print "<p>";
+
+                       $result = db_query($link, "SELECT title,id FROM ttrss_settings_profiles
+                               WHERE owner_uid = ".$_SESSION["uid"]." ORDER BY title");
+
+                       print   __('Select:')." 
+                               <a href=\"#\" onclick=\"selectTableRows('prefFeedCatList', 'all')\">".__('All')."</a>,
+                               <a href=\"#\" onclick=\"selectTableRows('prefFeedCatList', 'none')\">".__('None')."</a>";
+
+                       print "<div class=\"prefFeedCatHolder\">";
+
+                       print "<form id=\"profile_edit_form\" onsubmit=\"return false\">";
+
+                       print "<table width=\"100%\" class=\"prefFeedCatList\" 
+                               cellspacing=\"0\" id=\"prefFeedCatList\">";
+
+                       print "<tr class=\"odd\" id=\"FCATR-0\">";
+
+                       print "<td width='5%' align='center'><input 
+                               onclick='toggleSelectRow(this);' 
+                               type=\"checkbox\" id=\"FCCHK-0\"></td>";
+
+                       if (!$_SESSION["profile"]) {
+                               $is_active = __("(active)");
+                       } else {
+                               $is_active = "";
+                       }
+
+                       print "<td><span id=\"FCATT-0\">" . 
+                               __("Default profile") . " $is_active</span></td>";
+                               
+                       print "</tr>";
+
+                       $lnum = 1;
+                       
+                       while ($line = db_fetch_assoc($result)) {
+       
+                               $class = ($lnum % 2) ? "even" : "odd";
+       
+                               $cat_id = $line["id"];
+                               $this_row_id = "id=\"FCATR-$cat_id\"";
+       
+                               print "<tr class=\"$class\" $this_row_id>";
+       
+                               $edit_title = htmlspecialchars($line["title"]);
+       
+                               print "<td width='5%' align='center'><input 
+                                       onclick='toggleSelectRow(this);' 
+                                       type=\"checkbox\" id=\"FCCHK-$cat_id\"></td>";
+
+                               if ($_SESSION["profile"] == $line["id"]) {
+                                       $is_active = __("(active)");
+                               } else {
+                                       $is_active = "";
+                               }
+
+                               print "<td><span id=\"FCATT-$cat_id\">" . 
+                                       $edit_title . "</span> $is_active</td>";
+                               
+                               print "</tr>";
+       
+                               ++$lnum;
+                       }
+
+                       print "</table>";
+                       print "</form>";
+                       print "</div>";
+
+                       print "<div class='dlgButtons'>
+                               <div style='float : left'>
+                               <button onclick=\"return removeSelectedPrefProfiles()\">".
+                               __('Remove')."</button>
+                               <button onclick=\"return activatePrefProfile()\">".
+                               __('Activate')."</button>
+                               </div>";
+
+                       print "<button onclick=\"return closeInfoBox()\">".
+                               __('Close this window')."</button>";
+
+                       print "</div>";
+                       print "]]></content>";
+
+                       //return;
+               }
+
+               if ($id == "pubOPMLUrl") {
+
+                       print "<title>".__('Public OPML URL')."</title>";
+                       print "<content><![CDATA[";
+
+                       $url_path = opml_publish_url($link);
+
+                       print __("Your Public OPML URL is:");
+
+                       print "<div class=\"tagCloudContainer\">";
+                       print "<a id='pub_opml_url' href='$url_path' target='_blank'>$url_path</a>";
+                       print "</div>";
+
+                       print "<div align='center'>";
+
+                       print "<button dojoType=\"dijit.form.Button\" onclick=\"return opmlRegenKey()\">".
+                               __('Generate new URL')."</button> ";
+
+                       print "<button dojoType=\"dijit.form.Button\" onclick=\"return closeInfoBox()\">".
+                               __('Close this window')."</button>";
+
+                       print "</div>";
+                       print "]]></content>";
+
+                       //return;
+               }
 
                if ($id == "explainError") {
 
-                       print "<div id=\"infoBoxTitle\">".__('Notice')."</div>";
-                       print "<div class=\"infoBoxContents\">";
+                       print "<title>".__('Notice')."</title>";
+                       print "<content><![CDATA[";
+
+                       print "<div class=\"errorExplained\">";
 
                        if ($param == 1) {
-                               print __("Update daemon is enabled in configuration, but daemon
-                                       process is not running, which prevents all feeds from updating. Please
-                                       start the daemon process or contact instance owner.");
+                               print __("Update daemon is enabled in configuration, but daemon process is not running, which prevents all feeds from updating. Please start the daemon process or contact instance owner.");
+
+                               $stamp = (int) file_get_contents(LOCK_DIRECTORY . "/update_daemon.stamp");
+
+                               print "<p>" . __("Last update:") . " " . date("Y.m.d, G:i", $stamp); 
+
                        }
 
                        if ($param == 2) {
-                               $msg = check_for_update($link, false);
+                               $msg = check_for_update($link);
 
                                if (!$msg) {
-                                       print __("You are running the latest version of Tiny Tiny RSS. The
-                                               fact that you are seeing this dialog is probably a bug.");
+                                       print __("You are running the latest version of Tiny Tiny RSS. The fact that you are seeing this dialog is probably a bug.");
                                } else {
                                        print $msg;
                                }
                        }
 
                        if ($param == 3) {
-                               print __("TT-RSS has detected that update daemon is taking too long to
-                                       perform a feed update. This could indicate a problem like crash
-                                       or a hang. Please check the daemon process or contact instance
-                                       owner.");
+                               print __("Update daemon is taking too long to perform a feed update. This could indicate a problem like crash or a hang. Please check the daemon process or contact instance owner.");
+
+                               $stamp = (int) file_get_contents(LOCK_DIRECTORY . "/update_daemon.stamp");
+
+                               print "<p>" . __("Last update:") . " " . date("Y.m.d, G:i", $stamp); 
+
                        }
 
                        print "</div>";
-
+                       
                        print "<div align='center'>";
 
-                       print "<input class=\"button\"
-                               type=\"submit\" onclick=\"return closeInfoBox()\" 
-                               value=\"".__('Close this window')."\">";
+                       print "<button onclick=\"return closeInfoBox()\"".
+                               __('Close this window')."</button>";
 
                        print "</div>";
+                       print "]]></content>";
 
-                       return;
+                       //return;
                }
 
                if ($id == "quickAddFeed") {
 
-                       print "<div id=\"infoBoxTitle\">".__('Subscribe to feed')."</div>";
-                       print "<div class=\"infoBoxContents\">";
+                       print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"rpc\">";
+                       print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"subop\" value=\"addfeed\">"; 
 
-                       print "<form id='feed_add_form' onsubmit='return false'>";
+                       print "<div class=\"dlgSec\">".__("Feed")."</div>";
+                       print "<div class=\"dlgSecCont\">";
 
-                       print "<input type=\"hidden\" name=\"op\" value=\"pref-feeds\">";
-                       /* print "<input type=\"hidden\" name=\"quiet\" value=\"1\">"; */
-                       print "<input type=\"hidden\" name=\"subop\" value=\"add\">"; 
-                       print "<input type=\"hidden\" name=\"from\" value=\"tt-rss\">"; 
+                       print "<input style=\"font-size : 16px; width : 20em;\"
+                               placeHolder=\"".__("Feed URL")."\"
+                               dojoType=\"dijit.form.ValidationTextBox\" required=\"1\" name=\"feed\" id=\"feedDlg_feedUrl\">";
+
+                       print "<br/>";
 
-                       print "<table width='100%'>
-                       <tr><td>Feed URL:</td><td>
-                               <input class=\"iedit\" onblur=\"javascript:enableHotkeys()\" 
-                                       onkeypress=\"return filterCR(event, qaddFeed)\"
-                                       onkeyup=\"toggleSubmitNotEmpty(this, 'fadd_submit_btn')\"
-                                       onchange=\"toggleSubmitNotEmpty(this, 'fadd_submit_btn')\"
-                                       onfocus=\"javascript:disableHotkeys()\" name=\"feed_url\"></td></tr>";
-               
                        if (get_pref($link, 'ENABLE_FEED_CATS')) {
-                               print "<tr><td>".__('Category:')."</td><td>";
-                               print_feed_cat_select($link, "cat_id");                 
-                               print "</td></tr>";
+                               print __('Place in category:') . " ";
+                               print_feed_cat_select($link, "cat", false, 'dojoType="dijit.form.Select"');                     
                        }
 
-/*                     print "<tr><td colspan='2'><div class='insensitive'>";
+                       print "</div>";
 
-                       print __("Some feeds require authentication. If you subscribe to such
-                               feed, you will have to enter your login and password in Feed Editor");
+                       print '<div id="feedDlg_feedsContainer" style="display : none">
 
-                       print "</div></td></tr>"; */
+                                       <div class="dlgSec">' . __('Available feeds') . '</div>
+                                       <div class="dlgSecCont">'.
+                                       '<select id="feedDlg_feedContainerSelect"
+                                               dojoType="dijit.form.Select" size="3">
+                                               <script type="dojo/method" event="onChange" args="value">
+                                                       dijit.byId("feedDlg_feedUrl").attr("value", value);
+                                               </script>
+                                       </select>'.
+                                       '</div></div>';
 
-                       print "</table>";
+                       print "<div id='feedDlg_loginContainer' style='display : none'>
+       
+                                       <div class=\"dlgSec\">".__("Authentication")."</div>
+                                       <div class=\"dlgSecCont\">".
 
-                       print "<div id='fadd_login_prompt'><br/>
-                               <a href='javascript:showBlockElement(\"fadd_login_container\", 
-                                       \"fadd_login_prompt\")'>Click here if this feed requires authentication.</a></div>";
+                                       " <input dojoType=\"dijit.form.TextBox\" name='login'\" 
+                                               placeHolder=\"".__("Login")."\"
+                                               style=\"width : 10em;\"> ".
+                                       " <input 
+                                               placeHolder=\"".__("Password")."\"
+                                               dojoType=\"dijit.form.TextBox\" type='password' 
+                                               style=\"width : 10em;\" name='pass'\">
+                               </div></div>";
 
-                       print "<div id='fadd_login_container'>
-                               <table width='100%'>
-                                       <tr><td>Login:</td><td><input name='auth_login' class='iedit'></td></tr>
-                                       <tr><td>Password:</td><td><input type='password'
-                                               name='auth_pass' class='iedit'></td></tr>
-                               </table>
-                               </div>";
+
+                       print "<div style=\"clear : both\">             
+                               <input type=\"checkbox\" dojoType=\"dijit.form.CheckBox\" id=\"feedDlg_loginCheck\" 
+                                               onclick='checkboxToggleElement(this, \"feedDlg_loginContainer\")'>
+                                       <label for=\"feedDlg_loginCheck\">".
+                                       __('This feed requires authentication.')."</div>";
 
                        print "</form>";
 
-                       print "<div align='right'>
-                               <input class=\"button\"
-                                       id=\"fadd_submit_btn\" disabled=\"true\"
-                                       type=\"submit\" onclick=\"return qaddFeed()\" value=\"".__('Subscribe')."\">
-                               <input class=\"button\"
-                                       type=\"submit\" onclick=\"return closeInfoBox()\" 
-                                       value=\"".__('Cancel')."\"></div>";
+                       print "<div class=\"dlgButtons\">
+                               <button dojoType=\"dijit.form.Button\" onclick=\"return dijit.byId('feedAddDlg').execute()\">".__('Subscribe')."</button>
+                               <button dojoType=\"dijit.form.Button\" onclick=\"return feedBrowser()\">".__('More feeds')."</button>
+                               <button dojoType=\"dijit.form.Button\" onclick=\"return dijit.byId('feedAddDlg').hide()\">".__('Cancel')."</button>
+                               </div>";
+
+                       //return;
+               }
+
+               if ($id == "feedBrowser") {
+
+                       $browser_search = db_escape_string($_REQUEST["search"]);
+                       
+#                      print "<form onsubmit='return false;' display='inline' 
+#                              name='feed_browser' id='feed_browser'>";
+
+                       print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"rpc\">";
+                       print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"subop\" value=\"updateFeedBrowser\">"; 
+
+                       print "<div dojoType=\"dijit.Toolbar\">
+                               <div style='float : right'>
+                               <img style='display : none' 
+                                       id='feed_browser_spinner' src='".
+                                       theme_image($link, 'images/indicator_white.gif')."'>
+                               <input name=\"search\" dojoType=\"dijit.form.TextBox\" size=\"20\" type=\"search\"
+                                       onchange=\"dijit.byId('feedBrowserDlg').update()\" value=\"$browser_search\">
+                               <button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('feedBrowserDlg').update()\">".__('Search')."</button>
+                       </div>";
+
+                       print " <select name=\"mode\" dojoType=\"dijit.form.Select\" onchange=\"dijit.byId('feedBrowserDlg').update()\">
+                               <option value='1'>" . __('Popular feeds') . "</option>
+                               <option value='2'>" . __('Feed archive') . "</option>
+                               </select> ";
+
+                       print __("limit:");
+
+                       print " <select dojoType=\"dijit.form.Select\" name=\"limit\" onchange=\"dijit.byId('feedBrowserDlg').update()\">";
+
+                       foreach (array(25, 50, 100, 200) as $l) {
+                               $issel = ($l == $limit) ? "selected=\"1\"" : "";
+                               print "<option $issel value=\"$l\">$l</option>";
+                       }
+                       
+                       print "</select> ";
+
+                       print "</div>";
+
+                       $owner_uid = $_SESSION["uid"];
+
+                       print "<ul class='browseFeedList' id='browseFeedList'>";
+                       print_feed_browser($link, $search, 25);
+                       print "</ul>";
+
+                       print "<div align='center'>
+                               <button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('feedBrowserDlg').execute()\">".__('Subscribe')."</button>
+                               <button dojoType=\"dijit.form.Button\" style='display : none' id='feed_archive_remove' onclick=\"dijit.byId('feedBrowserDlg').removeFromArchive()\">".__('Remove')."</button>
+                               <button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('feedBrowserDlg').hide()\" >".__('Cancel')."</button></div>";
 
-                       return;
                }
 
                if ($id == "search") {
 
-                       print "<div id=\"infoBoxTitle\">".__('Search')."</div>";
-                       print "<div class=\"infoBoxContents\">";
+                       print "<title>".__('Search')."</title>";
+                       print "<content><![CDATA[";
 
                        print "<form id='search_form'  onsubmit='return false'>";
 
-                       #$active_feed_id = db_escape_string($_GET["param"]);
+                       #$active_feed_id = db_escape_string($_REQUEST["param"]);
 
-                       $params = split(":", db_escape_string($_GET["param"]));
+                       $params = explode(":", db_escape_string($_REQUEST["param"]), 2);
 
                        $active_feed_id = sprintf("%d", $params[0]);
-                       $is_cat = $params[1] == "true";
+                       $is_cat = (bool) $params[1];
 
-                       print "<table width='100%'><tr><td>".__('Search:')."</td><td>";
-                       
-                       print "<input name=\"query\" class=\"iedit\" 
-                               onkeypress=\"return filterCR(event, search)\"
-                               onchange=\"toggleSubmitNotEmpty(this, 'search_submit_btn')\"
-                               onkeyup=\"toggleSubmitNotEmpty(this, 'search_submit_btn')\"
-                               value=\"\">
-                       </td></tr>";
-                       
-                       print "<tr><td>".__('Where:')."</td><td>";
+                       print "<div class=\"dlgSec\">".__('Look for')."</div>";
+
+                       print "<div class=\"dlgSecCont\">";
+
+                       if (!SPHINX_ENABLE) {
+
+                               print "<input onkeypress=\"return filterCR(event, search)\"
+                                       name=\"query\" size=\"20\" type=\"search\"      value=''>";
+
+                               print " " . __('match on')." ";
+
+                               $search_fields = array(
+                                       "title" => __("Title"),
+                                               "content" => __("Content"),
+                                       "both" => __("Title or content"));
+       
+                               print_select_hash("match_on", 3, $search_fields); 
+                       } else {
+                               print "<input onkeypress=\"return filterCR(event, search)\"
+                                       name=\"query\" size=\"50\" type=\"search\"      value=''>";
+                       }
+
+
+                       print "<br/>".__('Limit search to:')." ";
                        
                        print "<select name=\"search_mode\">
                                <option value=\"all_feeds\">".__('All feeds')."</option>";
                                //print "<option disabled>".__('This category')."</option>";
                        }
 
-                       print "</select></td></tr>"; 
-
-                       print "<tr><td>".__('Match on:')."</td><td>";
-
-                       $search_fields = array(
-                               "title" => __("Title"),
-                               "content" => __("Content"),
-                               "both" => __("Title or content"));
-
-                       print_select_hash("match_on", 3, $search_fields); 
-                               
-                       print "</td></tr></table>";
-
-                       print "</form>";
-
-                       print "<div align=\"right\">
-                       <input type=\"submit\" 
-                               class=\"button\" onclick=\"javascript:search()\" 
-                               id=\"search_submit_btn\" disabled=\"true\"
-                               value=\"".__('Search')."\">
-                       <input class=\"button\"
-                               type=\"submit\" onclick=\"javascript:searchCancel()\" 
-                               value=\"".__('Cancel')."\"></div>";
+                       print "</select>"; 
 
                        print "</div>";
 
-                       return;
-
-               }
-
-               if ($id == "quickAddLabel") {
-                       print "<div id=\"infoBoxTitle\">".__('Create label')."</div>";
-                       print "<div class=\"infoBoxContents\">";
-
-                       print "<form id=\"label_edit_form\" onsubmit='return false'>";
-
-                       print "<input type=\"hidden\" name=\"op\" value=\"pref-labels\">";
-                       print "<input type=\"hidden\" name=\"subop\" value=\"add\">"; 
-
-                       print "<table width='100%'>";
-
-                       print "<tr><td>".__('Caption:')."</td>
-                               <td><input onkeypress=\"return filterCR(event, addLabel)\"
-                                       onkeyup=\"toggleSubmitNotEmpty(this, 'infobox_submit')\"
-                                       onchange=\"toggleSubmitNotEmpty(this, 'infobox_submit')\"
-                                       name=\"description\" class=\"iedit\">";
-
-                       print "</td></tr>";
-
-                       print "<tr><td colspan=\"2\">
-                               <p>".__('SQL Expression:')."</p>";
-
-                       print "<textarea onkeyup=\"toggleSubmitNotEmpty(this, 'infobox_submit')\"
-                                        rows=\"4\" name=\"sql_exp\" class=\"iedit\"></textarea>";
-
-                       print "</td></tr></table>";
-
                        print "</form>";
 
-                       print "<div style=\"display : none\" id=\"label_test_result\"></div>";
+                       print "<div class=\"dlgButtons\">
+                       <button onclick=\"javascript:search()\">".__('Search')."</button>
+                       <button onclick=\"javascript:closeInfoBox(true)\">".__('Cancel')."</button>
+                       </div>";
 
-                       print "<div align='right'>";
-
-                       print "<input type=\"submit\" onclick=\"labelTest()\" value=\"".__('Test')."\">
-                               ";
+                       print "]]></content>";
 
-                       print "<input type=\"submit\" 
-                               id=\"infobox_submit\"
-                               disabled=\"true\"
-                               class=\"button\" onclick=\"return addLabel()\" 
-                               value=\"".__('Create')."\"> ";
+                       //return;
 
-                       print "<input class=\"button\"
-                               type=\"submit\" onclick=\"return labelEditCancel()\" 
-                               value=\"".__('Cancel')."\">";
-
-                       return;
                }
 
                if ($id == "quickAddFilter") {
 
-                       $active_feed_id = db_escape_string($_GET["param"]);
-
-                       print "<div id=\"infoBoxTitle\">".__('Create filter')."</div>";
-                       print "<div class=\"infoBoxContents\">";
+                       $active_feed_id = db_escape_string($_REQUEST["param"]);
 
-                       print "<form id=\"filter_add_form\" onsubmit='return false'>";
-
-                       print "<input type=\"hidden\" name=\"op\" value=\"pref-filters\">";
-                       print "<input type=\"hidden\" name=\"quiet\" value=\"1\">";
-                       print "<input type=\"hidden\" name=\"subop\" value=\"add\">"; 
-
-//                     print "<div class=\"notice\"><b>Note:</b> filter will only apply to new articles.</div>";
+                       print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"pref-filters\">";
+                       print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"quiet\" value=\"1\">";
+                       print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"subop\" value=\"add\">"; 
                
                        $result = db_query($link, "SELECT id,description 
                                FROM ttrss_filter_types ORDER BY description");
        
                        while ($line = db_fetch_assoc($result)) {
                                //array_push($filter_types, $line["description"]);
-                               $filter_types[$line["id"]] = $line["description"];
+                               $filter_types[$line["id"]] = __($line["description"]);
                        }
 
-                       print "<table width='100%'>";
+                       print "<div class=\"dlgSec\">".__("Match")."</div>";
 
-                       print "<tr><td>".__('Match:')."</td>
-                               <td><input onkeypress=\"return filterCR(event, qaddFilter)\"
-                                       onkeyup=\"toggleSubmitNotEmpty(this, 'infobox_submit')\"
-                                       onchange=\"toggleSubmitNotEmpty(this, 'infobox_submit')\"
-                                        name=\"reg_exp\" class=\"iedit\">";            
+                       print "<div class=\"dlgSecCont\">";
 
-                       print "</td></tr><tr><td>".__('On field:')."</td><td>";
+                       print "<span id=\"filterDlg_dateModBox\" style=\"display : none\">";
 
-                       print_select_hash("filter_type", 1, $filter_types, "class=\"_iedit\""); 
-       
-                       print "</td></tr>";
-                       print "<tr><td>".__('Feed:')."</td><td colspan='2'>";
+                       $filter_params = array(
+                               "before" => __("before"),
+                               "after" => __("after"));
 
-                       print_feed_select($link, "feed_id", $active_feed_id);
-                       
-                       print "</td></tr>";
-       
-                       print "<tr><td>".__('Action:')."</td>";
-       
-                       print "<td colspan='2'><select name=\"action_id\" 
+                       print_select_hash("filter_date_modifier", "before", 
+                               $filter_params, 'dojoType="dijit.form.Select"');
+
+                       print "&nbsp;</span>";
+
+                       print "<input dojoType=\"dijit.form.ValidationTextBox\" 
+                                required=\"true\" id=\"filterDlg_regExp\"
+                                style=\"font-size : 16px\"
+                                name=\"reg_exp\" value=\"$reg_exp\"/>";
+
+                       print "<span id=\"filterDlg_dateChkBox\" style=\"display : none\">";
+                       print "&nbsp;<button onclick=\"return filterDlgCheckDate()\">".
+                               __('Check it')."</button>";
+                       print "</span>";
+
+                       print "<br/>" .  __("on field") . " ";
+                       print_select_hash("filter_type", 1, $filter_types,
+                               'onchange="filterDlgCheckType(this)" dojoType="dijit.form.Select"');
+
+                       print "<br/>";
+
+                       print __("in") . " ";
+                       print_feed_select($link, "feed_id", $active_feed_id, 
+                               'dojoType="dijit.form.FilteringSelect"');
+
+                       print "</div>";
+
+                       print "<div class=\"dlgSec\">".__("Perform Action")."</div>";
+
+                       print "<div class=\"dlgSecCont\">";
+
+                       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)) {
-                               printf("<option value='%d'>%s</option>", $line["id"], $line["description"]);
+                               printf("<option value='%d'>%s</option>", $line["id"], __($line["description"]));
                        }
        
                        print "</select>";
 
-                       print "</td></tr>";
+                       print "<span id=\"filterDlg_paramBox\" style=\"display : none\">";
+                       print " " . __("with parameters:") . " ";
+                       print "<input dojoType=\"dijit.form.TextBox\"
+                               id=\"filterDlg_actionParam\"
+                               name=\"action_param\">";
 
-                       print "<tr><td>".__('Params:')."</td>";
+                       print_label_select($link, "action_param_label", $action_param, 
+                        'id="filterDlg_actionParamLabel" dojoType="dijit.form.Select"');
 
-                       print "<td><input disabled class='iedit' name='action_param'></td></tr>";
+                       print "</span>";
 
-                       print "<tr><td valign='top'>".__('Options:')."</td><td>";
+                       print "&nbsp;"; // tiny layout hack
 
-                       print "<input type=\"checkbox\" name=\"inverse\" id=\"inverse\">
-                               <label for=\"inverse\">".__('Inverse match')."</label></td></tr>";
+                       print "</div>";
 
-                       print "</table>";
+                       print "<div class=\"dlgSec\">".__("Options")."</div>";
+                       print "<div class=\"dlgSecCont\">";
 
-                       print "</form>";
+                       print "<input dojoType=\"dijit.form.CheckBox\" type=\"checkbox\" name=\"enabled\" id=\"enabled\" checked=\"1\">
+                                       <label for=\"enabled\">".__('Enabled')."</label><br/>";
 
-                       print "<div align='right'>";
+                       print "<input dojoType=\"dijit.form.CheckBox\" type=\"checkbox\" name=\"inverse\" id=\"inverse\">
+                               <label for=\"inverse\">".__('Inverse match')."</label>";
 
-                       print "<input type=\"submit\" 
-                               id=\"infobox_submit\"
-                               class=\"button\" onclick=\"return addFilter()\" 
-                               disabled=\"true\" value=\"".__('Create')."\"> ";
+                       print "</div>";
 
-                       print "<input class=\"button\"
-                               type=\"submit\" onclick=\"return closeInfoBox()\" 
-                               value=\"".__('Cancel')."\">";
+                       print "<div class=\"dlgButtons\">";
 
-                       print "</div>";
+                       print "<button onclick=\"return dijit.byId('filterEditDlg').execute()\">".
+                               __('Create')."</button> ";
+
+                       print "<button onclick=\"return dijit.byId('filterEditDlg').hide()\">".
+                               __('Cancel')."</button>";
 
-//                     print "</td></tr></table>"; 
+                       print "</div>";
 
-                       return;
+                       //return;
                }
 
                if ($id == "feedUpdateErrors") {
 
-                       print "<div id=\"infoBoxTitle\">".__('Update Errors')."</div>";
-                       print "<div class=\"infoBoxContents\">";
+                       print "<title>".__('Update Errors')."</title>";
+                       print "<content><![CDATA[";
 
                        print __("These feeds have not been updated because of errors:");
 
                        }
 
                        print "</ul>";
-                       print "</div>";
 
                        print "<div align='center'>";
 
-                       print "<input class=\"button\"
-                               type=\"submit\" onclick=\"return closeInfoBox()\" 
-                               value=\"".__('Close')."\">";
+                       print "<button onclick=\"return closeInfoBox()\">".
+                               __('Close this window')."</button>";
 
-                       print "</div>";
+                       print "]]></content>";
 
-                       return;
+                       //return;
                }
 
                if ($id == "editArticleTags") {
 
-                       print "<div id=\"infoBoxTitle\">".__('Edit Tags')."</div>";
-                       print "<div class=\"infoBoxContents\">";
+                       print "<title>".__('Edit Tags')."</title>";
+                       print "<content><![CDATA[";
 
                        print "<form id=\"tag_edit_form\" onsubmit='return false'>";
 
                                        style=\"display:none\"></div>   
                        </td></tr>";
 
-/*                     print "<tr><td>".__('Add existing tag:')."</td>";
+                       print "</table>";
+
+                       print "</form>";
+
+                       print "<div align='right'>";
+
+                       print "<button onclick=\"return editTagsSave()\">".__('Save')."</button> ";
+                       print "<button onclick=\"return closeInfoBox()\">".__('Cancel')."</button>";
+
+                       print "]]></content>";
+
+                       //return;
+               }
+
+               if ($id == "printTagCloud") {
+                       print "<title>".__('Tag Cloud')."</title>";
+                       print "<content><![CDATA[";
+
+#                      print __("Showing most popular tags ")." (<a 
+#                      href='javascript:toggleTags(true)'>".__('more tags')."</a>):<br/>"; 
+
+                       print "<div class=\"tagCloudContainer\">";
+
+                       printTagCloud($link);
+
+                       print "</div>";
+
+                       print "<div align='center'>";
+                       print "<button onclick=\"return closeInfoBox()\">".
+                               __('Close this window')."</button>";
+                       print "</div>";
+
+                       print "]]></content>";
+
+                       //return;
+               }
+
+               if ($id == "emailArticle") {
+
+                       $secretkey = sha1(uniqid(rand(), true));
+
+                       $_SESSION['email_secretkey'] = $secretkey;
+
+                       print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"secretkey\" value=\"$secretkey\">";
+                       print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"rpc\">";
+                       print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"subop\" value=\"sendEmail\">"; 
+
+                       $result = db_query($link, "SELECT email, full_name FROM ttrss_users WHERE
+                               id = " . $_SESSION["uid"]);
+
+                       $user_email = htmlspecialchars(db_fetch_result($result, 0, "email"));
+                       $user_name = htmlspecialchars(db_fetch_result($result, 0, "full_name"));
+
+                       if (!$user_name) $user_name = $_SESSION['name'];
+
+                       $_SESSION['email_replyto'] = $user_email;
+                       $_SESSION['email_fromname'] = $user_name;
+
+                       require_once "lib/MiniTemplator.class.php";
 
-                       $result = db_query($link, "SELECT DISTINCT tag_name FROM ttrss_tags 
-                               WHERE owner_uid = '".$_SESSION["uid"]."' ORDER BY tag_name");
+                       $tpl = new MiniTemplator;
+                       $tpl_t = new MiniTemplator;
 
-                       $found_tags = array();
+                       $tpl->readTemplateFromFile("templates/email_article_template.txt");
 
-                       array_push($found_tags, '');
+                       $tpl->setVariable('USER_NAME', $_SESSION["name"]);
+                       $tpl->setVariable('USER_EMAIL', $user_email);
+                       $tpl->setVariable('TTRSS_HOST', $_SERVER["HTTP_HOST"]);
+
+//                     $tpl->addBlock('header');
+
+                       $result = db_query($link, "SELECT link, content, title
+                               FROM ttrss_user_entries, ttrss_entries WHERE id = ref_id AND
+                               id IN ($param) AND owner_uid = " . $_SESSION["uid"]);
+
+                       if (db_num_rows($result) > 1) {
+                               $subject = __("[Forwarded]") . " " . __("Multiple articles");
+                       }
 
                        while ($line = db_fetch_assoc($result)) {
-                               array_push($found_tags, truncate_string($line["tag_name"], 20));
+
+                               if (!$subject)
+                                       $subject = __("[Forwarded]") . " " . htmlspecialchars($line["title"]);
+
+                               $tpl->setVariable('ARTICLE_TITLE', strip_tags($line["title"]));
+                               $tpl->setVariable('ARTICLE_URL', strip_tags($line["link"]));
+
+                               $tpl->addBlock('article');
                        }
 
-                       print "<td align='right'>";
+                       $tpl->addBlock('email');
 
-                       print_select("found_tags", '', $found_tags, "onchange=\"javascript:editTagsInsert()\"");
+                       $content = "";
+                       $tpl->generateOutputToString($content);
 
-                       print "</td>"; 
+                       print "<table width='100%'><tr><td>";
 
-                       print "</tr>"; */
+                       print __('From:');
 
-                       print "</table>";
+                       print "</td><td>";
 
-                       print "</form>";
+                       print "<input dojoType=\"dijit.form.TextBox\" disabled=\"1\" style=\"width : 30em;\"
+                                       value=\"$user_name <$user_email>\">";
 
-                       print "<div align='right'>";
+                       print "</td></tr><tr><td>";
+
+                       print __('To:');
+
+                       print "</td><td>";
+
+                       print "<input dojoType=\"dijit.form.ValidationTextBox\" required=\"true\"
+                                       style=\"width : 30em;\"
+                                       name=\"destination\" id=\"emailArticleDlg_destination\">";
+
+                       print "<div class=\"autocomplete\" id=\"emailArticleDlg_dst_choices\" 
+                                       style=\"z-index: 30; display : none\"></div>";  
+
+                       print "</td></tr><tr><td>";
 
-                       print "<input class=\"button\"
-                               type=\"submit\" onclick=\"return editTagsSave()\" 
-                               value=\"".__('Save')."\"> ";
+                       print __('Subject:');
 
-                       print "<input class=\"button\"
-                               type=\"submit\" onclick=\"return closeInfoBox()\" 
-                               value=\"".__('Cancel')."\">";
+                       print "</td><td>";
 
+                       print "<input dojoType=\"dijit.form.ValidationTextBox\" required=\"true\"
+                                       style=\"width : 30em;\" 
+                                       name=\"subject\" value=\"$subject\" id=\"subject\">";
 
+                       print "</td></tr>";
+
+                       print "<tr><td colspan='2'><textarea dojoType=\"dijit.form.SimpleTextarea\" style='font-size : 12px; width : 100%' rows=\"20\"
+                               name='content'>$content</textarea>";
+
+                       print "</td></tr></table>";
+
+                       print "<div class='dlgButtons'>";
+                       print "<button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('emailArticleDlg').execute()\">".__('Send e-mail')."</button> ";
+                       print "<button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('emailArticleDlg').hide()\">".__('Cancel')."</button>";
                        print "</div>";
 
-                       return;
+                       //return;
                }
 
-               if ($id == "printTagCloud") {
-                       print "<div id=\"infoBoxTitle\">".__('Tag cloud')."</div>";
-                       print "<div class=\"infoBoxContents\">";
+               if ($id == "generatedFeed") {
 
-                       print __("Showing most popular tags ")." (<a 
-                       href='javascript:toggleTags(true)'>".__('browse more')."</a>):<br/>"; 
+                       print "<title>".__('View as RSS')."</title>";
+                       print "<content><![CDATA[";
+       
+                       $params = explode(":", $param, 3);
+                       $feed_id = db_escape_string($params[0]);
+                       $is_cat = (bool) $params[1];
 
-                       print "<div class=\"tagCloudContainer\">";
+                       $key = get_feed_access_key($link, $feed_id, $is_cat);
 
-                       printTagCloud($link);
+                       $url_path = htmlspecialchars($params[2]) . "&key=" . $key;
+
+                       print __("You can view this feed as RSS using the following URL:");
 
+                       print "<div class=\"tagCloudContainer\">";
+                       print "<a id='gen_feed_url' href='$url_path' target='_blank'>$url_path</a>";
                        print "</div>";
 
                        print "<div align='center'>";
-                       print "<input class=\"button\"
-                               type=\"submit\" onclick=\"return closeInfoBox()\" 
-                               value=\"".__('Close')."\">";
-                       print "</div>";
+
+                       print "<button dojoType=\"dijit.form.Button\" onclick=\"return genUrlChangeKey('$feed_id', '$is_cat')\">".
+                               __('Generate new URL')."</button> ";
+
+                       print "<button dojoType=\"dijit.form.Button\" onclick=\"return closeInfoBox()\">".
+                               __('Close this window')."</button>";
 
                        print "</div>";
+                       print "]]></content>";
 
-                       return;
+                       //return;
                }
 
-               print "<div id='infoBoxTitle'>Internal Error</div>
-                       <div id='infoBoxContents'>
-                       <p>Unknown dialog <b>$id</b></p>
-                       </div></div>";
-       
+               print "</dlg>"; 
        }
 ?>