Skip to content
Browse files

Separate JavaScript

git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@618 7c3ca157-0c34-0410-bff1-cbf682f78f5c
  • Loading branch information...
1 parent 7f3b4f2 commit 540e2174e289102fd067831feb1648bfc981defd jakubvrana committed May 29, 2009
Showing with 277 additions and 269 deletions.
  1. +4 −1 _compile.php
  2. +1 −0 changes.txt
  3. +1 −4 connect.inc.php
  4. +4 −12 create.inc.php
  5. +1 −8 design.inc.php
  6. +1 −13 dump.inc.php
  7. +18 −73 editing.inc.php
  8. +1 −14 foreign.inc.php
  9. +236 −0 functions.js
  10. +1 −1 index.php
  11. +2 −32 indexes.inc.php
  12. +0 −6 procedure.inc.php
  13. +3 −64 schema.inc.php
  14. +4 −40 select.inc.php
  15. +0 −1 todo.txt
View
5 _compile.php
@@ -170,7 +170,7 @@ function php_shrink($input) {
$file = preg_replace_callback("~lang\\('((?:[^\\\\']+|\\\\.)*)'([,)])~s", 'lang_ids', $file);
}
$replace = 'preg_replace("~\\\\\\\\?.*~", "", $_SERVER["REQUEST_URI"]) . "?file=\\0&version=' . $VERSION;
-$file = preg_replace('~default\\.css|favicon\\.ico|(up|down|plus|minus)\\.gif~', '<?php echo ' . $replace . '"; ?>', $file);
+$file = preg_replace('~default\\.css|functions\\.js|favicon\\.ico|(up|down|plus|minus)\\.gif~', '<?php echo ' . $replace . '"; ?>', $file);
$file = preg_replace('~arrow\\.gif~', '" . ' . $replace, $file);
$file = str_replace('error_reporting(E_ALL & ~E_NOTICE);', 'error_reporting(E_ALL & ~E_NOTICE);
if (isset($_GET["file"])) {
@@ -181,6 +181,9 @@ function php_shrink($input) {
} elseif ($_GET["file"] == "default.css") {
header("Content-Type: text/css");
?>' . preg_replace('~\\s*([:;{},])\\s*~', '\\1', file_get_contents("default.css")) . '<?php
+ } elseif ($_GET["file"] == "functions.js") {
+ header("Content-Type: text/javascript");
+ ?>' . file_get_contents("functions.js") . '<?php
} else {
header("Content-Type: image/gif");
switch ($_GET["file"]) {
View
1 changes.txt
@@ -2,6 +2,7 @@ phpMinAdmin 1.11.0:
Connection through socket by server :/path/to/socket
Display execution time in SQL query
Version checker
+Separate JavaScript functions
phpMinAdmin 1.10.1:
Highlight odd and hover rows
View
5 connect.inc.php
@@ -17,10 +17,7 @@
?>
<script type="text/javascript">
onload = function () {
- document.cookie = 'phpMinAdmin_version=0';
- var script = document.createElement('script');
- script.src = 'http://phpminadmin.sourceforge.net/version.php?version=<?php echo $VERSION; ?>';
- document.body.appendChild(script);
+ check_version('<?php echo $VERSION; ?>');
};
</script>
<?php
View
16 create.inc.php
@@ -122,22 +122,14 @@
<select name="Collation"><option value="">(<?php echo lang('collation'); ?>)</option><?php echo optionlist($collations, $row["Collation"]); ?></select>
<input type="submit" value="<?php echo lang('Save'); ?>" />
</p>
-<table cellspacing="0">
-<?php $column_comments = edit_fields($row["fields"], $collations); ?>
+<table cellspacing="0" id="edit-fields">
+<?php $column_comments = edit_fields($row["fields"], $collations, "TABLE", $suhosin); ?>
</table>
-<?php echo type_change(count($row["fields"]), $suhosin); ?>
<p>
<?php echo lang('Auto Increment'); ?>: <input name="Auto_increment" size="4" value="<?php echo intval($row["Auto_increment"]); ?>" />
<?php echo lang('Comment'); ?>: <input name="Comment" value="<?php echo htmlspecialchars($row["Comment"]); ?>" maxlength="60" />
<script type="text/javascript">// <![CDATA[
document.write('<label><input type="checkbox"<?php if ($column_comments) { ?> checked="checked"<?php } ?> onclick="column_comments_click(this.checked);" /><?php echo lang('Show column comments'); ?></label>');
-function column_comments_click(checked) {
- var trs = document.getElementsByTagName('tr');
- for (var i=0; i < trs.length; i++) {
- trs[i].getElementsByTagName('td')[5].style.display = (checked ? '' : 'none');
- }
-}
-<?php if (!$column_comments) { ?>column_comments_click(false);<?php } ?>
// ]]></script>
</p>
<p>
@@ -151,15 +143,15 @@ function column_comments_click(checked) {
?>
<fieldset><legend><?php echo lang('Partition by'); ?></legend>
<p>
-<select name="partition_by" onchange="var partition_table = /RANGE|LIST/.test(this.options[this.selectedIndex].text); this.form['partitions'].className = (partition_table || !this.selectedIndex ? 'hidden' : ''); document.getElementById('partition-table').className = (partition_table ? '' : 'hidden');"><option></option><?php echo optionlist($partition_by, $row["partition_by"]); ?></select>
+<select name="partition_by" onchange="partition_by_change(this);"><option></option><?php echo optionlist($partition_by, $row["partition_by"]); ?></select>
(<input name="partition" value="<?php echo htmlspecialchars($row["partition"]); ?>" />)
<?php echo lang('Partitions'); ?>: <input name="partitions" size="2" value="<?php echo htmlspecialchars($row["partitions"]); ?>"<?php echo ($partition_table || !$row["partition_by"] ? " class='hidden'" : ""); ?> />
</p>
<table cellspacing="0" id="partition-table"<?php echo ($partition_table ? "" : " class='hidden'"); ?>>
<thead><tr><th><?php echo lang('Partition name'); ?></th><th><?php echo lang('Values'); ?></th></tr></thead>
<?php
foreach ($row["partition_names"] as $key => $val) {
- echo '<tr><td><input name="partition_names[]" value="' . htmlspecialchars($val) . '"' . ($key == count($row["partition_names"]) - 1 ? ' onchange="var row = this.parentNode.parentNode.cloneNode(true); row.firstChild.firstChild.value = \'\'; this.parentNode.parentNode.parentNode.appendChild(row); this.onchange = function () {};"' : '') . ' /></td><td><input name="partition_values[]" value="' . htmlspecialchars($row["partition_values"][$key]) . "\" /></td></tr>\n";
+ echo '<tr><td><input name="partition_names[]" value="' . htmlspecialchars($val) . '"' . ($key == count($row["partition_names"]) - 1 ? ' onchange="partition_name_change(this);"' : '') . ' /></td><td><input name="partition_values[]" value="' . htmlspecialchars($row["partition_values"][$key]) . "\" /></td></tr>\n";
}
?>
</table>
View
9 design.inc.php
@@ -18,14 +18,7 @@ function page_header($title, $error = "", $breadcrumb = array(), $title2 = "") {
</head>
<body>
-<script type="text/javascript">
-document.body.className = 'js';
-function toggle(id) {
- var el = document.getElementById(id);
- el.className = (el.className == 'hidden' ? '' : 'hidden');
- return true;
-}
-</script>
+<script type="text/javascript" src="functions.js"></script>
<div id="content">
<?php
View
14 dump.inc.php
@@ -17,7 +17,7 @@ function dump_link($type, $name, $val, $attrs = "") {
. (isset($check["db_check"]) ? "&amp;db_check=" . urlencode($check["db_check"]) : "")
. (isset($check["table_check"]) ? "&amp;table_check=" . urlencode($check["table_check"]) : "")
. (isset($check["data_check"]) ? "&amp;data_check=" . urlencode($check["data_check"]) : "")
- . "\" onclick=\"return !check(this, /^$name/, '$val');\"$attrs>" . ($val ? $val : lang('skip')) . "</a>"
+ . "\" onclick=\"return !dump_check(this, /^$name/, '$val');\"$attrs>" . ($val ? $val : lang('skip')) . "</a>"
;
}
@@ -142,18 +142,6 @@ function dump_link($type, $name, $val, $attrs = "") {
page_header(lang('Export'), "", (strlen($_GET["export"]) ? array("table" => $_GET["export"]) : array()), $_GET["db"]);
?>
-<script type="text/javascript">
-function check(a, name, value) {
- var inputs = a.parentNode.parentNode.parentNode.parentNode.getElementsByTagName('input');
- for (var i=0; inputs.length > i; i++) {
- if (name.test(inputs[i].name)) {
- inputs[i].checked = (inputs[i].value == value);
- }
- }
- return true;
-}
-</script>
-
<form action="" method="post">
<p><?php echo lang('Output') . ": $dump_output " . lang('Format') . ": $dump_format"; ?> <input type="submit" value="<?php echo lang('Export'); ?>" /></p>
View
91 editing.inc.php
@@ -89,7 +89,7 @@ function process_input($name, $field) {
function edit_type($key, $field, $collations) {
global $types, $unsigned, $inout;
?>
-<td><select name="<?php echo $key; ?>[type]" onchange="type_change(this);"><?php echo optionlist(array_keys($types), $field["type"]); ?></select></td>
+<td><select name="<?php echo $key; ?>[type]" onchange="editing_type_change(this);"><?php echo optionlist(array_keys($types), $field["type"]); ?></select></td>
<td><input name="<?php echo $key; ?>[length]" value="<?php echo htmlspecialchars($field["length"]); ?>" size="3" /></td>
<td><?php echo "<select name=\"$key" . '[collation]"' . (preg_match('~char|text|enum|set~', $field["type"]) ? "" : " class='hidden'") . '><option value="">(' . lang('collation') . ')</option>' . optionlist($collations, $field["collation"]) . '</select>' . ($unsigned ? " <select name=\"$key" . '[unsigned]"' . (!$field["type"] || preg_match('~int|float|double|decimal~', $field["type"]) ? "" : " class='hidden'") . '>' . optionlist($unsigned, $field["unsigned"]) . '</select>' : ''); ?></td>
<?php
@@ -104,8 +104,14 @@ function process_type($field, $collate = "COLLATE") {
;
}
-function edit_fields($fields, $collations, $type = "TABLE") {
+function edit_fields($fields, $collations, $type = "TABLE", $allowed = 0) {
global $inout;
+ $column_comments = false;
+ foreach ($fields as $field) {
+ if (strlen($field["comment"])) {
+ $column_comments = true;
+ }
+ }
?>
<thead><tr>
<?php if ($type == "PROCEDURE") { ?><td><?php echo lang('IN-OUT'); ?></td><?php } ?>
@@ -116,12 +122,16 @@ function edit_fields($fields, $collations, $type = "TABLE") {
<?php if ($type == "TABLE") { ?>
<td><?php echo lang('NULL'); ?></td>
<td><input type="radio" name="auto_increment_col" value="" /><?php echo lang('Auto Increment'); ?></td>
-<td><?php echo lang('Comment'); ?></td>
+<td<?php echo ($column_comments ? "" : " class='hidden'"); ?>><?php echo lang('Comment'); ?></td>
<?php } ?>
-<td><input type="image" name="add[0]" src="plus.gif" title="<?php echo lang('Add next'); ?>" /></td>
+<td><input type="image" name="add[0]" src="plus.gif" title="<?php echo lang('Add next'); ?>" />
+<script type="text/javascript">
+var added = '.';
+var row_count = <?php echo count($fields); ?>;
+</script>
+</td>
</tr></thead>
<?php
- $column_comments = false;
foreach ($fields as $i => $field) {
$i++;
$display = (isset($_POST["add"][$i-1]) || (isset($field["field"]) && !$_POST["drop_col"][$i]));
@@ -133,19 +143,16 @@ function edit_fields($fields, $collations, $type = "TABLE") {
<?php if ($type == "TABLE") { ?>
<td><input type="checkbox" name="fields[<?php echo $i; ?>][null]" value="1"<?php if ($field["null"]) { ?> checked="checked"<?php } ?> /></td>
<td><input type="radio" name="auto_increment_col" value="<?php echo $i; ?>"<?php if ($field["auto_increment"]) { ?> checked="checked"<?php } ?> /></td>
-<td><input name="fields[<?php echo $i; ?>][comment]" value="<?php echo htmlspecialchars($field["comment"]); ?>" maxlength="255" /></td>
+<td<?php echo ($column_comments ? "" : " class='hidden'"); ?>><input name="fields[<?php echo $i; ?>][comment]" value="<?php echo htmlspecialchars($field["comment"]); ?>" maxlength="255" /></td>
<?php } ?>
<td class="nowrap">
-<input type="image" name="add[<?php echo $i; ?>]" src="plus.gif" title="<?php echo lang('Add next'); ?>" onclick="return !add_row(this);" />
-<input type="image" name="drop_col[<?php echo $i; ?>]" src="minus.gif" title="<?php echo lang('Remove'); ?>" onclick="return !remove_row(this);" />
+<input type="image" name="add[<?php echo $i; ?>]" src="plus.gif" title="<?php echo lang('Add next'); ?>" onclick="return !editing_add_row(this, <?php echo $allowed; ?>);" />
+<input type="image" name="drop_col[<?php echo $i; ?>]" src="minus.gif" title="<?php echo lang('Remove'); ?>" onclick="return !editing_remove_row(this);" />
<input type="image" name="up[<?php echo $i; ?>]" src="up.gif" title="<?php echo lang('Move up'); ?>" />
<input type="image" name="down[<?php echo $i; ?>]" src="down.gif" title="<?php echo lang('Move down'); ?>" />
</td>
</tr>
<?php
- if (strlen($field["comment"])) {
- $column_comments = true;
- }
}
return $column_comments;
}
@@ -187,68 +194,6 @@ function process_fields(&$fields) {
}
}
-function type_change($count, $allowed = 0) {
- ?>
-<script type="text/javascript">// <![CDATA[
-var added = '.';
-var row_count = <?php echo $count; ?>;
-
-function add_row(button) {
- if (<?php echo $allowed; ?> && row_count >= <?php echo $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; tags.length > i; i++) {
- tags[i].name = tags[i].name.replace(/([0-9.]+)/, x);
- tags2[i].selectedIndex = tags[i].selectedIndex;
- }
- tags = row.getElementsByTagName('input');
- for (var i=0; tags.length > i; i++) {
- if (tags[i].name == 'auto_increment_col') {
- tags[i].value = x;
- tags[i].checked = false;
- }
- tags[i].name = tags[i].name.replace(/([0-9.]+)/, x);
- if (/\[(orig|field|comment)/.test(tags[i].name)) {
- tags[i].value = '';
- }
- }
- row.parentNode.insertBefore(row2, row);
- tags[0].focus();
- added += '0';
- row_count++;
- return true;
-}
-
-function remove_row(button) {
- var field = button.form[button.name.replace(/drop_col(.+)/, 'fields$1[field]')];
- field.parentNode.removeChild(field);
- button.parentNode.parentNode.style.display = 'none';
- //! should change class="odd" of next rows
- return true;
-}
-
-function type_change(type) {
- var name = type.name.substr(0, type.name.length - 6);
- 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(type.options[type.selectedIndex].text) ? '' : 'hidden');
- }
- if (el.name == name + '[unsigned]') {
- el.className = (/int|float|double|decimal/.test(type.options[type.selectedIndex].text) ? '' : 'hidden');
- }
- }
-}
-// ]]></script>
-<?php
-}
-
function normalize_enum($match) {
return "'" . str_replace("'", "''", addcslashes(stripcslashes(str_replace($match[0]{0} . $match[0]{0}, $match[0]{0}, substr($match[0], 1, -1))), '\\')) . "'";
}
View
15 foreign.inc.php
@@ -48,19 +48,6 @@
$target = ($_GET["foreign"] === $row["table"] ? $source : get_vals("SHOW COLUMNS FROM " . idf_escape($row["table"])));
?>
-<script type="text/javascript">// <![CDATA[
-function 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 () { };
-}
-// ]]></script>
-
<form action="" method="post">
<p>
<?php echo lang('Target table'); ?>:
@@ -74,7 +61,7 @@ function add_row(field) {
$j = 0;
foreach ($row["source"] as $key => $val) {
echo "<tr>";
- echo "<td><select name='source[" . intval($key) . "]'" . ($j == count($row["source"]) - 1 ? " onchange='add_row(this);'" : "") . "><option></option>" . optionlist($source, $val) . "</select></td>";
+ echo "<td><select name='source[" . intval($key) . "]'" . ($j == count($row["source"]) - 1 ? " onchange='foreign_add_row(this);'" : "") . "><option></option>" . optionlist($source, $val) . "</select></td>";
echo "<td><select name='target[" . intval($key) . "]'>" . optionlist($target, $row["target"][$key]) . "</select></td>";
echo "</tr>\n";
$j++;
View
236 functions.js
@@ -0,0 +1,236 @@
+function toggle(id) {
+ var el = document.getElementById(id);
+ el.className = (el.className == 'hidden' ? '' : 'hidden');
+ return true;
+}
+
+function check_version(version) {
+ document.cookie = 'phpMinAdmin_version=0';
+ var script = document.createElement('script');
+ script.src = 'http://phpminadmin.sourceforge.net/version.php?version=' + version;
+ document.body.appendChild(script);
+}
+
+function tables_check(el) {
+ var elems = el.form.elements;
+ for (var i=0; i < elems.length; i++) {
+ if (elems[i].name == 'tables[]') {
+ elems[i].checked = el.checked;
+ }
+ }
+}
+
+function where_change(op) {
+ for (var i=0; i < op.form.elements.length; i++) {
+ var el = op.form.elements[i];
+ if (el.name == op.name.substr(0, op.name.length - 4) + '[val]') {
+ el.className = (/NULL$/.test(op.options[op.selectedIndex].text) ? 'hidden' : '');
+ }
+ }
+}
+
+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 () { };
+}
+
+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++) {
+ tags[i].name = tags[i].name.replace(/([0-9.]+)/, x);
+ tags2[i].selectedIndex = tags[i].selectedIndex;
+ }
+ tags = row.getElementsByTagName('input');
+ for (var i=0; i < tags.length; i++) {
+ if (tags[i].name == 'auto_increment_col') {
+ tags[i].value = x;
+ tags[i].checked = false;
+ }
+ tags[i].name = tags[i].name.replace(/([0-9.]+)/, x);
+ if (/\[(orig|field|comment)/.test(tags[i].name)) {
+ tags[i].value = '';
+ }
+ }
+ row.parentNode.insertBefore(row2, row);
+ tags[0].focus();
+ added += '0';
+ row_count++;
+ return true;
+}
+
+function editing_remove_row(button) {
+ var field = button.form[button.name.replace(/drop_col(.+)/, 'fields$1[field]')];
+ field.parentNode.removeChild(field);
+ button.parentNode.parentNode.style.display = 'none';
+ //! should change class="odd" of next rows
+ return true;
+}
+
+function editing_type_change(type) {
+ var name = type.name.substr(0, type.name.length - 6);
+ 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(type.options[type.selectedIndex].text) ? '' : 'hidden');
+ }
+ if (el.name == name + '[unsigned]') {
+ el.className = (/int|float|double|decimal/.test(type.options[type.selectedIndex].text) ? '' : 'hidden');
+ }
+ }
+}
+
+function column_comments_click(checked) {
+ var trs = document.getElementById('edit-fields').getElementsByTagName('tr');
+ for (var i=0; i < trs.length; i++) {
+ trs[i].getElementsByTagName('td')[5].className = (checked ? '' : 'hidden');
+ }
+}
+
+function partition_by_change(el) {
+ var partition_table = /RANGE|LIST/.test(el.options[el.selectedIndex].text);
+ 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');
+ row.getElementsByTagName('td')[1].innerHTML = '<span>' + spans[spans.length - 1].innerHTML + '</span>';
+ 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 () { };
+}
+
+function schema_mousedown(el, event, top) {
+ that = el;
+ em = document.getElementById('schema').offsetHeight / top;
+ 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 = 'schema=' + encodeURIComponent(s.substr(1)) + '; expires=' + date + '; path=' + location.pathname + location.search;
+ }
+}
+
+function dump_check(a, name, value) {
+ var inputs = a.parentNode.parentNode.parentNode.parentNode.getElementsByTagName('input');
+ for (var i=0; i < inputs.length; i++) {
+ if (name.test(inputs[i].name)) {
+ inputs[i].checked = (inputs[i].value == value);
+ }
+ }
+ return true;
+}
+
+document.body.className = 'js';
View
2 index.php
@@ -171,7 +171,7 @@ function save_coverage() {
} else {
echo "<form action='' method='post'>\n";
echo "<table cellspacing='0'>\n";
- echo '<thead><tr><td><input type="checkbox" onclick="var elems = this.form.elements; for (var i=0; elems.length > i; i++) if (elems[i].name == \'tables[]\') elems[i].checked = this.checked;" /></td><th>' . lang('Table') . '</th><td>' . lang('Engine') . '</td><td>' . lang('Comment') . '</td><td>' . lang('Collation') . '</td><td>' . lang('Data Length') . '</td><td>' . lang('Index Length') . '</td><td>' . lang('Data Free') . '</td><td>' . lang('Auto Increment') . '</td><td>' . lang('Rows') . "</td></tr></thead>\n";
+ echo '<thead><tr><td><input type="checkbox" onclick="tables_check(this);" /></td><th>' . lang('Table') . '</th><td>' . lang('Engine') . '</td><td>' . lang('Comment') . '</td><td>' . lang('Collation') . '</td><td>' . lang('Data Length') . '</td><td>' . lang('Index Length') . '</td><td>' . lang('Data Free') . '</td><td>' . lang('Auto Increment') . '</td><td>' . lang('Rows') . "</td></tr></thead>\n";
while ($row = $result->fetch_assoc()) {
table_comment($row);
echo '<tr class="nowrap' . odd(' odd') . '"><td>' . (isset($row["Rows"]) ? '<input type="checkbox" name="tables[]" value="' . htmlspecialchars($row["Name"]) . '"' . (in_array($row["Name"], (array) $_POST["tables"], true) ? ' checked="checked"' : '') . ' /></td><th><a href="' . htmlspecialchars($SELF) . 'table=' . urlencode($row["Name"]) . '">' . htmlspecialchars($row["Name"]) . "</a></th><td>$row[Engine]</td><td>" . (strlen(trim($row["Comment"])) ? htmlspecialchars($row["Comment"]) : "&nbsp;") . "</td><td>$row[Collation]" : '&nbsp;</td><th><a href="' . htmlspecialchars($SELF) . 'view=' . urlencode($row["Name"]) . '">' . htmlspecialchars($row["Name"]) . '</a></th><td colspan="8"><a href="' . htmlspecialchars($SELF) . "select=" . urlencode($row["Name"]) . '">' . lang('View') . '</a>');
View
34 indexes.inc.php
@@ -63,46 +63,16 @@
}
?>
-<script type="text/javascript">// <![CDATA[
-function add_row(field) {
- var row = field.parentNode.parentNode.cloneNode(true);
- var spans = row.getElementsByTagName('span');
- row.getElementsByTagName('td')[1].innerHTML = '<span>' + spans[spans.length - 1].innerHTML + '</span>';
- 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 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 () { };
-}
-// ]]></script>
-
<form action="" method="post">
<table cellspacing="0">
<thead><tr><th><?php echo lang('Index Type'); ?></th><th><?php echo lang('Column (length)'); ?></th></tr></thead>
<?php
$j = 0;
foreach ($row["indexes"] as $index) {
- echo "<tr><td><select name='indexes[$j][type]'" . ($j == count($row["indexes"]) - 1 ? " onchange='add_row(this);'" : "") . "><option></option>" . optionlist($index_types, $index["type"]) . "</select></td><td>\n";
+ echo "<tr><td><select name='indexes[$j][type]'" . ($j == count($row["indexes"]) - 1 ? " onchange='indexes_add_row(this);'" : "") . "><option></option>" . optionlist($index_types, $index["type"]) . "</select></td><td>\n";
ksort($index["columns"]);
foreach ($index["columns"] as $i => $column) {
- echo "<span><select name='indexes[$j][columns][$i]'" . ($i == count($index["columns"]) ? " onchange='add_column(this);'" : "") . "><option></option>" . optionlist($fields, $column) . "</select>";
+ echo "<span><select name='indexes[$j][columns][$i]'" . ($i == count($index["columns"]) ? " onchange='indexes_add_column(this);'" : "") . "><option></option>" . optionlist($fields, $column) . "</select>";
echo "<input name='indexes[$j][lengths][$i]' size='2' value=\"" . htmlspecialchars($index["lengths"][$i]) . "\" /></span>\n";
}
echo "</td></tr>\n";
View
6 procedure.inc.php
@@ -41,12 +41,6 @@
<?php edit_fields($row["fields"], $collations, $routine); ?>
<?php if (isset($_GET["function"])) { ?><tr><td><?php echo lang('Return type'); ?></td><?php echo edit_type("returns", $row["returns"], $collations); ?></tr><?php } ?>
</table>
-<?php echo type_change(count($row["fields"])); ?>
-<?php if (isset($_GET["function"])) { ?>
-<script type="text/javascript">
-document.getElementById('form')['returns[type]'].onchange();
-</script>
-<?php } ?>
<p><textarea name="definition" rows="10" cols="80" style="width: 98%;"><?php echo htmlspecialchars($row["definition"]); ?></textarea></p>
<p>
<input type="hidden" name="token" value="<?php echo $token; ?>" />
View
67 schema.inc.php
@@ -53,75 +53,14 @@
<script type="text/javascript">
var that, x, y, em;
var table_pos = {<?php echo implode(",", $table_pos_js) . "\n"; ?>};
-
-function mousedown(el, event) {
- that = el;
- em = document.getElementById('schema').offsetHeight / <?php echo $top; ?>;
- x = event.clientX - el.offsetLeft;
- y = event.clientY - el.offsetTop;
-}
-document.onmousemove = function (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; divs.length > i; 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';
- }
-}
-document.onmouseup = function (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 = 'schema=' + encodeURIComponent(s.substr(1)) + '; expires=' + date + '; path=' + location.pathname + location.search;
- }
-}
+document.onmousemove = schema_mousemove;
+document.onmouseup = schema_mouseup;
</script>
<div id="schema" style="height: <?php echo $top; ?>em;">
<?php
foreach ($schema as $name => $table) {
- echo "<div class='table' style='top: " . $table["pos"][0] . "em; left: " . $table["pos"][1] . "em;' onmousedown='mousedown(this, event);'>";
+ echo "<div class='table' style='top: " . $table["pos"][0] . "em; left: " . $table["pos"][1] . "em;' onmousedown='schema_mousedown(this, event, $top);'>";
echo '<a href="' . htmlspecialchars($SELF) . 'table=' . urlencode($name) . '"><strong>' . htmlspecialchars($name) . "</strong></a><br />\n";
foreach ($table["fields"] as $field) {
$val = htmlspecialchars($field["field"]);
View
44 select.inc.php
@@ -152,25 +152,6 @@
echo "<p class='error'>" . lang('Unable to select the table') . ($fields ? "" : ": " . htmlspecialchars($dbh->error)) . ".</p>\n";
} else {
echo "<form action='' id='form'>\n";
- ?>
-<script type="text/javascript">// <![CDATA[
-function 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 = '';
- }
- field.parentNode.parentNode.appendChild(row);
- field.onchange = function () { };
-}
-// ]]></script>
-<?php
echo "<fieldset><legend>" . lang('Select') . "</legend>\n";
if (strlen($_GET["server"])) {
echo '<input type="hidden" name="server" value="' . htmlspecialchars($_GET["server"]) . '" />';
@@ -187,7 +168,7 @@ function add_row(field) {
$i++;
}
echo "<div><select name='columns[$i][fun]' onchange='this.nextSibling.onchange();'><option></option>" . optionlist($fun_group) . "</select>";
- echo "<select name='columns[$i][col]' onchange='add_row(this);'><option></option>" . optionlist($columns) . "</select></div>\n";
+ echo "<select name='columns[$i][col]' onchange='select_add_row(this);'><option></option>" . optionlist($columns) . "</select></div>\n";
echo "</fieldset>\n";
echo "<fieldset><legend>" . lang('Search') . "</legend>\n";
@@ -204,28 +185,11 @@ function add_row(field) {
if (strlen("$val[col]$val[val]") && in_array($val["op"], $operators)) {
echo "<div><select name='where[$i][col]'><option value=''>" . lang('(anywhere)') . "</option>" . optionlist($columns, $val["col"]) . "</select>";
echo "<select name='where[$i][op]' onchange='where_change(this);'>" . optionlist($operators, $val["op"]) . "</select>";
- echo "<input name='where[$i][val]' value=\"" . htmlspecialchars($val["val"]) . "\" /></div>\n";
+ echo "<input name='where[$i][val]' value=\"" . htmlspecialchars($val["val"]) . '"' . (ereg('NULL$', $val["op"]) ? " class='hidden'" : "") . " /></div>\n";
$i++;
}
}
- ?>
-<script type="text/javascript">
-function where_change(op) {
- for (var i=0; i < op.form.elements.length; i++) {
- var el = op.form.elements[i];
- if (el.name == op.name.substr(0, op.name.length - 4) + '[val]') {
- el.style.display = (/NULL$/.test(op.options[op.selectedIndex].text) ? 'none' : '');
- }
- }
-}
-<?php if ($i) { ?>
-for (var i=0; <?php echo $i; ?> > i; i++) {
- document.getElementById('form')['where[' + i + '][op]'].onchange();
-}
-<?php } ?>
-</script>
-<?php
- echo "<div><select name='where[$i][col]' onchange='add_row(this);'><option value=''>" . lang('(anywhere)') . "</option>" . optionlist($columns) . "</select>";
+ echo "<div><select name='where[$i][col]' onchange='select_add_row(this);'><option value=''>" . lang('(anywhere)') . "</option>" . optionlist($columns) . "</select>";
echo "<select name='where[$i][op]' onchange='where_change(this);'>" . optionlist($operators) . "</select>";
echo "<input name='where[$i][val]' /></div>\n";
echo "</fieldset>\n";
@@ -239,7 +203,7 @@ function where_change(op) {
$i++;
}
}
- echo "<div><select name='order[$i]' onchange='add_row(this);'><option></option>" . optionlist($columns) . "</select>";
+ echo "<div><select name='order[$i]' onchange='select_add_row(this);'><option></option>" . optionlist($columns) . "</select>";
echo "<label><input type='checkbox' name='desc[$i]' value='1' />" . lang('DESC') . "</label></div>\n";
echo "</fieldset>\n";
View
1 todo.txt
@@ -7,7 +7,6 @@ Compress export and import
Create view and routine options
SQL queries history - utilize in edit link in .message and .error
Function to fix database encoding - http://php.vrana.cz/prevod-kodovani-mysql.php
-Separate JavaScript - load after login form
? Save token also to cookie - for session expiration and login in other window
? Save uploaded files after error to session variable instead of hidden field
? Aliasing of built-in functions can save 7 KB, substitution of $_GET and friends can save 2 KB, remove of base64_decode() + using chars 127-255 in minification can save 1 KB, JS shrink can save 1 KB

0 comments on commit 540e217

Please sign in to comment.
Something went wrong with that request. Please try again.