function page_header($title, $error = "", $breadcrumb = array(), $title2 = "") {
global $LANG, $VERSION, $adminer, $drivers, $jush;
page_headers();
+ if (is_ajax() && $error) {
+ page_messages($error);
+ exit;
+ }
$title_all = $title . ($title2 != "" ? ": $title2" : "");
$title_page = strip_tags($title_all . (SERVER != "" && SERVER != "localhost" ? h(" - " . SERVER) : "") . " - " . $adminer->name());
?>
<body class="<?php echo lang('ltr'); ?> nojs" onkeydown="bodyKeydown(event);" onclick="bodyClick(event);"<?php echo (isset($_COOKIE["adminer_version"]) ? "" : " onload=\"verifyVersion('$VERSION');\""); ?>>
<script type="text/javascript">
document.body.className = document.body.className.replace(/ nojs/, ' js');
+var offlineMessage = '<?php echo js_escape(lang('You are offline.')); ?>';
</script>
<div id="help" class="jush-<?php echo $jush; ?> jsonly hidden" onmouseover="helpOpen = 1;" onmouseout="helpMouseout(this, event);"></div>
}
}
echo "<h2>$title_all</h2>\n";
+ echo "<div id='ajaxstatus' class='jsonly hidden'></div>\n";
restart_session();
page_messages($error);
$databases = &get_session("dbs");
* @param string
* @param function (XMLHttpRequest)
* @param [string]
+* @param [string]
* @return XMLHttpRequest or false in case of an error
*/
-function ajax(url, callback, data) {
+function ajax(url, callback, data, message) {
var request = (window.XMLHttpRequest ? new XMLHttpRequest() : (window.ActiveXObject ? new ActiveXObject('Microsoft.XMLHTTP') : false));
if (request) {
+ var ajaxStatus = document.getElementById('ajaxstatus');
+ if (message) {
+ ajaxStatus.innerHTML = '<div class="message">' + message + '</div>';
+ ajaxStatus.className = ajaxStatus.className.replace(/ hidden/g, '');
+ } else {
+ ajaxStatus.className += ' hidden';
+ }
request.open((data ? 'POST' : 'GET'), url);
if (data) {
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
request.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
request.onreadystatechange = function () {
if (request.readyState == 4) {
- callback(request);
+ if (/^2/.test(request.status)) {
+ callback(request);
+ } else {
+ ajaxStatus.innerHTML = (request.status ? request.responseText : '<div class="error">' + offlineMessage + '</div>');
+ ajaxStatus.className = ajaxStatus.className.replace(/ hidden/g, '');
+ }
}
};
request.send(data);
*/
function ajaxSetHtml(url) {
return ajax(url, function (request) {
- if (request.status) {
- var data = eval('(' + request.responseText + ')');
- for (var key in data) {
- setHtml(key, data[key]);
- }
+ var data = eval('(' + request.responseText + ')');
+ for (var key in data) {
+ setHtml(key, data[key]);
}
});
}
}
data = data.join('&');
- setHtml('message', '<div class="message">' + message + '</div>');
var url = form.action;
if (!/post/i.test(form.method)) {
url = url.replace(/\?.*/, '') + '?' + data;
data = '';
}
return ajax(url, function (request) {
- setHtml('message', request.responseText);
+ setHtml('ajaxstatus', request.responseText);
if (window.jush) {
- jush.highlight_tag(document.getElementById('message').getElementsByTagName('code'), 0);
+ jush.highlight_tag(document.getElementById('ajaxstatus').getElementsByTagName('code'), 0);
}
- }, data);
+ }, data, message);
}
input.focus();
if (text == 2) { // long text
return ajax(location.href + '&' + encodeURIComponent(td.id) + '=', function (request) {
- if (request.status && request.responseText) {
+ if (request.responseText) {
input.value = request.responseText;
input.name = td.id;
}