]> git.wh0rd.org - tt-rss.git/blobdiff - js/prefs.js
split self-updater gui to updater/ plugin
[tt-rss.git] / js / prefs.js
index 4ca3ec182188d85ec6cbe4095a547feefc7b8b01..51d8412fc848a15ba755c433b697ed656c224763 100644 (file)
@@ -136,9 +136,52 @@ function editFilter(id) {
                        id: "filterEditDlg",
                        title: __("Edit Filter"),
                        style: "width: 600px",
+                       test: function() {
+                               var query = "backend.php?" + dojo.formToQuery("filter_edit_form") + "&savemode=test";
+
+                               if (dijit.byId("filterTestDlg"))
+                                       dijit.byId("filterTestDlg").destroyRecursive();
+
+                               var test_dlg = new dijit.Dialog({
+                                       id: "filterTestDlg",
+                                       title: "Test Filter",
+                                       style: "width: 600px",
+                                       href: query});
+
+                               test_dlg.show();
+                       },
+                       selectRules: function(select) {
+                               $$("#filterDlg_Matches input[type=checkbox]").each(function(e) {
+                                       e.checked = select;
+                                       if (select)
+                                               e.parentNode.addClassName("Selected");
+                                       else
+                                               e.parentNode.removeClassName("Selected");
+                               });
+                       },
+                       selectActions: function(select) {
+                               $$("#filterDlg_Actions input[type=checkbox]").each(function(e) {
+                                       e.checked = select;
+
+                                       if (select)
+                                               e.parentNode.addClassName("Selected");
+                                       else
+                                               e.parentNode.removeClassName("Selected");
+
+                               });
+                       },
+                       editRule: function(e) {
+                               var li = e.parentNode;
+                               var rule = li.getElementsByTagName("INPUT")[1].value;
+                               addFilterRule(li, rule);
+                       },
+                       editAction: function(e) {
+                               var li = e.parentNode;
+                               var action = li.getElementsByTagName("INPUT")[1].value;
+                               addFilterAction(li, action);
+                       },
                        removeFilter: function() {
-                               var title = this.attr('value').reg_exp;
-                               var msg = __("Remove filter %s?").replace("%s", title);
+                               var msg = __("Remove filter?");
 
                                if (confirm(msg)) {
                                        this.hide();
@@ -157,57 +200,29 @@ function editFilter(id) {
                                                } });
                                }
                        },
-                       test: function() {
-                               if (this.validate()) {
-
-                                       if (dijit.byId("filterTestDlg"))
-                                               dijit.byId("filterTestDlg").destroyRecursive();
-
-                                       tdialog = new dijit.Dialog({
-                                               id: "filterTestDlg",
-                                               title: __("Filter Test Results"),
-                                               style: "width: 600px",
-                                               href: "backend.php?savemode=test&" +
-                                                       dojo.objectToQuery(dialog.attr('value')),
-                                               });
-
-                                       tdialog.show();
-
-                               }
+                       addAction: function() { addFilterAction(); },
+                       addRule: function() { addFilterRule(); },
+                       deleteAction: function() {
+                               $$("#filterDlg_Actions li.[class*=Selected]").each(function(e) { e.parentNode.removeChild(e) });
+                       },
+                       deleteRule: function() {
+                               $$("#filterDlg_Matches li.[class*=Selected]").each(function(e) { e.parentNode.removeChild(e) });
                        },
                        execute: function() {
                                if (this.validate()) {
 
-                                       var query = "?op=rpc&method=verifyRegexp&reg_exp=" +
-                                               param_escape(dialog.attr('value').reg_exp);
+                                       notify_progress("Saving data...", true);
 
-                                       notify_progress("Verifying regular expression...");
+                                       var query = dojo.formToQuery("filter_edit_form");
 
-                                       new Ajax.Request("backend.php", {
+                                       console.log(query);
+
+                                       new Ajax.Request("backend.php", {
                                                parameters: query,
                                                onComplete: function(transport) {
-                                                       var reply = JSON.parse(transport.responseText);
-
-                                                       if (reply) {
-                                                               notify('');
-
-                                                               if (!reply['status']) {
-                                                                       alert("Match regular expression seems to be invalid.");
-                                                                       return;
-                                                               } else {
-                                                                       notify_progress("Saving data...", true);
-
-                                                                       console.log(dojo.objectToQuery(dialog.attr('value')));
-
-                                                                       new Ajax.Request("backend.php", {
-                                                                               parameters: dojo.objectToQuery(dialog.attr('value')),
-                                                                               onComplete: function(transport) {
-                                                                                       dialog.hide();
-                                                                                       updateFilterList();
-                                                                       }});
-                                                               }
-                                                       }
-                                       }});
+                                                       dialog.hide();
+                                                       updateFilterList();
+                                               }});
                                }
                        },
                        href: query});
