Move loading indicator to the right, add CSS cursor: progress

This commit is contained in:
Jakub Vrana 2012-02-17 12:13:11 -08:00
parent 7e97fcd0b9
commit 70994abcbd
5 changed files with 11 additions and 9 deletions

View file

@ -41,9 +41,10 @@ var noResponse = '<?php echo lang('No response from server.'); ?>';
<body class="<?php echo lang('ltr'); ?> nojs"<?php echo ($_POST ? "" : " onclick=\"return bodyClick(event, '" . h(js_escape(DB) . "', '" . js_escape($_GET["ns"])) . "');\""); // avoid re-post confirmation after refreshing the next page in Google Chrome ?> onkeydown="bodyKeydown(event);" onload="bodyLoad('<?php echo (is_object($connection) ? substr($connection->server_info, 0, 3) : ""); ?>');<?php echo (isset($_COOKIE["adminer_version"]) ? "" : " verifyVersion();"); ?>"> <body class="<?php echo lang('ltr'); ?> nojs"<?php echo ($_POST ? "" : " onclick=\"return bodyClick(event, '" . h(js_escape(DB) . "', '" . js_escape($_GET["ns"])) . "');\""); // avoid re-post confirmation after refreshing the next page in Google Chrome ?> onkeydown="bodyKeydown(event);" onload="bodyLoad('<?php echo (is_object($connection) ? substr($connection->server_info, 0, 3) : ""); ?>');<?php echo (isset($_COOKIE["adminer_version"]) ? "" : " verifyVersion();"); ?>">
<script type="text/javascript"> <script type="text/javascript">
document.body.className = document.body.className.replace(/(^|\s)nojs(\s|$)/, '$1js$2'); document.body.className = document.body.className.replace(/ nojs/, ' js');
</script> </script>
<div id="loader"><img src="../adminer/static/loader.gif" alt=""></div>
<div id="content"> <div id="content">
<?php <?php
} }
@ -73,7 +74,6 @@ document.body.className = document.body.className.replace(/(^|\s)nojs(\s|$)/, '$
echo "$title\n"; echo "$title\n";
} }
} }
echo "<span id='loader'></span>\n";
echo "<h2>$title_all</h2>\n"; echo "<h2>$title_all</h2>\n";
restart_session(); restart_session();
$uri = preg_replace('~^[^?]*~', '', $_SERVER["REQUEST_URI"]); $uri = preg_replace('~^[^?]*~', '', $_SERVER["REQUEST_URI"]);

View file

