Simplify copying of redirected links

This commit is contained in:
Jakub Vrana 2014-03-20 10:04:48 -07:00
parent 4d491d704e
commit 00da70626d
3 changed files with 26 additions and 1 deletions

View file

@ -515,7 +515,7 @@ if (!$columns && support("table")) {
echo "</div></fieldset>\n"; echo "</div></fieldset>\n";
} }
echo (!$group && $select ? "" : "<script type='text/javascript'>tableCheck();</script>\n"); echo "<script type='text/javascript'>selectLinks(document.getElementById('table'));" . (!$group && $select ? "" : " tableCheck();") . "</script>\n";
} }
if ($adminer->selectImportPrint()) { if ($adminer->selectImportPrint()) {

View file

@ -179,6 +179,14 @@ function tableClick(event, click) {
var el = getTarget(event); var el = getTarget(event);
while (!isTag(el, 'tr')) { while (!isTag(el, 'tr')) {
if (isTag(el, 'table|a|input|textarea')) { if (isTag(el, 'table|a|input|textarea')) {
if (el.origHref) {
// open('about:blank').document.write('<meta http-equiv="Refresh">') still passes the referer in Chrome
var href = el.href;
el.href = el.origHref;
setTimeout(function () {
el.href = href;
}, 0);
}
if (el.type != 'checkbox') { if (el.type != 'checkbox') {
return; return;
} }
@ -195,6 +203,21 @@ function tableClick(event, click) {
trCheck(el); trCheck(el);
} }
/** Clean redirect links to simplify their copying
* @param HTMLElement
*/
function selectLinks(table) {
var as = table.getElementsByTagName('a');
for (var i = 0; i < as.length; i++) {
var a = as[i];
var match = /^https?:\/\/www\.adminer\.org\/redirect\/\?url=(.+)/.exec(a.href); //! rewrites also links intentionally stored with http://www.adminer.org/redirect/?url=
if (match) {
a.origHref = a.href;
a.href = decodeURIComponent(match[1]);
}
}
}
var lastChecked; var lastChecked;
/** Shift-click on checkbox for multiple selection. /** Shift-click on checkbox for multiple selection.
@ -661,6 +684,7 @@ function selectLoadMore(a, limit, loading) {
var tbody = document.createElement('tbody'); var tbody = document.createElement('tbody');
tbody.innerHTML = request.responseText; tbody.innerHTML = request.responseText;
document.getElementById('table').appendChild(tbody); document.getElementById('table').appendChild(tbody);
selectLinks(tbody);
if (tbody.children.length < limit) { if (tbody.children.length < limit) {
a.parentNode.removeChild(a); a.parentNode.removeChild(a);
} else { } else {

View file

@ -4,6 +4,7 @@ Compute number of tables in the overview explicitly
Display edit form after error in clone or multi-edit Display edit form after error in clone or multi-edit
Display time of the select command Display time of the select command
Print elapsed time in HTML instead of SQL command comment Print elapsed time in HTML instead of SQL command comment
Simplify copying of redirected links
Improve gzip export ratio (bug #387) Improve gzip export ratio (bug #387)
Fix enum types in routines (bug #391) Fix enum types in routines (bug #391)
MySQL: Fix editing rows by binary values, bug since Adminer 3.7.1 MySQL: Fix editing rows by binary values, bug since Adminer 3.7.1