Merge remote-tracking branch 'origin/master' into drizzle

Conflicts:
	libraries/dbi/mysqli.dbi.lib.php
This commit is contained in:
Piotr Przybylski 2011-07-27 20:10:38 +02:00
commit 0eca09ffff
12 changed files with 582 additions and 368 deletions

View File

@ -42,6 +42,7 @@ phpMyAdmin - ChangeLog
+ AJAX for table Structure column Add
3.4.5.0 (not yet released)
- bug #3375325 [interface] Page list in navigation frame looks odd
3.4.4.0 (not yet released)
- bug #3323060 [parser] SQL parser breaks AJAX requests if query has unclosed quotes

View File

@ -1391,8 +1391,12 @@ CREATE DATABASE,ALTER DATABASE,DROP DATABASE</pre>
is known to cause data corruption when having enabled buffering.</dd>
<dt id="cfg_PersistentConnections">$cfg['PersistentConnections'] boolean</dt>
<dd>Whether persistent connections should be used or not (mysql_connect or
mysql_pconnect).</dd>
<dd>Whether <a href="http://php.net/manual/en/features.persistent-connections.php">persistent connections</a>
should be used or not. Works with following extensions:
<ul>
<li>mysql (<a href="http://php.net/manual/en/function.mysql-pconnect.php">mysql_pconnect</a>),</li>
<li>mysqli (requires PHP 5.3.0 or newer, <a href="http://php.net/manual/en/mysqli.persistconns.php">more information</a>).</li>
</ul></dd>
<dt id="cfg_ForceSSL">$cfg['ForceSSL'] boolean</dt>
<dd>Whether to force using https while accessing phpMyAdmin.</dd>

View File

