The branch, master has been updated via 5b4938bae5705661e1d5a8a87fbd49b8d8323a0c (commit) via ab393d3f820ab03bb484a0bb673f1c4caf9d3596 (commit) from 8a8986d9da55d2ef7951f7fcb59ec7a01f9a8b63 (commit)
- Log ----------------------------------------------------------------- commit 5b4938bae5705661e1d5a8a87fbd49b8d8323a0c Merge: ab393d3f820ab03bb484a0bb673f1c4caf9d3596 8a8986d9da55d2ef7951f7fcb59ec7a01f9a8b63 Author: Marc Delisle marc@infomarc.info Date: Mon Dec 27 08:30:15 2010 -0500
Merge branch 'master' of ssh://phpmyadmin.git.sourceforge.net/gitroot/phpmyadmin/phpmyadmin
commit ab393d3f820ab03bb484a0bb673f1c4caf9d3596 Author: Marc Delisle marc@infomarc.info Date: Mon Dec 27 08:29:31 2010 -0500
Bug #3141327 (Foreign key input options)
-----------------------------------------------------------------------
Summary of changes: ChangeLog | 1 + libraries/relation.lib.php | 55 +++++++++++++++++++++++++------------------ 2 files changed, 33 insertions(+), 23 deletions(-)
diff --git a/ChangeLog b/ChangeLog index 1e7c645..da67ab5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -127,6 +127,7 @@ - [interface] Use less noisy message and remove disable link on server charts and database statistics. + rfe #3141330 [relation] When displaying results, show a link to the foreign table even when phpMyAdmin configuration storage is not active +- bug #3141327 [relation] Foreign key input options
3.3.10.0 (not yet released)
diff --git a/libraries/relation.lib.php b/libraries/relation.lib.php index 74800fe..960e890 100644 --- a/libraries/relation.lib.php +++ b/libraries/relation.lib.php @@ -840,7 +840,9 @@ function PMA__foreignDropdownBuild($foreign, $data, $mode) { $reloptions = array();
- if ($mode == 'id-content') { + // id-only is a special mode used when no foreign display column + // is available + if ($mode == 'id-content' || $mode == 'id-only') { // sort for id-content if ($GLOBALS['cfg']['NaturalOrder']) { uksort($foreign, 'strnatcasecmp'); @@ -857,7 +859,6 @@ function PMA__foreignDropdownBuild($foreign, $data, $mode) }
foreach ($foreign as $key => $value) { - if (PMA_strlen($value) <= $GLOBALS['cfg']['LimitChars']) { $vtitle = ''; $value = htmlspecialchars($value); @@ -866,7 +867,7 @@ function PMA__foreignDropdownBuild($foreign, $data, $mode) $value = htmlspecialchars(substr($value, 0, $GLOBALS['cfg']['LimitChars']) . '...'); }
- $reloption = ' <option value="' . htmlspecialchars($key) . '"'; + $reloption = '<option value="' . htmlspecialchars($key) . '"'; if ($vtitle != '') { $reloption .= ' title="' . $vtitle . '"'; } @@ -876,9 +877,11 @@ function PMA__foreignDropdownBuild($foreign, $data, $mode) }
if ($mode == 'content-id') { - $reloptions[] = $reloption . '>' . $value . ' - ' . htmlspecialchars($key) . '</option>' . "\n"; - } else { - $reloptions[] = $reloption . '>' . htmlspecialchars($key) . ' - ' . $value . '</option>' . "\n"; + $reloptions[] = $reloption . '>' . $value . ' - ' . htmlspecialchars($key) . '</option>'; + } elseif ($mode == 'id-content') { + $reloptions[] = $reloption . '>' . htmlspecialchars($key) . ' - ' . $value . '</option>'; + } elseif ($mode == 'id-only') { + $reloptions[] = $reloption . '>' . htmlspecialchars($key) . '</option>'; } } // end foreach
@@ -925,33 +928,39 @@ function PMA_foreignDropdown($disp_row, $foreign_field, $foreign_display, $data,
// put the dropdown sections in correct order $top = array(); - $bot = array(); - if (PMA_isValid($GLOBALS['cfg']['ForeignKeyDropdownOrder'], 'array')) { - if (PMA_isValid($GLOBALS['cfg']['ForeignKeyDropdownOrder'][0])) { - $top = PMA__foreignDropdownBuild($foreign, $data, - $GLOBALS['cfg']['ForeignKeyDropdownOrder'][0]); - } - if (PMA_isValid($GLOBALS['cfg']['ForeignKeyDropdownOrder'][1])) { - $bot = PMA__foreignDropdownBuild($foreign, $data, - $GLOBALS['cfg']['ForeignKeyDropdownOrder'][1]); + $bottom = array(); + if ($foreign_display) { + if (PMA_isValid($GLOBALS['cfg']['ForeignKeyDropdownOrder'], 'array')) { + if (PMA_isValid($GLOBALS['cfg']['ForeignKeyDropdownOrder'][0])) { + $top = PMA__foreignDropdownBuild($foreign, $data, + $GLOBALS['cfg']['ForeignKeyDropdownOrder'][0]); + } + if (PMA_isValid($GLOBALS['cfg']['ForeignKeyDropdownOrder'][1])) { + $bottom = PMA__foreignDropdownBuild($foreign, $data, + $GLOBALS['cfg']['ForeignKeyDropdownOrder'][1]); + } + } else { + $top = PMA__foreignDropdownBuild($foreign, $data, 'id-content'); + $bottom = PMA__foreignDropdownBuild($foreign, $data, 'content-id'); } } else { - $top = PMA__foreignDropdownBuild($foreign, $data, 'id-content'); - $bot = PMA__foreignDropdownBuild($foreign, $data, 'content-id'); + $top = PMA__foreignDropdownBuild($foreign, $data, 'id-only'); }
// beginning of dropdown - $ret = '<option value=""> </option>' . "\n"; - + $ret = '<option value=""> </option>'; $top_count = count($top); if ($max == -1 || $top_count < $max) { $ret .= implode('', $top); - if ($top_count > 0) { - $ret .= ' <option value=""> </option>' . "\n"; - $ret .= ' <option value=""> </option>' . "\n"; + if ($foreign_display && $top_count > 0) { + // this empty option is to visually mark the beginning of the + // second series of values (bottom) + $ret .= '<option value=""> </option>'; } } - $ret .= implode('', $bot); + if ($foreign_display) { + $ret .= implode('', $bottom); + }
return $ret; } // end of 'PMA_foreignDropdown()' function
hooks/post-receive