]> git.wh0rd.org - tt-rss.git/blobdiff - js/functions.js
add select all/none functionality to several edit dialogs
[tt-rss.git] / js / functions.js
index 69406f3e1100954f966de325a74c40d6b127db4f..0b0b475c6710bb4d8d4ae16f5f0343e92cf5404f 100644 (file)
@@ -1,6 +1,25 @@
 var notify_silent = false;
 var loading_progress = 0;
 var sanity_check_done = false;
+var init_params = {};
+
+Ajax.Base.prototype.initialize = Ajax.Base.prototype.initialize.wrap(
+       function (callOriginal, options) {
+
+               if (getInitParam("csrf_token") != undefined) {
+                       Object.extend(options, options || { });
+
+                       if (Object.isString(options.parameters))
+                               options.parameters = options.parameters.toQueryParams();
+                       else if (Object.isHash(options.parameters))
+                               options.parameters = options.parameters.toObject();
+
+                       options.parameters["csrf_token"] = getInitParam("csrf_token");
+               }
+
+               return callOriginal(options);
+       }
+);
 
 /* add method to remove element from array */
 
@@ -277,12 +296,6 @@ function gotoMain() {
        document.location.href = "index.php";
 }
 
-function gotoExportOpml(filename, settings) {
-    tmp = settings ? 1 : 0;
-       document.location.href = "opml.php?op=Export&filename=" + filename + "&settings=" + tmp;
-}
-
-
 /** * @(#)isNumeric.js * * Copyright (c) 2000 by Sundar Dorai-Raj
   * * @author Sundar Dorai-Raj
   * * Email: sdoraira@vt.edu
@@ -546,6 +559,21 @@ function fatalError(code, msg, ext_info) {
        }
 }
 
+function filterDlgCheckCat(sender) {
+       try {
+               if (sender.checked) {
+                       Element.show('filterDlg_cats');
+                       Element.hide('filterDlg_feeds');
+               } else {
+                       Element.show('filterDlg_feeds');
+                       Element.hide('filterDlg_cats');
+               }
+
+       } catch (e) {
+               exception_error("filterDlgCheckCat", e);
+       }
+}
+
 function filterDlgCheckType(sender) {
 
        try {
@@ -634,15 +662,6 @@ function explainError(code) {
        return displayDlg("explainError", code);
 }
 
-function displayHelpInfobox(topic_id) {
-
-       var url = "backend.php?op=backend&method=help&tid=" + param_escape(topic_id);
-
-       window.open(url, "ttrss_help",
-               "status=0,toolbar=0,location=0,width=450,height=500,scrollbars=1,menubar=0");
-
-}
-
 function loading_set_progress(p) {
        try {
                loading_progress += p;
@@ -776,7 +795,7 @@ function removeFeedIcon(id) {
 
                return false;
        } catch (e) {
-               exception_error("uploadFeedIcon", e);
+               exception_error("removeFeedIcon", e);
        }
 }
 
@@ -950,6 +969,9 @@ function quickAddFilter() {
        try {
                var query = "backend.php?op=dlg&method=quickAddFilter";
 
+               if (dijit.byId("feedEditDlg"))
+                       dijit.byId("feedEditDlg").destroyRecursive();
+
                if (dijit.byId("filterEditDlg"))
                        dijit.byId("filterEditDlg").destroyRecursive();
 
@@ -960,19 +982,39 @@ function quickAddFilter() {
                        test: function() {
                                if (this.validate()) {
 
-                                       if (dijit.byId("filterTestDlg"))
-                                               dijit.byId("filterTestDlg").destroyRecursive();
+                                       var query = "?op=rpc&method=verifyRegexp&reg_exp=" +
+                                               param_escape(dialog.attr('value').reg_exp);
 
-                                       tdialog = new dijit.Dialog({
-                                               id: "filterTestDlg",
-                                               title: __("Filter Test Results"),
-                                               style: "width: 600px",
-                                               href: "backend.php?savemode=test&" +
-                                                       dojo.objectToQuery(dialog.attr('value')),
-                                               });
+                                       notify_progress("Verifying regular expression...");
 
-                                       tdialog.show();
+                                       new Ajax.Request("backend.php", {
+                                               parameters: query,
+                                               onComplete: function(transport) {
+                                                       var reply = JSON.parse(transport.responseText);
+
+                                                       if (reply) {
+                                                               notify('');
 
+                                                               if (!reply['status']) {
+                                                                       alert("Invalid regular expression.");
+                                                                       return;
+                                                               } else {
+
+                                                                       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();
+                                                               }
+                                                       }
+                                       }});
                                }
                        },
                        execute: function() {
@@ -992,7 +1034,7 @@ function quickAddFilter() {
                                                                notify('');
 
                                                                if (!reply['status']) {
-                                                                       alert("Match regular expression seems to be invalid.");
+                                                                       alert("Invalid regular expression.");
                                                                        return;
                                                                } else {
                                                                        notify_progress("Saving data...", true);
@@ -1298,6 +1340,7 @@ function selectTableRows(id, mode) {
                for (var i = 0; i < rows.length; i++) {
                        var row = rows[i];
                        var cb = false;
+                       var dcb = false;
 
                        if (row.id && row.className) {
                                var bare_id = row.id.replace(/^[A-Z]*?-/, "");
@@ -1310,27 +1353,33 @@ function selectTableRows(id, mode) {
                                                        input.id.match(bare_id)) {
 
                                                cb = input;
+                                               dcb = dijit.getEnclosingWidget(cb);
                                                break;
                                        }
                                }
 
-                               if (cb) {
+                               if (cb || dcb) {
                                        var issel = row.hasClassName("Selected");
 
                                        if (mode == "all" && !issel) {
                                                row.addClassName("Selected");
                                                cb.checked = true;
+                                               if (dcb) dcb.set("checked", true);
                                        } else if (mode == "none" && issel) {
                                                row.removeClassName("Selected");
                                                cb.checked = false;
+                                               if (dcb) dcb.set("checked", false);
+
                                        } else if (mode == "invert") {
 
                                                if (issel) {
                                                        row.removeClassName("Selected");
                                                        cb.checked = false;
+                                                       if (dcb) dcb.set("checked", false);
                                                } else {
                                                        row.addClassName("Selected");
                                                        cb.checked = true;
+                                                       if (dcb) dcb.set("checked", true);
                                                }
                                        }
                                }
@@ -1373,6 +1422,9 @@ function editFeed(feed, event) {
 
                console.log(query);
 
+               if (dijit.byId("filterEditDlg"))
+                       dijit.byId("filterEditDlg").destroyRecursive();
+
                if (dijit.byId("feedEditDlg"))
                        dijit.byId("feedEditDlg").destroyRecursive();