@@ -249,6 +264,19 @@ function getSelectedFeeds() {
        return rv;
 }
 
+function getSelectedCategories() {
+       var tree = dijit.byId("feedTree");
+       var items = tree.model.getCheckedItems();
+       var rv = [];
+
+       items.each(function(item) {
+               if (item.id[0].match("CAT:"))
+                       rv.push(tree.model.store.getValue(item, 'bare_id'));
+       });
+
+       return rv;
+}
+
 function getSelectedFilters() {
        var tree = dijit.byId("filterTree");
        var items = tree.model.getCheckedItems();
@@ -262,10 +290,6 @@ function getSelectedFilters() {
 
 }
 
-/* function getSelectedFeedCats() {
-       return getSelectedTableRowIds("prefFeedCatList");
-} */
-
 function removeSelectedLabels() {
 
        var sel_rows = getSelectedLabels();
@@ -605,6 +629,31 @@ function editSelectedFilter() {
 
 }
 
+function joinSelectedFilters() {
+       var rows = getSelectedFilters();
+
+       if (rows.length == 0) {
+               alert(__("No filters are selected."));
+               return;
+       }
+
+       var ok = confirm(__("Combine selected filters?"));
+
+       if (ok) {
+               notify_progress("Joining filters...");
+
+               var query = "?op=pref-filters&method=join&ids="+
+                       param_escape(rows.toString());
+
+               console.log(query);
+
+               new Ajax.Request("backend.php", {
+                       parameters: query,
+                       onComplete: function(transport) {
+                                       updateFilterList();
+                       } });
+       }
+}
 
 function editSelectedFeed() {
        var rows = getSelectedFeeds();
@@ -1169,78 +1218,85 @@ function pref_hotkey_handler(e) {
        }
 }
 
-function editFeedCats() {
+function removeCategory(id, item) {
        try {
-               var query = "backend.php?op=pref-feeds&method=editCats";
 
-               if (dijit.byId("feedCatEditDlg"))
-                       dijit.byId("feedCatEditDlg").destroyRecursive();
+               var ok = confirm(__("Remove category %s? Any nested feeds would be placed into Uncategorized.").replace("%s", item.name));
 
-               dialog = new dijit.Dialog({
-                       id: "feedCatEditDlg",
-                       title: __("Feed Categories"),
-                       style: "width: 600px",
-                       getSelectedCategories: function() {
-                               return getSelectedTableRowIds("prefFeedCatList");
-                       },
-                       removeSelected: function() {
-                               var sel_rows = this.getSelectedCategories();
+               if (ok) {
+                       var query = "?op=pref-feeds&method=removeCat&ids="+
+                               param_escape(id);
 
-                               if (sel_rows.length > 0) {
-                                       var ok = confirm(__("Remove selected categories?"));
+                       notify_progress("Removing category...");
 
-                                       if (ok) {
-                                               notify_progress("Removing selected categories...", true);
+                       new Ajax.Request("backend.php", {
+                               parameters: query,
+                               onComplete: function(transport) {
+                                       notify('');
+                                       updateFeedList();
+                               } });
+                       }
 
-                                               var query = "?op=pref-feeds&method=editCats&action=remove&ids="+
-                                                       param_escape(sel_rows.toString());
+       } catch (e) {
+               exception_error("removeCategory", e);
+       }
+}
 
-                                               new Ajax.Request("backend.php", {
-                                                       parameters: query,
-                                                       onComplete: function(transport) {
-                                                               notify('');
-                                                               dialog.attr('content', transport.responseText);
-                                                               updateFeedList();
-                                                       } });
+function removeSelectedCategories() {
 
-                                       }
+       var sel_rows = getSelectedCategories();
 
-                               } else {
-                                       alert(__("No categories are selected."));
-                               }
-                       },
-                       addCategory: function() {
-                               if (this.validate()) {
-                                       notify_progress("Creating category...");
+       if (sel_rows.length > 0) {
 
-                                       var query = "?op=pref-feeds&method=editCats&action=add&cat=" +
-                                               param_escape(this.attr('value').newcat);
+               var ok = confirm(__("Remove selected categories?"));
 
-                                       new Ajax.Request("backend.php", {
-                                               parameters: query,
-                                               onComplete: function(transport) {
-                                                       notify('');
-                                                       dialog.attr('content', transport.responseText);
-                                                       updateFeedList();
-                                               } });
-                               }
-                       },
-                       execute: function() {
-                               if (this.validate()) {
-                               }
-                       },
-                       href: query});
+               if (ok) {
+                       notify_progress("Removing selected categories...");
 
-               dialog.show();
+                       var query = "?op=pref-feeds&method=removeCat&ids="+
+                               param_escape(sel_rows.toString());
+
+                       new Ajax.Request("backend.php", {
+                               parameters: query,
+                               onComplete: function(transport) {
+                                               updateFeedList();
+                                       } });
+
+               }
+       } else {
+               alert(__("No categories are selected."));
+       }
+
+       return false;
+}
+
+function createCategory() {
+       try {
+               var title = prompt(__("Category title:"));
+
+               if (title) {
+
+                       notify_progress("Creating category...");
+
+                       var query = "?op=pref-feeds&method=addCat&cat=" +
+                               param_escape(title);
+
+                       new Ajax.Request("backend.php", {
+                               parameters: query,
+                               onComplete: function(transport) {
+                                       notify('');
+                                       updateFeedList();
+                               } });
+               }
 
        } catch (e) {
-               exception_error("editFeedCats", e);
+               exception_error("createCategory", e);
        }
 }
 
 function showInactiveFeeds() {
        try {
-               var query = "backend.php?op=dlg&method=inactiveFeeds";
+               var query = "backend.php?op=pref-feeds&method=inactiveFeeds";
 
                if (dijit.byId("inactiveFeedsDlg"))
                        dijit.byId("inactiveFeedsDlg").destroyRecursive();
@@ -2113,7 +2169,7 @@ function dataImportComplete(iframe) {
 
 function gotoExportOpml(filename, settings) {
        tmp = settings ? 1 : 0;
-       document.location.href = "opml.php?op=Export&filename=" + filename + "&settings=" + tmp;
+       document.location.href = "backend.php?op=opml&method=export&filename=" + filename + "&settings=" + tmp;
 }
 
 
@@ -2121,8 +2177,9 @@ function batchSubscribe() {
        try {
                var query = "backend.php?op=dlg&method=batchSubscribe";
 
-               if (dijit.byId("batchSubDlg"))
-                       dijit.byId("batchSubDlg").destroyRecursive();
+               // overlapping widgets
+               if (dijit.byId("batchSubDlg")) dijit.byId("batchSubDlg").destroyRecursive();
+               if (dijit.byId("feedAddDlg"))   dijit.byId("feedAddDlg").destroyRecursive();
 
                var dialog = new dijit.Dialog({
                        id: "batchSubDlg",
@@ -2137,7 +2194,9 @@ function batchSubscribe() {
                                        new Ajax.Request("backend.php", {
                                                parameters: dojo.objectToQuery(this.attr('value')),
                                                onComplete: function(transport) {
-                                                       this.hide();
+                                                       notify("");
+                                                       updateFeedList();
+                                                       dialog.hide();
                                                } });
                                        }
                        },
@@ -2149,3 +2208,18 @@ function batchSubscribe() {
        }
 }
 
+
+function toggleAdvancedPrefs() {
+       try {
+               notify_progress("Loading, please wait...");
+
+               new Ajax.Request("backend.php", {
+                       parameters: "?op=pref-prefs&method=toggleadvanced",
+                       onComplete: function(transport) {
+                               updatePrefsList();
+                       } });
+
+       } catch (e) {
+               exception_error("toggleAdvancedPrefs", e);
+       }
+}