]> git.joonet.de Git - adminer.git/commitdiff
Separate static files
authorjakubvrana <jakubvrana@7c3ca157-0c34-0410-bff1-cbf682f78f5c>
Wed, 23 Sep 2009 09:56:07 +0000 (09:56 +0000)
committerjakubvrana <jakubvrana@7c3ca157-0c34-0410-bff1-cbf682f78f5c>
Wed, 23 Sep 2009 09:56:07 +0000 (09:56 +0000)
git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@1131 7c3ca157-0c34-0410-bff1-cbf682f78f5c

27 files changed:
adminer/arrow.gif [deleted file]
adminer/cross.gif [deleted file]
adminer/database.inc.php
adminer/default.css [deleted file]
adminer/down.gif [deleted file]
adminer/editing.js [deleted file]
adminer/favicon.ico [deleted file]
adminer/functions.js [deleted file]
adminer/include/bootstrap.inc.php
adminer/include/design.inc.php
adminer/include/editing.inc.php
adminer/plus.gif [deleted file]
adminer/schema.inc.php
adminer/static/arrow.gif [new file with mode: 0644]
adminer/static/cross.gif [new file with mode: 0644]
adminer/static/default.css [new file with mode: 0644]
adminer/static/down.gif [new file with mode: 0644]
adminer/static/editing.js [new file with mode: 0644]
adminer/static/favicon.ico [new file with mode: 0644]
adminer/static/functions.js [new file with mode: 0644]
adminer/static/plus.gif [new file with mode: 0644]
adminer/static/up.gif [new file with mode: 0644]
adminer/up.gif [deleted file]
compile.php
editor/editing.js [deleted file]
editor/include/adminer.inc.php
editor/static/editing.js [new file with mode: 0644]

