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 */
document.location.href = "prefs.php";
}
-function gotoMain() {
- document.location.href = "index.php";
+function gotoLogout() {
+ document.location.href = "backend.php?op=logout";
}
-function gotoExportOpml(filename, settings) {
- tmp = settings ? 1 : 0;
- document.location.href = "opml.php?op=Export&filename=" + filename + "&settings=" + tmp;
+function gotoMain() {
+ document.location.href = "index.php";
}
-
/** * @(#)isNumeric.js * * Copyright (c) 2000 by Sundar Dorai-Raj
* * @author Sundar Dorai-Raj
* * Email: sdoraira@vt.edu
return toggleSelectRow(sender, row);
}
-function tSR(sender, row) {
- return toggleSelectRow(sender, row);
-}
-
/* this is for dijit Checkbox */
-function toggleSelectRow2(sender, row) {
+function toggleSelectRow2(sender, row, is_cdm) {
- if (!row) row = sender.domNode.parentNode.parentNode;
+ if (!row)
+ if (!is_cdm)
+ row = sender.domNode.parentNode.parentNode;
+ else
+ row = sender.domNode.parentNode.parentNode.parentNode; // oh ffs
if (sender.checked && !row.hasClassName('Selected'))
row.addClassName('Selected');
return String(window.location.href).parseQuery()[param];
}
-function leading_zero(p) {
- var s = String(p);
- if (s.length == 1) s = "0" + s;
- return s;
-}
-
-function make_timestamp() {
- var d = new Date();
-
- return leading_zero(d.getHours()) + ":" + leading_zero(d.getMinutes()) +
- ":" + leading_zero(d.getSeconds());
-}
-
-
function closeInfoBox(cleanup) {
try {
dialog = dijit.byId("infoBox");
}
}
-function filterDlgCheckType(sender) {
+/* function filterDlgCheckType(sender) {
try {
exception_error("filterDlgCheckType", e);
}
-}
+} */
function filterDlgCheckAction(sender) {
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;
return false;
} catch (e) {
- exception_error("uploadFeedIcon", e);
+ exception_error("removeFeedIcon", e);
}
}
try {
var query = "backend.php?op=dlg&method=quickAddFeed";
- if (dijit.byId("feedAddDlg"))
- dijit.byId("feedAddDlg").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: "feedAddDlg",
var feed_url = this.attr('value').feed;
- notify_progress(__("Subscribing to feed..."), true);
+ Element.show("feed_add_spinner");
new Ajax.Request("backend.php", {
parameters: dojo.objectToQuery(this.attr('value')),
var reply = JSON.parse(transport.responseText);
- var rc = parseInt(reply['result']);
+ var rc = reply['result'];
notify('');
+ Element.hide("feed_add_spinner");
console.log("GOT RC: " + rc);
- switch (rc) {
+ switch (parseInt(rc['code'])) {
case 1:
dialog.hide();
notify_info(__("Subscribed to %s").replace("%s", feed_url));
alert(__("Specified URL doesn't seem to contain any feeds."));
break;
case 4:
- notify_progress("Searching for feed urls...", true);
+ /* notify_progress("Searching for feed urls...", true);
new Ajax.Request("backend.php", {
parameters: 'op=rpc&method=extractfeedurls&url=' + param_escape(feed_url),
Effect.Appear('feedDlg_feedsContainer', {duration : 0.5});
}
});
+ break; */
+
+ feeds = rc['feeds'];
+
+ var select = dijit.byId("feedDlg_feedContainerSelect");
+
+ while (select.getOptions().length > 0)
+ select.removeOption(0);
+
+ var count = 0;
+ for (var feedUrl in feeds) {
+ select.addOption({value: feedUrl, label: feeds[feedUrl]});
+ count++;
+ }
+
+ Effect.Appear('feedDlg_feedsContainer', {duration : 0.5});
+
break;
case 5:
- alert(__("Couldn't download the specified URL."));
+ alert(__("Couldn't download the specified URL: %s").
+ replace("%s", rc['message']));
break;
case 0:
alert(__("You are already subscribed to this feed."));
}
}
+function createNewRuleElement(parentNode, replaceNode) {
+ try {
+ var form = document.forms["filter_new_rule_form"];
+
+ form.reg_exp.value = form.reg_exp.value.replace(/(<([^>]+)>)/ig,"");
+
+ var query = "backend.php?op=pref-filters&method=printrulename&rule="+
+ param_escape(dojo.formToJson(form));
+
+ console.log(query);
+
+ new Ajax.Request("backend.php", {
+ parameters: query,
+ onComplete: function (transport) {
+ try {
+ var li = dojo.create("li");
+
+ var cb = dojo.create("input", { type: "checkbox" }, li);
+
+ new dijit.form.CheckBox({
+ onChange: function() {
+ toggleSelectListRow2(this) },
+ }, cb);
+
+ dojo.create("input", { type: "hidden",
+ name: "rule[]",
+ value: dojo.formToJson(form) }, li);
+
+ dojo.create("span", {
+ onclick: function() {
+ dijit.byId('filterEditDlg').editRule(this);
+ },
+ innerHTML: transport.responseText }, li);
+
+ if (replaceNode) {
+ parentNode.replaceChild(li, replaceNode);
+ } else {
+ parentNode.appendChild(li);
+ }
+ } catch (e) {
+ exception_error("createNewRuleElement", e);
+ }
+ } });
+ } catch (e) {
+ exception_error("createNewRuleElement", e);
+ }
+}
+
+function createNewActionElement(parentNode, replaceNode) {
+ try {
+ var form = document.forms["filter_new_action_form"];
+
+ if (form.action_id.value == 7) {
+ form.action_param.value = form.action_param_label.value;
+ }
+
+ var query = "backend.php?op=pref-filters&method=printactionname&action="+
+ param_escape(dojo.formToJson(form));
+
+ console.log(query);
+
+ new Ajax.Request("backend.php", {
+ parameters: query,
+ onComplete: function (transport) {
+ try {
+ var li = dojo.create("li");
+
+ var cb = dojo.create("input", { type: "checkbox" }, li);
+
+ new dijit.form.CheckBox({
+ onChange: function() {
+ toggleSelectListRow2(this) },
+ }, cb);
+
+ dojo.create("input", { type: "hidden",
+ name: "action[]",
+ value: dojo.formToJson(form) }, li);
+
+ dojo.create("span", {
+ onclick: function() {
+ dijit.byId('filterEditDlg').editAction(this);
+ },
+ innerHTML: transport.responseText }, li);
+
+ if (replaceNode) {
+ parentNode.replaceChild(li, replaceNode);
+ } else {
+ parentNode.appendChild(li);
+ }
+
+ } catch (e) {
+ exception_error("createNewActionElement", e);
+ }
+ } });
+ } catch (e) {
+ exception_error("createNewActionElement", e);
+ }
+}
+
+
+function addFilterRule(replaceNode, ruleStr) {
+ try {
+ if (dijit.byId("filterNewRuleDlg"))
+ dijit.byId("filterNewRuleDlg").destroyRecursive();
+
+ var query = "backend.php?op=pref-filters&method=newrule&rule=" +
+ param_escape(ruleStr);
+
+ var rule_dlg = new dijit.Dialog({
+ id: "filterNewRuleDlg",
+ title: ruleStr ? __("Edit rule") : __("Add rule"),
+ style: "width: 600px",
+ execute: function() {
+ if (this.validate()) {
+ createNewRuleElement($("filterDlg_Matches"), replaceNode);
+ this.hide();
+ }
+ },
+ href: query});
+
+ rule_dlg.show();
+ } catch (e) {
+ exception_error("addFilterRule", e);
+ }
+}
+
+function addFilterAction(replaceNode, actionStr) {
+ try {
+ if (dijit.byId("filterNewActionDlg"))
+ dijit.byId("filterNewActionDlg").destroyRecursive();
+
+ var query = "backend.php?op=pref-filters&method=newaction&action=" +
+ param_escape(actionStr);
+
+ var rule_dlg = new dijit.Dialog({
+ id: "filterNewActionDlg",
+ title: actionStr ? __("Edit action") : __("Add action"),
+ style: "width: 600px",
+ execute: function() {
+ if (this.validate()) {
+ createNewActionElement($("filterDlg_Actions"), replaceNode);
+ this.hide();
+ }
+ },
+ href: query});
+
+ rule_dlg.show();
+ } catch (e) {
+ exception_error("addFilterAction", e);
+ }
+}
+
function quickAddFilter() {
try {
- var query = "backend.php?op=dlg&method=quickAddFilter";
+ var query = "";
+ if (!inPreferences()) {
+ query = "backend.php?op=pref-filters&method=newfilter&feed=" +
+ param_escape(getActiveFeedId()) + "&is_cat=" +
+ param_escape(activeFeedIsCat());
+ } else {
+ query = "backend.php?op=pref-filters&method=newfilter";
+ }
+
+ console.log(query);
+
+ if (dijit.byId("feedEditDlg"))
+ dijit.byId("feedEditDlg").destroyRecursive();
if (dijit.byId("filterEditDlg"))
dijit.byId("filterEditDlg").destroyRecursive();
title: __("Create Filter"),
style: "width: 600px",
test: function() {
- if (this.validate()) {
+ var query = "backend.php?" + dojo.formToQuery("filter_new_form") + "&savemode=test";
- if (dijit.byId("filterTestDlg"))
- dijit.byId("filterTestDlg").destroyRecursive();
+ 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')),
- });
+ var test_dlg = new dijit.Dialog({
+ id: "filterTestDlg",
+ title: "Test Filter",
+ style: "width: 600px",
+ href: query});
- tdialog.show();
+ 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);
+ },
+ 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®_exp=" +
- param_escape(dialog.attr('value').reg_exp);
+ var query = dojo.formToQuery("filter_new_form");
- notify_progress("Verifying regular expression...");
+ console.log(query);
- new Ajax.Request("backend.php", {
+ new Ajax.Request("backend.php", {
parameters: query,
- onComplete: function(transport) {
- var reply = JSON.parse(transport.responseText);
+ onComplete: function (transport) {
+ if (inPreferences()) {
+ updateFilterList();
+ }
- if (reply) {
- notify('');
+ dialog.hide();
+ } });
+ }
+ },
+ href: query});
- if (!reply['status']) {
- alert("Match regular expression seems to be invalid.");
- return;
- } else {
- notify_progress("Saving data...", true);
+ if (!inPreferences()) {
+ var lh = dojo.connect(dialog, "onLoad", function(){
+ dojo.disconnect(lh);
- console.log(dojo.objectToQuery(dialog.attr('value')));
+ var title = $("PTITLE-FULL-" + getActiveArticleId());
- new Ajax.Request("backend.php", {
- parameters: dojo.objectToQuery(dialog.attr('value')),
- onComplete: function(transport) {
- dialog.hide();
- notify_info(transport.responseText);
- if (inPreferences()) {
- updateFilterList();
- }
- }});
- }
- }
- }});
+ if (title || getActiveFeedId() || activeFeedIsCat()) {
+ if (title) title = title.innerHTML;
+
+ console.log(title + " " + getActiveFeedId());
+
+ var feed_id = activeFeedIsCat() ? 'CAT:' + parseInt(getActiveFeedId()) :
+ getActiveFeedId();
+
+ var rule = { reg_exp: title, feed_id: feed_id, filter_type: 1 };
+
+ addFilterRule(null, dojo.toJson(rule));
}
- },
- href: query});
+ });
+ }
dialog.show();
+
} catch (e) {
exception_error("quickAddFilter", e);
}
} else {
if (feed_id == getActiveFeedId())
setTimeout("viewfeed(-5)", 100);
+
+ if (feed_id < 0) updateFeedList();
}
} });
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]*?-/, "");
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);
}
}
}
console.log(query);
+ if (dijit.byId("filterEditDlg"))
+ dijit.byId("filterEditDlg").destroyRecursive();
+
if (dijit.byId("feedEditDlg"))
dijit.byId("feedEditDlg").destroyRecursive();
function showFeedsWithErrors() {
try {
- var query = "backend.php?op=dlg&method=feedsWithErrors";
+ var query = "backend.php?op=pref-feeds&method=feedsWithErrors";
if (dijit.byId("errorFeedsDlg"))
dijit.byId("errorFeedsDlg").destroyRecursive();
}
return("");
}
+
+function get_timestamp() {
+ var date = new Date();
+ return Math.round(date.getTime() / 1000);
+}
+
+function helpDialog(topic) {
+ try {
+ var query = "backend.php?op=backend&method=help&topic=" + param_escape(topic);
+
+ if (dijit.byId("helpDlg"))
+ dijit.byId("helpDlg").destroyRecursive();
+
+ dialog = new dijit.Dialog({
+ id: "helpDlg",
+ title: __("Help"),
+ style: "width: 600px",
+ href: query,
+ });
+
+ dialog.show();
+
+ } catch (e) {
+ exception_error("helpDialog", e);
+ }
+}
+