X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;ds=inline;f=prefs.js;h=0e3dced9d7b86caa8cbb1a43532b9f7e30a3e2cc;hb=8ffd20110ee28ca87ff29da193fdb63ca2e0c2ea;hp=f83ff0d92623ec422241db632bb85bb3bb4e1953;hpb=8386f8614b1426869490adc9bfdb06344532eba3;p=tt-rss.git diff --git a/prefs.js b/prefs.js index f83ff0d9..0e3dced9 100644 --- a/prefs.js +++ b/prefs.js @@ -1,42 +1,28 @@ var init_params = new Array(); -var caller_subop = false; var hotkey_prefix = false; var hotkey_prefix_pressed = false; var seq = ""; function feedlist_callback2(transport) { - - try { - - dijit.byId('feedConfigTab').attr('content', transport.responseText); - + try { + dijit.byId('feedConfigTab').attr('content', transport.responseText); selectTab("feedConfig", true); - - if (caller_subop) { - var tuple = caller_subop.split(":"); - if (tuple[0] == 'editFeed') { - window.setTimeout('editFeed('+tuple[1]+')', 100); - } - - caller_subop = false; - } notify(""); - } catch (e) { exception_error("feedlist_callback2", e); } } function filterlist_callback2(transport) { - dijit.byId('filterConfigTab').attr('content', transport.responseText); + dijit.byId('filterConfigTab').attr('content', transport.responseText); notify(""); } function labellist_callback2(transport) { try { - dijit.byId('labelConfigTab').attr('content', transport.responseText); + dijit.byId('labelConfigTab').attr('content', transport.responseText); notify(""); } catch (e) { exception_error("labellist_callback2", e); @@ -45,7 +31,7 @@ function labellist_callback2(transport) { function userlist_callback2(transport) { try { - dijit.byId('userConfigTab').attr('content', transport.responseText); + dijit.byId('userConfigTab').attr('content', transport.responseText); notify(""); } catch (e) { @@ -55,7 +41,7 @@ function userlist_callback2(transport) { function prefslist_callback2(transport) { try { - dijit.byId('genConfigTab').attr('content', transport.responseText); + dijit.byId('genConfigTab').attr('content', transport.responseText); notify(""); } catch (e) { @@ -64,14 +50,14 @@ function prefslist_callback2(transport) { } function notify_callback2(transport) { - notify_info(transport.responseText); + notify_info(transport.responseText); } function updateFeedList(sort_key) { new Ajax.Request("backend.php", { parameters: "?op=pref-feeds", - onComplete: function(transport) { - feedlist_callback2(transport); + onComplete: function(transport) { + feedlist_callback2(transport); } }); } @@ -82,15 +68,15 @@ function updateUsersList(sort_key) { var user_search = $("user_search"); var search = ""; if (user_search) { search = user_search.value; } - + var query = "?op=pref-users&sort=" + param_escape(sort_key) + "&search=" + param_escape(search); - + new Ajax.Request("backend.php", { parameters: query, - onComplete: function(transport) { - userlist_callback2(transport); + onComplete: function(transport) { + userlist_callback2(transport); } }); } catch (e) { @@ -103,25 +89,25 @@ function addUser() { try { var login = prompt(__("Please enter login:"), ""); - - if (login == null) { + + if (login == null) { return false; } - + if (login == "") { alert(__("Can't create user: no login specified.")); return false; } - + notify_progress("Adding user..."); - + var query = "?op=pref-users&subop=add&login=" + param_escape(login); - + new Ajax.Request("backend.php", { parameters: query, - onComplete: function(transport) { - userlist_callback2(transport); + onComplete: function(transport) { + userlist_callback2(transport); } }); } catch (e) { @@ -146,7 +132,7 @@ function editUser(id, event) { parameters: query, onComplete: function(transport) { infobox_callback2(transport); - document.forms['user_edit_form'].login.focus(); + document.forms['user_edit_form'].login.focus(); } }); } else if (event.ctrlKey) { @@ -158,7 +144,7 @@ function editUser(id, event) { } catch (e) { exception_error("editUser", e); } - + } function editFilter(id) { @@ -176,12 +162,12 @@ function editFilter(id) { removeFilter: function() { var title = this.attr('value').reg_exp; var msg = __("Remove filter %s?").replace("%s", title); - + if (confirm(msg)) { this.hide(); notify_progress("Removing filter..."); - + var id = this.attr('value').id; var query = "?op=pref-filters&subop=remove&ids="+ @@ -198,7 +184,7 @@ function editFilter(id) { execute: function() { if (this.validate()) { - var query = "?op=rpc&subop=verifyRegexp®_exp=" + + var query = "?op=rpc&subop=verifyRegexp®_exp=" + param_escape(dialog.attr('value').reg_exp); notify_progress("Verifying regular expression..."); @@ -206,15 +192,12 @@ function editFilter(id) { new Ajax.Request("backend.php", { parameters: query, onComplete: function(transport) { - handle_rpc_reply(transport); - var response = transport.responseXML; + var reply = JSON.parse(transport.responseText); - if (response) { - var s = response.getElementsByTagName("status")[0].firstChild.nodeValue; - + if (reply) { notify(''); - if (s == "INVALID") { + if (!reply['status']) { alert("Match regular expression seems to be invalid."); return; } else { @@ -226,9 +209,9 @@ function editFilter(id) { parameters: dojo.objectToQuery(dialog.attr('value')), onComplete: function(transport) { dialog.hide(); - updateFilterList(); + updateFilterList(); }}) - } + } } }}); } @@ -298,7 +281,7 @@ function removeSelectedLabels() { if (ok) { notify_progress("Removing selected labels..."); - + var query = "?op=pref-labels&subop=remove&ids="+ param_escape(sel_rows.toString()); @@ -321,25 +304,25 @@ function removeSelectedUsers() { try { var sel_rows = getSelectedUsers(); - + if (sel_rows.length > 0) { - + var ok = confirm(__("Remove selected users? Neither default admin nor your account will be removed.")); - + if (ok) { notify_progress("Removing selected users..."); - + var query = "?op=pref-users&subop=remove&ids="+ param_escape(sel_rows.toString()); - + new Ajax.Request("backend.php", { parameters: query, - onComplete: function(transport) { - userlist_callback2(transport); + onComplete: function(transport) { + userlist_callback2(transport); } }); - + } - + } else { alert(__("No users are selected.")); } @@ -356,23 +339,22 @@ function removeSelectedFilters() { try { var sel_rows = getSelectedFilters(); - + if (sel_rows.length > 0) { - + var ok = confirm(__("Remove selected filters?")); - + if (ok) { notify_progress("Removing selected filters..."); - + var query = "?op=pref-filters&subop=remove&ids="+ param_escape(sel_rows.toString()); - + new Ajax.Request("backend.php", { parameters: query, onComplete: function(transport) { - filterlist_callback2(transport); - } }); - + updateFilterList(); + } }); } } else { alert(__("No filters are selected.")); @@ -391,15 +373,15 @@ function removeSelectedFeeds() { try { var sel_rows = getSelectedFeeds(); - + if (sel_rows.length > 0) { - + var ok = confirm(__("Unsubscribe from selected feeds?")); - + if (ok) { - + notify_progress("Unsubscribing from selected feeds...", true); - + var query = "?op=pref-feeds&subop=remove&ids="+ param_escape(sel_rows.toString()); @@ -411,7 +393,7 @@ function removeSelectedFeeds() { updateFeedList(); } }); } - + } else { alert(__("No feeds are selected.")); } @@ -419,7 +401,7 @@ function removeSelectedFeeds() { } catch (e) { exception_error("removeSelectedFeeds", e); } - + return false; } @@ -446,7 +428,7 @@ function clearSelectedFeeds() { alert(__("No feeds are selected.")); } - + return false; } @@ -478,7 +460,7 @@ function purgeSelectedFeeds() { alert(__("No feeds are selected.")); } - + return false; } @@ -492,7 +474,7 @@ function removeSelectedPrefProfiles() { if (ok) { notify_progress("Removing selected profiles..."); - + var query = "?op=rpc&subop=remprofiles&ids="+ param_escape(sel_rows.toString()); @@ -520,24 +502,24 @@ function userEditSave() { try { var login = document.forms["user_edit_form"].login.value; - + if (login.length == 0) { alert(__("Login field cannot be blank.")); return; } - + notify_progress("Saving user..."); - + closeInfoBox(); - + var query = Form.serialize("user_edit_form"); - + new Ajax.Request("backend.php", { parameters: query, - onComplete: function(transport) { - userlist_callback2(transport); + onComplete: function(transport) { + userlist_callback2(transport); } }); - + } catch (e) { exception_error("userEditSave", e); } @@ -570,33 +552,33 @@ function resetSelectedUserPass() { try { var rows = getSelectedUsers(); - + if (rows.length == 0) { alert(__("No users are selected.")); return; } - + if (rows.length > 1) { alert(__("Please select only one user.")); return; } - + var ok = confirm(__("Reset password of selected user?")); - + if (ok) { notify_progress("Resetting password for selected user..."); - + var id = rows[0]; - + var query = "?op=pref-users&subop=resetPass&id=" + param_escape(id); - + new Ajax.Request("backend.php", { parameters: query, - onComplete: function(transport) { - userlist_callback2(transport); + onComplete: function(transport) { + userlist_callback2(transport); } }); - + } } catch (e) { @@ -609,21 +591,21 @@ function selectedUserDetails() { try { var rows = getSelectedUsers(); - + if (rows.length == 0) { alert(__("No users are selected.")); return; } - + if (rows.length > 1) { alert(__("Please select only one user.")); return; } - + notify_progress("Loading, please wait..."); - + var id = rows[0]; - + var query = "?op=pref-users&subop=user-details&id=" + id; new Ajax.Request("backend.php", { @@ -679,14 +661,14 @@ function editSelectedFeeds() { try { var rows = getSelectedFeeds(); - + if (rows.length == 0) { alert(__("No feeds are selected.")); return; } - + notify(""); - + var query = "backend.php?op=pref-feeds&subop=editfeeds&ids=" + param_escape(rows.toString()); @@ -700,7 +682,7 @@ function editSelectedFeeds() { getChildByName: function (name) { var rv = null this.getChildren().each( - function(child) { + function(child) { if (child.name == name) { rv = child; return; @@ -724,28 +706,28 @@ function editSelectedFeeds() { /* Form.serialize ignores unchecked checkboxes */ - if (!query.match("&rtl_content=") && + if (!query.match("&rtl_content=") && this.getChildByName('rtl_content').attr('disabled') == false) { query = query + "&rtl_content=false"; } - - if (!query.match("&private=") && + + if (!query.match("&private=") && this.getChildByName('private').attr('disabled') == false) { query = query + "&private=false"; } - - if (!query.match("&cache_images=") && + + if (!query.match("&cache_images=") && this.getChildByName('cache_images').attr('disabled') == false) { query = query + "&cache_images=false"; } - - if (!query.match("&include_in_digest=") && + + if (!query.match("&include_in_digest=") && this.getChildByName('include_in_digest').attr('disabled') == false) { query = query + "&include_in_digest=false"; } console.log(query); - + notify_progress("Saving data...", true); new Ajax.Request("backend.php", { @@ -793,7 +775,7 @@ function opmlImportComplete(iframe) { title: __("OPML Import"), style: "width: 600px", onCancel: function() { - updateFeedList(); + updateFeedList(); }, content: content}); @@ -805,7 +787,7 @@ function opmlImportComplete(iframe) { } function opmlImport() { - + var opml_file = $("opml_file"); if (opml_file.value.length == 0) { @@ -836,8 +818,8 @@ function updateLabelList() { function updatePrefsList() { new Ajax.Request("backend.php", { parameters: "?op=pref-prefs", - onComplete: function(transport) { - prefslist_callback2(transport); + onComplete: function(transport) { + prefslist_callback2(transport); } }); } @@ -862,7 +844,7 @@ function selectTab(id, noupdate, subop) { dijit.byId("pref-tabs").selectChild(tab); } - + } catch (e) { exception_error("selectTab", e); } @@ -872,15 +854,7 @@ function init_second_stage() { try { document.onkeydown = pref_hotkey_handler; - - caller_subop = getURLParam('subop'); - - if (getURLParam("subopparam")) { - caller_subop = caller_subop + ":" + getURLParam("subopparam"); - } - loading_set_progress(50); - notify(""); dojo.addOnLoad(function() { @@ -890,6 +864,14 @@ function init_second_stage() { tab = dijit.byId(tab + "Tab"); if (tab) dijit.byId("pref-tabs").selectChild(tab); } + + var subop = getURLParam('subop'); + + if (subop == 'editFeed') { + var param = getURLParam('subopparam'); + + window.setTimeout('editFeed(' + param + ')', 100); + } }); setTimeout("hotkey_prefix_timeout()", 5*1000); @@ -902,31 +884,6 @@ function init_second_stage() { function init() { try { - - dojo.require("dijit.layout.TabContainer"); - dojo.require("dijit.layout.BorderContainer"); - dojo.require("dijit.layout.AccordionContainer"); - dojo.require("dijit.layout.ContentPane"); - dojo.require("dijit.Dialog"); - dojo.require("dijit.form.Button"); - 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"); - dojo.require("dijit.Toolbar"); - dojo.require("dojo.data.ItemFileWriteStore"); - dojo.require("dijit.Tree"); - dojo.require("dijit.form.DropDownButton"); - dojo.require("dijit.form.Form"); - dojo.require("dijit.Menu"); - dojo.require("dijit.tree.dndSource"); - dojo.require("dijit.InlineEditBox"); - dojo.require("dijit.ColorPalette"); - dojo.require("dijit.ProgressBar"); - dojo.registerModulePath("lib", ".."); dojo.registerModulePath("fox", "../.."); @@ -935,12 +892,14 @@ function init() { dojo.require("fox.PrefFilterTree"); dojo.require("fox.PrefLabelTree"); + dojo.parser.parse(); + dojo.addOnLoad(function() { loading_set_progress(50); new Ajax.Request("backend.php", { parameters: {op: "rpc", subop: "sanityCheck"}, - onComplete: function(transport) { + onComplete: function(transport) { backend_sanity_check_callback(transport); } }); }); @@ -956,13 +915,12 @@ function validatePrefsReset() { if (ok) { - var query = Form.serialize("pref_prefs_form"); - query = query + "&subop=reset-config"; + query = "?op=pref-prefs&subop=reset-config"; console.log(query); new Ajax.Request("backend.php", { parameters: query, - onComplete: function(transport) { + onComplete: function(transport) { var msg = transport.responseText; if (msg.match("PREFS_THEME_CHANGED")) { window.location.reload(); @@ -1012,7 +970,7 @@ function pref_hotkey_handler(e) { } hotkey_prefix = false; closeInfoBox(); - } + } if (keycode == 16) return; // ignore lone shift if (keycode == 17) return; // ignore lone ctrl @@ -1059,7 +1017,7 @@ function pref_hotkey_handler(e) { } if (keycode == 191 || keychar == '/') { // / - var search_boxes = new Array("label_search", + var search_boxes = new Array("label_search", "feed_search", "filter_search", "user_search", "feed_browser_search"); for (var i = 0; i < search_boxes.length; i++) { @@ -1176,16 +1134,16 @@ function editFeedCats() { }, removeSelected: function() { var sel_rows = this.getSelectedCategories(); - - if (sel_rows.length > 0) { + + if (sel_rows.length > 0) { var ok = confirm(__("Remove selected categories?")); - + if (ok) { notify_progress("Removing selected categories...", true); - + var query = "?op=pref-feeds&subop=editCats&action=remove&ids="+ param_escape(sel_rows.toString()); - + new Ajax.Request("backend.php", { parameters: query, onComplete: function(transport) { @@ -1193,11 +1151,11 @@ function editFeedCats() { dialog.attr('content', transport.responseText); updateFeedList(); } }); - + } - - } else { - alert(__("No categories are selected.")); + + } else { + alert(__("No categories are selected.")); } }, addCategory: function() { @@ -1233,32 +1191,89 @@ function showFeedsWithErrors() { displayDlg('feedUpdateErrors'); } +function showInactiveFeeds() { + try { + var query = "backend.php?op=dlg&id=inactiveFeeds"; + + if (dijit.byId("inactiveFeedsDlg")) + dijit.byId("inactiveFeedsDlg").destroyRecursive(); + + dialog = new dijit.Dialog({ + id: "inactiveFeedsDlg", + title: __("Feeds without recent updates"), + style: "width: 600px", + getSelectedFeeds: function() { + return getSelectedTableRowIds("prefInactiveFeedList"); + }, + removeSelected: function() { + var sel_rows = this.getSelectedFeeds(); + + console.log(sel_rows); + + if (sel_rows.length > 0) { + var ok = confirm(__("Remove selected feeds?")); + + if (ok) { + notify_progress("Removing selected feeds...", true); + + var query = "?op=pref-feeds&subop=remove&ids="+ + param_escape(sel_rows.toString()); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + notify(''); + dialog.hide(); + updateFeedList(); + } }); + } + + } else { + alert(__("No feeds are selected.")); + } + }, + execute: function() { + if (this.validate()) { + } + }, + href: query}); + + dialog.show(); + + } catch (e) { + exception_error("showInactiveFeeds", e); + } + +} + function opmlRegenKey() { try { var ok = confirm(__("Replace current OPML publishing address with a new one?")); - + if (ok) { - + notify_progress("Trying to change address...", true); - + var query = "?op=rpc&subop=regenOPMLKey"; - + new Ajax.Request("backend.php", { parameters: query, onComplete: function(transport) { - var new_link = transport.responseXML.getElementsByTagName("link")[0]; - + var reply = JSON.parse(transport.responseText); + + var new_link = reply.link; + var e = $('pub_opml_url'); - + if (new_link) { - e.href = new_link.firstChild.nodeValue; - e.innerHTML = new_link.firstChild.nodeValue; - + e.href = new_link; + e.innerHTML = new_link; + new Effect.Highlight(e); notify(''); - + } else { notify_error("Could not change feed URL."); } @@ -1282,7 +1297,7 @@ function feedActionChange() { } } -function feedActionGo(op) { +function feedActionGo(op) { try { if (op == "facEdit") { @@ -1347,7 +1362,7 @@ function rescoreSelectedFeeds() { if (ok) { notify_progress("Rescoring selected feeds...", true); - + var query = "?op=pref-feeds&subop=rescore&quiet=1&ids="+ param_escape(sel_rows.toString()); @@ -1430,58 +1445,58 @@ function editProfiles() { }, removeSelected: function() { var sel_rows = this.getSelectedProfiles(); - - if (sel_rows.length > 0) { + + if (sel_rows.length > 0) { var ok = confirm(__("Remove selected profiles? Active and default profiles will not be removed.")); - + if (ok) { notify_progress("Removing selected profiles...", true); - + var query = "?op=rpc&subop=remprofiles&ids="+ param_escape(sel_rows.toString()); - + new Ajax.Request("backend.php", { parameters: query, onComplete: function(transport) { notify(''); editProfiles(); } }); - + } - - } else { - alert(__("No profiles are selected.")); + + } else { + alert(__("No profiles are selected.")); } }, activateProfile: function() { var sel_rows = this.getSelectedProfiles(); - + if (sel_rows.length == 1) { - + var ok = confirm(__("Activate selected profile?")); - + if (ok) { notify_progress("Loading, please wait..."); - + var query = "?op=rpc&subop=setprofile&id="+ param_escape(sel_rows.toString()); - + new Ajax.Request("backend.php", { parameters: query, onComplete: function(transport) { window.location.reload(); } }); } - + } else { alert(__("Please choose a profile to activate.")); - } - }, + } + }, addProfile: function() { if (this.validate()) { notify_progress("Creating profile...", true); - var query = "?op=rpc&subop=addprofile&title=" + + var query = "?op=rpc&subop=addprofile&title=" + param_escape(dialog.attr('value').newprofile); new Ajax.Request("backend.php", { @@ -1515,7 +1530,7 @@ function activatePrefProfile() { if (ok) { notify_progress("Loading, please wait..."); - + var query = "?op=rpc&subop=setprofile&id="+ param_escape(sel_rows.toString()); @@ -1544,29 +1559,12 @@ function clearFeedAccessKeys() { new Ajax.Request("backend.php", { parameters: query, - onComplete: function(transport) { + onComplete: function(transport) { notify_info("Generated URLs cleared."); } }); } - - return false; -} - -function handle_rpc_reply(transport, scheduled_call) { - try { - if (transport.responseXML) { - - if (!transport_error_check(transport)) return false; - - } else { - notify_error("Error communicating with server."); - } - - } catch (e) { - exception_error("handle_rpc_reply", e, transport); - } - return true; + return false; } function resetFeedOrder() { @@ -1576,7 +1574,7 @@ function resetFeedOrder() { new Ajax.Request("backend.php", { parameters: "?op=pref-feeds&subop=feedsortreset", onComplete: function(transport) { - updateFeedList(); + updateFeedList(); } }); @@ -1592,7 +1590,7 @@ function resetCatOrder() { new Ajax.Request("backend.php", { parameters: "?op=pref-feeds&subop=catsortreset", onComplete: function(transport) { - updateFeedList(); + updateFeedList(); } }); @@ -1611,13 +1609,13 @@ function editCat(id, item, event) { new Ajax.Request("backend.php", { parameters: { - op: 'pref-feeds', + op: 'pref-feeds', subop: 'renamecat', id: id, title: new_name, }, onComplete: function(transport) { - updateFeedList(); + updateFeedList(); } }); } @@ -1642,7 +1640,7 @@ function editLabel(id, event) { var kind = ''; var color = ''; - + if (fg && bg) { kind = 'both'; } else if (fg) { @@ -1652,20 +1650,20 @@ function editLabel(id, event) { kind = 'bg'; color = bg; } - + var query = "?op=pref-labels&subop=color-set&kind="+kind+ - "&ids=" + param_escape(id) + "&fg=" + param_escape(fg) + + "&ids=" + param_escape(id) + "&fg=" + param_escape(fg) + "&bg=" + param_escape(bg) + "&color=" + param_escape(color); - + // console.log(query); - + var e = $("LICID-" + id); - - if (e) { + + if (e) { if (fg) e.style.color = fg; if (bg) e.style.backgroundColor = bg; } - + new Ajax.Request("backend.php", { parameters: query }); updateFilterList(); @@ -1685,7 +1683,7 @@ function editLabel(id, event) { new Ajax.Request("backend.php", { parameters: query, onComplete: function(transport) { - updateFilterList(); + updateFilterList(); } }); } }, @@ -1709,7 +1707,7 @@ function clearTwitterCredentials() { new Ajax.Request("backend.php", { parameters: query, - onComplete: function(transport) { + onComplete: function(transport) { notify_info("Twitter credentials have been cleared."); updateFeedList(); } }); @@ -1719,3 +1717,41 @@ function clearTwitterCredentials() { exception_error("clearTwitterCredentials", e); } } + +function customizeCSS() { + try { + var query = "backend.php?op=dlg&id=customizeCSS"; + + if (dijit.byId("cssEditDlg")) + dijit.byId("cssEditDlg").destroyRecursive(); + + dialog = new dijit.Dialog({ + id: "cssEditDlg", + title: __("Customize stylesheet"), + style: "width: 600px", + execute: function() { + notify_progress('Saving data...', true); + new Ajax.Request("backend.php", { + parameters: dojo.objectToQuery(this.attr('value')), + onComplete: function(transport) { + notify(''); + window.location.reload(); + } }); + + }, + href: query}); + + dialog.show(); + + } catch (e) { + exception_error("customizeCSS", e); + } +} + +function insertSSLserial(value) { + try { + dijit.byId("SSL_CERT_SERIAL").attr('value', value); + } catch (e) { + exception_error("insertSSLcerial", e); + } +}