refactor error reporting to AppBase; keep exception_error() for now as a shim
This commit is contained in:
parent
a049b5bd88
commit
71fc6d45bd
|
@ -42,41 +42,26 @@ require(['dojo/parser', "dojo/ready", 'dijit/form/Button','dijit/form/CheckBox',
|
||||||
});
|
});
|
||||||
|
|
||||||
function fetchProfiles() {
|
function fetchProfiles() {
|
||||||
try {
|
const query = "op=getProfiles&login=" + encodeURIComponent(document.forms["loginForm"].login.value);
|
||||||
var query = "op=getProfiles&login=" + encodeURIComponent(document.forms["loginForm"].login.value);
|
|
||||||
|
|
||||||
if (query) {
|
new Ajax.Request("public.php", {
|
||||||
new Ajax.Request("public.php", {
|
parameters: query,
|
||||||
parameters: query,
|
onComplete: function(transport) {
|
||||||
onComplete: function(transport) {
|
if (transport.responseText.match("select")) {
|
||||||
if (transport.responseText.match("select")) {
|
$('profile_box').innerHTML = transport.responseText;
|
||||||
$('profile_box').innerHTML = transport.responseText;
|
//dojo.parser.parse('profile_box');
|
||||||
//dojo.parser.parse('profile_box');
|
}
|
||||||
}
|
} });
|
||||||
} });
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (e) {
|
|
||||||
exception_error("fetchProfiles", e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function gotoRegForm() {
|
function gotoRegForm() {
|
||||||
window.location.href = "register.php";
|
window.location.href = "register.php";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function bwLimitChange(elem) {
|
function bwLimitChange(elem) {
|
||||||
try {
|
Cookie.set("ttrss_bwlimit", elem.checked,
|
||||||
var limit_set = elem.checked;
|
<?php print SESSION_COOKIE_LIFETIME ?>);
|
||||||
|
|
||||||
setCookie("ttrss_bwlimit", limit_set,
|
|
||||||
<?php print SESSION_COOKIE_LIFETIME ?>);
|
|
||||||
|
|
||||||
} catch (e) {
|
|
||||||
exception_error("bwLimitChange", e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -139,7 +124,7 @@ function bwLimitChange(elem) {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div dojoType="dijit.Tooltip" connectId="bw_limit_label" position="below" style="display:none">
|
<div dojoType="dijit.Tooltip" connectId="bw_limit_label" position="below" style="display:none">
|
||||||
<?php echo __("Does not display images in articles, reduces automatic refreshes."); ?>
|
<?php echo __("Does not display images in articles, reduces automatic refreshes."); ?>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?php if (SESSION_COOKIE_LIFETIME > 0) { ?>
|
<?php if (SESSION_COOKIE_LIFETIME > 0) { ?>
|
||||||
|
|
|
@ -7,15 +7,15 @@ define(["dojo/_base/declare"], function (declare) {
|
||||||
hotkey_prefix: 0,
|
hotkey_prefix: 0,
|
||||||
hotkey_prefix_pressed: false,
|
hotkey_prefix_pressed: false,
|
||||||
hotkey_prefix_timeout: 0,
|
hotkey_prefix_timeout: 0,
|
||||||
|
constructor: function() {
|
||||||
|
window.onerror = this.Error.onWindowError;
|
||||||
|
},
|
||||||
getInitParam: function(k) {
|
getInitParam: function(k) {
|
||||||
return this._initParams[k];
|
return this._initParams[k];
|
||||||
},
|
},
|
||||||
setInitParam: function(k, v) {
|
setInitParam: function(k, v) {
|
||||||
this._initParams[k] = v;
|
this._initParams[k] = v;
|
||||||
},
|
},
|
||||||
constructor: function(args) {
|
|
||||||
//
|
|
||||||
},
|
|
||||||
enableCsrfSupport: function() {
|
enableCsrfSupport: function() {
|
||||||
Ajax.Base.prototype.initialize = Ajax.Base.prototype.initialize.wrap(
|
Ajax.Base.prototype.initialize = Ajax.Base.prototype.initialize.wrap(
|
||||||
function (callOriginal, options) {
|
function (callOriginal, options) {
|
||||||
|
@ -176,7 +176,7 @@ define(["dojo/_base/declare"], function (declare) {
|
||||||
|
|
||||||
if (callback) callback(transport);
|
if (callback) callback(transport);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
exception_error(e);
|
this.Error.report(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -355,5 +355,67 @@ define(["dojo/_base/declare"], function (declare) {
|
||||||
explainError: function(code) {
|
explainError: function(code) {
|
||||||
return this.displayDlg(__("Error explained"), "explainError", code);
|
return this.displayDlg(__("Error explained"), "explainError", code);
|
||||||
},
|
},
|
||||||
|
Error: {
|
||||||
|
report: function(error, params) {
|
||||||
|
params = params || {};
|
||||||
|
|
||||||
|
if (!error) return;
|
||||||
|
|
||||||
|
console.error("[Error.report]", error, params);
|
||||||
|
|
||||||
|
const message = params.message ? params.message : error.toString();
|
||||||
|
|
||||||
|
try {
|
||||||
|
xhrPost("backend.php",
|
||||||
|
{op: "rpc", method: "log",
|
||||||
|
file: params.filename ? params.filename : error.fileName,
|
||||||
|
line: params.lineno ? params.lineno : error.lineNumber,
|
||||||
|
msg: message,
|
||||||
|
context: error.stack},
|
||||||
|
(transport) => {
|
||||||
|
console.warn("[Error.report] log response", transport.responseText);
|
||||||
|
});
|
||||||
|
} catch (re) {
|
||||||
|
console.error("[Error.report] exception while saving logging error on server", re);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (dijit.byId("exceptionDlg"))
|
||||||
|
dijit.byId("exceptionDlg").destroyRecursive();
|
||||||
|
|
||||||
|
let content = "<div class='fatalError'><p>" + message + "</p>";
|
||||||
|
|
||||||
|
if (error.stack)
|
||||||
|
content += "<div><b>Stack trace:</b></div>" +
|
||||||
|
"<textarea name=\"stack\" readonly=\"1\">" + error.stack + "</textarea>";
|
||||||
|
|
||||||
|
content += "<div style='text-align : center'>";
|
||||||
|
|
||||||
|
content += "<button dojoType=\"dijit.form.Button\" " +
|
||||||
|
"onclick=\"dijit.byId('exceptionDlg').hide()\">" +
|
||||||
|
__('Close this window') + "</button>";
|
||||||
|
content += "</div>";
|
||||||
|
|
||||||
|
const dialog = new dijit.Dialog({
|
||||||
|
id: "exceptionDlg",
|
||||||
|
title: "Unhandled exception",
|
||||||
|
style: "width: 600px",
|
||||||
|
content: content
|
||||||
|
});
|
||||||
|
|
||||||
|
dialog.show();
|
||||||
|
} catch (de) {
|
||||||
|
console.error("[Error.report] exception while showing error dialog", de);
|
||||||
|
|
||||||
|
alert(error.stack ? error.stack : message);
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
onWindowError: function (message, filename, lineno, colno, error) {
|
||||||
|
// called without context (this) from window.onerror
|
||||||
|
App.Error.report(error,
|
||||||
|
{message: message, filename: filename, lineno: lineno, colno: colno});
|
||||||
|
},
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -168,7 +168,7 @@ define(["dojo/_base/declare"], function (declare) {
|
||||||
Notify.close();
|
Notify.close();
|
||||||
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
exception_error(e);
|
App.Error.report(e);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -206,7 +206,7 @@ define(["dojo/_base/declare"], function (declare) {
|
||||||
if (tooltip) tooltip.attr('label', data.content_full);
|
if (tooltip) tooltip.attr('label', data.content_full);
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
exception_error(e);
|
App.Error.report(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -152,7 +152,7 @@ define(["dojo/_base/declare"], function (declare) {
|
||||||
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(transport.responseText);
|
console.error(transport.responseText);
|
||||||
exception_error(e);
|
App.Error.report(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,7 +67,7 @@ define(["dojo/_base/declare"], function (declare) {
|
||||||
parentNode.appendChild(li);
|
parentNode.appendChild(li);
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
exception_error(e);
|
App.Error.report(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -117,7 +117,7 @@ define(["dojo/_base/declare"], function (declare) {
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
exception_error(e);
|
App.Error.report(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -238,7 +238,7 @@ define(["dojo/_base/declare"], function (declare) {
|
||||||
console.log("getTestResults: dialog closed, bailing out.");
|
console.log("getTestResults: dialog closed, bailing out.");
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
exception_error(e);
|
App.Error.report(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
|
@ -207,7 +207,7 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dijit/Tree", "dijit/Menu"],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
exception_error(e);
|
App.Error.report(e);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
findNodeParentsAndExpandThem: function(feed, is_cat, root, parents) {
|
findNodeParentsAndExpandThem: function(feed, is_cat, root, parents) {
|
||||||
|
@ -242,7 +242,7 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dijit/Tree", "dijit/Menu"],
|
||||||
this.expandParentNodes(feed, is_cat, parents.slice(0));
|
this.expandParentNodes(feed, is_cat, parents.slice(0));
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
exception_error(e);
|
App.Error.report(e);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
selectFeed: function(feed, is_cat) {
|
selectFeed: function(feed, is_cat) {
|
||||||
|
|
|
@ -198,13 +198,13 @@ define(["dojo/_base/declare"], function (declare) {
|
||||||
Feeds.init();
|
Feeds.init();
|
||||||
App.setLoadingProgress(25);
|
App.setLoadingProgress(25);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
exception_error(e);
|
App.Error.report(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
tree.startup();
|
tree.startup();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
exception_error(e);
|
App.Error.report(e);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
init: function() {
|
init: function() {
|
||||||
|
@ -380,7 +380,7 @@ define(["dojo/_base/declare"], function (declare) {
|
||||||
Headlines.onLoaded(transport, offset);
|
Headlines.onLoaded(transport, offset);
|
||||||
PluginHost.run(PluginHost.HOOK_FEED_LOADED, [feed, is_cat]);
|
PluginHost.run(PluginHost.HOOK_FEED_LOADED, [feed, is_cat]);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
exception_error(e);
|
App.Error.report(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
75
js/common.js
75
js/common.js
|
@ -4,6 +4,16 @@
|
||||||
let _label_base_index = -1024;
|
let _label_base_index = -1024;
|
||||||
let loading_progress = 0;
|
let loading_progress = 0;
|
||||||
|
|
||||||
|
/* error reporting shim */
|
||||||
|
|
||||||
|
// TODO: deprecated; remove
|
||||||
|
function exception_error(e, e_compat, filename, lineno, colno) {
|
||||||
|
if (typeof e == "string")
|
||||||
|
e = e_compat;
|
||||||
|
|
||||||
|
App.Error.report(e, {filename: filename, lineno: lineno, colno: colno});
|
||||||
|
}
|
||||||
|
|
||||||
/* xhr shorthand helpers */
|
/* xhr shorthand helpers */
|
||||||
|
|
||||||
function xhrPost(url, params, complete) {
|
function xhrPost(url, params, complete) {
|
||||||
|
@ -118,71 +128,6 @@ const Cookie = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/* error reporting */
|
|
||||||
|
|
||||||
function report_error(message, filename, lineno, colno, error) {
|
|
||||||
exception_error(error, null, filename, lineno);
|
|
||||||
}
|
|
||||||
|
|
||||||
function exception_error(e, e_compat, filename, lineno, colno) {
|
|
||||||
if (typeof e == "string") e = e_compat;
|
|
||||||
|
|
||||||
if (!e) return; // no exception object, nothing to report.
|
|
||||||
|
|
||||||
try {
|
|
||||||
console.error(e);
|
|
||||||
const msg = e.toString();
|
|
||||||
|
|
||||||
try {
|
|
||||||
xhrPost("backend.php",
|
|
||||||
{op: "rpc", method: "log",
|
|
||||||
file: e.fileName ? e.fileName : filename,
|
|
||||||
line: e.lineNumber ? e.lineNumber : lineno,
|
|
||||||
msg: msg, context: e.stack},
|
|
||||||
(transport) => {
|
|
||||||
console.warn(transport.responseText);
|
|
||||||
});
|
|
||||||
|
|
||||||
} catch (e) {
|
|
||||||
console.error("Exception while trying to log the error.", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
let content = "<div class='fatalError'><p>" + msg + "</p>";
|
|
||||||
|
|
||||||
if (e.stack) {
|
|
||||||
content += "<div><b>Stack trace:</b></div>" +
|
|
||||||
"<textarea name=\"stack\" readonly=\"1\">" + e.stack + "</textarea>";
|
|
||||||
}
|
|
||||||
|
|
||||||
content += "</div>";
|
|
||||||
|
|
||||||
content += "<div class='dlgButtons'>";
|
|
||||||
|
|
||||||
content += "<button dojoType=\"dijit.form.Button\" "+
|
|
||||||
"onclick=\"dijit.byId('exceptionDlg').hide()\">" +
|
|
||||||
__('Close') + "</button>";
|
|
||||||
content += "</div>";
|
|
||||||
|
|
||||||
if (dijit.byId("exceptionDlg"))
|
|
||||||
dijit.byId("exceptionDlg").destroyRecursive();
|
|
||||||
|
|
||||||
const dialog = new dijit.Dialog({
|
|
||||||
id: "exceptionDlg",
|
|
||||||
title: "Unhandled exception",
|
|
||||||
style: "width: 600px",
|
|
||||||
content: content});
|
|
||||||
|
|
||||||
dialog.show();
|
|
||||||
|
|
||||||
} catch (ei) {
|
|
||||||
console.error("Exception while trying to report an exception:", ei);
|
|
||||||
console.error("Original exception:", e);
|
|
||||||
|
|
||||||
alert("Exception occured while trying to report an exception.\n" +
|
|
||||||
ei.stack + "\n\nOriginal exception:\n" + e.stack);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* runtime notifications */
|
/* runtime notifications */
|
||||||
|
|
||||||
const Notify = {
|
const Notify = {
|
||||||
|
|
|
@ -58,10 +58,6 @@ require(["dojo/_base/kernel",
|
||||||
try {
|
try {
|
||||||
const _App = declare("fox.App", AppBase, {
|
const _App = declare("fox.App", AppBase, {
|
||||||
constructor: function() {
|
constructor: function() {
|
||||||
window.onerror = function (message, filename, lineno, colno, error) {
|
|
||||||
report_error(message, filename, lineno, colno, error);
|
|
||||||
};
|
|
||||||
|
|
||||||
parser.parse();
|
parser.parse();
|
||||||
|
|
||||||
this.setLoadingProgress(50);
|
this.setLoadingProgress(50);
|
||||||
|
@ -73,7 +69,7 @@ require(["dojo/_base/kernel",
|
||||||
try {
|
try {
|
||||||
this.backendSanityCallback(transport);
|
this.backendSanityCallback(transport);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
exception_error(e);
|
this.Error.report(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -149,7 +145,7 @@ require(["dojo/_base/kernel",
|
||||||
App = new _App();
|
App = new _App();
|
||||||
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
exception_error(e);
|
this.Error.report(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
|
@ -65,10 +65,6 @@ require(["dojo/_base/kernel",
|
||||||
_widescreen_mode: false,
|
_widescreen_mode: false,
|
||||||
hotkey_actions: {},
|
hotkey_actions: {},
|
||||||
constructor: function () {
|
constructor: function () {
|
||||||
window.onerror = function (message, filename, lineno, colno, error) {
|
|
||||||
report_error(message, filename, lineno, colno, error);
|
|
||||||
};
|
|
||||||
|
|
||||||
parser.parse();
|
parser.parse();
|
||||||
|
|
||||||
this.setLoadingProgress(30);
|
this.setLoadingProgress(30);
|
||||||
|
@ -91,7 +87,7 @@ require(["dojo/_base/kernel",
|
||||||
try {
|
try {
|
||||||
App.backendSanityCallback(transport);
|
App.backendSanityCallback(transport);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
exception_error(e);
|
App.Error.report(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -555,7 +551,7 @@ require(["dojo/_base/kernel",
|
||||||
|
|
||||||
App = new _App();
|
App = new _App();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
exception_error(e);
|
App.Error.report(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,60 +1,56 @@
|
||||||
function embedOriginalArticle(id) {
|
function embedOriginalArticle(id) {
|
||||||
try {
|
const hasSandbox = "sandbox" in document.createElement("iframe");
|
||||||
const hasSandbox = "sandbox" in document.createElement("iframe");
|
|
||||||
|
if (!hasSandbox) {
|
||||||
|
alert(__("Sorry, your browser does not support sandboxed iframes."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let c = false;
|
||||||
|
|
||||||
|
if (App.isCombinedMode()) {
|
||||||
|
c = $$("div#RROW-" + id + " div[class=content-inner]")[0];
|
||||||
|
} else if (id == Article.getActive()) {
|
||||||
|
c = $$(".post .content")[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (c) {
|
||||||
|
const iframe = c.parentNode.getElementsByClassName("embeddedContent")[0];
|
||||||
|
|
||||||
|
if (iframe) {
|
||||||
|
Element.show(c);
|
||||||
|
c.parentNode.removeChild(iframe);
|
||||||
|
|
||||||
|
if (App.isCombinedMode()) {
|
||||||
|
Article.cdmScrollToId(id, true);
|
||||||
|
}
|
||||||
|
|
||||||
if (!hasSandbox) {
|
|
||||||
alert(__("Sorry, your browser does not support sandboxed iframes."));
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let c = false;
|
const query = { op: "pluginhandler", plugin: "embed_original", method: "getUrl", id: id };
|
||||||
|
|
||||||
if (App.isCombinedMode()) {
|
xhrJson("backend.php", query, (reply) => {
|
||||||
c = $$("div#RROW-" + id + " div[class=content-inner]")[0];
|
if (reply) {
|
||||||
} else if (id == Article.getActive()) {
|
const iframe = new Element("iframe", {
|
||||||
c = $$(".post .content")[0];
|
class: "embeddedContent",
|
||||||
}
|
src: reply.url,
|
||||||
|
width: (c.parentNode.offsetWidth - 5) + 'px',
|
||||||
|
height: (c.parentNode.parentNode.offsetHeight - c.parentNode.firstChild.offsetHeight - 5) + 'px',
|
||||||
|
style: "overflow: auto; border: none; min-height: " + (document.body.clientHeight / 2) + "px;",
|
||||||
|
sandbox: 'allow-scripts',
|
||||||
|
});
|
||||||
|
|
||||||
if (c) {
|
if (c) {
|
||||||
const iframe = c.parentNode.getElementsByClassName("embeddedContent")[0];
|
Element.hide(c);
|
||||||
|
c.parentNode.insertBefore(iframe, c);
|
||||||
if (iframe) {
|
|
||||||
Element.show(c);
|
|
||||||
c.parentNode.removeChild(iframe);
|
|
||||||
|
|
||||||
if (App.isCombinedMode()) {
|
if (App.isCombinedMode()) {
|
||||||
Article.cdmScrollToId(id, true);
|
Article.cdmScrollToId(id, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
const query = { op: "pluginhandler", plugin: "embed_original", method: "getUrl", id: id };
|
|
||||||
|
|
||||||
xhrJson("backend.php", query, (reply) => {
|
|
||||||
if (reply) {
|
|
||||||
const iframe = new Element("iframe", {
|
|
||||||
class: "embeddedContent",
|
|
||||||
src: reply.url,
|
|
||||||
width: (c.parentNode.offsetWidth - 5) + 'px',
|
|
||||||
height: (c.parentNode.parentNode.offsetHeight - c.parentNode.firstChild.offsetHeight - 5) + 'px',
|
|
||||||
style: "overflow: auto; border: none; min-height: " + (document.body.clientHeight / 2) + "px;",
|
|
||||||
sandbox: 'allow-scripts',
|
|
||||||
});
|
|
||||||
|
|
||||||
if (c) {
|
|
||||||
Element.hide(c);
|
|
||||||
c.parentNode.insertBefore(iframe, c);
|
|
||||||
|
|
||||||
if (App.isCombinedMode()) {
|
|
||||||
Article.cdmScrollToId(id, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
} catch (e) {
|
|
||||||
exception_error("embedOriginalArticle", e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,7 +50,7 @@ function exportData() {
|
||||||
"Error occured, could not export data.";
|
"Error occured, could not export data.";
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
exception_error("exportData", e, transport.responseText);
|
App.Error.report(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
Notify.close();
|
Notify.close();
|
||||||
|
@ -71,7 +71,7 @@ function exportData() {
|
||||||
|
|
||||||
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
exception_error("exportData", e);
|
App.Error.report(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,7 +100,7 @@ function dataImportComplete(iframe) {
|
||||||
dialog.show();
|
dialog.show();
|
||||||
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
exception_error("dataImportComplete", e);
|
App.Error.report(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,57 +1,52 @@
|
||||||
function emailArticle(id) {
|
function emailArticle(id) {
|
||||||
try {
|
if (!id) {
|
||||||
if (!id) {
|
let ids = Headlines.getSelected();
|
||||||
var ids = Headlines.getSelected();
|
|
||||||
|
|
||||||
if (ids.length == 0) {
|
if (ids.length == 0) {
|
||||||
alert(__("No articles selected."));
|
alert(__("No articles selected."));
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
id = ids.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dijit.byId("emailArticleDlg"))
|
id = ids.toString();
|
||||||
dijit.byId("emailArticleDlg").destroyRecursive();
|
|
||||||
|
|
||||||
var query = "backend.php?op=pluginhandler&plugin=mail&method=emailArticle¶m=" + encodeURIComponent(id);
|
|
||||||
|
|
||||||
dialog = new dijit.Dialog({
|
|
||||||
id: "emailArticleDlg",
|
|
||||||
title: __("Forward article by email"),
|
|
||||||
style: "width: 600px",
|
|
||||||
execute: function() {
|
|
||||||
if (this.validate()) {
|
|
||||||
xhrJson("backend.php", this.attr('value'), (reply) => {
|
|
||||||
if (reply) {
|
|
||||||
const error = reply['error'];
|
|
||||||
|
|
||||||
if (error) {
|
|
||||||
alert(__('Error sending email:') + ' ' + error);
|
|
||||||
} else {
|
|
||||||
Notify.info('Your message has been sent.');
|
|
||||||
dialog.hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
|
||||||
href: query});
|
|
||||||
|
|
||||||
/* var tmph = dojo.connect(dialog, 'onLoad', function() {
|
|
||||||
dojo.disconnect(tmph);
|
|
||||||
|
|
||||||
new Ajax.Autocompleter('emailArticleDlg_destination', 'emailArticleDlg_dst_choices',
|
|
||||||
"backend.php?op=pluginhandler&plugin=mail&method=completeEmails",
|
|
||||||
{ tokens: '', paramName: "search" });
|
|
||||||
}); */
|
|
||||||
|
|
||||||
dialog.show();
|
|
||||||
|
|
||||||
} catch (e) {
|
|
||||||
exception_error("emailArticle", e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (dijit.byId("emailArticleDlg"))
|
||||||
|
dijit.byId("emailArticleDlg").destroyRecursive();
|
||||||
|
|
||||||
|
const query = "backend.php?op=pluginhandler&plugin=mail&method=emailArticle¶m=" + encodeURIComponent(id);
|
||||||
|
|
||||||
|
const dialog = new dijit.Dialog({
|
||||||
|
id: "emailArticleDlg",
|
||||||
|
title: __("Forward article by email"),
|
||||||
|
style: "width: 600px",
|
||||||
|
execute: function() {
|
||||||
|
if (this.validate()) {
|
||||||
|
xhrJson("backend.php", this.attr('value'), (reply) => {
|
||||||
|
if (reply) {
|
||||||
|
const error = reply['error'];
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
alert(__('Error sending email:') + ' ' + error);
|
||||||
|
} else {
|
||||||
|
Notify.info('Your message has been sent.');
|
||||||
|
dialog.hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
href: query});
|
||||||
|
|
||||||
|
/* var tmph = dojo.connect(dialog, 'onLoad', function() {
|
||||||
|
dojo.disconnect(tmph);
|
||||||
|
|
||||||
|
new Ajax.Autocompleter('emailArticleDlg_destination', 'emailArticleDlg_dst_choices',
|
||||||
|
"backend.php?op=pluginhandler&plugin=mail&method=completeEmails",
|
||||||
|
{ tokens: '', paramName: "search" });
|
||||||
|
}); */
|
||||||
|
|
||||||
|
dialog.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,32 +1,27 @@
|
||||||
function mailtoArticle(id) {
|
function mailtoArticle(id) {
|
||||||
try {
|
if (!id) {
|
||||||
if (!id) {
|
const ids = Headlines.getSelected();
|
||||||
const ids = Headlines.getSelected();
|
|
||||||
|
|
||||||
if (ids.length == 0) {
|
if (ids.length == 0) {
|
||||||
alert(__("No articles selected."));
|
alert(__("No articles selected."));
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
id = ids.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dijit.byId("emailArticleDlg"))
|
id = ids.toString();
|
||||||
dijit.byId("emailArticleDlg").destroyRecursive();
|
|
||||||
|
|
||||||
const query = "backend.php?op=pluginhandler&plugin=mailto&method=emailArticle¶m=" + encodeURIComponent(id);
|
|
||||||
|
|
||||||
dialog = new dijit.Dialog({
|
|
||||||
id: "emailArticleDlg",
|
|
||||||
title: __("Forward article by email"),
|
|
||||||
style: "width: 600px",
|
|
||||||
href: query});
|
|
||||||
|
|
||||||
dialog.show();
|
|
||||||
|
|
||||||
} catch (e) {
|
|
||||||
exception_error("emailArticle", e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (dijit.byId("emailArticleDlg"))
|
||||||
|
dijit.byId("emailArticleDlg").destroyRecursive();
|
||||||
|
|
||||||
|
const query = "backend.php?op=pluginhandler&plugin=mailto&method=emailArticle¶m=" + encodeURIComponent(id);
|
||||||
|
|
||||||
|
const dialog = new dijit.Dialog({
|
||||||
|
id: "emailArticleDlg",
|
||||||
|
title: __("Forward article by email"),
|
||||||
|
style: "width: 600px",
|
||||||
|
href: query});
|
||||||
|
|
||||||
|
dialog.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,7 @@
|
||||||
function nsfwShow(elem) {
|
function nsfwShow(elem) {
|
||||||
try {
|
let content = elem.parentNode.getElementsBySelector("div.nswf.content")[0];
|
||||||
content = elem.parentNode.getElementsBySelector("div.nswf.content")[0];
|
|
||||||
|
|
||||||
if (content) {
|
if (content) {
|
||||||
Element.toggle(content);
|
Element.toggle(content);
|
||||||
}
|
|
||||||
|
|
||||||
} catch (e) {
|
|
||||||
exception_error("nswfSHow", e);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,29 +1,20 @@
|
||||||
var _shorten_expanded_threshold = 1.5; //window heights
|
var _shorten_expanded_threshold = 1.5; //window heights
|
||||||
|
|
||||||
function expandSizeWrapper(id) {
|
function expandSizeWrapper(id) {
|
||||||
try {
|
const row = $(id);
|
||||||
const row = $(id);
|
|
||||||
|
|
||||||
console.log(row);
|
if (row) {
|
||||||
|
const content = row.select(".contentSizeWrapper")[0];
|
||||||
|
const link = row.select(".expandPrompt")[0];
|
||||||
|
|
||||||
if (row) {
|
if (content) content.removeClassName("contentSizeWrapper");
|
||||||
const content = row.select(".contentSizeWrapper")[0];
|
if (link) Element.hide(link);
|
||||||
const link = row.select(".expandPrompt")[0];
|
|
||||||
|
|
||||||
if (content) content.removeClassName("contentSizeWrapper");
|
|
||||||
if (link) Element.hide(link);
|
|
||||||
|
|
||||||
}
|
|
||||||
} catch (e) {
|
|
||||||
exception_error("expandSizeWrapper", e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
require(['dojo/_base/kernel', 'dojo/ready'], function (dojo, ready) {
|
require(['dojo/_base/kernel', 'dojo/ready'], function (dojo, ready) {
|
||||||
|
|
||||||
ready(function() {
|
ready(function() {
|
||||||
PluginHost.register(PluginHost.HOOK_ARTICLE_RENDERED_CDM, function(row) {
|
PluginHost.register(PluginHost.HOOK_ARTICLE_RENDERED_CDM, function(row) {
|
||||||
window.setTimeout(function() {
|
window.setTimeout(function() {
|
||||||
|
@ -48,5 +39,4 @@ require(['dojo/_base/kernel', 'dojo/ready'], function (dojo, ready) {
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
|
@ -135,13 +135,13 @@
|
||||||
f.sub_btn.disabled = true;
|
f.sub_btn.disabled = true;
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
exception_error("checkUsername_callback", e);
|
App.Error.report(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
} });
|
} });
|
||||||
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
exception_error("checkUsername", e);
|
App.Error.report(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -171,7 +171,7 @@
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
exception_error("validateRegForm", e);
|
alert(e.stack);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue