]> git.wh0rd.org - tt-rss.git/blobdiff - prefs.js
reduce the number of always included libraries
[tt-rss.git] / prefs.js
index 2a054df53f0110307ffc475868d7de6659075890..5a75060d6c256ad0aa68b4c2ebad5a29066dca09 100644 (file)
--- a/prefs.js
+++ b/prefs.js
@@ -5,6 +5,16 @@ var hotkey_prefix_pressed = false;
 
 var seq = "";
 
+function instancelist_callback2(transport) {
+       try {
+               dijit.byId('instanceConfigTab').attr('content', transport.responseText);
+               selectTab("instanceConfig", true);
+               notify("");
+       } catch (e) {
+               exception_error("instancelist_callback2", e);
+       }
+}
+
 function feedlist_callback2(transport) {
        try {
                dijit.byId('feedConfigTab').attr('content', transport.responseText);
@@ -54,13 +64,26 @@ function notify_callback2(transport) {
 }
 
 function updateFeedList(sort_key) {
+
+       var user_search = $("feed_search");
+       var search = "";
+       if (user_search) { search = user_search.value; }
+
        new Ajax.Request("backend.php", {
-               parameters: "?op=pref-feeds",
+               parameters: "?op=pref-feeds&search=" + param_escape(search),
                onComplete: function(transport) {
                        feedlist_callback2(transport);
                } });
 }
 
+function updateInstanceList(sort_key) {
+       new Ajax.Request("backend.php", {
+               parameters: "?op=pref-instances&sort=" + param_escape(sort_key),
+               onComplete: function(transport) {
+                       instancelist_callback2(transport);
+               } });
+}
+
 function updateUsersList(sort_key) {
 
        try {
@@ -227,7 +250,7 @@ function editFilter(id) {
                                                                                onComplete: function(transport) {
                                                                                        dialog.hide();
                                                                                        updateFilterList();
-                                                                       }})
+                                                                       }});
                                                                }
                                                        }
                                        }});
