[ 'DELETE FROM', 'DISTINCT', 'EXPLAIN', 'FROM', 'GROUP BY', 'HAVING', 'INSERT INTO', 'INNER JOIN', 'IGNORE', 'LIMIT', 'LEFT JOIN', 'NULL', 'ORDER BY', 'ON DUPLICATE KEY UPDATE', 'SELECT', 'UPDATE', 'WHERE', ] ]; foreach (array_keys(Adminer\tables_list()) as $table) { $suggests['___tables___'][] = $table; foreach (Adminer\fields($table) as $field => $foo) { $suggests[$table][] = $field; } } ?> type="text/javascript"> function domReady(fn) { document.addEventListener("DOMContentLoaded", fn) if (document.readyState === "interactive" || document.readyState === "complete" ) { fn() } } function insertNodeAtCaret(node) { if (typeof window.getSelection != "undefined") { var sel = window.getSelection() if (sel.rangeCount) { var range = sel.getRangeAt(0) range.collapse(false) range.insertNode(node) range = range.cloneRange() range.selectNodeContents(node) range.collapse(false) sel.removeAllRanges() sel.addRange(range) } } else if (typeof document.selection != "undefined" && document.selection.type != "Control") { var html = (node.nodeType == 1) ? node.outerHTML : node.data var id = "marker_" + ("" + Math.random()).slice(2) html += '' var textRange = document.selection.createRange() textRange.collapse(false) textRange.pasteHTML(html) var markerSpan = document.getElementById(id) textRange.moveToElementText(markerSpan) textRange.select() markerSpan.parentNode.removeChild(markerSpan) } } function getTable(suggests, tableName){ var table = "
"+ tableName +"
" for(var k in suggests[tableName]){ table += "
"+ suggests[tableName][k] +"
" } return table } function compile(data){ document.getElementById('suggest_tablefields').innerHTML = data document.getElementById('suggest_search').value = ''; //console.log(data) } domReady(() => { const suggests = JSON.parse('') const form = document.getElementById('form') const sqlarea = document.getElementsByClassName('sqlarea')[0] form.style.position = "relative" var suggests_mysql = "" suggests_mysql += "
" for(var k in suggests['___tables___']){ suggests_mysql += "
"+ suggests['___tables___'][k] +"
" } suggests_mysql += "
" for(var k in suggests['___mysql___']){ suggests_mysql += "
"+ suggests['___mysql___'][k] +"
" } var posLeft = (sqlarea.offsetWidth + 3) form.insertAdjacentHTML('afterbegin', '
'+ 'drag|'+ 'stick '+ '
') compile(suggests_mysql) document.addEventListener('click', function (event) { if(event.target.getAttribute('id') === 'suggest_search'){ return } if (event.target.matches('.jush-custom')) { var table = getTable(suggests, event.target.textContent) compile(table) return } if (!event.target.matches('#suggest_tablefields') && !event.target.matches('a') && !event.target.matches('strong') && !event.target.matches('.sqlarea') && !event.target.matches('.jush-sql_code') && !event.target.matches('.jush-bac') && !event.target.matches('.jush-op')){ compile(suggests_mysql) return } }, false) document.getElementById('suggest_tablefields').addEventListener('click', function (event){ if(event.target.matches('a') || event.target.matches('strong')){ var target, text, bt = "`" if(event.target.matches('strong')) { target = event.target = event.target.parentElement } else{ target = event.target } text = target.textContent sqlarea.focus() if(target.getAttribute("data-text")){ text = target.getAttribute("data-text") } if(target.getAttribute("data-nobt")){ bt = "" } insertNodeAtCaret(document.createTextNode(bt + text + bt + " ")) if(target.getAttribute("data-table")){ var table = getTable(suggests, target.textContent) compile(table) } sqlarea.dispatchEvent(new KeyboardEvent('keyup')) } }, false) document.getElementById('suggest_search').addEventListener('keyup', function () { var value = this.value.toLowerCase() if (value != '') { var reg = (value + '').replace(/([\\\.\+\*\?\[\^\]\$\(\)\{\}\=\!\<\>\|\:])/g, '\\$1') reg = new RegExp('('+ reg + ')', 'gi') } var tables = qsa('dd a', qs('#suggest_tablefields')) for (var i = 0; i < tables.length; i++) { var a = tables[i] var text = tables[i].textContent if (value == '') { tables[i].className = '' a.innerHTML = text } else { tables[i].className = (text.toLowerCase().indexOf(value) == -1 ? 'hidden' : '') a.innerHTML = text.replace(reg, '$1') } } }, false) //drag / stick document.getElementById('suggest_tablefields_stick').addEventListener('click', function () { var obj = document.getElementById('suggest_tablefields_container') obj.style.position = "absolute" obj.style.left = this.getAttribute('data-pos-left') obj.style.top = 0 obj.classList.remove("xborder") }) window.onload = function(){ draggable('suggest_tablefields_container') } var dragObj = null function draggable(id) { var obj = document.getElementById(id) var m = document.getElementById('suggest_tablefields_drag') m.onmousedown = function(){ obj.style.position = "fixed" obj.classList.add("xborder") dragObj = obj } } document.onmouseup = function(){ dragObj = null } document.onmousemove = function(e){ var x = e.pageX var y = e.pageY if(dragObj == null) return dragObj.style.left = x +"px" dragObj.style.top= y +"px" } })