diff --git a/adminer/arrow.gif b/adminer/arrow.gif
deleted file mode 100644 (file)
index d99badb..0000000
Binary files a/adminer/arrow.gif and /dev/null differ
diff --git a/adminer/cross.gif b/adminer/cross.gif
deleted file mode 100644 (file)
index 05b5061..0000000
Binary files a/adminer/cross.gif and /dev/null differ
index 9d67f1621352bd48776eaac0f0b880ea8af218ff..ba10677265a64d2306ccc6c89a459e0f5993fa01 100644 (file)
@@ -79,7 +79,7 @@ if ($_POST) {
 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>
diff --git a/adminer/default.css b/adminer/default.css
deleted file mode 100644 (file)
index b9ba678..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-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; }
-}
diff --git a/adminer/down.gif b/adminer/down.gif
deleted file mode 100644 (file)
index 630fc35..0000000
Binary files a/adminer/down.gif and /dev/null differ
diff --git a/adminer/editing.js b/adminer/editing.js
deleted file mode 100644 (file)
index 50df009..0000000
+++ /dev/null
@@ -1,285 +0,0 @@
-// 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;
-       }
-}
diff --git a/adminer/favicon.ico b/adminer/favicon.ico
deleted file mode 100644 (file)
index ef958a0..0000000
Binary files a/adminer/favicon.ico and /dev/null differ
diff --git a/adminer/functions.js b/adminer/functions.js
deleted file mode 100644 (file)
index 5b882b9..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-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 () { };
-}
index 8062d733ec62ad74d74ef23f77d8ee35d32ac51a..c407354bc8f340fa874ed6ee30890fb745d71673 100644 (file)
@@ -19,21 +19,21 @@ if (isset($_GET["file"])) {
        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;
index b003ad39ab7da72829c791f5832c9f70dcc92d45..bd63286e2381d008f51a5b3eae631b3af9c5de82 100644 (file)
@@ -10,15 +10,15 @@ function page_header($title, $error = "", $breadcrumb = array(), $title2 = "") {
 <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
index 7355f0b146f7f3c0a24eae7d9a3615d5fa8e0e33..967abd9f1e4ac454da951795fced05603dfb9e1a 100644 (file)
@@ -164,7 +164,7 @@ function edit_fields($fields, $collations, $type = "TABLE", $allowed = 0, $forei
 <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) {
@@ -182,10 +182,10 @@ function edit_fields($fields, $collations, $type = "TABLE", $allowed = 0, $forei
 <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 "&nbsp;<input type='image' name='drop_col[$i]' src='../adminer/cross.gif' alt='x' title='" . lang('Remove') . "' onclick='return !editing_remove_row(this);'>";
-               echo "&nbsp;<input type='image' name='up[$i]' src='../adminer/up.gif' alt='^' title='" . lang('Move up') . "'>";
-               echo "&nbsp;<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 "&nbsp;<input type='image' name='drop_col[$i]' src='../adminer/static/cross.gif' alt='x' title='" . lang('Remove') . "' onclick='return !editing_remove_row(this);'>";
+               echo "&nbsp;<input type='image' name='up[$i]' src='../adminer/static/up.gif' alt='^' title='" . lang('Move up') . "'>";
+               echo "&nbsp;<input type='image' name='down[$i]' src='../adminer/static/down.gif' alt='v' title='" . lang('Move down') . "'>";
                echo "\n\n";
        }
        return $column_comments;
diff --git a/adminer/plus.gif b/adminer/plus.gif
deleted file mode 100644 (file)
index f16de91..0000000
Binary files a/adminer/plus.gif and /dev/null differ
index 6aedd66f6547c1c36d897a224d7108d67cf1c8a7..df93206711d96326580fbb417b36b90fea196492 100644 (file)
@@ -79,7 +79,7 @@ foreach ($schema as $name => $table) {
                        $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";
                        }
                }
        }
diff --git a/adminer/static/arrow.gif b/adminer/static/arrow.gif
new file mode 100644 (file)
index 0000000..d99badb
Binary files /dev/null and b/adminer/static/arrow.gif differ
diff --git a/adminer/static/cross.gif b/adminer/static/cross.gif
new file mode 100644 (file)
index 0000000..05b5061
Binary files /dev/null and b/adminer/static/cross.gif differ
diff --git a/adminer/static/default.css b/adminer/static/default.css
new file mode 100644 (file)
index 0000000..b9ba678
--- /dev/null
@@ -0,0 +1,49 @@
+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; }
+}
diff --git a/adminer/static/down.gif b/adminer/static/down.gif
new file mode 100644 (file)
index 0000000..630fc35
Binary files /dev/null and b/adminer/static/down.gif differ
diff --git a/adminer/static/editing.js b/adminer/static/editing.js
new file mode 100644 (file)
index 0000000..50df009
--- /dev/null
@@ -0,0 +1,285 @@
+// 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;
+       }
+}
diff --git a/adminer/static/favicon.ico b/adminer/static/favicon.ico
new file mode 100644 (file)
index 0000000..ef958a0
Binary files /dev/null and b/adminer/static/favicon.ico differ
diff --git a/adminer/static/functions.js b/adminer/static/functions.js
new file mode 100644 (file)
index 0000000..5b882b9
--- /dev/null
@@ -0,0 +1,59 @@
+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 () { };
+}
diff --git a/adminer/static/plus.gif b/adminer/static/plus.gif
new file mode 100644 (file)
index 0000000..f16de91
Binary files /dev/null and b/adminer/static/plus.gif differ
diff --git a/adminer/static/up.gif b/adminer/static/up.gif
new file mode 100644 (file)
index 0000000..0898033
Binary files /dev/null and b/adminer/static/up.gif differ
diff --git a/adminer/up.gif b/adminer/up.gif
deleted file mode 100644 (file)
index 0898033..0000000
Binary files a/adminer/up.gif and /dev/null differ
index 5e0e82aaae61568f07425a1b5cbd619b38dda444..6a539052bea7b25a7c62e4565463c48ca8c06123 100644 (file)
@@ -190,8 +190,8 @@ if ($_SESSION["lang"]) {
 $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&amp;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);
diff --git a/editor/editing.js b/editor/editing.js
deleted file mode 100644 (file)
index 6cf5307..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-// Editor specific functions
-
-function body_load() {
-}
index 18ac631b85712ec9fa547e97f4959c3557d4db52..60fb4ad6be033744000894d20c0a4859645fd7ac 100644 (file)
@@ -118,7 +118,7 @@ ORDER BY ORDINAL_POSITION"); //! requires MySQL 5
                        }
                }
                if ($field["full_type"] == "tinyint(1)" && $return != "&nbsp;") { // 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);
        }
diff --git a/editor/static/editing.js b/editor/static/editing.js
new file mode 100644 (file)
index 0000000..6cf5307
--- /dev/null
@@ -0,0 +1,4 @@
+// Editor specific functions
+
+function body_load() {
+}