Merge remote-tracking branch 'origin/master'

This commit is contained in:
Weblate 2017-08-02 08:20:11 +02:00
commit ffeb796a3a
3 changed files with 79 additions and 96 deletions

View File

@ -37,6 +37,7 @@ phpMyAdmin - ChangeLog
- issue #13507 Fixed per server theme feature
- issue #13523 Missing newline in ALTER exports
- issue #13414 Fixed several compatibility issues with PHP 7.2
- issue #13550 Fixed copy results to clipboard
4.7.3 (2017-07-20)
- issue #13447 Large multi-line query removes Export operation and blanks query box options

View File

@ -4585,100 +4585,6 @@ function printPage(){
}
}
/**
* Print button
*/
function copyToClipboard()
{
var textArea = document.createElement("textarea");
//
// *** This styling is an extra step which is likely not required. ***
//
// Why is it here? To ensure:
// 1. the element is able to have focus and selection.
// 2. if element was to flash render it has minimal visual impact.
// 3. less flakyness with selection and copying which **might** occur if
// the textarea element is not visible.
//
// The likelihood is the element won't even render, not even a flash,
// so some of these are just precautions. However in IE the element
// is visible whilst the popup box asking the user for permission for
// the web page to copy to the clipboard.
//
// Place in top-left corner of screen regardless of scroll position.
textArea.style.position = 'fixed';
textArea.style.top = 0;
textArea.style.left = 0;
// Ensure it has a small width and height. Setting to 1px / 1em
// doesn't work as this gives a negative w/h on some browsers.
textArea.style.width = '2em';
textArea.style.height = '2em';
// We don't need padding, reducing the size if it does flash render.
textArea.style.padding = 0;
// Clean up any borders.
textArea.style.border = 'none';
textArea.style.outline = 'none';
textArea.style.boxShadow = 'none';
// Avoid flash of white box if rendered for any reason.
textArea.style.background = 'transparent';
textArea.value = '';
var elementList = $('#serverinfo a');
elementList.each(function(){
textArea.value += $(this).text().split(':')[1].trim() + '/';
});
textArea.value += '\t\t' + window.location.href;
textArea.value += '\n';
elementList = $('.notice,.success');
elementList.each(function(){
textArea.value += $(this).clone().children().remove().end().text() + '\n\n';
});
elementList = $('.sql pre');
elementList.each(function() {
textArea.value += $(this).text() + '\n\n';
});
elementList = $('.table_results .column_heading a');
elementList.each(function() {
textArea.value += $(this).clone().children().remove().end().text() + '\t';
});
textArea.value += '\n';
elementList = $('tbody tr');
elementList.each(function() {
var childElementList = $(this).find('.data span');
childElementList.each(function(){
textArea.value += $(this).clone().children().remove().end().text() + '\t';
});
textArea.value += '\n';
});
document.body.appendChild(textArea);
textArea.select();
try {
document.execCommand('copy');
} catch (err) {
alert('Sorry! Unable to copy');
}
document.body.removeChild(textArea);
}
/**
* Unbind all event handlers before tearing down a page
*/

View File

@ -213,8 +213,84 @@ AJAX.registerOnload('sql.js', function () {
$(document).on('click', "#copyToClipBoard", function (event) {
event.preventDefault();
// Print the page
copyToClipboard();
var textArea = document.createElement("textarea");
//
// *** This styling is an extra step which is likely not required. ***
//
// Why is it here? To ensure:
// 1. the element is able to have focus and selection.
// 2. if element was to flash render it has minimal visual impact.
// 3. less flakyness with selection and copying which **might** occur if
// the textarea element is not visible.
//
// The likelihood is the element won't even render, not even a flash,
// so some of these are just precautions. However in IE the element
// is visible whilst the popup box asking the user for permission for
// the web page to copy to the clipboard.
//
// Place in top-left corner of screen regardless of scroll position.
textArea.style.position = 'fixed';
textArea.style.top = 0;
textArea.style.left = 0;
// Ensure it has a small width and height. Setting to 1px / 1em
// doesn't work as this gives a negative w/h on some browsers.
textArea.style.width = '2em';
textArea.style.height = '2em';
// We don't need padding, reducing the size if it does flash render.
textArea.style.padding = 0;
// Clean up any borders.
textArea.style.border = 'none';
textArea.style.outline = 'none';
textArea.style.boxShadow = 'none';
// Avoid flash of white box if rendered for any reason.
textArea.style.background = 'transparent';
textArea.value = '';
$('#serverinfo a').each(function(){
textArea.value += $(this).text().split(':')[1].trim() + '/';
});
textArea.value += '\t\t' + window.location.href;
textArea.value += '\n';
$('.notice,.success').each(function(){
textArea.value += $(this).text() + '\n\n';
});
$('.sql pre').each(function() {
textArea.value += $(this).text() + '\n\n';
});
$('.table_results .column_heading a').each(function() {
textArea.value += $(this).text() + '\t';
});
textArea.value += '\n';
$('.table_results tbody tr').each(function() {
$(this).find('.data span').each(function(){
textArea.value += $(this).text() + '\t';
});
textArea.value += '\n';
});
document.body.appendChild(textArea);
textArea.select();
try {
document.execCommand('copy');
} catch (err) {
alert('Sorry! Unable to copy');
}
document.body.removeChild(textArea);
}); //end of Copy to Clipboard action
/**