summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backend.php19
-rw-r--r--error.php88
-rw-r--r--errors.php25
-rw-r--r--functions.js9
-rw-r--r--functions.php12
-rw-r--r--tt-rss.css26
-rw-r--r--tt-rss.js29
-rw-r--r--tt-rss.php4
8 files changed, 101 insertions, 111 deletions
diff --git a/backend.php b/backend.php
index 5554adae2..df3e7d036 100644
--- a/backend.php
+++ b/backend.php
@@ -20,12 +20,17 @@
require_once "sanity_check.php";
require_once "config.php";
+
+ require_once "db.php";
+ require_once "db-prefs.php";
+ require_once "functions.php";
+ require_once "magpierss/rss_fetch.inc";
$err_msg = check_configuration_variables();
if ($err_msg) {
- print "Fatal error: $err_msg";
- exit;
+ header("Content-Type: application/xml");
+ print_error_xml(9, $err_msg); die;
}
if ((!$op || $op == "rpc" || $op == "globalUpdateFeeds") && !$_REQUEST["noxml"]) {
@@ -35,7 +40,7 @@
if (!$_SESSION["uid"] && $op != "globalUpdateFeeds") {
if ($op == "rpc") {
- print "<error error-code=\"6\"/>";
+ print_error_xml(6); die;
} else {
print "
<html><body>
@@ -54,15 +59,9 @@
}
if (!$op) {
- print "<error error-code=\"7\"/>";
- exit;
+ print_error_xml(7); exit;
}
- require_once "db.php";
- require_once "db-prefs.php";
- require_once "functions.php";
- require_once "magpierss/rss_fetch.inc";
-
$purge_intervals = array(
0 => "Default",
-1 => "Never purge",
diff --git a/error.php b/error.php
deleted file mode 100644
index 8c5a6a4b5..000000000
--- a/error.php
+++ /dev/null
@@ -1,88 +0,0 @@
-<?
- require_once "sanity_check.php";
- require_once "version.php";
- require_once "config.php";
- require_once "db-prefs.php";
-
- $ERRORS[0] = "Unknown error";
-
- $ERRORS[1] = "This program requires XmlHttpRequest " .
- "to function properly. Your browser doesn't seem to support it.";
-
- $ERRORS[2] = "This program requires cookies " .
- "to function properly. Your browser doesn't seem to support them.";
-
- $ERRORS[3] = "Backend sanity check failed.";
-
- $ERRORS[4] = "Frontend sanity check failed.";
-
- $ERRORS[5] = "Incorrect database schema version.";
-
- $ERRORS[6] = "Not authorized.";
-
- if ($_GET["c"] == 6) {
- header("Location: login.php");
- }
-
- $ERRORS[7] = "No operation to perform.";
-
- $ERRORS[8] = "Could not display feed: query failed. Please check label match syntax or local configuration.";
-
- $ERRORS[8] = "Denied. Your access level is insufficient to access this page.";
-?>
-
-<html>
-<head>
- <title>Tiny Tiny RSS : Error Message</title>
-
- <link rel="stylesheet" href="tt-rss.css" type="text/css">
-
- <!--[if gte IE 5.5000]>
- <script type="text/javascript" src="pngfix.js"></script>
- <![endif]-->
-
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-</head>
-
-<table width="100%" height="100%" cellspacing="0" cellpadding="0" class="main">
-<tr>
- <td colspan="2">
- <table cellspacing="0" cellpadding="0" width="100%"><tr>
- <td class="header" valign="middle">
- <img src="images/ttrss_logo.png" alt="logo">
- </td>
- <td align="right" valign="top">
- <div id="notify"><span id="notify_body"></div>
- </td>
- </tr></table>
- </td>
-</tr>
-<tr>
- <td id="prefContent" class="prefContent" valign="top" colspan="2">
-
- <h1>Fatal Error</h1>
-
- <div class="bigErrorMsg"><?= $ERRORS[$_GET["c"]] ?>
-
- <? if ($_GET["p"]) { ?>
- <p><?= htmlspecialchars($_GET["p"]) ?></p>
- <? } ?>
- </div>
-
- </td>
-</tr>
-<tr>
- <td class="footer" colspan="2">
- <a href="http://bah.spb.su/~fox/tt-rss/">Tiny-Tiny RSS</a> v<?= VERSION ?> &copy; 2005 Andrew Dolgov
- <? if (WEB_DEMO_MODE) { ?>
- <br>Running in demo mode, some functionality is disabled.
- <? } ?>
- </td>
-</td>
-</table>
-
-
-
-</body>
-</html>
-
diff --git a/errors.php b/errors.php
new file mode 100644
index 000000000..556af0882
--- /dev/null
+++ b/errors.php
@@ -0,0 +1,25 @@
+<?
+ $ERRORS[0] = "Unknown error";
+
+ $ERRORS[1] = "This program requires XmlHttpRequest " .
+ "to function properly. Your browser doesn't seem to support it.";
+
+ $ERRORS[2] = "This program requires cookies " .
+ "to function properly. Your browser doesn't seem to support them.";
+
+ $ERRORS[3] = "Backend sanity check failed";
+
+ $ERRORS[4] = "Frontend sanity check failed.";
+
+ $ERRORS[5] = "Incorrect database schema version.";
+
+ $ERRORS[6] = "Request not authorized.";
+
+ $ERRORS[7] = "No operation to perform.";
+
+ $ERRORS[8] = "Could not display feed: query failed. Please check label match syntax or local configuration.";
+
+ $ERRORS[8] = "Denied. Your access level is insufficient to access this page.";
+
+ $ERRORS[9] = "Configuration check failed";
+?>
diff --git a/functions.js b/functions.js
index 9858608ca..99efbcbac 100644
--- a/functions.js
+++ b/functions.js
@@ -574,15 +574,6 @@ function hideOrShowFeeds(doc, hide) {
}
-function fatalError(code, params) {
- if (!params) {
- window.location = "error.php?c=" + param_escape(code);
- } else {
- window.location = "error.php?c=" + param_escape(code) +
- "&p=" + param_escape(params);
- }
-}
-
function selectTableRow(r, do_select) {
r.className = r.className.replace("Selected", "");
diff --git a/functions.php b/functions.php
index 14d9fa154..d4feaf5d6 100644
--- a/functions.php
+++ b/functions.php
@@ -9,6 +9,7 @@
require_once 'config.php';
require_once 'db-prefs.php';
require_once 'compat.php';
+ require_once 'errors.php';
require_once 'magpierss/rss_utils.inc';
@@ -1498,4 +1499,15 @@
return $version[1];
}
+ function print_error_xml($code, $add_msg = "") {
+ global $ERRORS;
+
+ $error_msg = $ERRORS[$code];
+
+ if ($add_msg) {
+ $error_msg = "$error_msg; $add_msg";
+ }
+
+ print "<error error-code=\"$code\" error-msg=\"$error_msg\"/>";
+ }
?>
diff --git a/tt-rss.css b/tt-rss.css
index 39d4083f9..be1f5cb88 100644
--- a/tt-rss.css
+++ b/tt-rss.css
@@ -1052,3 +1052,29 @@ div.cdmContent a:hover {
text-align : center;
margin : 10px;
}
+
+#fatal_error {
+ background : white;
+ left : 0;
+ top : 0;
+ height : 100%;
+ width : 100%;
+ z-index : 200;
+ display : none;
+ position : absolute;
+}
+
+#fatal_error_inner {
+ font-weight : bold;
+ margin : 10px;
+ color : red;
+}
+
+#fatal_error_msg {
+ border : 1px solid #c0c0c0;
+ background-color : #f0f0f0;
+ width : 50%;
+ color : black;
+ padding : 10px;
+ font-weight : normal;
+}
diff --git a/tt-rss.js b/tt-rss.js
index 06f9fadc0..6ad0adff7 100644
--- a/tt-rss.js
+++ b/tt-rss.js
@@ -124,7 +124,7 @@ function refetch_callback() {
var error_code = reply.getAttribute("error-code");
if (error_code && error_code != 0) {
- return fatalError(error_code);
+ return fatalError(error_code, reply.getAttribute("error-msg"));
}
var f_document = window.frames["feeds-frame"].document;
@@ -153,21 +153,21 @@ function backend_sanity_check_callback() {
try {
if (!xmlhttp.responseXML) {
- fatalError(3, "D001: " + xmlhttp.responseText);
+ fatalError(3, "[D001, Reply is not XML]: " + xmlhttp.responseText);
return;
}
var reply = xmlhttp.responseXML.firstChild;
if (!reply) {
- fatalError(3, "D002: " + xmlhttp.responseText);
+ fatalError(3, "[D002, Invalid RPC reply]: " + xmlhttp.responseText);
return;
}
var error_code = reply.getAttribute("error-code");
if (error_code && error_code != 0) {
- return fatalError(error_code);
+ return fatalError(error_code, reply.getAttribute("error-msg"));
}
debug("sanity check ok");
@@ -697,3 +697,24 @@ function debug(msg) {
c.innerHTML = "<li>[" + ts + "] " + msg + "</li>" + c.innerHTML;
}
}
+
+function fatalError(code, message) {
+/* if (!params) {
+ window.location = "error.php?c=" + param_escape(code);
+ } else {
+ window.location = "error.php?c=" + param_escape(code) +
+ "&p=" + param_escape(params);
+ } */
+
+ try {
+ var fe = document.getElementById("fatal_error");
+ var fc = document.getElementById("fatal_error_msg");
+
+ fc.innerHTML = "Code " + code + ": " + message;
+
+ fe.style.display = "block";
+
+ } catch (e) {
+ exception_error("fatalError", e);
+ }
+}
diff --git a/tt-rss.php b/tt-rss.php
index 2906241ab..71a866c68 100644
--- a/tt-rss.php
+++ b/tt-rss.php
@@ -62,6 +62,10 @@
<body>
<div id="overlay"><div id="overlay_inner">Loading, please wait...</div></div>
+<div id="fatal_error"><div id="fatal_error_inner">
+ <h1>Fatal Error</h1>
+ <pre id="fatal_error_msg">Unknown Error</pre>
+</div></div>
<script type="text/javascript">
if (document.addEventListener) {