if (strlen(DB)) {
echo "<input type='submit' name='drop' value='" . lang('Drop') . "'$confirm>\n";
} elseif (!$_POST["add_x"]) {
- echo "<input type='image' name='add' src='../adminer/plus.gif' alt='+' title='" . lang('Add next') . "'>\n";
+ echo "<input type='image' name='add' src='../adminer/static/plus.gif' alt='+' title='" . lang('Add next') . "'>\n";
}
?>
</form>
+++ /dev/null
-body { color: #000; background: #fff; font: 90%/1.25 Verdana, Arial, Helvetica, sans-serif; margin: 0; }
-a { color: blue; }
-a:visited { color: navy; }
-a:hover { color: red; }
-h1 { font-size: 150%; margin: 0; padding: .8em 1em; border-bottom: 1px solid #999; font-weight: normal; color: #777; background: #eee; }
-h2 { font-size: 150%; margin: 0 0 20px -18px; padding: .8em 1em; border-bottom: 1px solid #000; color: #000; font-weight: normal; background: #ddf; }
-h3 { font-weight: normal; font-size: 130%; margin: .8em 0; }
-form { margin: 0; }
-table { margin: 0 20px .8em 0; border: 0; border-top: 1px solid #999; border-left: 1px solid #999; font-size: 90%; }
-td, th { margin-bottom: 1em; border: 0; border-right: 1px solid #999; border-bottom: 1px solid #999; padding: .2em .3em; }
-th { background: #eee; text-align: left; }
-thead th { text-align: center; }
-thead td, thead th { background: #ddf; }
-fieldset { display: inline; vertical-align: top; padding: .5em .8em; margin: 0 .5em .5em 0; border: 1px solid #999; }
-p { margin: 0 20px 1em 0; }
-img { vertical-align: middle; border: 0; }
-code { background: #eee; }
-tr:hover td, tr:hover th { background: #ddf; }
-.version { color: #777; font-size: 67%; }
-.js .hidden { display: none; }
-.nowrap { white-space: nowrap; }
-.wrap { white-space: normal; }
-.error { color: red; background: #fee; }
-.message { color: green; background: #efe; }
-.error, .message { padding: .5em .8em; margin: 0 20px 1em 0; }
-.char { color: #007F00; }
-.date { color: #7F007F; }
-.enum { color: #007F7F; }
-.binary { color: red; }
-.odd td { background: #F5F5F5; }
-.time { color: silver; font-size: 70%; float: right; margin-top: -3em; }
-.function { text-align: right; }
-.type { width: 15ex; width: auto\9; }
-#menu { position: absolute; margin: 10px 0 0; padding: 0 0 30px 0; top: 2em; left: 0; width: 19em; overflow: auto; overflow-y: hidden; white-space: nowrap; }
-#menu p { padding: .8em 1em; margin: 0; border-bottom: 1px solid #ccc; }
-#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; }
-#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; }
-#h1 { color: #777; text-decoration: none; font-style: italic; }
-#version { font-size: 67%; color: red; }
-#schema { margin-left: 60px; position: relative; }
-#schema .table { border: 1px solid silver; padding: 0 2px; cursor: move; position: absolute; }
-#schema .references { position: absolute; }
-
-@media print {
- #lang, #menu { display: none; }
- #content { margin-left: 1em; }
- #breadcrumb { left: 1em; }
-}
+++ /dev/null
-// Adminer specific functions
-
-function body_load() {
- var jush_root = '../externals/jush/';
- var script = document.createElement('script');
- script.src = jush_root + 'jush.js';
- script.onload = function () {
- if (window.jush) { // IE runs in case of an error too
- jush.style(jush_root + 'jush.css');
- jush.highlight_tag('pre');
- jush.highlight_tag('code');
- }
- };
- script.onreadystatechange = function () {
- if (/^(loaded|complete)$/.test(script.readyState)) {
- script.onload();
- }
- };
- document.body.appendChild(script);
-}
-
-
-
-function select_value(select) {
- return select.options[select.selectedIndex].text;
-}
-
-function form_field(form, name) {
- for (var i=0; i < form.length; i++) {
- if (form[i].name == name) {
- return form[i];
- }
- }
-}
-
-function type_password(el, disable) {
- try {
- el.type = (disable ? 'text' : 'password');
- } catch (e) {
- }
-}
-
-
-
-var added = '.', row_count;
-
-function re_escape(s) {
- return s.replace(/[\[\]\\^$*+?.(){|}]/, '\\$&');
-}
-
-function idf_escape(s) {
- return '`' + s.replace(/`/, '``') + '`';
-}
-
-function editing_name_change(field) {
- var name = field.name.substr(0, field.name.length - 7);
- var type = form_field(field.form, name + '[type]');
- var opts = type.options;
- var table = re_escape(field.value);
- var column = '';
- var match;
- if ((match = /(.+)_(.+)/.exec(table)) || (match = /(.*[a-z])([A-Z].*)/.exec(table))) { // limited to single word columns
- table = match[1];
- column = match[2];
- }
- var plural = '(?:e?s)?';
- var tab_col = table + plural + '_?' + column;
- var re = new RegExp('(^' + idf_escape(table + plural) + '\\.' + idf_escape(column) + '$' // table_column
- + '|^' + idf_escape(tab_col) + '\\.' // table
- + '|^' + idf_escape(column + plural) + '\\.' + idf_escape(table) + '$' // column_table
- + ')|\\.' + idf_escape(tab_col) + '$' // column
- , 'i');
- var candidate; // don't select anything with ambiguous match (like column `id`)
- for (var i = opts.length; i--; ) {
- if (opts[i].value.substr(0, 1) != '`') { // common type
- if (i == opts.length - 2 && candidate && !match[1] && name == 'fields[1]') { // single target table, link to column, first field - probably `id`
- return false;
- }
- break;
- }
- if (match = re.exec(opts[i].value)) {
- if (candidate) {
- return false;
- }
- candidate = i;
- }
- }
- if (candidate) {
- type.selectedIndex = candidate;
- type.onchange();
- }
-}
-
-function editing_add_row(button, allowed) {
- if (allowed && row_count >= allowed) {
- return false;
- }
- var match = /([0-9]+)(\.[0-9]+)?/.exec(button.name);
- var x = match[0] + (match[2] ? added.substr(match[2].length) : added) + '1';
- var row = button.parentNode.parentNode;
- var row2 = row.cloneNode(true);
- var tags = row.getElementsByTagName('select');
- var tags2 = row2.getElementsByTagName('select');
- for (var i=0; i < tags.length; i++) {
- tags2[i].name = tags[i].name.replace(/([0-9.]+)/, x);
- tags2[i].selectedIndex = tags[i].selectedIndex;
- }
- tags = row.getElementsByTagName('input');
- tags2 = row2.getElementsByTagName('input');
- var ret = tags2[0]; // IE loose tags2 after insertBefore()
- for (var i=0; i < tags.length; i++) {
- if (tags[i].name == 'auto_increment_col') {
- tags2[i].value = x;
- tags2[i].checked = false;
- }
- tags2[i].name = tags[i].name.replace(/([0-9.]+)/, x);
- if (/\[(orig|field|comment|default)/.test(tags[i].name)) {
- tags2[i].value = '';
- }
- if (/\[(has_default)/.test(tags[i].name)) {
- tags2[i].checked = false;
- }
- }
- tags[0].onchange = function () {
- editing_name_change(tags[0]);
- };
- row.parentNode.insertBefore(row2, row.nextSibling);
- added += '0';
- row_count++;
- return ret;
-}
-
-function editing_remove_row(button) {
- var field = form_field(button.form, button.name.replace(/drop_col(.+)/, 'fields$1[field]'));
- field.parentNode.removeChild(field);
- button.parentNode.parentNode.style.display = 'none';
- return true;
-}
-
-function editing_type_change(type) {
- var name = type.name.substr(0, type.name.length - 6);
- var text = select_value(type);
- for (var i=0; i < type.form.elements.length; i++) {
- var el = type.form.elements[i];
- if (el.name == name + '[collation]') {
- el.className = (/(char|text|enum|set)$/.test(text) ? '' : 'hidden');
- }
- if (el.name == name + '[unsigned]') {
- el.className = (/(int|float|double|decimal)$/.test(text) ? '' : 'hidden');
- }
- }
-}
-
-function column_show(checked, column) {
- var trs = document.getElementById('edit-fields').getElementsByTagName('tr');
- for (var i=0; i < trs.length; i++) {
- trs[i].getElementsByTagName('td')[column].className = (checked ? 'nowrap' : 'hidden');
- }
-}
-
-function partition_by_change(el) {
- var partition_table = /RANGE|LIST/.test(select_value(el));
- el.form['partitions'].className = (partition_table || !el.selectedIndex ? 'hidden' : '');
- document.getElementById('partition-table').className = (partition_table ? '' : 'hidden');
-}
-
-function partition_name_change(el) {
- var row = el.parentNode.parentNode.cloneNode(true);
- row.firstChild.firstChild.value = '';
- el.parentNode.parentNode.parentNode.appendChild(row);
- el.onchange = function () {};
-}
-
-
-
-function foreign_add_row(field) {
- var row = field.parentNode.parentNode.cloneNode(true);
- var selects = row.getElementsByTagName('select');
- for (var i=0; i < selects.length; i++) {
- selects[i].name = selects[i].name.replace(/\]/, '1$&');
- selects[i].selectedIndex = 0;
- }
- field.parentNode.parentNode.parentNode.appendChild(row);
- field.onchange = function () { };
-}
-
-
-
-function indexes_add_row(field) {
- var row = field.parentNode.parentNode.cloneNode(true);
- var spans = row.getElementsByTagName('span');
- for (var i=0; i < spans.length - 1; i++) {
- row.removeChild(spans[i]);
- }
- var selects = row.getElementsByTagName('select');
- for (var i=0; i < selects.length; i++) {
- selects[i].name = selects[i].name.replace(/indexes\[[0-9]+/, '$&1');
- selects[i].selectedIndex = 0;
- }
- var input = row.getElementsByTagName('input')[0];
- input.name = input.name.replace(/indexes\[[0-9]+/, '$&1');
- input.value = '';
- field.parentNode.parentNode.parentNode.appendChild(row);
- field.onchange = function () { };
-}
-
-function indexes_add_column(field) {
- var column = field.parentNode.cloneNode(true);
- var select = column.getElementsByTagName('select')[0];
- select.name = select.name.replace(/\]\[[0-9]+/, '$&1');
- select.selectedIndex = 0;
- var input = column.getElementsByTagName('input')[0];
- input.name = input.name.replace(/\]\[[0-9]+/, '$&1');
- input.value = '';
- field.parentNode.parentNode.appendChild(column);
- field.onchange = function () { };
-}
-
-
-
-var that, x, y, em, table_pos;
-
-function schema_mousedown(el, event) {
- that = el;
- x = event.clientX - el.offsetLeft;
- y = event.clientY - el.offsetTop;
-}
-
-function schema_mousemove(ev) {
- if (that !== undefined) {
- ev = ev || event;
- var left = (ev.clientX - x) / em;
- var top = (ev.clientY - y) / em;
- var divs = that.getElementsByTagName('div');
- var line_set = { };
- for (var i=0; i < divs.length; i++) {
- if (divs[i].className == 'references') {
- var div2 = document.getElementById((divs[i].id.substr(0, 4) == 'refs' ? 'refd' : 'refs') + divs[i].id.substr(4));
- var ref = (table_pos[divs[i].title] ? table_pos[divs[i].title] : [ div2.parentNode.offsetTop / em, 0 ]);
- var left1 = -1;
- var is_top = true;
- var id = divs[i].id.replace(/^ref.(.+)-.+/, '$1');
- if (divs[i].parentNode != div2.parentNode) {
- left1 = Math.min(0, ref[1] - left) - 1;
- divs[i].style.left = left1 + 'em';
- divs[i].getElementsByTagName('div')[0].style.width = -left1 + 'em';
- var left2 = Math.min(0, left - ref[1]) - 1;
- div2.style.left = left2 + 'em';
- div2.getElementsByTagName('div')[0].style.width = -left2 + 'em';
- is_top = (div2.offsetTop + ref[0] * em > divs[i].offsetTop + top * em);
- }
- if (!line_set[id]) {
- var line = document.getElementById(divs[i].id.replace(/^....(.+)-[0-9]+$/, 'refl$1'));
- var shift = ev.clientY - y - that.offsetTop;
- line.style.left = (left + left1) + 'em';
- if (is_top) {
- line.style.top = (line.offsetTop + shift) / em + 'em';
- }
- if (divs[i].parentNode != div2.parentNode) {
- line = line.getElementsByTagName('div')[0];
- line.style.height = (line.offsetHeight + (is_top ? -1 : 1) * shift) / em + 'em';
- }
- line_set[id] = true;
- }
- }
- }
- that.style.left = left + 'em';
- that.style.top = top + 'em';
- }
-}
-
-function schema_mouseup(ev) {
- if (that !== undefined) {
- ev = ev || event;
- table_pos[that.firstChild.firstChild.firstChild.data] = [ (ev.clientY - y) / em, (ev.clientX - x) / em ];
- that = undefined;
- var date = new Date();
- date.setMonth(date.getMonth() + 1);
- var s = '';
- for (var key in table_pos) {
- s += '_' + key + ':' + Math.round(table_pos[key][0] * 10000) / 10000 + 'x' + Math.round(table_pos[key][1] * 10000) / 10000;
- }
- document.cookie = 'adminer_schema=' + encodeURIComponent(s.substr(1)) + '; expires=' + date + '; path=' + location.pathname + location.search;
- }
-}
+++ /dev/null
-document.body.className = 'js';
-
-function toggle(id) {
- var el = document.getElementById(id);
- el.className = (el.className == 'hidden' ? '' : 'hidden');
- return true;
-}
-
-function verify_version() {
- document.cookie = 'adminer_version=0';
- var script = document.createElement('script');
- script.src = 'https://adminer.svn.sourceforge.net/svnroot/adminer/trunk/version.js';
- document.body.appendChild(script);
-}
-
-function form_check(el, name) {
- var elems = el.form.elements;
- for (var i=0; i < elems.length; i++) {
- if (name.test(elems[i].name)) {
- elems[i].checked = el.checked;
- }
- }
-}
-
-function form_uncheck(id) {
- document.getElementById(id).checked = false;
-}
-
-function table_click(event) {
- var el = event.target || event.srcElement;
- while (!/^tr$/i.test(el.tagName)) {
- if (/^(table|a|input)$/i.test(el.tagName)) {
- return;
- }
- el = el.parentNode;
- }
- el = el.firstChild.firstChild;
- el.click && el.click();
- el.onclick && el.onclick();
-}
-
-
-
-function select_add_row(field) {
- var row = field.parentNode.cloneNode(true);
- var selects = row.getElementsByTagName('select');
- for (var i=0; i < selects.length; i++) {
- selects[i].name = selects[i].name.replace(/[a-z]\[[0-9]+/, '$&1');
- selects[i].selectedIndex = 0;
- }
- var inputs = row.getElementsByTagName('input');
- if (inputs.length) {
- inputs[0].name = inputs[0].name.replace(/[a-z]\[[0-9]+/, '$&1');
- inputs[0].value = '';
- inputs[0].className = '';
- }
- field.parentNode.parentNode.appendChild(row);
- field.onchange = function () { };
-}
header("Expires: " . gmdate("D, d M Y H:i:s", time() + 365*24*60*60) . " GMT");
if ($_GET["file"] == "favicon.ico") {
header("Content-Type: image/x-icon");
- echo base64_decode("compile_file('../adminer/favicon.ico', 'base64_encode');");
+ echo base64_decode("compile_file('../adminer/static/favicon.ico', 'base64_encode');");
} elseif ($_GET["file"] == "default.css") {
header("Content-Type: text/css");
- ?>compile_file('../adminer/default.css', 'minify_css');<?php
+ ?>compile_file('../adminer/static/default.css', 'minify_css');<?php
} elseif ($_GET["file"] == "functions.js") {
header("Content-Type: text/javascript");
- ?>compile_file('../adminer/functions.js', 'JSMin::minify');compile_file('editing.js', 'JSMin::minify');<?php
+ ?>compile_file('../adminer/static/functions.js', 'JSMin::minify');compile_file('static/editing.js', 'JSMin::minify');<?php
} else {
header("Content-Type: image/gif");
switch ($_GET["file"]) {
- case "plus.gif": echo base64_decode("compile_file('../adminer/plus.gif', 'base64_encode');"); break;
- case "cross.gif": echo base64_decode("compile_file('../adminer/cross.gif', 'base64_encode');"); break;
- case "up.gif": echo base64_decode("compile_file('../adminer/up.gif', 'base64_encode');"); break;
- case "down.gif": echo base64_decode("compile_file('../adminer/down.gif', 'base64_encode');"); break;
- case "arrow.gif": echo base64_decode("compile_file('../adminer/arrow.gif', 'base64_encode');"); break;
+ case "plus.gif": echo base64_decode("compile_file('../adminer/static/plus.gif', 'base64_encode');"); break;
+ case "cross.gif": echo base64_decode("compile_file('../adminer/static/cross.gif', 'base64_encode');"); break;
+ case "up.gif": echo base64_decode("compile_file('../adminer/static/up.gif', 'base64_encode');"); break;
+ case "down.gif": echo base64_decode("compile_file('../adminer/static/down.gif', 'base64_encode');"); break;
+ case "arrow.gif": echo base64_decode("compile_file('../adminer/static/arrow.gif', 'base64_encode');"); break;
}
}
exit;
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta name="robots" content="noindex">
<title><?php echo $title_all . (strlen($_GET["server"]) && $_GET["server"] != "localhost" ? h("- $_GET[server]") : "") . " - " . $adminer->name(); ?></title>
-<link rel="shortcut icon" type="image/x-icon" href="../adminer/favicon.ico">
-<link rel="stylesheet" type="text/css" href="../adminer/default.css<?php // Ondrej Valka, http://valka.info ?>">
+<link rel="shortcut icon" type="image/x-icon" href="../adminer/static/favicon.ico">
+<link rel="stylesheet" type="text/css" href="../adminer/static/default.css<?php // Ondrej Valka, http://valka.info ?>">
<?php if (file_exists("adminer.css")) { ?>
<link rel="stylesheet" type="text/css" href="adminer.css">
<?php } ?>
<body onload="body_load();<?php echo (isset($_COOKIE["adminer_version"]) ? "" : " verify_version();"); ?>">
-<script type="text/javascript" src="../adminer/functions.js"></script>
-<script type="text/javascript" src="editing.js"></script>
+<script type="text/javascript" src="../adminer/static/functions.js"></script>
+<script type="text/javascript" src="static/editing.js"></script>
<div id="content">
<?php
<td class="hidden"><?php echo lang('Default values'); ?>
<td<?php echo ($column_comments ? "" : " class='hidden'"); ?>><?php echo lang('Comment'); ?>
<?php } ?>
-<td><?php echo "<input type='image' name='add[0]' src='../adminer/plus.gif' alt='+' title='" . lang('Add next') . "'>"; ?><script type="text/javascript">row_count = <?php echo count($fields); ?>;</script>
+<td><?php echo "<input type='image' name='add[0]' src='../adminer/static/plus.gif' alt='+' title='" . lang('Add next') . "'>"; ?><script type="text/javascript">row_count = <?php echo count($fields); ?>;</script>
</thead>
<?php
foreach ($fields as $i => $field) {
<td<?php echo ($column_comments ? "" : " class='hidden'"); ?>><input name="fields[<?php echo $i; ?>][comment]" value="<?php echo h($field["comment"]); ?>" maxlength="255">
<?php } ?>
<?php
- echo "<td class='nowrap'><input type='image' name='add[$i]' src='../adminer/plus.gif' alt='+' title='" . lang('Add next') . "' onclick='var x = editing_add_row(this, $allowed); if (x) { x.focus(); x.onchange = function () { }; } return !x;'>";
- echo " <input type='image' name='drop_col[$i]' src='../adminer/cross.gif' alt='x' title='" . lang('Remove') . "' onclick='return !editing_remove_row(this);'>";
- echo " <input type='image' name='up[$i]' src='../adminer/up.gif' alt='^' title='" . lang('Move up') . "'>";
- echo " <input type='image' name='down[$i]' src='../adminer/down.gif' alt='v' title='" . lang('Move down') . "'>";
+ echo "<td class='nowrap'><input type='image' name='add[$i]' src='../adminer/static/plus.gif' alt='+' title='" . lang('Add next') . "' onclick='var x = editing_add_row(this, $allowed); if (x) { x.focus(); x.onchange = function () { }; } return !x;'>";
+ echo " <input type='image' name='drop_col[$i]' src='../adminer/static/cross.gif' alt='x' title='" . lang('Remove') . "' onclick='return !editing_remove_row(this);'>";
+ echo " <input type='image' name='up[$i]' src='../adminer/static/up.gif' alt='^' title='" . lang('Move up') . "'>";
+ echo " <input type='image' name='down[$i]' src='../adminer/static/down.gif' alt='v' title='" . lang('Move down') . "'>";
echo "\n\n";
}
return $column_comments;
$left1 = $left - $table_pos[$name][1];
$i = 0;
foreach ($columns as $target) {
- echo "<div class='references' title='" . h($target_name) . "' id='refd$left-" . ($i++) . "' style='left: $left1" . "em; top: " . $table["fields"][$target]["pos"] . "em; height: 1.25em; background: url(../adminer/arrow.gif) no-repeat right center;'><div style='height: .5em; border-bottom: 1px solid Gray; width: " . (-$left1) . "em;'></div></div>\n";
+ echo "<div class='references' title='" . h($target_name) . "' id='refd$left-" . ($i++) . "' style='left: $left1" . "em; top: " . $table["fields"][$target]["pos"] . "em; height: 1.25em; background: url(../adminer/static/arrow.gif) no-repeat right center;'><div style='height: .5em; border-bottom: 1px solid Gray; width: " . (-$left1) . "em;'></div></div>\n";
}
}
}
--- /dev/null
+body { color: #000; background: #fff; font: 90%/1.25 Verdana, Arial, Helvetica, sans-serif; margin: 0; }
+a { color: blue; }
+a:visited { color: navy; }
+a:hover { color: red; }
+h1 { font-size: 150%; margin: 0; padding: .8em 1em; border-bottom: 1px solid #999; font-weight: normal; color: #777; background: #eee; }
+h2 { font-size: 150%; margin: 0 0 20px -18px; padding: .8em 1em; border-bottom: 1px solid #000; color: #000; font-weight: normal; background: #ddf; }
+h3 { font-weight: normal; font-size: 130%; margin: .8em 0; }
+form { margin: 0; }
+table { margin: 0 20px .8em 0; border: 0; border-top: 1px solid #999; border-left: 1px solid #999; font-size: 90%; }
+td, th { margin-bottom: 1em; border: 0; border-right: 1px solid #999; border-bottom: 1px solid #999; padding: .2em .3em; }
+th { background: #eee; text-align: left; }
+thead th { text-align: center; }
+thead td, thead th { background: #ddf; }
+fieldset { display: inline; vertical-align: top; padding: .5em .8em; margin: 0 .5em .5em 0; border: 1px solid #999; }
+p { margin: 0 20px 1em 0; }
+img { vertical-align: middle; border: 0; }
+code { background: #eee; }
+tr:hover td, tr:hover th { background: #ddf; }
+.version { color: #777; font-size: 67%; }
+.js .hidden { display: none; }
+.nowrap { white-space: nowrap; }
+.wrap { white-space: normal; }
+.error { color: red; background: #fee; }
+.message { color: green; background: #efe; }
+.error, .message { padding: .5em .8em; margin: 0 20px 1em 0; }
+.char { color: #007F00; }
+.date { color: #7F007F; }
+.enum { color: #007F7F; }
+.binary { color: red; }
+.odd td { background: #F5F5F5; }
+.time { color: silver; font-size: 70%; float: right; margin-top: -3em; }
+.function { text-align: right; }
+.type { width: 15ex; width: auto\9; }
+#menu { position: absolute; margin: 10px 0 0; padding: 0 0 30px 0; top: 2em; left: 0; width: 19em; overflow: auto; overflow-y: hidden; white-space: nowrap; }
+#menu p { padding: .8em 1em; margin: 0; border-bottom: 1px solid #ccc; }
+#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; }
+#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; }
+#h1 { color: #777; text-decoration: none; font-style: italic; }
+#version { font-size: 67%; color: red; }
+#schema { margin-left: 60px; position: relative; }
+#schema .table { border: 1px solid silver; padding: 0 2px; cursor: move; position: absolute; }
+#schema .references { position: absolute; }
+
+@media print {
+ #lang, #menu { display: none; }
+ #content { margin-left: 1em; }
+ #breadcrumb { left: 1em; }
+}
--- /dev/null
+// Adminer specific functions
+
+function body_load() {
+ var jush_root = '../externals/jush/';
+ var script = document.createElement('script');
+ script.src = jush_root + 'jush.js';
+ script.onload = function () {
+ if (window.jush) { // IE runs in case of an error too
+ jush.style(jush_root + 'jush.css');
+ jush.highlight_tag('pre');
+ jush.highlight_tag('code');
+ }
+ };
+ script.onreadystatechange = function () {
+ if (/^(loaded|complete)$/.test(script.readyState)) {
+ script.onload();
+ }
+ };
+ document.body.appendChild(script);
+}
+
+
+
+function select_value(select) {
+ return select.options[select.selectedIndex].text;
+}
+
+function form_field(form, name) {
+ for (var i=0; i < form.length; i++) {
+ if (form[i].name == name) {
+ return form[i];
+ }
+ }
+}
+
+function type_password(el, disable) {
+ try {
+ el.type = (disable ? 'text' : 'password');
+ } catch (e) {
+ }
+}
+
+
+
+var added = '.', row_count;
+
+function re_escape(s) {
+ return s.replace(/[\[\]\\^$*+?.(){|}]/, '\\$&');
+}
+
+function idf_escape(s) {
+ return '`' + s.replace(/`/, '``') + '`';
+}
+
+function editing_name_change(field) {
+ var name = field.name.substr(0, field.name.length - 7);
+ var type = form_field(field.form, name + '[type]');
+ var opts = type.options;
+ var table = re_escape(field.value);
+ var column = '';
+ var match;
+ if ((match = /(.+)_(.+)/.exec(table)) || (match = /(.*[a-z])([A-Z].*)/.exec(table))) { // limited to single word columns
+ table = match[1];
+ column = match[2];
+ }
+ var plural = '(?:e?s)?';
+ var tab_col = table + plural + '_?' + column;
+ var re = new RegExp('(^' + idf_escape(table + plural) + '\\.' + idf_escape(column) + '$' // table_column
+ + '|^' + idf_escape(tab_col) + '\\.' // table
+ + '|^' + idf_escape(column + plural) + '\\.' + idf_escape(table) + '$' // column_table
+ + ')|\\.' + idf_escape(tab_col) + '$' // column
+ , 'i');
+ var candidate; // don't select anything with ambiguous match (like column `id`)
+ for (var i = opts.length; i--; ) {
+ if (opts[i].value.substr(0, 1) != '`') { // common type
+ if (i == opts.length - 2 && candidate && !match[1] && name == 'fields[1]') { // single target table, link to column, first field - probably `id`
+ return false;
+ }
+ break;
+ }
+ if (match = re.exec(opts[i].value)) {
+ if (candidate) {
+ return false;
+ }
+ candidate = i;
+ }
+ }
+ if (candidate) {
+ type.selectedIndex = candidate;
+ type.onchange();
+ }
+}
+
+function editing_add_row(button, allowed) {
+ if (allowed && row_count >= allowed) {
+ return false;
+ }
+ var match = /([0-9]+)(\.[0-9]+)?/.exec(button.name);
+ var x = match[0] + (match[2] ? added.substr(match[2].length) : added) + '1';
+ var row = button.parentNode.parentNode;
+ var row2 = row.cloneNode(true);
+ var tags = row.getElementsByTagName('select');
+ var tags2 = row2.getElementsByTagName('select');
+ for (var i=0; i < tags.length; i++) {
+ tags2[i].name = tags[i].name.replace(/([0-9.]+)/, x);
+ tags2[i].selectedIndex = tags[i].selectedIndex;
+ }
+ tags = row.getElementsByTagName('input');
+ tags2 = row2.getElementsByTagName('input');
+ var ret = tags2[0]; // IE loose tags2 after insertBefore()
+ for (var i=0; i < tags.length; i++) {
+ if (tags[i].name == 'auto_increment_col') {
+ tags2[i].value = x;
+ tags2[i].checked = false;
+ }
+ tags2[i].name = tags[i].name.replace(/([0-9.]+)/, x);
+ if (/\[(orig|field|comment|default)/.test(tags[i].name)) {
+ tags2[i].value = '';
+ }
+ if (/\[(has_default)/.test(tags[i].name)) {
+ tags2[i].checked = false;
+ }
+ }
+ tags[0].onchange = function () {
+ editing_name_change(tags[0]);
+ };
+ row.parentNode.insertBefore(row2, row.nextSibling);
+ added += '0';
+ row_count++;
+ return ret;
+}
+
+function editing_remove_row(button) {
+ var field = form_field(button.form, button.name.replace(/drop_col(.+)/, 'fields$1[field]'));
+ field.parentNode.removeChild(field);
+ button.parentNode.parentNode.style.display = 'none';
+ return true;
+}
+
+function editing_type_change(type) {
+ var name = type.name.substr(0, type.name.length - 6);
+ var text = select_value(type);
+ for (var i=0; i < type.form.elements.length; i++) {
+ var el = type.form.elements[i];
+ if (el.name == name + '[collation]') {
+ el.className = (/(char|text|enum|set)$/.test(text) ? '' : 'hidden');
+ }
+ if (el.name == name + '[unsigned]') {
+ el.className = (/(int|float|double|decimal)$/.test(text) ? '' : 'hidden');
+ }
+ }
+}
+
+function column_show(checked, column) {
+ var trs = document.getElementById('edit-fields').getElementsByTagName('tr');
+ for (var i=0; i < trs.length; i++) {
+ trs[i].getElementsByTagName('td')[column].className = (checked ? 'nowrap' : 'hidden');
+ }
+}
+
+function partition_by_change(el) {
+ var partition_table = /RANGE|LIST/.test(select_value(el));
+ el.form['partitions'].className = (partition_table || !el.selectedIndex ? 'hidden' : '');
+ document.getElementById('partition-table').className = (partition_table ? '' : 'hidden');
+}
+
+function partition_name_change(el) {
+ var row = el.parentNode.parentNode.cloneNode(true);
+ row.firstChild.firstChild.value = '';
+ el.parentNode.parentNode.parentNode.appendChild(row);
+ el.onchange = function () {};
+}
+
+
+
+function foreign_add_row(field) {
+ var row = field.parentNode.parentNode.cloneNode(true);
+ var selects = row.getElementsByTagName('select');
+ for (var i=0; i < selects.length; i++) {
+ selects[i].name = selects[i].name.replace(/\]/, '1$&');
+ selects[i].selectedIndex = 0;
+ }
+ field.parentNode.parentNode.parentNode.appendChild(row);
+ field.onchange = function () { };
+}
+
+
+
+function indexes_add_row(field) {
+ var row = field.parentNode.parentNode.cloneNode(true);
+ var spans = row.getElementsByTagName('span');
+ for (var i=0; i < spans.length - 1; i++) {
+ row.removeChild(spans[i]);
+ }
+ var selects = row.getElementsByTagName('select');
+ for (var i=0; i < selects.length; i++) {
+ selects[i].name = selects[i].name.replace(/indexes\[[0-9]+/, '$&1');
+ selects[i].selectedIndex = 0;
+ }
+ var input = row.getElementsByTagName('input')[0];
+ input.name = input.name.replace(/indexes\[[0-9]+/, '$&1');
+ input.value = '';
+ field.parentNode.parentNode.parentNode.appendChild(row);
+ field.onchange = function () { };
+}
+
+function indexes_add_column(field) {
+ var column = field.parentNode.cloneNode(true);
+ var select = column.getElementsByTagName('select')[0];
+ select.name = select.name.replace(/\]\[[0-9]+/, '$&1');
+ select.selectedIndex = 0;
+ var input = column.getElementsByTagName('input')[0];
+ input.name = input.name.replace(/\]\[[0-9]+/, '$&1');
+ input.value = '';
+ field.parentNode.parentNode.appendChild(column);
+ field.onchange = function () { };
+}
+
+
+
+var that, x, y, em, table_pos;
+
+function schema_mousedown(el, event) {
+ that = el;
+ x = event.clientX - el.offsetLeft;
+ y = event.clientY - el.offsetTop;
+}
+
+function schema_mousemove(ev) {
+ if (that !== undefined) {
+ ev = ev || event;
+ var left = (ev.clientX - x) / em;
+ var top = (ev.clientY - y) / em;
+ var divs = that.getElementsByTagName('div');
+ var line_set = { };
+ for (var i=0; i < divs.length; i++) {
+ if (divs[i].className == 'references') {
+ var div2 = document.getElementById((divs[i].id.substr(0, 4) == 'refs' ? 'refd' : 'refs') + divs[i].id.substr(4));
+ var ref = (table_pos[divs[i].title] ? table_pos[divs[i].title] : [ div2.parentNode.offsetTop / em, 0 ]);
+ var left1 = -1;
+ var is_top = true;
+ var id = divs[i].id.replace(/^ref.(.+)-.+/, '$1');
+ if (divs[i].parentNode != div2.parentNode) {
+ left1 = Math.min(0, ref[1] - left) - 1;
+ divs[i].style.left = left1 + 'em';
+ divs[i].getElementsByTagName('div')[0].style.width = -left1 + 'em';
+ var left2 = Math.min(0, left - ref[1]) - 1;
+ div2.style.left = left2 + 'em';
+ div2.getElementsByTagName('div')[0].style.width = -left2 + 'em';
+ is_top = (div2.offsetTop + ref[0] * em > divs[i].offsetTop + top * em);
+ }
+ if (!line_set[id]) {
+ var line = document.getElementById(divs[i].id.replace(/^....(.+)-[0-9]+$/, 'refl$1'));
+ var shift = ev.clientY - y - that.offsetTop;
+ line.style.left = (left + left1) + 'em';
+ if (is_top) {
+ line.style.top = (line.offsetTop + shift) / em + 'em';
+ }
+ if (divs[i].parentNode != div2.parentNode) {
+ line = line.getElementsByTagName('div')[0];
+ line.style.height = (line.offsetHeight + (is_top ? -1 : 1) * shift) / em + 'em';
+ }
+ line_set[id] = true;
+ }
+ }
+ }
+ that.style.left = left + 'em';
+ that.style.top = top + 'em';
+ }
+}
+
+function schema_mouseup(ev) {
+ if (that !== undefined) {
+ ev = ev || event;
+ table_pos[that.firstChild.firstChild.firstChild.data] = [ (ev.clientY - y) / em, (ev.clientX - x) / em ];
+ that = undefined;
+ var date = new Date();
+ date.setMonth(date.getMonth() + 1);
+ var s = '';
+ for (var key in table_pos) {
+ s += '_' + key + ':' + Math.round(table_pos[key][0] * 10000) / 10000 + 'x' + Math.round(table_pos[key][1] * 10000) / 10000;
+ }
+ document.cookie = 'adminer_schema=' + encodeURIComponent(s.substr(1)) + '; expires=' + date + '; path=' + location.pathname + location.search;
+ }
+}
--- /dev/null
+document.body.className = 'js';
+
+function toggle(id) {
+ var el = document.getElementById(id);
+ el.className = (el.className == 'hidden' ? '' : 'hidden');
+ return true;
+}
+
+function verify_version() {
+ document.cookie = 'adminer_version=0';
+ var script = document.createElement('script');
+ script.src = 'https://adminer.svn.sourceforge.net/svnroot/adminer/trunk/version.js';
+ document.body.appendChild(script);
+}
+
+function form_check(el, name) {
+ var elems = el.form.elements;
+ for (var i=0; i < elems.length; i++) {
+ if (name.test(elems[i].name)) {
+ elems[i].checked = el.checked;
+ }
+ }
+}
+
+function form_uncheck(id) {
+ document.getElementById(id).checked = false;
+}
+
+function table_click(event) {
+ var el = event.target || event.srcElement;
+ while (!/^tr$/i.test(el.tagName)) {
+ if (/^(table|a|input)$/i.test(el.tagName)) {
+ return;
+ }
+ el = el.parentNode;
+ }
+ el = el.firstChild.firstChild;
+ el.click && el.click();
+ el.onclick && el.onclick();
+}
+
+
+
+function select_add_row(field) {
+ var row = field.parentNode.cloneNode(true);
+ var selects = row.getElementsByTagName('select');
+ for (var i=0; i < selects.length; i++) {
+ selects[i].name = selects[i].name.replace(/[a-z]\[[0-9]+/, '$&1');
+ selects[i].selectedIndex = 0;
+ }
+ var inputs = row.getElementsByTagName('input');
+ if (inputs.length) {
+ inputs[0].name = inputs[0].name.replace(/[a-z]\[[0-9]+/, '$&1');
+ inputs[0].value = '';
+ inputs[0].className = '';
+ }
+ field.parentNode.parentNode.appendChild(row);
+ field.onchange = function () { };
+}
$file = str_replace('<script type="text/javascript" src="editing.js"></script>' . "\n", "", $file);
$file = preg_replace_callback("~compile_file\\('([^']+)', '([^']+)'\\);~", 'compile_file', $file); // integrate static files
$replace = 'h(preg_replace("~\\\\\\\\?.*~", "", $_SERVER["REQUEST_URI"])) . "?file=\\1&version=' . $VERSION;
-$file = preg_replace('~\\.\\./adminer/(default\\.css|functions\\.js|favicon\\.ico)~', '<?php echo ' . $replace . '"; ?>', $file);
-$file = preg_replace('~\\.\\./adminer/((plus|cross|up|down|arrow)\\.gif)~', '" . ' . $replace, $file);
+$file = preg_replace('~\\.\\./adminer/static/(default\\.css|functions\\.js|favicon\\.ico)~', '<?php echo ' . $replace . '"; ?>', $file);
+$file = preg_replace('~\\.\\./adminer/static/([^\'"]*)~', '" . ' . $replace, $file);
$file = str_replace("../externals/jush/", "https://jush.svn.sourceforge.net/svnroot/jush/trunk/", $file); // mixed-content warning if Adminer runs on HTTPS and external files on HTTP
$file = preg_replace("~<\\?php\\s*\\?>\n?|\\?>\n?<\\?php~", '', $file);
$file = php_shrink($file);
+++ /dev/null
-// Editor specific functions
-
-function body_load() {
-}
}
}
if ($field["full_type"] == "tinyint(1)" && $return != " ") { // bool
- $return = '<img src="' . ($val ? "../adminer/plus.gif" : "../adminer/cross.gif") . '" alt="' . h($val) . '">';
+ $return = '<img src="' . ($val ? "../adminer/static/plus.gif" : "../adminer/static/cross.gif") . '" alt="' . h($val) . '">';
}
return ($link ? "<a href='$link'>$return</a>" : $return);
}
--- /dev/null
+// Editor specific functions
+
+function body_load() {
+}