@ -20,6 +20,8 @@ code { background: #eee; }
tbody tr:hover td, tbody tr:hover th { background: #eee; } tbody tr:hover td, tbody tr:hover th { background: #eee; }
pre { margin: 1em 0 0; } pre { margin: 1em 0 0; }
input[type=image] { vertical-align: middle; } input[type=image] { vertical-align: middle; }
.loading { cursor: progress; }
.loading #loader { display: inline; }
.version { color: #777; font-size: 67%; } .version { color: #777; font-size: 67%; }
.js .hidden, .nojs .jsonly { display: none; } .js .hidden, .nojs .jsonly { display: none; }
.nowrap td, .nowrap th, td.nowrap { white-space: pre; } .nowrap td, .nowrap th, td.nowrap { white-space: pre; }
@ -47,7 +49,7 @@ input[type=image] { vertical-align: middle; }
#content { margin: 2em 0 0 21em; padding: 10px 20px 20px 0; } #content { margin: 2em 0 0 21em; padding: 10px 20px 20px 0; }
#lang { position: absolute; top: 0; left: 0; line-height: 1.8em; padding: .3em 1em; } #lang { position: absolute; top: 0; left: 0; line-height: 1.8em; padding: .3em 1em; }
#breadcrumb { white-space: nowrap; position: absolute; top: 0; left: 21em; background: #eee; height: 2em; line-height: 1.8em; padding: 0 1em; margin: 0 0 0 -18px; } #breadcrumb { white-space: nowrap; position: absolute; top: 0; left: 21em; background: #eee; height: 2em; line-height: 1.8em; padding: 0 1em; margin: 0 0 0 -18px; }
#loader { position: fixed; top: 0; left: 18em; z-index: 1; } #loader { display: none; position: fixed; top: 2px; right: 2px; z-index: 1; }
#h1 { color: #777; text-decoration: none; font-style: italic; } #h1 { color: #777; text-decoration: none; font-style: italic; }
#version { font-size: 67%; color: red; } #version { font-size: 67%; color: red; }
#schema { margin-left: 60px; position: relative; } #schema { margin-left: 60px; position: relative; }

View file

@ -199,7 +199,7 @@ function bodyKeydown(event, button) {
if (ajaxXmlhttp.abort) { if (ajaxXmlhttp.abort) {
ajaxXmlhttp.abort(); ajaxXmlhttp.abort();
} }
setHtml('loader', ''); document.body.className = document.body.className.replace(/ loading/, '');
onblur = function () { }; onblur = function () { };
if (originalFavicon) { if (originalFavicon) {
replaceFavicon(originalFavicon); replaceFavicon(originalFavicon);
@ -334,9 +334,9 @@ function ajaxSend(url, data, popState, noscroll) {
if (!originalFavicon) { if (!originalFavicon) {
originalFavicon = (document.getElementById('favicon') || {}).href; originalFavicon = (document.getElementById('favicon') || {}).href;
} }
replaceFavicon('../adminer/static/loader.gif'); replaceFavicon(document.getElementById('loader').firstChild.src);
}; };
setHtml('loader', '<img src="../adminer/static/loader.gif" alt="">'); document.body.className += ' loading';
ajaxXmlhttp = ajax(url, function (xmlhttp) { ajaxXmlhttp = ajax(url, function (xmlhttp) {
if (!xmlhttp.aborted && currentState == ajaxState) { if (!xmlhttp.aborted && currentState == ajaxState) {
var title = xmlhttp.getResponseHeader('X-AJAX-Title'); var title = xmlhttp.getResponseHeader('X-AJAX-Title');
@ -360,6 +360,7 @@ function ajaxSend(url, data, popState, noscroll) {
scrollTo(0, 0); scrollTo(0, 0);
} }
setHtml('content', (xmlhttp.status ? xmlhttp.responseText : '<p class="error">' + noResponse)); setHtml('content', (xmlhttp.status ? xmlhttp.responseText : '<p class="error">' + noResponse));
document.body.className = document.body.className.replace(/ loading/, '');
var content = document.getElementById('content'); var content = document.getElementById('content');
var scripts = content.getElementsByTagName('script'); var scripts = content.getElementsByTagName('script');
var length = scripts.length; // required to avoid infinite loop var length = scripts.length; // required to avoid infinite loop

View file

@ -6,6 +6,7 @@ SET DEFAULT foreign key action
Trim table and column names (bug #3405309) Trim table and column names (bug #3405309)
Error message with no response from server in AJAX Error message with no response from server in AJAX
Esc to cancel AJAX request Esc to cancel AJAX request
Move AJAX loading indicator to the right
Ability to disable export (customization) Ability to disable export (customization)
MySQL: set autocommit after connect MySQL: set autocommit after connect
PostgreSQL: fix alter foreign key PostgreSQL: fix alter foreign key

View file

@ -272,9 +272,7 @@ foreach (array("adminer", "editor") as $project) {
$file = str_replace('<script type="text/javascript" src="static/editing.js"></script>' . "\n", "", $file); $file = str_replace('<script type="text/javascript" src="static/editing.js"></script>' . "\n", "", $file);
$file = preg_replace_callback("~compile_file\\('([^']+)', '([^']+)'\\);~", 'compile_file', $file); // integrate static files $file = preg_replace_callback("~compile_file\\('([^']+)', '([^']+)'\\);~", 'compile_file', $file); // integrate static files
$replace = 'h(preg_replace("~\\\\\\\\?.*~", "", ME)) . "?file=\\1&amp;version=' . $VERSION; $replace = 'h(preg_replace("~\\\\\\\\?.*~", "", ME)) . "?file=\\1&amp;version=' . $VERSION;
$file = preg_replace("~'\\.\\./adminer/static/(loader\\.gif)~", "location.pathname+'?file=\\1&amp;version=$VERSION", $file); $file = preg_replace('~\\.\\./adminer/static/(default\\.css|functions\\.js|favicon\\.ico|loader\\.gif)~', '<?php echo ' . $replace . '"; ?>', $file);
$file = preg_replace('~\\.\\./adminer/static/(loader\\.gif)~', "'+location.pathname+'?file=\\1&amp;version=$VERSION", $file);
$file = preg_replace('~\\.\\./adminer/static/(default\\.css|functions\\.js|favicon\\.ico)~', '<?php echo ' . $replace . '"; ?>', $file);
$file = preg_replace('~\\.\\./adminer/static/([^\'"]*)~', '" . ' . $replace, $file); $file = preg_replace('~\\.\\./adminer/static/([^\'"]*)~', '" . ' . $replace, $file);
$file = str_replace("'../externals/jush/'", "location.protocol + '//www.adminer.org/static/'", $file); $file = str_replace("'../externals/jush/'", "location.protocol + '//www.adminer.org/static/'", $file);
$file = preg_replace("~<\\?php\\s*\\?>\n?|\\?>\n?<\\?php~", '', $file); $file = preg_replace("~<\\?php\\s*\\?>\n?|\\?>\n?<\\?php~", '', $file);