Highlight code in textarea by CodeMirror
This commit is contained in:
parent
48df7aa1c9
commit
bf54c13dfe
3
.gitmodules
vendored
3
.gitmodules
vendored
|
@ -16,3 +16,6 @@
|
|||
[submodule "JsShrink"]
|
||||
path = externals/JsShrink
|
||||
url = git://github.com/vrana/JsShrink.git
|
||||
[submodule "CodeMirror2"]
|
||||
path = externals/CodeMirror2
|
||||
url = git://github.com/marijnh/CodeMirror2.git
|
||||
|
|
|
@ -4,9 +4,10 @@
|
|||
* @param string
|
||||
* @param mixed array("key" => "link=desc", "key2" => array("link", "desc")), null for nothing, false for driver only, true for driver and server
|
||||
* @param string used after colon in title and heading, will be HTML escaped
|
||||
* @param string printed in <head>
|
||||
* @return null
|
||||
*/
|
||||
function page_header($title, $error = "", $breadcrumb = array(), $title2 = "") {
|
||||
function page_header($title, $error = "", $breadcrumb = array(), $title2 = "", $head = "") {
|
||||
global $LANG, $adminer, $connection, $drivers;
|
||||
header("Content-Type: text/html; charset=utf-8");
|
||||
if ($adminer->headers()) {
|
||||
|
@ -38,6 +39,7 @@ var noResponse = '<?php echo lang('No response from server.'); ?>';
|
|||
<link rel="stylesheet" type="text/css" href="adminer.css">
|
||||
<?php } ?>
|
||||
<?php } ?>
|
||||
<?php echo $head; ?>
|
||||
|
||||
<body class="<?php echo lang('ltr'); ?> nojs"<?php echo ($_POST ? "" : " onclick=\"return bodyClick(event, '" . h(js_escape(DB) . "', '" . js_escape($_GET["ns"])) . "');\""); // avoid re-post confirmation after refreshing the next page in Google Chrome ?> onkeydown="bodyKeydown(event);" onload="bodyLoad('<?php echo (is_object($connection) ? substr($connection->server_info, 0, 3) : ""); ?>');<?php echo (isset($_COOKIE["adminer_version"]) ? "" : " verifyVersion();"); ?>">
|
||||
<script type="text/javascript">
|
||||
|
|
|
@ -113,10 +113,11 @@ function referencable_primary($self) {
|
|||
* @param int
|
||||
* @param int
|
||||
* @param string
|
||||
* @param string
|
||||
* @return null
|
||||
*/
|
||||
function textarea($name, $value, $rows = 10, $cols = 80) {
|
||||
echo "<textarea name='$name' rows='$rows' cols='$cols' class='sqlarea' spellcheck='false' wrap='off' onkeydown='return textareaKeydown(this, event);'>"; // spellcheck, wrap - not valid before HTML5
|
||||
function textarea($name, $value, $rows = 10, $cols = 80, $id = "") {
|
||||
echo "<textarea name='$name'" . ($id ? " id='$id'" : "") . " rows='$rows' cols='$cols' class='sqlarea' spellcheck='false' wrap='off' onkeydown='return textareaKeydown(this, event);'>"; // spellcheck, wrap - not valid before HTML5
|
||||
if (is_array($value)) {
|
||||
foreach ($value as $val) { // not implode() to save memory
|
||||
echo h($val[0]) . "\n\n\n"; // $val == array($query, $time)
|
||||
|
|
|
@ -14,7 +14,10 @@ if (!$error && $_POST["clear"]) {
|
|||
redirect(remove_from_uri("history"));
|
||||
}
|
||||
|
||||
page_header(lang('SQL command'), $error);
|
||||
$codemirror_path = "../externals/CodeMirror2";
|
||||
$codemirror_mode = ($jush == "sql" ? "mysql" : "plsql");
|
||||
|
||||
page_header(lang('SQL command'), $error, array(), "", "<link rel='stylesheet' href='$codemirror_path/lib/codemirror.css'>");
|
||||
|
||||
if (!$error && $_POST) {
|
||||
$fp = false;
|
||||
|
@ -173,8 +176,8 @@ if ($_POST) {
|
|||
} elseif ($_GET["history"] != "") {
|
||||
$q = $history[$_GET["history"]][0];
|
||||
}
|
||||
textarea("query", $q, 20);
|
||||
echo ($_POST ? "" : "<script type='text/javascript'>document.getElementsByTagName('textarea')[0].focus();</script>\n");
|
||||
textarea("query", $q, 20, 80, "query");
|
||||
echo ($_POST ? "" : "<script type='text/javascript'>document.getElementById('query').focus();</script>\n");
|
||||
echo "<p>" . (ini_bool("file_uploads")
|
||||
? lang('File upload') . ': <input type="file" name="sql_file"' . ($_FILES && $_FILES["sql_file"]["error"] != 4 ? '' : ' onchange="this.form[\'only_errors\'].checked = true;"') . '> (< ' . ini_get("upload_max_filesize") . 'B)' // ignore post_max_size because it is for all form fields together and bytes computing would be necessary
|
||||
: lang('File uploads are disabled.')
|
||||
|
@ -212,3 +215,11 @@ if ($history) {
|
|||
?>
|
||||
|
||||
</form>
|
||||
|
||||
<script src="<?php echo $codemirror_path; ?>/lib/codemirror.js"></script>
|
||||
<script src="<?php echo "$codemirror_path/mode/$codemirror_mode/$codemirror_mode.js"; ?>"></script>
|
||||
<script type="text/javascript">
|
||||
if (window.CodeMirror) {
|
||||
CodeMirror.fromTextArea(document.getElementById('query'));
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -62,6 +62,8 @@ input[type=image] { vertical-align: middle; }
|
|||
.rtl #breadcrumb { left: auto; right: 21em; margin: 0 -18px 0 0; }
|
||||
.rtl #lang, .rtl #menu { left: auto; right: 0; }
|
||||
|
||||
.CodeMirror { border: 1px inset #777; }
|
||||
|
||||
@media print {
|
||||
#lang, #menu { display: none; }
|
||||
#content { margin-left: 1em; }
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
Adminer 3.4.0-dev:
|
||||
Print current time next to executed SQL queries
|
||||
Highlight code in textarea by CodeMirror
|
||||
Link to original table in EXPLAIN of SELECT * FROM table t
|
||||
Replace JSMin by better JavaScript minifier
|
||||
Ukrainian translation
|
||||
|
|
|
@ -265,6 +265,7 @@ foreach (array("adminer", "editor") as $project) {
|
|||
$file = preg_replace('~\\.\\./adminer/static/(default\\.css|functions\\.js|favicon\\.ico|loader\\.gif)~', '<?php echo ' . $replace . '"; ?>', $file);
|
||||
$file = preg_replace('~\\.\\./adminer/static/([^\'"]*)~', '" . ' . $replace, $file);
|
||||
$file = str_replace("'../externals/jush/'", "location.protocol + '//www.adminer.org/static/'", $file);
|
||||
$file = str_replace('"../externals/CodeMirror2"', '($_SERVER["HTTPS"] ? "https" : "http") . "://www.adminer.org/static/CodeMirror2"', $file);
|
||||
$file = preg_replace("~<\\?php\\s*\\?>\n?|\\?>\n?<\\?php~", '', $file);
|
||||
$file = php_shrink($file);
|
||||
|
||||
|
|
1
externals/CodeMirror2
vendored
Submodule
1
externals/CodeMirror2
vendored
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit 8feb48b37c3678a102b2de41e24f0f43bee86f50
|
Loading…
Reference in a new issue