diff options
-rw-r--r-- | FeedTree.js | 2 | ||||
-rw-r--r-- | functions.js | 48 | ||||
-rw-r--r-- | functions.php | 2 | ||||
-rw-r--r-- | modules/pref-feeds.php | 87 | ||||
-rw-r--r-- | prefs.js | 64 | ||||
-rw-r--r-- | tt-rss.js | 76 |
6 files changed, 88 insertions, 191 deletions
diff --git a/FeedTree.js b/FeedTree.js index 18112f6b7..93ccf0025 100644 --- a/FeedTree.js +++ b/FeedTree.js @@ -107,7 +107,7 @@ dojo.declare("fox.FeedTree", dijit.Tree, { menu.addChild(new dijit.MenuItem({ label: __("Edit feed"), onClick: function() { - editFeedDlg(this.getParent().row_id); + editFeed(this.getParent().row_id); }})); menu.addChild(new dijit.MenuItem({ diff --git a/functions.js b/functions.js index 946e29a9a..5e3156126 100644 --- a/functions.js +++ b/functions.js @@ -1330,7 +1330,7 @@ function has_local_storage() { function catSelectOnChange(elem) { try { - var value = elem[elem.selectedIndex].value; +/* var value = elem[elem.selectedIndex].value; var def = elem.getAttribute('default'); if (value == "ADD_CAT") { @@ -1341,7 +1341,7 @@ function catSelectOnChange(elem) { elem.selectedIndex = 0; quickAddCat(elem); - } + } */ } catch (e) { exception_error("catSelectOnChange", e); @@ -1563,3 +1563,47 @@ function getSelectedTableRowIds(id) { return rows; } +function editFeed(feed, event) { + + try { + var query = "backend.php?op=pref-feeds&subop=editfeed&id=" + + param_escape(feed); + + console.log(query); + + if (dijit.byId("feedEditDlg")) + dijit.byId("feedEditDlg").destroyRecursive(); + + dialog = new dijit.Dialog({ + id: "feedEditDlg", + title: __("Edit Feed"), + style: "width: 600px", + execute: function() { + if (this.validate()) { + console.log(dojo.objectToQuery(this.attr('value'))); + + notify_progress("Saving data...", true); + + new Ajax.Request("backend.php", { + parameters: dojo.objectToQuery(dialog.attr('value')), + onComplete: function(transport) { + dialog.hide(); + if (inPreferences()) { + updateFeedList(); + } else { + notify(''); + dlg_frefresh_callback(transport); + } + }}) + } + }, + href: query}); + + dialog.show(); + + } catch (e) { + exception_error("editFeed", e); + } +} + + diff --git a/functions.php b/functions.php index 2dcf5d3fc..3f18392a8 100644 --- a/functions.php +++ b/functions.php @@ -2998,7 +2998,7 @@ $line["id"], htmlspecialchars($line["title"])); } - print "<option value=\"ADD_CAT\">" .__("Add category...") . "</option>"; +# print "<option value=\"ADD_CAT\">" .__("Add category...") . "</option>"; print "</select>"; } diff --git a/modules/pref-feeds.php b/modules/pref-feeds.php index 0596fc076..698aa1525 100644 --- a/modules/pref-feeds.php +++ b/modules/pref-feeds.php @@ -245,11 +245,6 @@ } if ($subop == "editfeed") { - header("Content-Type: text/xml"); - - print "<dlg id=\"$subop\">"; - print "<title>".__('Feed Editor')."</title>"; - print "<content><![CDATA["; $feed_id = db_escape_string($_REQUEST["id"]); @@ -260,28 +255,17 @@ $title = htmlspecialchars(db_fetch_result($result, 0, "title")); - $icon_file = ICONS_DIR . "/$feed_id.ico"; - - if (file_exists($icon_file) && filesize($icon_file) > 0) { - $feed_icon = "<img width=\"16\" height=\"16\" - src=\"" . ICONS_URL . "/$feed_id.ico\">"; - } else { - $feed_icon = ""; - } - - print "<form id=\"edit_feed_form\" onsubmit=\"return false\">"; - - print "<input type=\"hidden\" name=\"id\" value=\"$feed_id\">"; - print "<input type=\"hidden\" name=\"op\" value=\"pref-feeds\">"; - print "<input type=\"hidden\" name=\"subop\" value=\"editSave\">"; + print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"id\" value=\"$feed_id\">"; + print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"pref-feeds\">"; + print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"subop\" value=\"editSave\">"; print "<div class=\"dlgSec\">".__("Feed")."</div>"; print "<div class=\"dlgSecCont\">"; /* Title */ - print "<input style=\"font-size : 16px\" size=\"40\" onkeypress=\"return filterCR(event, feedEditSave)\" - name=\"title\" value=\"$title\">"; + print "<input dojoType=\"dijit.form.ValidationTextBox\" required=\"1\" + style=\"font-size : 16px; width: 20em\" name=\"title\" value=\"$title\">"; /* Feed URL */ @@ -292,7 +276,8 @@ print "<br/>"; print __('URL:') . " "; - print "<input size=\"40\" onkeypress=\"return filterCR(event, feedEditSave)\" + print "<input dojoType=\"dijit.form.ValidationTextBox\" required=\"1\" + regExp='^(http|https)://.*' style=\"width : 20em\" name=\"feed_url\" value=\"$feed_url\">"; /* Category */ @@ -305,7 +290,8 @@ print __('Place in category:') . " "; - print_feed_cat_select($link, "cat_id", $cat_id, $disabled); + print_feed_cat_select($link, "cat_id", $cat_id, + 'dojoType="dijit.form.Select"'); } print "</div>"; @@ -317,14 +303,17 @@ $update_interval = db_fetch_result($result, 0, "update_interval"); - print_select_hash("update_interval", $update_interval, $update_intervals); + print_select_hash("update_interval", $update_interval, $update_intervals, + 'dojoType="dijit.form.Select"'); /* Update method */ - $update_method = db_fetch_result($result, 0, "update_method"); + $update_method = db_fetch_result($result, 0, "update_method", + 'dojoType="dijit.form.Select"'); print " " . __('using') . " "; - print_select_hash("update_method", $update_method, $update_methods); + print_select_hash("update_method", $update_method, $update_methods, + 'dojoType="dijit.form.Select"'); $purge_interval = db_fetch_result($result, 0, "purge_interval"); @@ -336,7 +325,8 @@ print __('Article purging:') . " "; - print_select_hash("purge_interval", $purge_interval, $purge_intervals); + print_select_hash("purge_interval", $purge_interval, $purge_intervals, + 'dojoType="dijit.form.Select"'); } else { print "<input type='hidden' name='purge_interval' value='$purge_interval'>"; @@ -353,15 +343,14 @@ print "<tr><td>" . __('Login:') . "</td><td>"; - print "<input size=\"20\" onkeypress=\"return filterCR(event, feedEditSave)\" + print "<input dojoType=\"dijit.form.TextBox\" name=\"auth_login\" value=\"$auth_login\">"; print "</tr><tr><td>" . __("Password:") . "</td><td>"; $auth_pass = htmlspecialchars(db_fetch_result($result, 0, "auth_pass")); - print "<input size=\"20\" type=\"password\" name=\"auth_pass\" - onkeypress=\"return filterCR(event, feedEditSave)\" + print "<input dojoType=\"dijit.form.TextBox\" type=\"password\" name=\"auth_pass\" value=\"$auth_pass\">"; print "</td></tr></table>"; @@ -370,39 +359,39 @@ print "<div class=\"dlgSec\">".__("Options")."</div>"; print "<div class=\"dlgSecCont\">"; - print "<div style=\"line-height : 100%\">"; +# print "<div style=\"line-height : 100%\">"; $private = sql_bool_to_bool(db_fetch_result($result, 0, "private")); if ($private) { - $checked = "checked"; + $checked = "checked=\"1\""; } else { $checked = ""; } - print "<input type=\"checkbox\" name=\"private\" id=\"private\" + print "<input dojoType=\"dijit.form.CheckBox\" type=\"checkbox\" name=\"private\" id=\"private\" $checked> <label for=\"private\">".__('Hide from Popular feeds')."</label>"; $rtl_content = sql_bool_to_bool(db_fetch_result($result, 0, "rtl_content")); if ($rtl_content) { - $checked = "checked"; + $checked = "checked=\"1\""; } else { $checked = ""; } - print "<br/><input type=\"checkbox\" id=\"rtl_content\" name=\"rtl_content\" + print "<br/><input dojoType=\"dijit.form.CheckBox\" type=\"checkbox\" id=\"rtl_content\" name=\"rtl_content\" $checked> <label for=\"rtl_content\">".__('Right-to-left content')."</label>"; $include_in_digest = sql_bool_to_bool(db_fetch_result($result, 0, "include_in_digest")); if ($include_in_digest) { - $checked = "checked"; + $checked = "checked=\"1\""; } else { $checked = ""; } - print "<br/><input type=\"checkbox\" id=\"include_in_digest\" + print "<br/><input dojoType=\"dijit.form.CheckBox\" type=\"checkbox\" id=\"include_in_digest\" name=\"include_in_digest\" $checked> <label for=\"include_in_digest\">".__('Include in e-mail digest')."</label>"; @@ -415,7 +404,7 @@ $checked = ""; } - print "<br/><input type=\"checkbox\" id=\"always_display_enclosures\" + print "<br/><input dojoType=\"dijit.form.CheckBox\" type=\"checkbox\" id=\"always_display_enclosures\" name=\"always_display_enclosures\" $checked> <label for=\"always_display_enclosures\">".__('Always display image attachments')."</label>"; @@ -423,22 +412,20 @@ $cache_images = sql_bool_to_bool(db_fetch_result($result, 0, "cache_images")); if ($cache_images) { - $checked = "checked"; + $checked = "checked=\"1\""; } else { $checked = ""; } - print "<br/><input type=\"checkbox\" id=\"cache_images\" + print "<br/><input dojoType=\"dijit.form.CheckBox\" type=\"checkbox\" id=\"cache_images\" name=\"cache_images\" $checked> <label for=\"cache_images\">". __('Cache images locally (SimplePie only)')."</label>"; - print "</div>"; +# print "</div>"; print "</div>"; - print "</form>"; - /* Icon */ print "<br/>"; @@ -456,9 +443,9 @@ <input type=\"hidden\" name=\"op\" value=\"pref-feeds\"> <input type=\"hidden\" name=\"feed_id\" value=\"$feed_id\"> <input type=\"hidden\" name=\"subop\" value=\"uploadicon\"> - <button onclick=\"return uploadFeedIcon();\" + <button dojoType=\"dijit.form.Button\" onclick=\"return uploadFeedIcon();\" type=\"submit\">".__('Replace')."</button> - <button onclick=\"return removeFeedIcon($feed_id);\" + <button dojoType=\"dijit.form.Button\" onclick=\"return removeFeedIcon($feed_id);\" type=\"submit\">".__('Remove')."</button> </form>"; @@ -468,14 +455,12 @@ print "<div class='dlgButtons'> <div style=\"float : left\"> - <button onclick='return unsubscribeFeed($feed_id, \"$title\")'>". + <button dojoType=\"dijit.form.Button\" onclick='return unsubscribeFeed($feed_id, \"$title\")'>". __('Unsubscribe')."</button> </div> - <button onclick=\"return feedEditSave()\">".__('Save')."</button> - <button onclick=\"return feedEditCancel()\">".__('Cancel')."</button> - </div>"; - - print "]]></content></dlg>"; + <button dojoType=\"dijit.form.Button\" onclick=\"return dijit.byId('feedEditDlg').execute()\">".__('Save')."</button> + <button dojoType=\"dijit.form.Button\" onclick=\"return dijit.byId('feedEditDlg').hide()\">".__('Cancel')."</button> + </div>"; return; } @@ -347,39 +347,6 @@ function editFilter(id, event) { } } -function editFeed(feed, event) { - - try { - - if (event && !event.ctrlKey) { - - notify_progress("Loading, please wait..."); - -// selectTableRows('prefFeedList', 'none'); -// selectTableRowById('FEEDR-'+feed, 'FRCHK-'+feed, true); - - var query = "?op=pref-feeds&subop=editfeed&id=" + - param_escape(feed); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - infobox_callback2(transport); - document.forms["edit_feed_form"].title.focus(); - } }); - - } else if (event.ctrlKey) { -// var cb = $('FRCHK-' + feed); -// cb.checked = !cb.checked; -// toggleSelectRow(cb); - } - - - } catch (e) { - exception_error("editFeed", e); - } -} - function getSelectedLabels() { var tree = dijit.byId("labelTree"); var items = tree.model.getCheckedItems(); @@ -679,36 +646,6 @@ function removeSelectedFeedCats() { return false; } -function feedEditCancel() { - closeInfoBox(); - return false; -} - -function feedEditSave() { - - try { - - // FIXME: add parameter validation - - var query = Form.serialize("edit_feed_form"); - - notify_progress("Saving feed..."); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - feedlist_callback2(transport); - } }); - - closeInfoBox(); - - return false; - - } catch (e) { - exception_error("feedEditSave", e); - } -} - function userEditCancel() { closeInfoBox(); return false; @@ -1080,6 +1017,7 @@ function init() { dojo.require("dijit.form.Select"); dojo.require("dijit.form.FilteringSelect"); dojo.require("dijit.form.TextBox"); + dojo.require("dijit.form.CheckBox"); dojo.require("dijit.form.ValidationTextBox"); dojo.require("dijit.form.RadioButton"); dojo.require("dijit.form.Select"); @@ -279,6 +279,7 @@ function init() { dojo.require("dijit.form.TextBox"); dojo.require("dijit.form.ValidationTextBox"); dojo.require("dijit.form.FilteringSelect"); + dojo.require("dijit.form.CheckBox"); dojo.require("dijit.Toolbar"); dojo.require("dijit.ProgressBar"); dojo.require("dijit.Menu"); @@ -375,7 +376,7 @@ function quickMenuGo(opid) { } if (opid == "qmcEditFeed") { - editFeedDlg(getActiveFeedId()); + editFeed(getActiveFeedId()); } if (opid == "qmcRemoveFeed") { @@ -530,77 +531,6 @@ function catchupFeedInGroup(id) { } } -function editFeedDlg(feed) { - try { - - if (!feed) { - alert(__("Please select some feed first.")); - return; - } - - if ((feed <= 0) || activeFeedIsCat()) { - alert(__("You can't edit this kind of feed.")); - return; - } - - var query = ""; - - if (feed > 0) { - query = "?op=pref-feeds&subop=editfeed&id=" + param_escape(feed); - } else { - query = "?op=pref-labels&subop=edit&id=" + param_escape(-feed-11); - } - - disableHotkeys(); - - notify_progress("Loading, please wait...", true); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - infobox_callback2(transport); - document.forms["edit_feed_form"].title.focus(); - } }); - - } catch (e) { - exception_error("editFeedDlg", e); - } -} - -/* this functions duplicate those of prefs.js feed editor, with - some differences because there is no feedlist */ - -function feedEditCancel() { - closeInfoBox(); - return false; -} - -function feedEditSave() { - - try { - - // FIXME: add parameter validation - - var query = Form.serialize("edit_feed_form"); - - notify_progress("Saving feed..."); - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - dlg_frefresh_callback(transport); - } }); - - cache_flush(); - closeInfoBox(); - - return false; - - } catch (e) { - exception_error("feedEditSave (main)", e); - } -} - function collapse_feedlist() { try { @@ -913,7 +843,7 @@ function hotkey_handler(e) { } if (keycode == 69) { // e - editFeedDlg(getActiveFeedId()); + editFeed(getActiveFeedId()); return false; } |