@@ -265,7 +288,8 @@ function getSelectedFeeds() {
        var rv = [];
 
        items.each(function(item) {
-               rv.push(tree.model.store.getValue(item, 'bare_id'));
+               if (item.id[0].match("FEED:"))
+                       rv.push(tree.model.store.getValue(item, 'bare_id'));
        });
 
        return rv;
@@ -656,80 +680,107 @@ function editSelectedFeeds() {
                        return;
                }
 
-               notify("");
+               notify_progress("Loading, please wait...");
 
                var query = "backend.php?op=pref-feeds&subop=editfeeds&ids=" +
                        param_escape(rows.toString());
 
+               console.log(query);
+
                if (dijit.byId("feedEditDlg"))
                        dijit.byId("feedEditDlg").destroyRecursive();
 
-               dialog = new dijit.Dialog({
-                       id: "feedEditDlg",
-                       title: __("Edit Multiple Feeds"),
-                       style: "width: 600px",
-                       getChildByName: function (name) {
-                               var rv = null
-                               this.getChildren().each(
-                                       function(child) {
-                                               if (child.name == name) {
-                                                       rv = child;
-                                                       return;
-                                               }
-                                       });
-                               return rv;
-                       },
-                       toggleField: function (checkbox, elem, label) {
-                               this.getChildByName(elem).attr('disabled', !checkbox.checked);
+               new Ajax.Request("backend.php", {
+                       parameters: query,
+                       onComplete: function(transport) {
 
-                               if ($(label))
-                                       if (checkbox.checked)
-                                               $(label).removeClassName('insensitive');
-                                       else
-                                               $(label).addClassName('insensitive');
+                               notify("");
+
+                               var dialog = new dijit.Dialog({
+                                       id: "feedEditDlg",
+                                       title: __("Edit Multiple Feeds"),
+                                       style: "width: 600px",
+                                       getChildByName: function (name) {
+                                               var rv = null;
+                                               this.getChildren().each(
+                                                       function(child) {
+                                                               if (child.name == name) {
+                                                                       rv = child;
+                                                                       return;
+                                                               }
+                                                       });
+                                               return rv;
+                                       },
+                                       toggleField: function (checkbox, elem, label) {
+                                               this.getChildByName(elem).attr('disabled', !checkbox.checked);
+
+                                               if ($(label))
+                                                       if (checkbox.checked)
+                                                               $(label).removeClassName('insensitive');
+                                                       else
+                                                               $(label).addClassName('insensitive');
+
+                                       },
+                                       execute: function() {
+                                               if (this.validate() && confirm(__("Save changes to selected feeds?"))) {
+                                                       var query = dojo.objectToQuery(this.attr('value'));
+
+                                                       /* Form.serialize ignores unchecked checkboxes */
+
+                                                       if (!query.match("&rtl_content=") &&
+                                                                       this.getChildByName('rtl_content').attr('disabled') == false) {
+                                                               query = query + "&rtl_content=false";
+                                                       }
 
-                       },
-                       execute: function() {
-                               if (this.validate() && confirm(__("Save changes to selected feeds?"))) {
-                                       var query = dojo.objectToQuery(this.attr('value'));
+                                                       if (!query.match("&private=") &&
+                                                                       this.getChildByName('private').attr('disabled') == false) {
+                                                               query = query + "&private=false";
+                                                       }
 
-                                       /* Form.serialize ignores unchecked checkboxes */
+                                                       try {
+                                                               if (!query.match("&cache_images=") &&
+                                                                               this.getChildByName('cache_images').attr('disabled') == false) {
+                                                                       query = query + "&cache_images=false";
+                                                               }
+                                                       } catch (e) { }
 
-                                       if (!query.match("&rtl_content=") &&
-                                                       this.getChildByName('rtl_content').attr('disabled') == false) {
-                                               query = query + "&rtl_content=false";
-                                       }
+                                                       if (!query.match("&include_in_digest=") &&
+                                                                       this.getChildByName('include_in_digest').attr('disabled') == false) {
+                                                               query = query + "&include_in_digest=false";
+                                                       }
 
-                                       if (!query.match("&private=") &&
-                                                       this.getChildByName('private').attr('disabled') == false) {
-                                               query = query + "&private=false";
-                                       }
+                                                       if (!query.match("&always_display_enclosures=") &&
+                                                                       this.getChildByName('always_display_enclosures').attr('disabled') == false) {
+                                                               query = query + "&always_display_enclosures=false";
+                                                       }
 
-                                       if (!query.match("&cache_images=") &&
-                                                       this.getChildByName('cache_images').attr('disabled') == false) {
-                                               query = query + "&cache_images=false";
-                                       }
+                                                       if (!query.match("&mark_unread_on_update=") &&
+                                                                       this.getChildByName('mark_unread_on_update').attr('disabled') == false) {
+                                                               query = query + "&mark_unread_on_update=false";
+                                                       }
 
-                                       if (!query.match("&include_in_digest=") &&
-                                                       this.getChildByName('include_in_digest').attr('disabled') == false) {
-                                               query = query + "&include_in_digest=false";
-                                       }
+                                                       if (!query.match("&update_on_checksum_change=") &&
+                                                                       this.getChildByName('update_on_checksum_change').attr('disabled') == false) {
+                                                               query = query + "&update_on_checksum_change=false";
+                                                       }
 
-                                       console.log(query);
+                                                       console.log(query);
 
-                                       notify_progress("Saving data...", true);
+                                                       notify_progress("Saving data...", true);
 
-                                       new Ajax.Request("backend.php", {
-                                               parameters: query,
-                                               onComplete: function(transport) {
-                                                       dialog.hide();
-                                                       updateFeedList();
-                                       }})
-                               }
-                       },
-                       href: query});
+                                                       new Ajax.Request("backend.php", {
+                                                               parameters: query,
+                                                               onComplete: function(transport) {
+                                                                       dialog.hide();
+                                                                       updateFeedList();
+                                                       }});
+                                               }
+                                       },
+                                       content: transport.responseText});
 
-               dialog.show();
+                                       dialog.show();
+
+                       } });
 
        } catch (e) {
                exception_error("editSelectedFeeds", e);
@@ -934,7 +985,7 @@ function pref_hotkey_handler(e) {
        try {
                if (e.target.nodeName == "INPUT") return;
 
-               var keycode;
+               var keycode = false;
                var shift_key = false;
 
                var cmdline = $('cmdline');
@@ -998,7 +1049,7 @@ function pref_hotkey_handler(e) {
                        if ((keycode == 191 || keychar == '?') && shift_key) { // ?
                                if (!Element.visible("hotkey_help_overlay")) {
                                        //Element.show("hotkey_help_overlay");
-                                       Effect.Appear("hotkey_help_overlay", {duration : 0.3});
+                                       Effect.Appear("hotkey_help_overlay", {duration : 0.3, to: 0.9});
                                } else {
                                        Element.hide("hotkey_help_overlay");
                                }
@@ -1552,6 +1603,24 @@ function clearFeedAccessKeys() {
        return false;
 }
 
+function clearArticleAccessKeys() {
+
+       var ok = confirm(__("This will invalidate all previously shared article URLs. Continue?"));
+
+       if (ok) {
+               notify_progress("Clearing URLs...");
+
+               var query = "?op=rpc&subop=clearArticleKeys";
+
+               new Ajax.Request("backend.php", {
+                       parameters: query,
+                       onComplete: function(transport) {
+                               notify_info("Shared URLs cleared.");
+                       } });
+       }
+
+       return false;
+}
 function resetFeedOrder() {
        try {
                notify_progress("Loading, please wait...");
@@ -1655,7 +1724,6 @@ function editLabel(id, event) {
                        },
                        execute: function() {
                                if (this.validate()) {
-                                       var caption = this.attr('value').id;
                                        var caption = this.attr('value').caption;
                                        var fg_color = this.attr('value').fg_color;
                                        var bg_color = this.attr('value').bg_color;
@@ -1740,3 +1808,160 @@ function insertSSLserial(value) {
                exception_error("insertSSLcerial", e);
        }
 }
+
+function getSelectedInstances() {
+       return getSelectedTableRowIds("prefInstanceList");
+}
+
+function addInstance() {
+       try {
+               var query = "backend.php?op=dlg&id=addInstance";
+
+               if (dijit.byId("instanceAddDlg"))
+                       dijit.byId("instanceAddDlg").destroyRecursive();
+
+               dialog = new dijit.Dialog({
+                       id: "instanceAddDlg",
+                       title: __("Link Instance"),
+                       style: "width: 600px",
+                       regenKey: function() {
+                               new Ajax.Request("backend.php", {
+                                       parameters: "?op=rpc&subop=genHash",
+                                       onComplete: function(transport) {
+                                               var reply = JSON.parse(transport.responseText);
+                                               if (reply)
+                                                       dijit.byId('instance_add_key').attr('value', reply.hash);
+
+                                       } });
+                       },
+                       execute: function() {
+                               if (this.validate()) {
+                                       console.warn(dojo.objectToQuery(this.attr('value')));
+
+                                       notify_progress('Saving data...', true);
+                                       new Ajax.Request("backend.php", {
+                                               parameters: dojo.objectToQuery(this.attr('value')),
+                                               onComplete: function(transport) {
+                                                       dialog.hide();
+                                                       notify('');
+                                                       updateInstanceList();
+                                       } });
+                               }
+                       },
+                       href: query,
+               });
+
+               dialog.show();
+
+       } catch (e) {
+               exception_error("addInstance", e);
+       }
+}
+
+function editInstance(id, event) {
+       try {
+               if (!event || !event.ctrlKey) {
+
+               selectTableRows('prefInstanceList', 'none');
+               selectTableRowById('LIRR-'+id, 'LICHK-'+id, true);
+
+               var query = "backend.php?op=pref-instances&subop=edit&id=" +
+                       param_escape(id);
+
+               if (dijit.byId("instanceEditDlg"))
+                       dijit.byId("instanceEditDlg").destroyRecursive();
+
+               dialog = new dijit.Dialog({
+                       id: "instanceEditDlg",
+                       title: __("Edit Instance"),
+                       style: "width: 600px",
+                       regenKey: function() {
+                               new Ajax.Request("backend.php", {
+                                       parameters: "?op=rpc&subop=genHash",
+                                       onComplete: function(transport) {
+                                               var reply = JSON.parse(transport.responseText);
+                                               if (reply)
+                                                       dijit.byId('instance_edit_key').attr('value', reply.hash);
+
+                                       } });
+                       },
+                       execute: function() {
+                               if (this.validate()) {
+//                                     console.warn(dojo.objectToQuery(this.attr('value')));
+
+                                       notify_progress('Saving data...', true);
+                                       new Ajax.Request("backend.php", {
+                                               parameters: dojo.objectToQuery(this.attr('value')),
+                                               onComplete: function(transport) {
+                                                       dialog.hide();
+                                                       notify('');
+                                                       updateInstanceList();
+                                       } });
+                               }
+                       },
+                       href: query,
+               });
+
+               dialog.show();
+
+               } else if (event.ctrlKey) {
+                       var cb = $('LICHK-' + id);
+                       cb.checked = !cb.checked;
+                       toggleSelectRow(cb);
+               }
+
+
+       } catch (e) {
+               exception_error("editInstance", e);
+       }
+}
+
+function removeSelectedInstances() {
+       try {
+               var sel_rows = getSelectedInstances();
+
+               if (sel_rows.length > 0) {
+
+                       var ok = confirm(__("Remove selected instances?"));
+
+                       if (ok) {
+                               notify_progress("Removing selected instances...");
+
+                               var query = "?op=pref-instances&subop=remove&ids="+
+                                       param_escape(sel_rows.toString());
+
+                               new Ajax.Request("backend.php", {
+                                       parameters: query,
+                                       onComplete: function(transport) {
+                                               notify('');
+                                               updateInstanceList();
+                                       } });
+                       }
+
+               } else {
+                       alert(__("No instances are selected."));
+               }
+
+       } catch (e) {
+               exception_error("removeInstance", e);
+       }
+}
+
+function editSelectedInstance() {
+       var rows = getSelectedInstances();
+
+       if (rows.length == 0) {
+               alert(__("No instances are selected."));
+               return;
+       }
+
+       if (rows.length > 1) {
+               alert(__("Please select only one instance."));
+               return;
+       }
+
+       notify("");
+
+       editInstance(rows[0]);
+}
+