@ -21,7 +21,7 @@ var CodeMirror = (function() {
wrapper.innerHTML =
'<div style="overflow: hidden; position: relative; width: 1px; height: 0px;">' + // Wraps and hides input textarea
'<textarea style="position: absolute; width: 2px;" wrap="off"></textarea></div>' +
'<div class="CodeMirror-scroll">' +
'<div class="CodeMirror-scroll cm-s-' + options.theme + '">' +
'<div style="position: relative">' + // Set to the height of the text, causes scrolling
'<div style="position: absolute; height: 0; width: 0; overflow: hidden;"></div>' +
'<div style="position: relative">' + // Moved around its parent to cover visible view
@ -72,19 +72,17 @@ var CodeMirror = (function() {
var editing, bracketHighlighted;
// Tracks the maximum line length so that the horizontal scrollbar
// can be kept static when scrolling.
var maxLine = "";
var maxLine = "", maxWidth;
// Initialize the content. Somewhat hacky (delayed prepareInput)
// to work around browser issues.
// Initialize the content.
operation(function(){setValue(options.value || ""); updateInput = false;})();
setTimeout(prepareInput, 20);
// Register our event handlers.
connect(scroller, "mousedown", operation(onMouseDown));
// Gecko browsers fire contextmenu *after* opening the menu, at
// which point we can't mess with it anymore. Context menu is
// handled in onMouseDown for Gecko.
if (!gecko) connect(scroller, "contextmenu", operation(onContextMenu));
if (!gecko) connect(scroller, "contextmenu", onContextMenu);
connect(code, "dblclick", operation(onDblClick));
connect(scroller, "scroll", function() {updateDisplay([]); if (options.onScroll) options.onScroll(instance);});
connect(window, "resize", function() {updateDisplay(true);});
@ -94,8 +92,8 @@ var CodeMirror = (function() {
connect(input, "focus", onFocus);
connect(input, "blur", onBlur);
connect(scroller, "dragenter", function(e){e.stop();});
connect(scroller, "dragover", function(e){e.stop();});
connect(scroller, "dragenter", e_stop);
connect(scroller, "dragover", e_stop);
connect(scroller, "drop", operation(onDrop));
connect(scroller, "paste", function(){focusInput(); fastPoll();});
connect(input, "paste", function(){fastPoll();});
@ -104,7 +102,7 @@ var CodeMirror = (function() {
// IE throws unspecified error in certain cases, when
// trying to access activeElement before onload
var hasFocus; try { hasFocus = (targetDocument.activeElement == input); } catch(e) { }
if (hasFocus) onFocus();
if (hasFocus) setTimeout(onFocus, 20);
else onBlur();
function isLine(l) {return l >= 0 && l < lines.length;}
@ -124,6 +122,7 @@ var CodeMirror = (function() {
if (option == "lineNumbers" || option == "gutter") gutterChanged();
else if (option == "mode" || option == "indentUnit") loadMode();
else if (option == "readOnly" && value == "nocursor") input.blur();
else if (option == "theme") scroller.className = scroller.className.replace(/cm-s-\w+/, "cm-s-" + value);
},
getOption: function(option) {return options[option];},
undo: operation(undo),
@ -135,6 +134,10 @@ var CodeMirror = (function() {
pos = clipPos(pos);
return lines[pos.line].getTokenAt(mode, getStateBefore(pos.line), pos.ch);
},
getStateAfter: function(line) {
line = clipLine(line == null ? lines.length - 1: line);
return getStateBefore(line + 1);
},
cursorCoords: function(start){
if (start == null) start = sel.inverted;
return pageCoords(start ? sel.from : sel.to);
@ -151,13 +154,25 @@ var CodeMirror = (function() {
clearMarker: removeGutterMarker,
setLineClass: operation(setLineClass),
lineInfo: lineInfo,
addWidget: function(pos, node, scroll) {
var pos = localCoords(clipPos(pos), true);
node.style.top = (showingFrom * lineHeight() + pos.yBot + paddingTop()) + "px";
node.style.left = (pos.x + paddingLeft()) + "px";
addWidget: function(pos, node, scroll, where) {
pos = localCoords(clipPos(pos));
var top = pos.yBot, left = pos.x;
node.style.position = "absolute";
code.appendChild(node);
node.style.left = left + "px";
if (where == "over") top = pos.y;
else if (where == "near") {
var vspace = Math.max(scroller.offsetHeight, lines.length * lineHeight()),
hspace = Math.max(code.clientWidth, lineSpace.clientWidth) - paddingLeft();
if (pos.yBot + node.offsetHeight > vspace && pos.y > node.offsetHeight)
top = pos.y - node.offsetHeight;
if (left + node.offsetWidth > hspace)
left = hspace - node.offsetWidth;
}
node.style.top = (top + paddingTop()) + "px";
node.style.left = (left + paddingLeft()) + "px";
if (scroll)
scrollIntoView(pos.x, pos.yBot, pos.x + node.offsetWidth, pos.yBot + node.offsetHeight);
scrollIntoView(left, top, left + node.offsetWidth, top + node.offsetHeight);
},
lineCount: function() {return lines.length;},
@ -184,7 +199,8 @@ var CodeMirror = (function() {
operation: function(f){return operation(f)();},
refresh: function(){updateDisplay(true);},
getInputField: function(){return input;},
getWrapperElement: function(){return wrapper;}
getWrapperElement: function(){return wrapper;},
getScrollerElement: function(){return scroller;}
};
function setValue(code) {
@ -202,28 +218,39 @@ var CodeMirror = (function() {
}
function onMouseDown(e) {
// Check whether this is a click in a widget
for (var n = e_target(e); n != wrapper; n = n.parentNode)
if (n.parentNode == code && n != mover) return;
var ld = lastDoubleClick; lastDoubleClick = null;
// First, see if this is a click in the gutter
for (var n = e.target(); n != wrapper; n = n.parentNode)
for (var n = e_target(e); n != wrapper; n = n.parentNode)
if (n.parentNode == gutterText) {
if (options.onGutterClick)
options.onGutterClick(instance, indexOf(gutterText.childNodes, n) + showingFrom);
return e.stop();
return e_preventDefault(e);
}
if (gecko && e.button() == 3) onContextMenu(e);
if (e.button() != 1) return;
var start = posFromMouse(e);
switch (e_button(e)) {
case 3:
if (gecko && !mac) onContextMenu(e);
return;
case 2:
if (start) setCursor(start.line, start.ch, true);
return;
}
// For button 1, if it was clicked inside the editor
// (posFromMouse returning non-null), we have to adjust the
// selection.
var start = posFromMouse(e), last = start, going;
if (!start) {if (e.target() == scroller) e.stop(); return;}
if (!start) {if (e_target(e) == scroller) e_preventDefault(e); return;}
if (!focused) onFocus();
e.stop();
e_preventDefault(e);
if (ld && +new Date - ld < 400) return selectLine(start.line);
setCursor(start.line, start.ch, true);
var last = start, going;
// And then we have to see if it's a drag event, in which case
// the dragged-over text must be selected.
function end() {
@ -246,14 +273,14 @@ var CodeMirror = (function() {
var move = connect(targetDocument, "mousemove", operation(function(e) {
clearTimeout(going);
e.stop();
e_preventDefault(e);
extend(e);
}), true);
var up = connect(targetDocument, "mouseup", operation(function(e) {
clearTimeout(going);
var cur = posFromMouse(e);
if (cur) setSelectionUser(start, cur);
e.stop();
e_preventDefault(e);
end();
}), true);
}
@ -261,15 +288,14 @@ var CodeMirror = (function() {
var pos = posFromMouse(e);
if (!pos) return;
selectWordAt(pos);
e.stop();
e_preventDefault(e);
lastDoubleClick = +new Date;
}
function onDrop(e) {
var pos = posFromMouse(e, true), files = e.e.dataTransfer.files;
e.preventDefault();
var pos = posFromMouse(e, true), files = e.dataTransfer.files;
if (!pos || options.readOnly) return;
if (files && files.length && window.FileReader && window.File) {
var n = files.length, text = Array(n), read = 0;
for (var i = 0; i < n; ++i) loadFile(files[i], i);
function loadFile(file, i) {
var reader = new FileReader;
reader.onload = function() {
@ -278,10 +304,12 @@ var CodeMirror = (function() {
};
reader.readAsText(file);
}
var n = files.length, text = Array(n), read = 0;
for (var i = 0; i < n; ++i) loadFile(files[i], i);
}
else {
try {
var text = e.e.dataTransfer.getData("Text");
var text = e.dataTransfer.getData("Text");
if (text) replaceRange(text, pos, pos);
}
catch(e){}
@ -290,25 +318,27 @@ var CodeMirror = (function() {
function onKeyDown(e) {
if (!focused) onFocus();
var code = e.e.keyCode;
var code = e.keyCode;
// IE does strange things with escape.
if (ie && code == 27) { e.returnValue = false; }
// Tries to detect ctrl on non-mac, cmd on mac.
var mod = (mac ? e.e.metaKey : e.e.ctrlKey) && !e.e.altKey, anyMod = e.e.ctrlKey || e.e.altKey || e.e.metaKey;
if (code == 16 || e.e.shiftKey) shiftSelecting = shiftSelecting || (sel.inverted ? sel.to : sel.from);
var mod = (mac ? e.metaKey : e.ctrlKey) && !e.altKey, anyMod = e.ctrlKey || e.altKey || e.metaKey;
if (code == 16 || e.shiftKey) shiftSelecting = shiftSelecting || (sel.inverted ? sel.to : sel.from);
else shiftSelecting = null;
// First give onKeyEvent option a chance to handle this.
if (options.onKeyEvent && options.onKeyEvent(instance, addStop(e.e))) return;
if (options.onKeyEvent && options.onKeyEvent(instance, addStop(e))) return;
if (code == 33 || code == 34) {scrollPage(code == 34); return e.stop();} // page up/down
if (code == 33 || code == 34) {scrollPage(code == 34); return e_preventDefault(e);} // page up/down
if (mod && ((code == 36 || code == 35) || // ctrl-home/end
mac && (code == 38 || code == 40))) { // cmd-up/down
scrollEnd(code == 36 || code == 38); return e.stop();
scrollEnd(code == 36 || code == 38); return e_preventDefault(e);
}
if (mod && code == 65) {selectAll(); return e.stop();} // ctrl-a
if (mod && code == 65) {selectAll(); return e_preventDefault(e);} // ctrl-a
if (!options.readOnly) {
if (!anyMod && code == 13) {return;} // enter
if (!anyMod && code == 9 && handleTab(e.e.shiftKey)) return e.stop(); // tab
if (mod && code == 90) {undo(); return e.stop();} // ctrl-z
if (mod && ((e.e.shiftKey && code == 90) || code == 89)) {redo(); return e.stop();} // ctrl-shift-z, ctrl-y
if (!anyMod && code == 9 && handleTab(e.shiftKey)) return e_preventDefault(e); // tab
if (mod && code == 90) {undo(); return e_preventDefault(e);} // ctrl-z
if (mod && ((e.shiftKey && code == 90) || code == 89)) {redo(); return e_preventDefault(e);} // ctrl-shift-z, ctrl-y
}
// Key id to use in the movementKeys map. We also pass it to
@ -328,42 +358,47 @@ var CodeMirror = (function() {
fastPoll(curKeyId);
}
function onKeyUp(e) {
if (options.onKeyEvent && options.onKeyEvent(instance, addStop(e.e))) return;
if (options.onKeyEvent && options.onKeyEvent(instance, addStop(e))) return;
if (reducedSelection) {
reducedSelection = null;
updateInput = true;
}
if (e.e.keyCode == 16) shiftSelecting = null;
if (e.keyCode == 16) shiftSelecting = null;
}
function onKeyPress(e) {
if (options.onKeyEvent && options.onKeyEvent(instance, addStop(e.e))) return;
if (options.onKeyEvent && options.onKeyEvent(instance, addStop(e))) return;
if (options.electricChars && mode.electricChars) {
var ch = String.fromCharCode(e.e.charCode == null ? e.e.keyCode : e.e.charCode);
var ch = String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode);
if (mode.electricChars.indexOf(ch) > -1)
setTimeout(operation(function() {indentLine(sel.to.line, "smart");}), 50);
}
var code = e.e.keyCode;
var code = e.keyCode;
// Re-stop tab and enter. Necessary on some browsers.
if (code == 13) {if (!options.readOnly) handleEnter(); e.stop();}
else if (!e.e.ctrlKey && !e.e.altKey && !e.e.metaKey && code == 9 && options.tabMode != "default") e.stop();
if (code == 13) {if (!options.readOnly) handleEnter(); e_preventDefault(e);}
else if (!e.ctrlKey && !e.altKey && !e.metaKey && code == 9 && options.tabMode != "default") e_preventDefault(e);
else fastPoll(curKeyId);
}
function onFocus() {
if (options.readOnly == "nocursor") return;
if (!focused && options.onFocus) options.onFocus(instance);
focused = true;
if (!focused) {
if (options.onFocus) options.onFocus(instance);
focused = true;
if (wrapper.className.search(/\bCodeMirror-focused\b/) == -1)
wrapper.className += " CodeMirror-focused";
if (!leaveInputAlone) prepareInput();
}
slowPoll();
if (wrapper.className.search(/\bCodeMirror-focused\b/) == -1)
wrapper.className += " CodeMirror-focused";
restartBlink();
}
function onBlur() {
if (focused && options.onBlur) options.onBlur(instance);
if (focused) {
if (options.onBlur) options.onBlur(instance);
focused = false;
wrapper.className = wrapper.className.replace(" CodeMirror-focused", "");
}
clearInterval(blinker);
shiftSelecting = null;
focused = false;
wrapper.className = wrapper.className.replace(" CodeMirror-focused", "");
setTimeout(function() {if (!focused) shiftSelecting = null;}, 150);
}
// Replace the range from from to to by the strings in newText.
@ -386,6 +421,7 @@ var CodeMirror = (function() {
var pos = clipPos({line: change.start + change.old.length - 1,
ch: editEnd(replaced[replaced.length-1], change.old[change.old.length-1])});
updateLinesNoUndo({line: change.start, ch: 0}, {line: end - 1, ch: lines[end-1].text.length}, change.old, pos, pos);
updateInput = true;
}
}
function undo() {unredoHelper(history.done, history.undone);}
@ -393,7 +429,7 @@ var CodeMirror = (function() {
function updateLinesNoUndo(from, to, newText, selFrom, selTo) {
var recomputeMaxLength = false, maxLineLength = maxLine.length;
for (var i = from.line; i < to.line; ++i) {
for (var i = from.line; i <= to.line; ++i) {
if (lines[i].text.length == maxLineLength) {recomputeMaxLength = true; break;}
}
@ -427,12 +463,12 @@ var CodeMirror = (function() {
for (var i = from.line, e = i + newText.length; i < e; ++i) {
var l = lines[i].text;
if (l.length > maxLineLength) {
maxLine = l; maxLineLength = l.length;
maxLine = l; maxLineLength = l.length; maxWidth = null;
recomputeMaxLength = false;
}
}
if (recomputeMaxLength) {
maxLineLength = 0;
maxLineLength = 0; maxLine = ""; maxWidth = null;
for (var i = 0, e = lines.length; i < e; ++i) {
var l = lines[i].text;
if (l.length > maxLineLength) {
@ -449,7 +485,12 @@ var CodeMirror = (function() {
if (task < from.line) newWork.push(task);
else if (task > to.line) newWork.push(task + lendiff);
}
if (newText.length) newWork.push(from.line);
if (newText.length < 5) {
highlightLines(from.line, from.line + newText.length);
newWork.push(from.line + newText.length);
} else {
newWork.push(from.line);
}
work = newWork;
startWorker(100);
// Remember that these lines changed, for updating the display
@ -537,7 +578,7 @@ var CodeMirror = (function() {
// to the data in the editing variable, and updates the editor
// content or cursor if something changed.
function readInput() {
if (leaveInputAlone) return;
if (leaveInputAlone || !focused) return;
var changed = false, text = input.value, sr = selRange(input);
if (!sr) return false;
var changed = editing.text != text, rs = reducedSelection;
@ -565,13 +606,10 @@ var CodeMirror = (function() {
// so that you can, for example, press shift-up at the start of
// your selection and have the right thing happen.
if (rs) {
from = sr.start == rs.anchor ? to : from;
to = shiftSelecting ? sel.to : sr.start == rs.anchor ? from : to;
if (!posLess(from, to)) {
reducedSelection = null;
sel.inverted = false;
var tmp = from; from = to; to = tmp;
}
var head = sr.start == rs.anchor ? to : from;
var tail = shiftSelecting ? sel.to : sr.start == rs.anchor ? from : to;
if (sel.inverted = posLess(head, tail)) { from = head; to = tail; }
else { reducedSelection = null; from = tail; to = head; }
}
// In some cases (cursor on same line as before), we don't have
@ -591,8 +629,8 @@ var CodeMirror = (function() {
var ch = nl > -1 ? start - nl : start, endline = editing.to - 1, edend = editing.text.length;
for (;;) {
c = editing.text.charAt(edend);
if (c == "\n") endline--;
if (text.charAt(end) != c) {++end; ++edend; break;}
if (c == "\n") endline--;
if (edend <= start || end <= start) break;
--end; --edend;
}
@ -731,8 +769,15 @@ var CodeMirror = (function() {
updateGutter();
}
var textWidth = stringWidth(maxLine);
lineSpace.style.width = textWidth > scroller.clientWidth ? textWidth + "px" : "";
if (maxWidth == null) maxWidth = stringWidth(maxLine);
if (maxWidth > scroller.clientWidth) {
lineSpace.style.width = maxWidth + "px";
// Needed to prevent odd wrapping/hiding of widgets placed in here.
code.style.width = "";
code.style.width = scroller.scrollWidth + "px";
} else {
lineSpace.style.width = code.style.width = "";
}
// Since this is all rather error prone, it is honoured with the
// only assertion in the whole file.
@ -807,7 +852,7 @@ var CodeMirror = (function() {
var hText = mover.offsetHeight, hEditor = scroller.clientHeight;
gutter.style.height = (hText - hEditor < 2 ? hEditor : hText) + "px";
var html = [];
for (var i = showingFrom; i < showingTo; ++i) {
for (var i = showingFrom; i < Math.max(showingTo, showingFrom + 1); ++i) {
var marker = lines[i].gutterMarker;
var text = options.lineNumbers ? i + options.firstLineNumber : null;
if (marker && marker.text)
@ -850,10 +895,9 @@ var CodeMirror = (function() {
if (posEq(sel.from, from) && posEq(sel.to, to)) return;
if (posLess(to, from)) {var tmp = to; to = from; from = tmp;}
var startEq = posEq(sel.to, to), endEq = posEq(sel.from, from);
if (posEq(from, to)) sel.inverted = false;
else if (startEq && !endEq) sel.inverted = true;
else if (endEq && !startEq) sel.inverted = false;
else if (posEq(from, sel.to)) sel.inverted = false;
else if (posEq(to, sel.from)) sel.inverted = true;
// Some ugly logic used to only mark the lines that actually did
// see a change in selection as changed, rather than the whole
@ -926,12 +970,17 @@ var CodeMirror = (function() {
indentLine(sel.from.line, options.enterMode == "keep" ? "prev" : "smart");
}
function handleTab(shift) {
function indentSelected(mode) {
if (posEq(sel.from, sel.to)) return indentLine(sel.from.line, mode);
var e = sel.to.line - (sel.to.ch ? 0 : 1);
for (var i = sel.from.line; i <= e; ++i) indentLine(i, mode);
}
shiftSelecting = null;
switch (options.tabMode) {
case "default":
return false;
case "indent":
for (var i = sel.from.line, e = sel.to.line; i <= e; ++i) indentLine(i, "smart");
indentSelected("smart");
break;
case "classic":
if (posEq(sel.from, sel.to)) {
@ -940,7 +989,7 @@ var CodeMirror = (function() {
break;
}
case "shift":
for (var i = sel.from.line, e = sel.to.line; i <= e; ++i) indentLine(i, shift ? "subtract" : "add");
indentSelected(shift ? "subtract" : "add");
break;
}
return true;
@ -1121,7 +1170,9 @@ var CodeMirror = (function() {
function paddingLeft() {return lineSpace.offsetLeft;}
function posFromMouse(e, liberal) {
var offW = eltOffset(scroller, true), x = e.e.clientX, y = e.e.clientY;
var offW = eltOffset(scroller, true), x, y;
// Fails unpredictably on IE[67] when mouse is dragged around quickly.
try { x = e.clientX; y = e.clientY; } catch (e) { return null; }
// This is a mess of a heuristic to try and determine whether a
// scroll-bar was clicked or not, and to return null if one was
// (and !liberal).
@ -1135,18 +1186,21 @@ var CodeMirror = (function() {
var pos = posFromMouse(e);
if (!pos || window.opera) return; // Opera is difficult.
if (posEq(sel.from, sel.to) || posLess(pos, sel.from) || !posLess(pos, sel.to))
setCursor(pos.line, pos.ch);
operation(setCursor)(pos.line, pos.ch);
var oldCSS = input.style.cssText;
input.style.cssText = "position: fixed; width: 30px; height: 30px; top: " + (e.pageY() - 1) +
"px; left: " + (e.pageX() - 1) + "px; z-index: 1000; background: white; " +
"border-width: 0; outline: none; overflow: hidden;";
inputDiv.style.position = "absolute";
input.style.cssText = "position: fixed; width: 30px; height: 30px; top: " + (e_pageY(e) - 1) +
"px; left: " + (e_pageX(e) - 1) + "px; z-index: 1000; background: white; " +
"border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);";
leaveInputAlone = true;
var val = input.value = getSelection();
focusInput();
setSelRange(input, 0, input.value.length);
leaveInputAlone = true;
function rehide() {
if (input.value != val) operation(replaceSelection)(input.value, "end");
var newVal = splitLines(input.value).join("\n");
if (newVal != val) operation(replaceSelection)(newVal, "end");
inputDiv.style.position = "relative";
input.style.cssText = oldCSS;
leaveInputAlone = false;
prepareInput();
@ -1154,7 +1208,7 @@ var CodeMirror = (function() {
}
if (gecko) {
e.stop()
e_stop(e);
var mouseup = connect(window, "mouseup", function() {
mouseup();
setTimeout(rehide, 20);
@ -1201,19 +1255,20 @@ var CodeMirror = (function() {
}
}
}
for (var i = head.line, e = forward ? Math.min(i + 50, lines.length) : Math.max(-1, i - 50); i != e; i+=d) {
for (var i = head.line, e = forward ? Math.min(i + 100, lines.length) : Math.max(-1, i - 100); i != e; i+=d) {
var line = lines[i], first = i == head.line;
var found = scan(line, first && forward ? pos + 1 : 0, first && !forward ? pos : line.text.length);
if (found) {
var style = found.match ? "CodeMirror-matchingbracket" : "CodeMirror-nonmatchingbracket";
var one = markText({line: head.line, ch: pos}, {line: head.line, ch: pos+1}, style),
two = markText({line: i, ch: found.pos}, {line: i, ch: found.pos + 1}, style);
var clear = operation(function(){one(); two();});
if (autoclear) setTimeout(clear, 800);
else bracketHighlighted = clear;
break;
}
if (found) break;
}
if (!found) found = {pos: null, match: false};
var style = found.match ? "CodeMirror-matchingbracket" : "CodeMirror-nonmatchingbracket";
var one = markText({line: head.line, ch: pos}, {line: head.line, ch: pos+1}, style),
two = found.pos != null
? markText({line: i, ch: found.pos}, {line: i, ch: found.pos + 1}, style)
: function() {};
var clear = operation(function(){one(); two();});
if (autoclear) setTimeout(clear, 800);
else bracketHighlighted = clear;
}
// Finds the line to start with when starting a parse. Tries to
@ -1244,38 +1299,49 @@ var CodeMirror = (function() {
line.highlight(mode, state);
line.stateAfter = copyState(mode, state);
}
if (!lines[n].stateAfter) work.push(n);
if (n < lines.length && !lines[n].stateAfter) work.push(n);
return state;
}
function highlightLines(start, end) {
var state = getStateBefore(start);
for (var i = start; i < end; ++i) {
var line = lines[i];
line.highlight(mode, state);
line.stateAfter = copyState(mode, state);
}
}
function highlightWorker() {
var end = +new Date + options.workTime;
var didSomething = false;
var foundWork = work.length;
while (work.length) {
if (!lines[showingFrom].stateAfter) var task = showingFrom;
else var task = work.pop();
if (task >= lines.length) continue;
didSomething = true;
var start = findStartLine(task), state = start && lines[start-1].stateAfter;
if (state) state = copyState(mode, state);
else state = startState(mode);
var unchanged = 0;
var unchanged = 0, compare = mode.compareStates;
for (var i = start, l = lines.length; i < l; ++i) {
var line = lines[i], hadState = line.stateAfter;
if (+new Date > end) {
work.push(i);
startWorker(options.workDelay);
changes.push({from: task, to: i});
changes.push({from: task, to: i + 1});
return;
}
var changed = line.highlight(mode, state);
line.stateAfter = copyState(mode, state);
if (changed || !hadState) unchanged = 0;
else if (++unchanged > 3) break;
if (compare) {
if (hadState && compare(hadState, state)) break;
} else {
if (changed || !hadState) unchanged = 0;
else if (++unchanged > 3) break;
}
}
changes.push({from: task, to: i});
changes.push({from: task, to: i + 1});
}
if (didSomething && options.onHighlightComplete)
if (foundWork && options.onHighlightComplete)
options.onHighlightComplete(instance);
}
function startWorker(time) {
@ -1300,7 +1366,8 @@ var CodeMirror = (function() {
// updateInput can be set to a boolean value to force/prevent an
// update.
if (!leaveInputAlone && (updateInput === true || (updateInput !== false && selectionChanged)))
if (focused && !leaveInputAlone &&
(updateInput === true || (updateInput !== false && selectionChanged)))
prepareInput();
if (selectionChanged && options.matchBrackets)
@ -1427,9 +1494,21 @@ var CodeMirror = (function() {
},
from: function() {if (this.atOccurrence) return copyPos(this.pos.from);},
to: function() {if (this.atOccurrence) return copyPos(this.pos.to);}
to: function() {if (this.atOccurrence) return copyPos(this.pos.to);},
replace: function(newText) {
var self = this;
if (this.atOccurrence)
operation(function() {
self.pos.to = replaceRange(newText, self.pos.from, self.pos.to);
})();
}
};
for (var ext in extensions)
if (extensions.propertyIsEnumerable(ext) &&
!instance.propertyIsEnumerable(ext))
instance[ext] = extensions[ext];
return instance;
} // (end of function CodeMirror)
@ -1437,6 +1516,7 @@ var CodeMirror = (function() {
CodeMirror.defaults = {
value: "",
mode: null,
theme: "default",
indentUnit: 2,
indentWithTabs: false,
tabMode: "classic",
@ -1482,7 +1562,7 @@ var CodeMirror = (function() {
return CodeMirror.getMode(options, "text/plain");
}
return mfactory(options, config || {});
}
};
CodeMirror.listModes = function() {
var list = [];
for (var m in modes)
@ -1496,6 +1576,11 @@ var CodeMirror = (function() {
return list;
};
var extensions = {};
CodeMirror.defineExtension = function(name, func) {
extensions[name] = func;
};
CodeMirror.fromTextArea = function(textarea, options) {
if (!options) options = {};
options.value = textarea.value;
@ -1727,7 +1812,7 @@ var CodeMirror = (function() {
var str = st[i], l = str.length;
if (ch + l > len) str = str.slice(0, len - ch);
ch += l;
span(str, st[i+1]);
span(str, "cm-" + st[i+1]);
}
else {
var pos = 0, i = 0, text = "", style, sg = 0;
@ -1759,12 +1844,12 @@ var CodeMirror = (function() {
}
for (;;) {
var end = pos + text.length;
var apliedStyle = style;
if (extraStyle) apliedStyle = style ? style + extraStyle : extraStyle;
span(end > upto ? text.slice(0, upto - pos) : text, apliedStyle);
var appliedStyle = style;
if (extraStyle) appliedStyle = style ? style + extraStyle : extraStyle;
span(end > upto ? text.slice(0, upto - pos) : text, appliedStyle);
if (end >= upto) {text = text.slice(upto - pos); pos = upto; break;}
pos = end;
text = st[i++]; style = st[i++];
text = st[i++]; style = "cm-" + st[i++];
}
}
if (sfrom != null && sto == null) span(" ", "CodeMirror-selected");
@ -1822,44 +1907,44 @@ var CodeMirror = (function() {
}
};
// Event stopping compatibility wrapper.
function stopEvent() {
if (this.preventDefault) {this.preventDefault(); this.stopPropagation();}
else {this.returnValue = false; this.cancelBubble = true;}
}
function stopMethod() {e_stop(this);}
// Ensure an event has a stop method.
function addStop(event) {
if (!event.stop) event.stop = stopEvent;
if (!event.stop) event.stop = stopMethod;
return event;
}
// Event wrapper, exposing the few operations we need.
function Event(orig) {this.e = orig;}
Event.prototype = {
stop: function() {stopEvent.call(this.e);},
target: function() {return this.e.target || this.e.srcElement;},
button: function() {
if (this.e.which) return this.e.which;
else if (this.e.button & 1) return 1;
else if (this.e.button & 2) return 3;
else if (this.e.button & 4) return 2;
},
pageX: function() {
if (this.e.pageX != null) return this.e.pageX;
var doc = this.target().ownerDocument;
return this.e.clientX + doc.body.scrollLeft + doc.documentElement.scrollLeft;
},
pageY: function() {
if (this.e.pageY != null) return this.e.pageY;
var doc = this.target().ownerDocument;
return this.e.clientY + doc.body.scrollTop + doc.documentElement.scrollTop;
}
};
function e_preventDefault(e) {
if (e.preventDefault) e.preventDefault();
else e.returnValue = false;
}
function e_stopPropagation(e) {
if (e.stopPropagation) e.stopPropagation();
else e.cancelBubble = true;
}
function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}
function e_target(e) {return e.target || e.srcElement;}
function e_button(e) {
if (e.which) return e.which;
else if (e.button & 1) return 1;
else if (e.button & 2) return 3;
else if (e.button & 4) return 2;
}
function e_pageX(e) {
if (e.pageX != null) return e.pageX;
var doc = e_target(e).ownerDocument;
return e.clientX + doc.body.scrollLeft + doc.documentElement.scrollLeft;
}
function e_pageY(e) {
if (e.pageY != null) return e.pageY;
var doc = e_target(e).ownerDocument;
return e.clientY + doc.body.scrollTop + doc.documentElement.scrollTop;
}
// Event handler registration. If disconnect is true, it'll return a
// function that unregisters the handler.
function connect(node, type, handler, disconnect) {
function wrapHandler(event) {handler(new Event(event || window.event));}
function wrapHandler(event) {handler(event || window.event);}
if (typeof node.addEventListener == "function") {
node.addEventListener(type, wrapHandler, false);
if (disconnect) return function() {node.removeEventListener(type, wrapHandler, false);};
@ -1881,6 +1966,8 @@ var CodeMirror = (function() {
})();
var gecko = /gecko\/\d{7}/i.test(navigator.userAgent);
var ie = /MSIE \d/.test(navigator.userAgent);
var safari = /Apple Computer/.test(navigator.vendor);
var lineSep = "\n";
// Feature-detect whether newlines in textareas are converted to \r\n
@ -1910,17 +1997,21 @@ var CodeMirror = (function() {
return n;
}
function computedStyle(elt) {
if (elt.currentStyle) return elt.currentStyle;
return window.getComputedStyle(elt, null);
}
// Find the position of an element by following the offsetParent chain.
// If screen==true, it returns screen (rather than page) coordinates.
function eltOffset(node, screen) {
var doc = node.ownerDocument.body;
var x = 0, y = 0, hitDoc = false;
var x = 0, y = 0, skipDoc = false;
for (var n = node; n; n = n.offsetParent) {
x += n.offsetLeft; y += n.offsetTop;
// Fixed-position elements don't have the document in their offset chain
if (n == doc) hitDoc = true;
if (screen && computedStyle(n).position == "fixed")
skipDoc = true;
}
var e = screen && hitDoc ? null : doc;
var e = screen && !skipDoc ? null : doc;
for (var n = node.parentNode; n != e; n = n.parentNode)
if (n.scrollLeft != null) { x -= n.scrollLeft; y -= n.scrollTop;}
return {left: x, top: y};
@ -1935,10 +2026,10 @@ var CodeMirror = (function() {
function posLess(a, b) {return a.line < b.line || (a.line == b.line && a.ch < b.ch);}
function copyPos(x) {return {line: x.line, ch: x.ch};}
var escapeElement = document.createElement("div");
function htmlEscape(str) {
return str.replace(/[<>&]/g, function(str) {
return str == "&" ? "&amp;" : str == "<" ? "&lt;" : "&gt;";
});
escapeElement.innerText = escapeElement.textContent = str;
return escapeElement.innerHTML;
}
CodeMirror.htmlEscape = htmlEscape;
@ -1961,8 +2052,9 @@ var CodeMirror = (function() {
// See if "".split is the broken IE version, if so, provide an
// alternative way to split lines.
var splitLines, selRange, setSelRange;
if ("\n\nb".split(/\n/).length != 3)
var splitLines = function(string) {
splitLines = function(string) {
var pos = 0, nl, result = [];
while ((nl = string.indexOf("\n", pos)) > -1) {
result.push(string.slice(pos, string.charAt(nl-1) == "\r" ? nl - 1 : nl));
@ -1972,23 +2064,39 @@ var CodeMirror = (function() {
return result;
};
else
var splitLines = function(string){return string.split(/\r?\n/);};
splitLines = function(string){return string.split(/\r?\n/);};
CodeMirror.splitLines = splitLines;
// Sane model of finding and setting the selection in a textarea
if (window.getSelection) {
var selRange = function(te) {
selRange = function(te) {
try {return {start: te.selectionStart, end: te.selectionEnd};}
catch(e) {return null;}
};
var setSelRange = function(te, start, end) {
try {te.setSelectionRange(start, end);}
catch(e) {} // Fails on Firefox when textarea isn't part of the document
};
if (safari)
// On Safari, selection set with setSelectionRange are in a sort
// of limbo wrt their anchor. If you press shift-left in them,
// the anchor is put at the end, and the selection expanded to
// the left. If you press shift-right, the anchor ends up at the
// front. This is not what CodeMirror wants, so it does a
// spurious modify() call to get out of limbo.
setSelRange = function(te, start, end) {
if (start == end)
te.setSelectionRange(start, end);
else {
te.setSelectionRange(start, end - 1);
window.getSelection().modify("extend", "forward", "character");
}
};
else
setSelRange = function(te, start, end) {
try {te.setSelectionRange(start, end);}
catch(e) {} // Fails on Firefox when textarea isn't part of the document
};
}
// IE model. Don't ask.
else {
var selRange = function(te) {
selRange = function(te) {
try {var range = te.ownerDocument.selection.createRange();}
catch(e) {return null;}
if (!range || range.parentElement() != te) return null;
@ -2010,7 +2118,7 @@ var CodeMirror = (function() {
for (var i = val.indexOf("\r"); i > -1 && i < end; i = val.indexOf("\r", i+1), end++) {}
return {start: start, end: end};
};
var setSelRange = function(te, start, end) {
setSelRange = function(te, start, end) {
var range = te.createTextRange();
range.collapse(true);
var endrange = range.duplicate();
@ -2032,4 +2140,5 @@ var CodeMirror = (function() {
CodeMirror.defineMIME("text/plain", "null");
return CodeMirror;
})();
})()
;

View File

@ -1936,6 +1936,38 @@ $(document).ready(function() {
}, 'top.frame_content'); //end $(document).ready for 'Change Table'
/**
* jQuery coding for 'Table operations'. Used on tbl_operations.php
* Attach Ajax Event handlers for Table operations
*/
$(document).ready(function() {
/**
*Ajax action for submitting the "Alter table order by"
**/
$("#alterTableOrderby.ajax").live('submit', function(event) {
event.preventDefault();
$form = $(this);
PMA_prepareForAjaxRequest($form);
/*variables which stores the common attributes*/
$.post($form.attr('action'), $form.serialize()+"&submitorderby=Go", function(data) {
if ($("#sqlqueryresults").length != 0) {
$("#sqlqueryresults").remove();
}
if (data.success == true) {
PMA_ajaxShowMessage(data.message);
$("<div id='sqlqueryresults'></div>").insertAfter("#topmenucontainer");
$("#sqlqueryresults").html(data.sql_query);
$("#result_query .notice").remove();
$("#result_query").prepend((data.message));
} else {
PMA_ajaxShowMessage(data.error);
}
}) // end $.post()
});//end of alterTableOrderby ajax submit
}, 'top.frame_content'); //end $(document).ready for 'Table operations'
/**
* Attach Ajax event handlers for Drop Database. Moved here from db_structure.js
* as it was also required on db_create.php

View File

@ -899,6 +899,11 @@ if (! defined('PMA_MINIMUM_COMMON')) {
unset($login_without_password_is_forbidden); //Clean up after you!
}
// if using TCP socket is not needed
if (strtolower($cfg['Server']['connect_type']) == 'tcp') {
$cfg['Server']['socket'] = '';
}
// Try to connect MySQL with the control user profile (will be used to
// get the privileges list for the current user but the true user link
// must be open after this one so it would be default one for all the

View File

@ -20,18 +20,28 @@ if (! defined('PMA_MYSQL_CLIENT_API')) {
unset($client_api);
}
function PMA_DBI_real_connect($server, $user, $password, $client_flags, $persistant=false)
/**
* Helper function for connecting to the database server
*
* @param string $server
* @param string $user
* @param string $password
* @param int $client_flags
* @param boolean $persistent
* @return mixed false on error or a mysql connection resource on success
*/
function PMA_DBI_real_connect($server, $user, $password, $client_flags, $persistent = false)
{
global $cfg;
if (empty($client_flags)) {
if ($cfg['PersistentConnections'] || $persistant) {
if ($cfg['PersistentConnections'] || $persistent) {
$link = @mysql_pconnect($server, $user, $password);
} else {
$link = @mysql_connect($server, $user, $password);
}
} else {
if ($cfg['PersistentConnections'] || $persistant) {
if ($cfg['PersistentConnections'] || $persistent) {
$link = @mysql_pconnect($server, $user, $password, $client_flags);
} else {
$link = @mysql_connect($server, $user, $password, false, $client_flags);
@ -40,11 +50,14 @@ function PMA_DBI_real_connect($server, $user, $password, $client_flags, $persist
return $link;
}
/**
* connects to the database server
*
* @param string $user mysql user name
* @param string $password mysql user password
* @param boolean $is_controluser
* @param array $server host/port/socket/persistant
* @param array $server host/port/socket/persistent
* @param boolean $auxiliary_connection (when true, don't go back to login if connection fails)
* @return mixed false on error or a mysqli object on success
*/
@ -59,9 +72,6 @@ function PMA_DBI_connect($user, $password, $is_controluser = false, $server = nu
$server_socket = (empty($server['socket']))
? ''
: ':' . $server['socket'];
$server_persistant = (empty($server['persistant']))
? false
: true;
} else {
$server_port = (empty($cfg['Server']['port']))
? ''
@ -71,10 +81,6 @@ function PMA_DBI_connect($user, $password, $is_controluser = false, $server = nu
: ':' . $cfg['Server']['socket'];
}
if (strtolower($cfg['Server']['connect_type']) == 'tcp') {
$cfg['Server']['socket'] = '';
}
$client_flags = 0;
// always use CLIENT_LOCAL_FILES as defined in mysql_com.h
@ -101,9 +107,9 @@ function PMA_DBI_connect($user, $password, $is_controluser = false, $server = nu
}
} else {
if (!isset($server['host'])) {
$link = PMA_DBI_real_connect($server_socket, $user, $password, NULL, $server_persistant);
$link = PMA_DBI_real_connect($server_socket, $user, $password, NULL);
} else {
$link = PMA_DBI_real_connect($server['host'] . $server_port . $server_socket, $user, $password, NULL, $server_persistant);
$link = PMA_DBI_real_connect($server['host'] . $server_port . $server_socket, $user, $password, NULL);
}
}
if (empty($link)) {
@ -128,11 +134,11 @@ function PMA_DBI_connect($user, $password, $is_controluser = false, $server = nu
}
/**
* select a db
* selects given database
*
* @param string $dbname name of db to select
* @param resource $link mysql link resource
* @return boolean success
* @param string $dbname name of db to select
* @param resource $link mysql link resource
* @return boolean
*/
function PMA_DBI_select_db($dbname, $link = null)
{
@ -149,9 +155,9 @@ function PMA_DBI_select_db($dbname, $link = null)
/**
* runs a query and returns the result
*
* @param string $query query to run
* @param string $query query to run
* @param resource $link mysql link resource
* @param integer $options
* @param integer $options
* @return mixed
*/
function PMA_DBI_real_query($query, $link, $options)
@ -165,15 +171,33 @@ function PMA_DBI_real_query($query, $link, $options)
}
}
/**
* returns array of rows with associative and numeric keys from $result
*
* @param resource $result
* @return array
*/
function PMA_DBI_fetch_array($result)
{
return mysql_fetch_array($result, MYSQL_BOTH);
}
/**
* returns array of rows with associative keys from $result
*
* @param resource $result
* @return array
*/
function PMA_DBI_fetch_assoc($result) {
return mysql_fetch_array($result, MYSQL_ASSOC);
}
/**
* returns array of rows with numeric keys from $result
*
* @param resource $result
* @return array
*/
function PMA_DBI_fetch_row($result)
{
return mysql_fetch_array($result, MYSQL_NUM);
@ -192,17 +216,14 @@ function PMA_DBI_data_seek($result, $offset)
}
/**
* Frees the memory associated with the results
* Frees memory associated with the result
*
* @param result $result,... one or more mysql result resources
* @param resource $result
*/
function PMA_DBI_free_result()
function PMA_DBI_free_result($result)
{
foreach (func_get_args() as $result) {
if (is_resource($result)
&& get_resource_type($result) === 'mysql result') {
mysql_free_result($result);
}
if (is_resource($result) && get_resource_type($result) === 'mysql result') {
mysql_free_result($result);
}
}
@ -337,6 +358,12 @@ function PMA_DBI_getError($link = null)
return $error;
}
/**
* returns the number of rows returned by last query
*
* @param resource $result
* @return string|ineteger
*/
function PMA_DBI_num_rows($result)
{
if (!is_bool($result)) {
@ -346,6 +373,12 @@ function PMA_DBI_num_rows($result)
}
}
/**
* returns last inserted auto_increment id for given $link or $GLOBALS['userlink']
*
* @param resource $link the mysql object
* @return string|ineteger
*/
function PMA_DBI_insert_id($link = null)
{
if (empty($link)) {
@ -366,9 +399,9 @@ function PMA_DBI_insert_id($link = null)
/**
* returns the number of rows affected by last query
*
* @param object mysql $link the mysql object
* @param boolean $get_from_cache
* @return string integer
* @param resource $link the mysql object
* @param boolean $get_from_cache
* @return string|integer
*/
function PMA_DBI_affected_rows($link = null, $get_from_cache = true)
{
@ -388,7 +421,11 @@ function PMA_DBI_affected_rows($link = null, $get_from_cache = true)
}
/**
* returns metainfo for fields in $result
*
* @todo add missing keys like in from mysqli_query (orgname, orgtable, flags, decimals)
* @param resource $result
* @return array meta info for fields in $result
*/
function PMA_DBI_get_fields_meta($result)
{

View File

@ -33,6 +33,44 @@ if (! defined('MYSQLI_BINARY_FLAG')) {
define('MYSQLI_BINARY_FLAG', 128);
}
/**
* @see http://bugs.php.net/36007
*/
if (! defined('MYSQLI_TYPE_NEWDECIMAL')) {
define('MYSQLI_TYPE_NEWDECIMAL', 246);
}
if (! defined('MYSQLI_TYPE_BIT')) {
define('MYSQLI_TYPE_BIT', 16);
}
/**
* Helper function for connecting to the database server
*
* @param mysqli $link
* @param string $host
* @param string $user
* @param string $password
* @param string $dbname
* @param int $server_port
* @param string $server_socket
* @param int $client_flags
* @param boolean $persistent
* @return boolean
*/
function PMA_DBI_real_connect($link, $host, $user, $password, $dbname, $server_port, $server_socket, $client_flags = null, $persistent = false)
{
global $cfg;
if ($cfg['PersistentConnections'] || $persistent) {
$host = 'p:' . $host;
}
if ($client_flags === null) {
return @mysqli_real_connect($link, $host, $user, $password, $dbname, $server_port, $server_socket);
} else {
return @mysqli_real_connect($link, $host, $user, $password, $dbname, $server_port, $server_socket, $client_flags);
}
}
/**
* connects to the database server
*
@ -45,6 +83,8 @@ if (! defined('MYSQLI_BINARY_FLAG')) {
*/
function PMA_DBI_connect($user, $password, $is_controluser = false, $server = null, $auxiliary_connection = false)
{
global $cfg;
if ($server) {
$server_port = (empty($server['port']))
? false
@ -56,17 +96,12 @@ function PMA_DBI_connect($user, $password, $is_controluser = false, $server = nu
? 'localhost'
: $server['host'];
} else {
$server_port = (empty($GLOBALS['cfg']['Server']['port']))
$server_port = (empty($cfg['Server']['port']))
? false
: (int) $GLOBALS['cfg']['Server']['port'];
$server_socket = (empty($GLOBALS['cfg']['Server']['socket']))
: (int) $cfg['Server']['port'];
$server_socket = (empty($cfg['Server']['socket']))
? null
: $GLOBALS['cfg']['Server']['socket'];
}
if (strtolower($GLOBALS['cfg']['Server']['connect_type']) == 'tcp') {
$GLOBALS['cfg']['Server']['socket'] = '';
: $cfg['Server']['socket'];
}
// NULL enables connection to the default socket
@ -78,23 +113,23 @@ function PMA_DBI_connect($user, $password, $is_controluser = false, $server = nu
$client_flags = 0;
/* Optionally compress connection */
if ($GLOBALS['cfg']['Server']['compress'] && defined('MYSQLI_CLIENT_COMPRESS')) {
if ($cfg['Server']['compress'] && defined('MYSQLI_CLIENT_COMPRESS')) {
$client_flags |= MYSQLI_CLIENT_COMPRESS;
}
/* Optionally enable SSL */
if ($GLOBALS['cfg']['Server']['ssl'] && defined('MYSQLI_CLIENT_SSL')) {
if ($cfg['Server']['ssl'] && defined('MYSQLI_CLIENT_SSL')) {
$client_flags |= MYSQLI_CLIENT_SSL;
}
if (!$server) {
$return_value = @mysqli_real_connect($link, $GLOBALS['cfg']['Server']['host'], $user, $password, false, $server_port, $server_socket, $client_flags);
$return_value = @PMA_DBI_real_connect($link, $cfg['Server']['host'], $user, $password, false, $server_port, $server_socket, $client_flags);
// Retry with empty password if we're allowed to
if ($return_value == false && isset($GLOBALS['cfg']['Server']['nopassword']) && $GLOBALS['cfg']['Server']['nopassword'] && !$is_controluser) {
$return_value = @mysqli_real_connect($link, $GLOBALS['cfg']['Server']['host'], $user, '', false, $server_port, $server_socket, $client_flags);
if ($return_value == false && isset($cfg['Server']['nopassword']) && $cfg['Server']['nopassword'] && !$is_controluser) {
$return_value = @PMA_DBI_real_connect($link, $cfg['Server']['host'], $user, '', false, $server_port, $server_socket, $client_flags);
}
} else {
$return_value = @mysqli_real_connect($link, $server['host'], $user, $password, false, $server_port, $server_socket);
$return_value = @PMA_DBI_real_connect($link, $server['host'], $user, $password, false, $server_port, $server_socket);
}
if ($return_value == false) {
@ -121,9 +156,9 @@ function PMA_DBI_connect($user, $password, $is_controluser = false, $server = nu
/**
* selects given database
*
* @param string $dbname database name to select
* @param object mysqli $link the mysqli object
* @return boolean true or false
* @param string $dbname database name to select
* @param mysqli $link the mysqli object
* @return boolean
*/
function PMA_DBI_select_db($dbname, $link = null)
{
@ -140,10 +175,10 @@ function PMA_DBI_select_db($dbname, $link = null)
/**
* runs a query and returns the result
*
* @param string $query query to execute
* @param object mysqli $link mysqli object
* @param integer $options
* @return mixed true, false or result object
* @param string $query query to execute
* @param mysqli $link mysqli object
* @param integer $options
* @return mysqli_result|boolean
*/
function PMA_DBI_real_query($query, $link, $options)
{
@ -161,8 +196,8 @@ function PMA_DBI_real_query($query, $link, $options)
/**
* returns array of rows with associative and numeric keys from $result
*
* @param object mysqli result $result
* @return array result rows
* @param mysqli_result $result
* @return array
*/
function PMA_DBI_fetch_array($result)
{
@ -172,8 +207,8 @@ function PMA_DBI_fetch_array($result)
/**
* returns array of rows with associative keys from $result
*
* @param object mysqli result $result
* @return array result rows
* @param mysqli_result $result
* @return array
*/
function PMA_DBI_fetch_assoc($result)
{
@ -183,8 +218,8 @@ function PMA_DBI_fetch_assoc($result)
/**
* returns array of rows with numeric keys from $result
*
* @param object mysqli result $result
* @return array result rows
* @param mysqli_result $result
* @return array
*/
function PMA_DBI_fetch_row($result)
{
@ -204,23 +239,21 @@ function PMA_DBI_data_seek($result, $offset)
}
/**
* Frees the memory associated with the results
* Frees memory associated with the result
*
* @param result $result,... one or more mysql result resources
* @param mysqli_result $result
*/
function PMA_DBI_free_result()
function PMA_DBI_free_result($result)
{
foreach (func_get_args() as $result) {
if ($result instanceof mysqli_result) {
mysqli_free_result($result);
}
if ($result instanceof mysqli_result) {
mysqli_free_result($result);
}
}
/**
* Check if there are any more query results from a multi query
*
* @param object mysqli $link the mysqli object
* @param mysqli $link the mysqli object
* @return boolean true or false
*/
function PMA_DBI_more_results($link = null) {
@ -237,7 +270,7 @@ function PMA_DBI_more_results($link = null) {
/**
* Prepare next result from multi_query
*
* @param object mysqli $link the mysqli object
* @param mysqli $link the mysqli object
* @return boolean true or false
*/
function PMA_DBI_next_result($link = null) {
@ -346,8 +379,10 @@ function PMA_DBI_getError($link = null)
}
/**
* returns the number of rows returned by last query
*
* @param object mysqli result $result
* @param mysqli_result $result
* @return string|ineteger
*/
function PMA_DBI_num_rows($result)
{
@ -362,10 +397,10 @@ function PMA_DBI_num_rows($result)
/**
* returns last inserted auto_increment id for given $link or $GLOBALS['userlink']
*
* @param object mysqli $link the mysqli object
* @return string ineteger
* @param mysqli $link the mysqli object
* @return string|ineteger
*/
function PMA_DBI_insert_id($link = '')
function PMA_DBI_insert_id($link = null)
{
if (empty($link)) {
if (isset($GLOBALS['userlink'])) {
@ -386,9 +421,9 @@ function PMA_DBI_insert_id($link = '')
/**
* returns the number of rows affected by last query
*
* @param object mysqli $link the mysqli object
* @param boolean $get_from_cache
* @return string integer
* @param mysqli $link the mysqli object
* @param boolean $get_from_cache
* @return string|integer
*/
function PMA_DBI_affected_rows($link = null, $get_from_cache = true)
{
@ -410,8 +445,8 @@ function PMA_DBI_affected_rows($link = null, $get_from_cache = true)
* returns metainfo for fields in $result
*
* @todo preserve orignal flags value
* @param object mysqli result $result
* @return array meta info for fields in $result
* @param mysqli_result $result
* @return array meta info for fields in $result
*/
function PMA_DBI_get_fields_meta($result)
{
@ -459,7 +494,7 @@ function PMA_DBI_get_fields_meta($result)
foreach ($fields as $k => $field) {
$fields[$k]->_type = $field->type;
$fields[$k]->type = isset($typeAr[$field->type]) ? $typeAr[$field->type] : null;
$fields[$k]->type = $typeAr[$field->type];
$fields[$k]->_flags = $field->flags;
$fields[$k]->flags = PMA_DBI_field_flags($result, $k);
@ -489,8 +524,8 @@ function PMA_DBI_get_fields_meta($result)
/**
* return number of fields in given $result
*
* @param object mysqli result $result
* @return integer field count
* @param mysqli_result $result
* @return integer field count
*/
function PMA_DBI_num_fields($result)
{
@ -500,9 +535,9 @@ function PMA_DBI_num_fields($result)
/**
* returns the length of the given field $i in $result
*
* @param object mysqli result $result
* @param integer $i field
* @return integer length of field
* @param mysqli_result $result
* @param integer $i field
* @return integer length of field
*/
function PMA_DBI_field_len($result, $i)
{
@ -512,9 +547,9 @@ function PMA_DBI_field_len($result, $i)
/**
* returns name of $i. field in $result
*
* @param object mysqli result $result
* @param integer $i field
* @return string name of $i. field in $result
* @param mysqli_result $result
* @param integer $i field
* @return string name of $i. field in $result
*/
function PMA_DBI_field_name($result, $i)
{
@ -524,9 +559,9 @@ function PMA_DBI_field_name($result, $i)
/**
* returns concatenated string of human readable field flags
*
* @param object mysqli result $result
* @param integer $i field
* @return string field flags
* @param mysqli_result $result
* @param integer $i field
* @return string field flags
*/
function PMA_DBI_field_flags($result, $i)
{

144
po/ar.po
View File

@ -4,7 +4,7 @@ msgstr ""
"Project-Id-Version: phpMyAdmin 3.5.0-dev\n"
"Report-Msgid-Bugs-To: phpmyadmin-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2011-07-25 11:36+0200\n"
"PO-Revision-Date: 2011-07-09 03:43+0200\n"
"PO-Revision-Date: 2011-07-25 22:07+0200\n"
"Last-Translator: Abdullah Al-Saedi <abdullah.10@windowslive.com>\n"
"Language-Team: arabic <ar@li.org>\n"
"Language: ar\n"
@ -1122,15 +1122,14 @@ msgstr "اتصالات / عمليات"
#. l10n: Questions is the name of a MySQL Status variable
#: js/messages.php:87
#, fuzzy
#| msgid "Connections since last refresh"
msgid "Questions since last refresh"
msgstr "الإتصالات منذ آخر تحديث"
msgstr "العمليات منذ آخر تحديث"
#. l10n: Questions is the name of a MySQL Status variable
#: js/messages.php:89
msgid "Questions (executed statements by the server)"
msgstr ""
msgstr "العمليات (الجمل المنفذة بواسطة الخادم)"
#: js/messages.php:91 server_status.php:617
msgid "Query statistics"
@ -1138,11 +1137,11 @@ msgstr "إحصائيات الإستعلام"
#: js/messages.php:94
msgid "System CPU Usage"
msgstr ""
msgstr "إستخدام النظام للمعالج (CPU)"
#: js/messages.php:95
msgid "System memory"
msgstr ""
msgstr "ذاكرة النظام"
#: js/messages.php:96
msgid "System swap"
@ -1158,14 +1157,13 @@ msgstr "كيلوبايت"
#: js/messages.php:100
msgid "Average load"
msgstr ""
msgstr "متوسط التحميل"
#. l10n: Questions is the name of a MySQL Status variable
#: js/messages.php:102
#, fuzzy
#| msgid "Versions"
msgid "Questions"
msgstr "نسخ"
msgstr "العمليات"
#: js/messages.php:103 server_status.php:894
msgid "Traffic"
@ -1173,20 +1171,18 @@ msgstr "بيانات سير"
#: js/messages.php:104 libraries/server_links.inc.php:73
#: server_status.php:1324
#, fuzzy
#| msgid "General relation features"
msgid "Settings"
msgstr "المزايا العامّة للرابط"
msgstr "الإعدادات"
#: js/messages.php:105
#, fuzzy
#| msgid "Remove database"
msgid "Remove chart"
msgstr "حذف قاعدة البيانات"
msgstr "حذف الرسم البياني"
#: js/messages.php:106
msgid "Edit labels and series"
msgstr ""
msgstr "حذف العناوين والسلاسل"
#: js/messages.php:107
msgid "Add chart to grid"
@ -1194,7 +1190,7 @@ msgstr ""
#: js/messages.php:109
msgid "Please add at least one variable to the series"
msgstr ""
msgstr "فضلا , أضف متغير واحد على الأقل للسلسلة"
#: js/messages.php:110 libraries/display_export.lib.php:306
#: libraries/display_tbl.lib.php:561 libraries/export/sql.php:1052
@ -10591,7 +10587,7 @@ msgstr "صيانة الجدول"
#: tbl_operations.php:614
msgid "Defragment table"
msgstr ""
msgstr "إلغاء تجزئة الجدول"
#: tbl_operations.php:662
#, php-format
@ -10599,26 +10595,23 @@ msgid "Table %s has been flushed"
msgstr "لقد تم إعادة تحميل الجدول %s بنجاح"
#: tbl_operations.php:668
#, fuzzy
#| msgid "Flush the table (\"FLUSH\")"
msgid "Flush the table (FLUSH)"
msgstr "إعادة تحميل الجدول (\"FLUSH\")"
msgstr "إعادة تحميل الجدول (FLUSH)"
#: tbl_operations.php:677
#, fuzzy
#| msgid "Dumping data for table"
msgid "Delete data or table"
msgstr "إرجاع أو استيراد بيانات الجدول"
msgstr "حذف البيانات او الجدول"
#: tbl_operations.php:692
msgid "Empty the table (TRUNCATE)"
msgstr ""
msgstr "إفراغ الجدول (TRUNCATE)"
#: tbl_operations.php:712
#, fuzzy
#| msgid "Copy database to"
msgid "Delete the table (DROP)"
msgstr "إنسخ قاعدة البيانات إلى"
msgstr "حذف الجدول (DROP)"
#: tbl_operations.php:733
msgid "Partition maintenance"
@ -10627,7 +10620,7 @@ msgstr ""
#: tbl_operations.php:741
#, php-format
msgid "Partition %s"
msgstr ""
msgstr "تقسيم %s"
#: tbl_operations.php:744
msgid "Analyze"
@ -10639,19 +10632,19 @@ msgstr "تحقق"
#: tbl_operations.php:746
msgid "Optimize"
msgstr ""
msgstr "تحسين"
#: tbl_operations.php:747
msgid "Rebuild"
msgstr ""
msgstr "إعادة بناء"
#: tbl_operations.php:748
msgid "Repair"
msgstr "صلح"
msgstr "إصلاح"
#: tbl_operations.php:760
msgid "Remove partitioning"
msgstr ""
msgstr "إزالة التقسيم"
#: tbl_operations.php:786
msgid "Check referential integrity:"
@ -10659,15 +10652,15 @@ msgstr "تحديد التكامل المرجعي:"
#: tbl_printview.php:72
msgid "Show tables"
msgstr "شاهد الجدول"
msgstr "عرض الجداول"
#: tbl_printview.php:307 tbl_structure.php:789
msgid "Space usage"
msgstr "المساحة المستغلة"
msgstr "المساحة المستخدمة"
#: tbl_printview.php:311 tbl_structure.php:793
msgid "Usage"
msgstr "المساحة"
msgstr "الإستخدام"
#: tbl_printview.php:338 tbl_structure.php:820
msgid "Effective"
@ -10699,7 +10692,6 @@ msgid "Error creating foreign key on %1$s (check data types)"
msgstr ""
#: tbl_relation.php:402
#, fuzzy
#| msgid "Internal relations"
msgid "Internal relation"
msgstr "العلاقات الداخلية"
@ -10712,21 +10704,20 @@ msgstr ""
#: tbl_relation.php:410
msgid "Foreign key constraint"
msgstr ""
msgstr "قيود المفتاح الغريب"
#: tbl_select.php:110
msgid "Do a \"query by example\" (wildcard: \"%\")"
msgstr "تجعل \"استعلام بواسطة المثال\" (wildcard: \"%\")"
msgstr "عمل \"استعلام بواسطة المثال\" (بدل: \"%\")"
#: tbl_select.php:260
#, fuzzy
#| msgid "Select fields (at least one):"
msgid "Select columns (at least one):"
msgstr "اختيار حقول (على الأقل واحد):"
msgstr "اختيار الأعمدة (واحد على الأقل):"
#: tbl_select.php:278
msgid "Add search conditions (body of the \"where\" clause):"
msgstr "أضف شروط البحث (جسم من الفقره \"where\" clause):"
msgstr "أضف شروط البحث (الفقرة \"where\" ):"
#: tbl_select.php:285
msgid "Number of rows per page"
@ -10742,21 +10733,20 @@ msgstr ""
#: tbl_structure.php:165 tbl_structure.php:169
msgid "Browse distinct values"
msgstr ""
msgstr "إستعرض القيم المميزة"
#: tbl_structure.php:170 tbl_structure.php:171
msgid "Add primary key"
msgstr ""
msgstr "إضافة مفتاح رئيسي"
#: tbl_structure.php:172 tbl_structure.php:173
#, fuzzy
#| msgid "Add new field"
msgid "Add index"
msgstr "إضافة حقل جديد"
msgstr "إضافة فهرس"
#: tbl_structure.php:174 tbl_structure.php:175
msgid "Add unique index"
msgstr ""
msgstr "إضافة فهرس مميز"
#: tbl_structure.php:176 tbl_structure.php:177
#, fuzzy
@ -10769,49 +10759,46 @@ msgid "Add FULLTEXT index"
msgstr ""
#: tbl_structure.php:391
#, fuzzy
#| msgid "None"
msgctxt "None for default"
msgid "None"
msgstr "لا شيء"
#: tbl_structure.php:404
#, fuzzy, php-format
#, php-format
#| msgid "Table %s has been dropped"
msgid "Column %s has been dropped"
msgstr "جدول %s حذفت"
msgstr "تم حذف العمود %s"
#: tbl_structure.php:415 tbl_structure.php:509
#, php-format
msgid "A primary key has been added on %s"
msgstr "لقد أُضيف المفتاح الأساسي في %s"
msgstr "تم إضافة المفتاح الأساسي في %s"
#: tbl_structure.php:430 tbl_structure.php:445 tbl_structure.php:465
#: tbl_structure.php:480 tbl_structure.php:522 tbl_structure.php:535
#: tbl_structure.php:548 tbl_structure.php:561
#, php-format
msgid "An index has been added on %s"
msgstr "لقد أُضيف الفهرس في %s"
msgstr "تم إضافة الفهرس في %s"
#: tbl_structure.php:497
#, fuzzy
#| msgid "Show PHP information"
msgid "Show more actions"
msgstr "عرض المعلومات المتعلقة ب PHP"
msgstr "عرض المزيد من العمليات"
#: tbl_structure.php:642 tbl_structure.php:644
msgid "Relation view"
msgstr "عرض الروابط"
msgstr "عرض العلاقات"
#: tbl_structure.php:651 tbl_structure.php:653
msgid "Propose table structure"
msgstr "اقترح بناء الجدول"
#: tbl_structure.php:676
#, fuzzy
#| msgid "Add into comments"
msgid "Add column"
msgstr "أضف إلى الملاحظات"
msgstr "إضافة عمود"
#: tbl_structure.php:690
msgid "At End of Table"
@ -10827,38 +10814,38 @@ msgid "After %s"
msgstr "بعد %s"
#: tbl_structure.php:732
#, fuzzy, php-format
#, php-format
#| msgid "Create an index on&nbsp;%s&nbsp;columns"
msgid "Create an index on &nbsp;%s&nbsp;columns"
msgstr "تصميم فهرسه على&nbsp;%s&nbsp;عمود"
msgstr "إنشاء فهرس للعمود %s"
#: tbl_structure.php:889
msgid "partitioned"
msgstr ""
msgstr "مقسم"
#: tbl_tracking.php:109
#, php-format
msgid "Tracking report for table `%s`"
msgstr ""
msgstr "تتبع التقرير للجدول %s"
#: tbl_tracking.php:182
#, php-format
msgid "Version %s is created, tracking for %s.%s is activated."
msgstr ""
msgstr "تم إنشاء الإصدار %s , التتبع نشط لـ %s.%s"
#: tbl_tracking.php:190
#, php-format
msgid "Tracking for %s.%s , version %s is deactivated."
msgstr ""
msgstr "اللتبع لـ %s.%s , الإصدار %s معطل ."
#: tbl_tracking.php:198
#, php-format
msgid "Tracking for %s.%s , version %s is activated."
msgstr ""
msgstr "اللتبع لـ %s.%s , الإصدار %s مفعل."
#: tbl_tracking.php:208
msgid "SQL statements executed."
msgstr ""
msgstr "تم تنفيذ جمل SQL."
#: tbl_tracking.php:214
msgid ""
@ -10884,10 +10871,9 @@ msgid "Tracking data definition successfully deleted"
msgstr ""
#: tbl_tracking.php:384 tbl_tracking.php:401
#, fuzzy
#| msgid "errors."
msgid "Query error"
msgstr "أخطاء."
msgstr "خطأ في الإستعلام"
#: tbl_tracking.php:399
msgid "Tracking data manipulation successfully deleted"
@ -10909,10 +10895,9 @@ msgid "Delete tracking data row from report"
msgstr "يسمح بإضافة واستبدال البيانات."
#: tbl_tracking.php:443
#, fuzzy
#| msgid "No databases"
msgid "No data"
msgstr "لايوجد قواعد بيانات"
msgstr "لايوجد بيانات"
#: tbl_tracking.php:453 tbl_tracking.php:510
msgid "Date"
@ -10940,16 +10925,16 @@ msgstr ""
#: tbl_tracking.php:560
msgid "SQL execution"
msgstr ""
msgstr "تنفيذ SQL"
#: tbl_tracking.php:572
#, php-format
msgid "Export as %s"
msgstr ""
msgstr "تصدير كـ %s"
#: tbl_tracking.php:612
msgid "Show versions"
msgstr ""
msgstr "عرض الإصدارات"
#: tbl_tracking.php:644
msgid "Version"
@ -10958,48 +10943,48 @@ msgstr "نسخة"
#: tbl_tracking.php:692
#, php-format
msgid "Deactivate tracking for %s.%s"
msgstr ""
msgstr "تعطيل التتبع لـ %s.%s"
#: tbl_tracking.php:694
msgid "Deactivate now"
msgstr ""
msgstr "تعطيل الآن"
#: tbl_tracking.php:705
#, php-format
msgid "Activate tracking for %s.%s"
msgstr ""
msgstr "تنشيط التتبع لـ %s.%s"
#: tbl_tracking.php:707
msgid "Activate now"
msgstr ""
msgstr "تنشيط الآن"
#: tbl_tracking.php:720
#, php-format
msgid "Create version %s of %s.%s"
msgstr ""
msgstr "انشئ إصدار %s لـ %s.s%s"
#: tbl_tracking.php:724
msgid "Track these data definition statements:"
msgstr ""
msgstr "تتبع تقارير تعريف البيانات:"
#: tbl_tracking.php:732
msgid "Track these data manipulation statements:"
msgstr ""
msgstr "تتبع تقارير التلاعب بالبيانات:"
#: tbl_tracking.php:740
msgid "Create version"
msgstr ""
msgstr "إنشاء إصدار"
#: themes.php:31
#, php-format
msgid ""
"No themes support; please check your configuration and/or your themes in "
"directory %s."
msgstr ""
msgstr "لايوجد سمة مدعومة , فضلا راجع إعدادات السمات في المسار %s."
#: themes.php:41
msgid "Get more themes!"
msgstr ""
msgstr "الحصول على سمات جديدة!"
#: transformation_overview.php:24
msgid "Available MIME types"
@ -11015,7 +11000,6 @@ msgid "Available transformations"
msgstr "التحويلات المتوفرة"
#: transformation_overview.php:47
#, fuzzy
#| msgid "Description"
msgctxt "for MIME transformation"
msgid "Description"
@ -11027,11 +11011,11 @@ msgstr "ليس لديك الحقوق الكافية بأن تكون هنا ال
#: user_password.php:96
msgid "The profile has been updated."
msgstr "لقد تم تجديد العرض الجانبي."
msgstr "لقد تم تجديد الملف الشخصي."
#: view_create.php:141
msgid "VIEW name"
msgstr ""
msgstr "اسم VIEW"
#: view_operations.php:91
msgid "Rename view to"

View File

@ -4,7 +4,7 @@ msgstr ""
"Project-Id-Version: phpMyAdmin 3.5.0-dev\n"
"Report-Msgid-Bugs-To: phpmyadmin-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2011-07-25 11:36+0200\n"
"PO-Revision-Date: 2011-07-24 11:06+0200\n"
"PO-Revision-Date: 2011-07-25 19:31+0200\n"
"Last-Translator: Burak Yavuz <hitowerdigit@hotmail.com>\n"
"Language-Team: turkish <tr@li.org>\n"
"Language: tr\n"
@ -705,7 +705,7 @@ msgstr "Tabloyu onar"
#: db_structure.php:513 tbl_operations.php:627
msgid "Analyze table"
msgstr "Tabloyu incele"
msgstr "Tabloyu çözümle"
#: db_structure.php:515
msgid "Add prefix to table"
@ -1199,10 +1199,9 @@ msgid "Pause monitor"
msgstr "İzlemeyi duraklat"
#: js/messages.php:114
#, fuzzy
#| msgid "general_log and slow_query_log is enabled."
msgid "general_log and slow_query_log are enabled."
msgstr "general_log ve slow_query_log etkinleştirildi."
msgstr "general_log ve slow_query_log etkin."
#: js/messages.php:115
msgid "general_log is enabled."
@ -1213,10 +1212,9 @@ msgid "slow_query_log is enabled."
msgstr "slow_query_log etkinleştirildi."
#: js/messages.php:117
#, fuzzy
#| msgid "slow_query_log and general_log is disabled."
msgid "slow_query_log and general_log are disabled."
msgstr "slow_query_log ve general_log etkisizleştirildi."
msgstr "slow_query_log ve general_log etkisiz."
#: js/messages.php:118
msgid "log_output is not set to TABLE."
@ -1314,7 +1312,7 @@ msgstr "Genel günlükten"
#: js/messages.php:142
msgid "Analysing & loading logs. This may take a while."
msgstr "Günlükler inceleniyor ve yükleniyor. Bu biraz zaman alabilir."
msgstr "Günlükler çözümleniyor ve yükleniyor. Bu biraz zaman alabilir."
#: js/messages.php:143
msgid ""
@ -1346,14 +1344,13 @@ msgstr "Günlük tablosuna atla"
#: js/messages.php:148
msgid "Log analysed, but not data found in this time span."
msgstr "Günlük incelendi, ama bu zaman aralığında bulunan veri yok."
msgstr "Günlük çözümlendi, ama bu zaman aralığında bulunan veri yok."
#. l10n: A collection of available filters
#: js/messages.php:151
#, fuzzy
#| msgid "Filter"
msgid "Filters"
msgstr "Süzgeç"
msgstr "Süzgeçler"
#. l10n: Filter as in "Start Filtering"
#: js/messages.php:153 navigation.php:270
@ -1362,23 +1359,21 @@ msgstr "Süzgeç"
#: js/messages.php:154
msgid "Filter queries by word/regexp:"
msgstr ""
msgstr "Kelime/düzenli ifadeye göre sorguları süz"
#: js/messages.php:155
msgid "Group queries, ignoring variable data in WHERE statements"
msgstr ""
msgstr "Sorguları grupla, WHERE ifadelerindeki değişken veri yoksayılıyor"
#: js/messages.php:156
#, fuzzy
#| msgid "Number of inserted rows"
msgid "Sum of grouped rows:"
msgstr "Eklenmiş satır sayısı"
msgstr "Gruplanmış satırların toplamı:"
#: js/messages.php:157
#, fuzzy
#| msgid "Total"
msgid "Total:"
msgstr "Toplam"
msgstr "Toplam:"
#: js/messages.php:161 libraries/tbl_properties.inc.php:780
#: pmd_general.php:388 pmd_general.php:425 pmd_general.php:545
@ -1517,10 +1512,9 @@ msgid "Change"
msgstr "Değiştir"
#: js/messages.php:208
#, fuzzy
#| msgid "Maximum execution time"
msgid "Query execution time"
msgstr "En fazla yürütme süresi"
msgstr "Sorgu yürütme süresi"
#: js/messages.php:211
msgid "Hide search criteria"
@ -1536,10 +1530,9 @@ msgid "Ignore"
msgstr "Yoksay"
#: js/messages.php:218
#, fuzzy
#| msgid "Add column"
msgid "Add columns"
msgstr "Sütun ekle"
msgstr "Sütunları ekle"
#: js/messages.php:221
msgid "Select referenced key"
@ -6255,10 +6248,9 @@ msgid ""
msgstr "Aşağıdaki yapılar ya oluşturuldu ya da değiştirildi. Buyurun:"
#: libraries/import.lib.php:1069
#, fuzzy
#| msgid "View a structure`s contents by clicking on its name"
msgid "View a structure's contents by clicking on its name"
msgstr "İsmine tıklayarak yapının içeriklerini görüntüleyin"
msgstr "Adına tıklayarak yapının içeriklerini görün"
#: libraries/import.lib.php:1070
msgid ""
@ -6268,10 +6260,9 @@ msgstr ""
"değiştirin"
#: libraries/import.lib.php:1071
#, fuzzy
#| msgid "Edit its structure by following the \"Structure\" link"
msgid "Edit structure by following the \"Structure\" link"
msgstr "Aşağıdaki \"Yapı\" bağlantısıyla bunun yapısını düzenleyin"
msgstr "Aşağıdaki \"Yapı\" bağlantısıyla yapısını düzenleyin"
#: libraries/import.lib.php:1074
msgid "Go to database"
@ -6920,7 +6911,7 @@ msgstr "Her olay için geçerli aralık değeri vermek zorundasınız."
#: libraries/rte/rte_events.lib.php:549
msgid "You must provide a valid execution time for the event."
msgstr "Olay için geçerli bir çalıştırma zamanı vermek zorundasınız."
msgstr "Olay için geçerli bir yürütme zamanı vermek zorundasınız."
#: libraries/rte/rte_events.lib.php:553
msgid "You must provide a valid type for the event."
@ -6966,7 +6957,7 @@ msgid ""
"b> Please use the improved 'mysqli' extension to avoid any problems."
msgstr ""
"Çoklu sorguları kullanma kabiliyeti olmayan PHP'nin onaylamadığı 'mysql' "
"uzantısını kullanıyorsunuz. <b>Bazı depolanmış yordamların çalıştırılması "
"uzantısını kullanıyorsunuz. <b>Bazı depolanmış yordamların yürütülmesi "
"başarısız olabilir!</b> Lütfen herhangi bir sorundan kaçınmak için gelişmiş "
"'mysql' uzantısı kullanın."
@ -7085,7 +7076,7 @@ msgstr[0] "İşlemin içindeki son ifade tarafından %d satır etkilendi"
#: libraries/rte/rte_routines.lib.php:1214
#, php-format
msgid "Execution results of routine %s"
msgstr "%s yordamı çalıştırma sonuçları"
msgstr "%s yordamı yürütme sonuçları"
#: libraries/rte/rte_routines.lib.php:1288
#: libraries/rte/rte_routines.lib.php:1294
@ -10025,11 +10016,11 @@ msgstr "Seçili zaman aralığı:"
#: server_status.php:1465
msgid "Only retrieve SELECT,INSERT,UPDATE and DELETE Statements"
msgstr ""
msgstr "Sadece SELECT,INSERT,UPDATE ve DELETE İfadeleri erişir"
#: server_status.php:1470
msgid "Remove variable data in INSERT statements for better grouping"
msgstr ""
msgstr "Daha iyi gruplama için INSERT ifadelerindeki değişken veriyi kaldır"
#: server_status.php:1473
msgid ""
@ -10040,10 +10031,9 @@ msgstr ""
"metnine göre gruplandırılır."
#: server_status.php:1476
#, fuzzy
#| msgid "Query type"
msgid "Query analyzer"
msgstr "Sorgu türü"
msgstr "Sorgu çözümleyici"
#: server_status.php:1512
#, php-format
@ -10845,7 +10835,7 @@ msgstr "Bölüm %s"
#: tbl_operations.php:744
msgid "Analyze"
msgstr "İncele"
msgstr "Çözümle"
#: tbl_operations.php:745
msgid "Check"
@ -11140,7 +11130,7 @@ msgstr "Bu seçenek tablolarınızı ve içerdiği veriyi değiştirecektir."
#: tbl_tracking.php:560
msgid "SQL execution"
msgstr "SQL çalıştırma"
msgstr "SQL yürütme"
#: tbl_tracking.php:572
#, php-format

View File

@ -216,25 +216,34 @@ if ($reread_info) {
unset($reread_info);
/**
* Displays top menu links
* Displays top menu links in non ajax requests
*/
require_once './libraries/tbl_links.inc.php';
if (!isset($_REQUEST['ajax_request'])) {
require_once './libraries/tbl_links.inc.php';
}
if (isset($result) && empty($message_to_show)) {
// set to success by default, because result set could be empty
// (for example, a table rename)
$_type = 'success';
if (empty($_message)) {
$_message = $result ? __('Your SQL query has been executed successfully') : __('Error');
$_message = $result ? $message = PMA_Message::success(__('Your SQL query has been executed successfully')) : PMA_Message::error(__('Error'));
// $result should exist, regardless of $_message
$_type = $result ? 'success' : 'error';
if ( $GLOBALS['is_ajax_request'] == true) {
$extra_data['sql_query'] = PMA_showMessage(NULL, $sql_query);
PMA_ajaxResponse($_message,$_message->isSuccess() ,$extra_data);
}
}
if (! empty($warning_messages)) {
$_message = new PMA_Message;
$_message->addMessages($warning_messages);
$_message->isError(true);
if ( $GLOBALS['is_ajax_request'] == true) {
PMA_ajaxResponse($_message, false);
}
unset($warning_messages);
}
PMA_showMessage($_message, $sql_query, $_type);
unset($_message, $_type);
}
@ -258,7 +267,7 @@ unset($local_query);
?>
<!-- Order the table -->
<div class="operations_half_width">
<form method="post" action="tbl_operations.php">
<form method="post" id="alterTableOrderby" action="tbl_operations.php" <?php echo ($GLOBALS['cfg']['AjaxEnable'] ? ' class="ajax"' : '');?>>
<?php echo PMA_generate_common_hidden_inputs($GLOBALS['db'], $GLOBALS['table']); ?>
<fieldset id="fieldset_table_order">
<legend><?php echo __('Alter table order by'); ?></legend>

View File

@ -19,6 +19,7 @@ require_once './libraries/mysql_charsets.lib.php';
$GLOBALS['js_include'][] = 'makegrid.js';
$GLOBALS['js_include'][] = 'sql.js';
$GLOBALS['js_include'][] = 'tbl_select.js';
$GLOBALS['js_include'][] = 'tbl_change.js';
$GLOBALS['js_include'][] = 'jquery/jquery-ui-1.8.custom.js';
$GLOBALS['js_include'][] = 'jquery/timepicker.js';
if ($GLOBALS['cfg']['PropertiesIconic'] == true) {

View File

@ -141,15 +141,22 @@ ul#databaseList span {
}
ul#databaseList a {
color: #333;
background: url(./themes/pmahomme/img/database.png) no-repeat 0% 50% transparent;
display: block;
padding:5px;
padding: 5px;
font-style: normal;
}
div#navidbpageselector {
margin: 0.1em;
text-align: center;
}
div#navidbpageselector a,
ul#databaseList a {
background:url(./themes/pmahomme/img/database.png) no-repeat 0% 50% transparent;
color: #333;
div#navidbpageselector select{
color: #333;
margin: 0.2em;
}
ul#databaseList ul {