diff --git a/ChangeLog b/ChangeLog index 579977844..2ed1a944f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,102 @@ phpMyAdmin - ChangeLog $Id$ $HeadURL$ +2007-02-10 Marc Delisle + * lang/spanish update, thanks to Daniel Hinostroza + * tbl_change.php, tbl_indexes.php, libraries/common.lib.php: + get rid of $propicon + +2007-02-09 Marc Delisle + * main.php: some links should open a new page + * Documentation.html, libraries/navigation_header.inc.php, + libraries/config.default.php: $cfg['LeftLogoLinkWindow'] to decide + in which window the logo-linked page will appear + +2007-02-09 Michal Čihař + * lang/czech: Fix syntax error (sorry for that). + +2007-02-08 Marc Delisle + * themes/darkblue_orange/img/logo_left.png, + themes/original/img/logo_left.png: smaller PMA logo for navi + * libraries/navigation_header.inc.php, libraries/config.default.php: + navi logo now links to main page by default, with still the possibility + of having an external URL + +2007-02-08 Sebastian Mendel + * themes/*/css/theme_right.css.php: bug #1653769 browsing highlight disabling + doesn't work + +2007-02-06 Sebastian Mendel + * pmd_general.php, pmd_pdf.php, pmd_save_pos.php: fixed short open tags + patch #1652886 thanks to Martin Thielecke - mthie + * tbl_change.php: fixed escaping of field names in HTML and JavaScript + * libraries/common.lib.php: PMA_backquote() did not quote 0 + * tbl_change.php: bug #1652810 - slashes are not escaped properly + +2007-02-05 Michal Čihař + * lang/czech: Updated. + +2007-02-05 Marc Delisle + * lang/japanese: Update, thanks to Ishigaki Kenichi - tcool. + +2007-02-05 Sebastian Mendel + * lang/german: updated + +2007-02-04 Marc Delisle + * js/querywindow.js: query window icon did not work, + thanks to Jürgen Wind + +2007-02-03 Marc Delisle + * view_create.php, libraries/display_tbl.lib.php, lang/*: + support for CREATE VIEW from query results + * pmd/scripts/move.js: display problems in Opera, thanks to Maxim Bulygin + +2007-02-02 Marc Delisle + * tbl_replace.php: Calendar icon does not work on "Insert another new row" + +2007-02-01 Marc Delisle + * libraries/import.lib.php: bug #1626064, too much quoting on import + +2007-02-01 Sebastian Mendel + * libraries/display_tbl.lib.php: bug #1644740 - $cfg['Order'] = 'SMART' + overwritten + * libraries/Theme.class.php: removed __wakeup() due to some requirements are + not fulfilled at this point - also thanks to Jürgen Wind - windkiel + +2007-01-31 Sebastian Mendel + * libraries/session.inc.php: + bug #1630871 - Detecting a missing write permission on sessions directory + * libraries/select_lang.lib.php: globalized variables to be usable inside + function, documentation + * libraries/auth/http.auth.lib.php, libraries/auth/signon.auth.lib.php + libraries/common.lib.php, libraries/database_interface.lib.php + libraries/select_lang.lib.php, libraries/session.inc.php: + added PMA_fatalError() and made use of it + +2007-01-30 Marc Delisle + * libraries/tbl_replace_fields.inc.php: undefined variable + +2007-01-30 Sebastian Mendel + * libraries/sqlparser.lib.php PMA_SQP_analyze(): + bug #1647785 - do not pass variables by reference + +2007-01-29 Marc Delisle + * lang/catalan update, thanks to Xavier Navarro (xavin) + * pmd_general.php: possibility of quotes in Designer messages, + thanks to Ivan Kirillov + +2007-01-29 Sebastian Mendel + * tbl_replace.php, libraries/tbl_replace_fields.inc.php: print out error + messages if upload failed (bug #1615530) + * js/querywindow.js: fixed bug #1541147 - # in database names + +2007-01-26 Michal Čihař + * libraries/common.lib.php, libraries/js_escape.lib.php, + test/escape_js_string.php, test/core.lib.php: Move java script escaping + to separate library, make it safer on escaping and add + testcase for it. + * test/theme.php: Move to test package. + 2007-01-22 Marc Delisle * pmd/*: button for direct/angular links, thanks to Ivan Kirillov @@ -65,7 +161,7 @@ $HeadURL$ session.save_handler to 'files' * pmd_general.php: patch #1627831, English language improvements, thanks to Isaac Bennetch - * pmd_general.php, pmd_relation_new.php, lang/*: abstract messages + * pmd_general.php, pmd_relation_new.php, lang/*: abstract messages 2007-01-04 Marc Delisle * pmd/scripts/move.js: avoid text selection when moving a table object @@ -93,7 +189,7 @@ $HeadURL$ so by default, row count is not done for views 2006-12-30 Marc Delisle - * libraries/Config.class.php: bug #1590083, + * libraries/Config.class.php: bug #1590083, $cfg['DefaultConnectionCollation'] ignored in config.inc.php 2006-12-30 Michal Čihař @@ -118,11 +214,11 @@ $HeadURL$ * libraries/export/sql.php: bug #1619647, export of query results should not contain procedure definitions * navigation.php, test/theme.php, browse_foreigners.php, - libraries/header_printview.inc.php: patch #1611684 part 2, client + libraries/header_printview.inc.php: patch #1611684 part 2, client caching of phpmyadmin.css.php, thanks to Christian Schmidt 2006-12-19 Sebastian Mendel - * tbl_change.php, tbl_replace.php, include/tbl_replace_fields.inc.php: + * tbl_change.php, tbl_replace.php, libarsies/tbl_replace_fields.inc.php: refactored: made register_globals independent; added documentation; removed unused code; fixed bug #1597686 last insert id message wrong; much more i don't remember ... diff --git a/Documentation.html b/Documentation.html index f86a60661..793859a4d 100644 --- a/Documentation.html +++ b/Documentation.html @@ -11,7 +11,7 @@ - phpMyAdmin 2.10.0-dev - Documentation + phpMyAdmin 2.11.0-dev - Documentation @@ -33,7 +33,7 @@
  • Glossary
  • -

    phpMyAdmin 2.10.0-dev Documentation

    +

    phpMyAdmin 2.11.0-dev Documentation

    • phpMyAdmin homepage
    • @@ -1213,8 +1213,14 @@ ALTER TABLE `pma_column_comments`
      Defines whether or not to display the phpMyAdmin logo at the top of the left frame. Defaults to TRUE.
      -
      Enter URL where logo in left frame will point to. For use especially - with self made theme which changes this.
      +
      Enter URL where logo in the navigation frame will point to. + For use especially with self made theme which changes this. + The default value for this is main.php.
      + +
      $cfg['LeftLogoLinkWindow'] string
      +
      Whether to open the linked page in the main window (main) + or in a new one (new).
      +
      $cfg['LeftDisplayServers'] boolean
      Defines whether or not to display a server choice at the top of the left frame. Defaults to FALSE.
      diff --git a/README b/README index 4946e458b..c3bf3b8b2 100644 --- a/README +++ b/README @@ -5,7 +5,7 @@ phpMyAdmin - Readme A set of PHP-scripts to manage MySQL over the web. - Version 2.10.0-dev + Version 2.11.0-dev ------------------ http://www.phpmyadmin.net/ diff --git a/browse_foreigners.php b/browse_foreigners.php index aae0a740e..22c3ab057 100644 --- a/browse_foreigners.php +++ b/browse_foreigners.php @@ -93,7 +93,7 @@ if (isset($disp_row) && is_array($disp_row)) { phpMyAdmin + href="phpmyadmin.css.php?&js_frame=right&nocache=getMtime(); ?>" /> "; +strLang["strModifications"] = "' . $strModifications . '"; +strLang["strRelationDeleted"] = "' . $strRelationDeleted . '"; +strLang["strInnoDBRelationAdded"] = "' . $strInnoDBRelationAdded . '"; +strLang["strGeneralRelationFeat:strDisabled"] = "' . $strGeneralRelationFeat . ' : ' . $strDisabled . '"; +strLang["strInternalRelationAdded"] = "' . $strInternalRelationAdded . '"; +strLang["strErrorRelationAdded"] = "' . $strErrorRelationAdded . '"; +strLang["strErrorRelationExists"] = "' . $strErrorRelationExists . '"; +strLang["strErrorSaveTable"] = "' . $strErrorSaveTable . '"; +'; ?> @@ -61,27 +61,27 @@ echo $script_tabs . $script_contr . $script_display_field;
        -
        v vvkeykey >
      - +
      - +
      @@ -91,9 +91,9 @@ echo $script_tabs . $script_contr . $script_display_field;
      - vv + vv
      @@ -102,7 +102,7 @@ echo $script_tabs . $script_contr . $script_display_field;
      @@ -110,12 +110,12 @@ echo $script_tabs . $script_contr . $script_display_field; -
      ')" title="" id="check_vis_" style="margin:0px;" type="checkbox" value="" > ');">
      - + @@ -126,7 +126,7 @@ echo $script_tabs . $script_contr . $script_display_field; ]" type="hidden" id="t_v[]"> -; +
      ; top: ; visibility: ; "> @@ -149,16 +149,16 @@ for ( $i=0; $i < sizeof( $GLOBALS['PMD']["TABLE_NAME"] ); $i++ ) onMouseOver="this.className = 'tab_zag_2'" onMouseOut="this.className = 'tab_zag'" >".strtolower($GLOBALS['PMD_OUT']["OWNER"][$i]).".".$GLOBALS['PMD_OUT']["TABLE_NAME_SMALL"][$i]; ?> - ;"> " - - onMouseOver="old_class = this.className; this.className = 'tab_field_2';" onMouseOut="this.className = old_class;" + + onMouseOver="old_class = this.className; this.className = 'tab_field_2';" onMouseOut="this.className = old_class;" onMouseDown="Click_field(')"> @@ -202,7 +202,7 @@ for ( $i=0; $i < sizeof( $GLOBALS['PMD']["TABLE_NAME"] ); $i++ ) ?>
      -
      ; background-color:#CCFF99; padding:3px; border:#009933 solid 1px; white-space:nowrap; font-weight:bold">Load...
      " >
      - */images/FieldKey_small.png" alt="*">/images/Field_small.png" alt="*"> + ?>.png" alt="*">
      @@ -244,7 +244,7 @@ for ( $i=0; $i < sizeof( $GLOBALS['PMD']["TABLE_NAME"] ); $i++ ) diff --git a/pmd_pdf.php b/pmd_pdf.php index 793066765..841a7c442 100644 --- a/pmd_pdf.php +++ b/pmd_pdf.php @@ -13,7 +13,7 @@ if (isset($scale)) { if (empty($pdf_page_number)) { die(""); } - + $pmd_table = PMA_backquote($GLOBALS['cfgRelation']['db']) . '.' . PMA_backquote($GLOBALS['cfgRelation']['designer_coords']); $pma_table = PMA_backquote($GLOBALS['cfgRelation']['db']) . '.' . PMA_backquote($cfgRelation['table_coords']); @@ -23,14 +23,14 @@ if (isset($scale)) { PMA_query_as_cu($sql,TRUE,PMA_DBI_QUERY_STORE); } - + if (isset($imp)) { PMA_query_as_cu( - 'UPDATE ' . $pma_table . ',' . $pmd_table . + 'UPDATE ' . $pma_table . ',' . $pmd_table . ' SET ' . $pmd_table . '.`x`= ' . $pma_table . '.`x` * '. $scale . ', ' . $pmd_table . '.`y`= ' . $pma_table . '.`y` * '.$scale.' WHERE - ' . $pmd_table . '.`db_name`=' . $pma_table . '.`db_name` + ' . $pmd_table . '.`db_name`=' . $pma_table . '.`db_name` AND ' . $pmd_table . '.`table_name` = ' . $pma_table . '.`table_name` AND @@ -53,7 +53,7 @@ if (isset($scale)) {
      -
      +

      : - - - "> + diff --git a/pmd_save_pos.php b/pmd_save_pos.php index 4f41a4397..b6f7ec81d 100644 --- a/pmd_save_pos.php +++ b/pmd_save_pos.php @@ -4,29 +4,29 @@ include_once 'pmd_common.php'; require_once './libraries/relation.lib.php'; - -$alltab_rs = PMA_query_as_cu('SHOW TABLES FROM '.PMA_backquote($cfg['Server']['pmadb']),FALSE,PMA_DBI_QUERY_STORE) or PMD_err_sav(); + +$alltab_rs = PMA_query_as_cu('SHOW TABLES FROM '.PMA_backquote($cfg['Server']['pmadb']),FALSE,PMA_DBI_QUERY_STORE) or PMD_err_sav(); $seen_pmd_table = false; while ($tab_name = @PMA_DBI_fetch_row($alltab_rs)) { if (stristr($tab_name[0],$GLOBALS['cfgRelation']['designer_coords'])) { $seen_pmd_table = true; - break; + break; } } if ( ! $seen_pmd_table) { - PMD_err_sav(); + PMD_err_sav(); } foreach ($t_x as $key => $value) { $KEY = empty($IS_AJAX) ? urldecode($key) : $key; // table name decode (post PDF exp/imp) list($DB,$TAB) = explode(".", $KEY); - PMA_query_as_cu('DELETE FROM '.$GLOBALS['cfgRelation']['designer_coords'].' + PMA_query_as_cu('DELETE FROM '.$GLOBALS['cfgRelation']['designer_coords'].' WHERE `db_name` = \'' . PMA_sqlAddslashes($DB) . '\' AND `table_name` = \'' . PMA_sqlAddslashes($TAB) . '\'', 1, PMA_DBI_QUERY_STORE); - PMA_query_as_cu('INSERT INTO '.$GLOBALS['cfgRelation']['designer_coords'].' + PMA_query_as_cu('INSERT INTO '.$GLOBALS['cfgRelation']['designer_coords'].' (db_name, table_name, x, y, v, h) VALUES (' . '\'' . PMA_sqlAddslashes($DB) . '\', ' @@ -53,6 +53,6 @@ if(! empty($die_save_pos)) { header("Cache-Control: no-cache"); ?> '> - diff --git a/css/print.css b/print.css similarity index 100% rename from css/print.css rename to print.css diff --git a/tbl_change.php b/tbl_change.php index 9550b6423..a9bef7386 100644 --- a/tbl_change.php +++ b/tbl_change.php @@ -138,7 +138,7 @@ if (isset($primary_key)) { $local_query = 'SELECT * FROM ' . PMA_backquote($db) . '.' . PMA_backquote($table) . ' WHERE ' . $primary_key . ';'; $result[$rowcount] = PMA_DBI_query($local_query, null, PMA_DBI_QUERY_STORE); $row[$rowcount] = PMA_DBI_fetch_assoc($result[$rowcount]); - $primary_keys[$rowcount] = $primary_key; + $primary_keys[$rowcount] = str_replace('\\', '\\\\', $primary_key); // No row returned if (!$row[$rowcount]) { @@ -203,11 +203,8 @@ if (isset($primary_key_array)) { } echo "\n"; -if ($cfg['PropertiesIconic'] == true) { - // We need to copy the value or else the == 'both' check will always return true - $propicon = (string)$cfg['PropertiesIconic']; - - if ($propicon == 'both') { +if ($cfg['PropertiesIconic'] === true || $cfg['PropertiesIconic'] === 'both') { + if ($cfg['PropertiesIconic'] === 'both') { $iconic_spacer = '

      '; } else { $iconic_spacer = ''; @@ -215,7 +212,7 @@ if ($cfg['PropertiesIconic'] == true) { $titles['Browse'] = $iconic_spacer . '' . $strBrowseForeignValues . ''; - if ($propicon == 'both') { + if ($cfg['PropertiesIconic'] === 'both') { $titles['Browse'] .= ' ' . $strBrowseForeignValues . '
      '; } } else { @@ -330,11 +327,17 @@ foreach ($loop_array as $vrowcount => $vrow) { $row_table_def['True_Type'] = preg_replace('@\(.*@s', '', $row_table_def['Type']); $field = $row_table_def['Field']; - $field_html = $field; + $field_html = htmlspecialchars($field); + $field_md5 = md5($field); + + $unnillify_trigger = $chg_evt_handler . "=\"return unNullify('" . PMA_escapeJsString($field_html) . "', '" . PMA_escapeJsString($jsvkey) . "')\""; + $field_name_appendix = $vkey . '[' . $field_html . ']'; + $field_name_appendix_md5 = $field_md5 . $vkey . '[]'; + // removed previous PHP3-workaround that caused a problem with // field names like '000' - $rowfield = $field; + //$rowfield = $field; // d a t e t i m e // @@ -365,14 +368,14 @@ foreach ($loop_array as $vrowcount => $vrow) { // INSERT case if ($insert_mode) { if (isset($vrow)) { - $vrow[$rowfield] = date('Y-m-d H:i:s', time()); + $vrow[$field] = date('Y-m-d H:i:s', time()); } else { - $vrow = array($rowfield => date('Y-m-d H:i:s', time())); + $vrow = array($field => date('Y-m-d H:i:s', time())); } } // UPDATE case with an empty and not NULL value under PHP4 - elseif (empty($vrow[$rowfield]) && is_null($vrow[$rowfield])) { - $vrow[$rowfield] = date('Y-m-d H:i:s', time()); + elseif (empty($vrow[$field]) && is_null($vrow[$field])) { + $vrow[$field] = date('Y-m-d H:i:s', time()); } // end if... elseif... } $len = (preg_match('@float|double@', $row_table_def['Type'])) @@ -382,7 +385,8 @@ foreach ($loop_array as $vrowcount => $vrow) { $field_name = $field_html; if (isset($comments_map[$field])) { - $field_name = '' . $field_name . ''; + $field_name = '' . $field_name . ''; } ?> @@ -427,23 +431,23 @@ foreach ($loop_array as $vrowcount => $vrow) { // Prepares the field value $real_null_value = FALSE; if (isset($vrow)) { - if (!isset($vrow[$rowfield]) - || (function_exists('is_null') && is_null($vrow[$rowfield]))) { + if (!isset($vrow[$field]) + || (function_exists('is_null') && is_null($vrow[$field]))) { $real_null_value = TRUE; - $vrow[$rowfield] = ''; + $vrow[$field] = ''; $special_chars = ''; - $data = $vrow[$rowfield]; + $data = $vrow[$field]; } else { // loic1: special binary "characters" if ($is_binary || $is_blob) { - $vrow[$rowfield] = str_replace("\x00", '\0', $vrow[$rowfield]); - $vrow[$rowfield] = str_replace("\x08", '\b', $vrow[$rowfield]); - $vrow[$rowfield] = str_replace("\x0a", '\n', $vrow[$rowfield]); - $vrow[$rowfield] = str_replace("\x0d", '\r', $vrow[$rowfield]); - $vrow[$rowfield] = str_replace("\x1a", '\Z', $vrow[$rowfield]); + $vrow[$field] = str_replace("\x00", '\0', $vrow[$field]); + $vrow[$field] = str_replace("\x08", '\b', $vrow[$field]); + $vrow[$field] = str_replace("\x0a", '\n', $vrow[$field]); + $vrow[$field] = str_replace("\x0d", '\r', $vrow[$field]); + $vrow[$field] = str_replace("\x1a", '\Z', $vrow[$field]); } // end if - $special_chars = htmlspecialchars($vrow[$rowfield]); - $data = $vrow[$rowfield]; + $special_chars = htmlspecialchars($vrow[$field]); + $data = $vrow[$field]; } // end if... else... // loic1: if a timestamp field value is not included in an update // statement MySQL auto-update it to the current timestamp @@ -451,7 +455,7 @@ foreach ($loop_array as $vrowcount => $vrow) { // it's better to set a fields_prev in this situation $backup_field = (PMA_MYSQL_INT_VERSION < 40100 && $row_table_def['True_Type'] == 'timestamp') ? '' - : ''; + : ''; } else { // loic1: display default values if (!isset($row_table_def['Default'])) { @@ -484,7 +488,7 @@ foreach ($loop_array as $vrowcount => $vrow) { } else { ?>
      @@ -646,16 +666,28 @@ foreach ($loop_array as $vrowcount => $vrow) { $vrow) { $enum_cnt = count($enum); ?> @@ -206,7 +206,7 @@ @@ -234,7 +234,7 @@ @@ -269,7 +269,7 @@ @@ -290,7 +290,7 @@ @@ -311,7 +311,7 @@ diff --git a/view_create.php b/view_create.php new file mode 100644 index 000000000..cb890ce9e --- /dev/null +++ b/view_create.php @@ -0,0 +1,141 @@ + + +
      + + + +
      + CREATE VIEW + +
      - +
      - tabindex="" id="field__1"> $vrow) { // garvin: Find the current type in the RestrictColumnTypes. Will result in 'FUNC_CHAR' // or something similar. Then directly look up the entry in the RestrictFunctions array, // which will then reveal the available dropdown options - if (isset($cfg['RestrictFunctions']) && isset($cfg['RestrictColumnTypes']) && isset($cfg['RestrictColumnTypes'][strtoupper($row_table_def['True_Type'])]) && isset($cfg['RestrictFunctions'][$cfg['RestrictColumnTypes'][strtoupper($row_table_def['True_Type'])]])) { + if (isset($cfg['RestrictFunctions']) + && isset($cfg['RestrictColumnTypes']) + && isset($cfg['RestrictColumnTypes'][strtoupper($row_table_def['True_Type'])]) + && isset($cfg['RestrictFunctions'][$cfg['RestrictColumnTypes'][strtoupper($row_table_def['True_Type'])]])) { $current_func_type = $cfg['RestrictColumnTypes'][strtoupper($row_table_def['True_Type'])]; $dropdown = $cfg['RestrictFunctions'][$current_func_type]; $default_function = $cfg['DefaultFunctions'][$current_func_type]; @@ -517,8 +524,10 @@ foreach ($loop_array as $vrowcount => $vrow) { // ON UPDATE DEFAULT TIMESTAMP attribute. if (PMA_MYSQL_INT_VERSION < 40102 - || (PMA_MYSQL_INT_VERSION >= 40102 - && !($row_table_def['True_Type'] == 'timestamp' && !empty($row_table_def['Default']) && !isset($analyzed_sql[0]['create_table_fields'][$field]['on_update_current_timestamp'])))) { + || (PMA_MYSQL_INT_VERSION >= 40102 + && !($row_table_def['True_Type'] == 'timestamp' + && !empty($row_table_def['Default']) + && !isset($analyzed_sql[0]['create_table_fields'][$field]['on_update_current_timestamp'])))) { $selected = ($first_timestamp && $dropdown[$j] == $cfg['DefaultFunctions']['first_timestamp']) || (!$first_timestamp && $dropdown[$j] == $default_function) ? ' selected="selected"' @@ -564,7 +573,7 @@ foreach ($loop_array as $vrowcount => $vrow) { // --------------- echo ' ' . "\n"; if ($row_table_def['Null'] == 'YES') { - echo ' $vrow) { if (!(($cfg['ProtectBinary'] && $is_blob) || ($cfg['ProtectBinary'] == 'all' && $is_binary)) ) { echo ' $vrow) { } else { $onclick .= '5, '; } - $onclick .= '\'' . $field_html . '\', \'' . md5($field) . '\', \'' . $vkey . '\'); this.checked = true}; return true" />' . "\n"; + $onclick .= '\'' . PMA_escapeJsString($field_html) . '\', \'' . $field_md5 . '\', \'' . PMA_escapeJsString($vkey) . '\'); this.checked = true}; return true" />' . "\n"; echo $onclick; } else { - echo ' $vrow) { ?> - - - ="return unNullify('', '')" tabindex="" id="field__3" value="" /> + + + + tabindex="" + id="field__3" + value="" /> @@ -631,9 +646,14 @@ foreach ($loop_array as $vrowcount => $vrow) { ?> - - - + +
      - + - + - - + + $vrow) { if (strlen($row_table_def['Type']) > 20) { echo "\n"; ?> - + tabindex="" + id="field__3"> $vrow) { // Removes automatic MySQL escape format $enum_atom = str_replace('\'\'', '\'', str_replace('\\\\', '\\', $enum[$j])); echo ' '; - echo ''; - echo '' . "\n"; + echo '' . "\n"; } // end for } // end else @@ -734,9 +777,13 @@ foreach ($loop_array as $vrowcount => $vrow) { ?> - - - + + - + + - + $vrow) { ?> - ="return unNullify('', '')" tabindex="" id="field__3" /> + + tabindex="" + id="field__3" /> $vrow) { if ($is_upload && $is_blob) { echo '
      '; - echo ' '; + echo ' '; // find maximum upload size, based on field type /** @@ -867,28 +925,43 @@ foreach ($loop_array as $vrowcount => $vrow) { if ($is_char && ($cfg['CharEditing'] == 'textarea' || strpos($data, "\n") !== FALSE)) { echo "\n"; ?> - + - ="return unNullify('', '')" tabindex="" id="field__3" /> + + tabindex="" + id="field__3" /> - + - + '; @@ -428,11 +424,11 @@ elseif (!defined('PMA_IDX_INCLUDED') . 'b_drop.png" width="16" height="16" title="' . $strDrop . '" alt="' . $strDrop . '" />'; } - if ($cfg['PropertiesIconic'] === false || $propicon == 'both') { + if ($cfg['PropertiesIconic'] === false || $cfg['PropertiesIconic'] === 'both') { $edit_link_text .= $strEdit; $drop_link_text .= $strDrop; } - if ($propicon == 'both') { + if ($cfg['PropertiesIconic'] === 'both') { $edit_link_text = '' . $edit_link_text . ''; $drop_link_text = '' . $drop_link_text . ''; } diff --git a/tbl_replace.php b/tbl_replace.php index 4e2554f16..318f76c58 100644 --- a/tbl_replace.php +++ b/tbl_replace.php @@ -1,11 +1,10 @@ 0) { unset($query_fields, $value_sets); - $message = $GLOBALS['strInsertedRows'] . ' '; + $message .= $GLOBALS['strInsertedRows'] . ' '; } elseif (! empty($query)) { - $message = $GLOBALS['strAffectedRows'] . ' '; + $message .= $GLOBALS['strAffectedRows'] . ' '; } else { // No change -> move back to the calling script - $message = $GLOBALS['strNoModification']; + $message .= $GLOBALS['strNoModification']; $js_to_run = 'functions.js'; $active_page = $goto_include; require_once './libraries/header.inc.php'; @@ -352,7 +351,18 @@ if (isset($return_to_sql_query)) { $GLOBALS['sql_query'] = $return_to_sql_query; } -$js_to_run = 'functions.js'; +// if user asked to "Insert another new row", we need tbl_change.js +// otherwise the calendar icon does not work +if ($goto_include == 'tbl_change.php') { + /** + * @todo if we really need to run many different js at header time, + * $js_to_run would become an array and header.inc.php would iterate + * thru it, instead of the bunch of if/elseif it does now + */ + $js_to_run = 'tbl_change.js'; +} else { + $js_to_run = 'functions.js'; +} $active_page = $goto_include; require_once './libraries/header.inc.php'; require './' . PMA_securePath($goto_include); diff --git a/test/core.lib.php b/test/core.lib.php new file mode 100644 index 000000000..6ebfe164c --- /dev/null +++ b/test/core.lib.php @@ -0,0 +1,67 @@ + + * @package phpMyAdmin-test + */ + +/** + * Go to root directory. + */ +chdir('..'); + + +/** + * Report failed test. + * + * @param string function to test + * @param string test description + * @param string failure description + */ +function PMA_test_fail($function, $test, $message) { + $function = htmlspecialchars($function); + $test = htmlspecialchars($test); + $message = htmlspecialchars($message); + echo <<$function ($test) +
      Failed: $message
      +EOT; +} + +/** + * Report ok test. + * + * @param string function to test + * @param string test description + */ +function PMA_test_okay($function, $test) { + $function = htmlspecialchars($function); + $test = htmlspecialchars($test); + echo <<$function ($test) +
      OK
      +EOT; +} + +/** + * Function for testing strings. + * + * @uses PMA_test_okay() + * @uses PMA_test_fail() + * @param string function to test + * @param string test description + * @param string actual result + * @param string expected result + */ +function PMA_test_string($function, $test, $received, $expected) { + if ($received != $expected) { + PMA_test_fail($function, $test, "Strings >$received< and >$expected< do not match"); + } else { + PMA_test_okay($function, $test); + } +} +?> diff --git a/test/escape_js_string.php b/test/escape_js_string.php new file mode 100644 index 000000000..6632bf943 --- /dev/null +++ b/test/escape_js_string.php @@ -0,0 +1,39 @@ + + * @package phpMyAdmin-test + */ + +/** + * Tests core. + */ +include('./core.lib.php'); +/** + * Include to test. + */ +include('./libraries/js_escape.lib.php'); + +/** + * Test java script escaping. + * + * @uses PMA_escapeJsString() + * @uses PMA_test_string() + * @param string string to escape + * @param string expected result + */ +function PMA_test_escape($test, $expected) { + PMA_test_string('PMA_escapeJsString', $test, PMA_escapeJsString($test), $expected); +} + +PMA_test_escape('\';', '\\\';'); +PMA_test_escape("\r\n'", '\r\n\\\'[HTML]', '[HTML]'); +PMA_test_escape('"\'\\\'"', '"\\\'\\\\\\\'"'); +PMA_test_escape("\\''''''''''''\\", "\\\\\'\'\'\'\'\'\'\'\'\'\'\'\\\\"); +?> diff --git a/test/theme.php b/test/theme.php index 4cc85a3dc..37346c380 100644 --- a/test/theme.php +++ b/test/theme.php @@ -5,6 +5,7 @@ * theme test * * @uses libraries/common.lib.php global fnctions + * @package phpMyAdmin-test */ chdir( '..' ); @@ -31,9 +32,9 @@ header('Content-Type: text/html; charset=' . $GLOBALS['charset']); + href="../phpmyadmin.css.php?&js_frame=right&nocache=getMtime(); ?>" /> + href="../print.css" /> diff --git a/themes/darkblue_orange/css/theme_right.css.php b/themes/darkblue_orange/css/theme_right.css.php index 2c1ed58af..ce9abb4a4 100644 --- a/themes/darkblue_orange/css/theme_right.css.php +++ b/themes/darkblue_orange/css/theme_right.css.php @@ -194,13 +194,16 @@ table tr.even { text-align: ; } + /* marked table rows */ table tr.marked th, table tr.marked { background: ; color: ; } + + /* hovered items */ .odd:hover, .even:hover, @@ -216,6 +219,7 @@ table tr.hover th { background: ; color: ; } + /** * marks table rows/cells if the db field is in a where condition @@ -365,7 +369,7 @@ div.notice { border: 0.1em solid #FFD700; width: 90%; - background-image: url(../getImgPath(); ?>s_notice.png); + background-image: url(getImgPath(); ?>s_notice.png); background-repeat: no-repeat; background-position: 10px 50%; @@ -396,7 +400,7 @@ div.warning { border: 0.1em solid #CC0000; width: 90%; - background-image: url(../getImgPath(); ?>s_warn.png); + background-image: url(getImgPath(); ?>s_warn.png); background-repeat: no-repeat; background-position: 10px 50%; @@ -427,7 +431,7 @@ div.error { border: 0.1em solid #ff0000; width: 90%; - background-image: url(../getImgPath(); ?>s_error.png); + background-image: url(getImgPath(); ?>s_error.png); background-repeat: no-repeat; background-position: 10px 50%; @@ -458,7 +462,7 @@ fieldset.confirmation legend { border-right: 0.1em solid #FF0000; font-weight: bold; - background-image: url(../getImgPath(); ?>s_really.png); + background-image: url(getImgPath(); ?>s_really.png); background-repeat: no-repeat; background-position: 5px 50%; @@ -649,7 +653,7 @@ a.tab:hover, span.tab, a.warning, span.tabcaution { - cursor: url(../getImgPath(); ?>error.ico), default; + cursor: url(getImgPath(); ?>error.ico), default; } /* end topmenu */ @@ -943,7 +947,7 @@ div#queryboxcontainer div#bookmarkoptions { /* main page */ #maincontainer { - background-image: url(../getImgPath(); ?>logo_right.png); + background-image: url(getImgPath(); ?>logo_right.png); background-position: bottom; background-repeat: no-repeat; border-bottom: 1px solid silver; @@ -956,7 +960,7 @@ div#queryboxcontainer div#bookmarkoptions { } #maincontainer ul { - list-style-image: url(../getImgPath(); ?>item_.png); + list-style-image: url(getImgPath(); ?>item_.png); vertical-align: middle; } @@ -969,96 +973,96 @@ div#queryboxcontainer div#bookmarkoptions { /* iconic view for ul items */ li#li_create_database { - list-style-image: url(../getImgPath(); ?>b_newdb.png); + list-style-image: url(getImgPath(); ?>b_newdb.png); } li#li_select_lang { - list-style-image: url(../getImgPath(); ?>s_lang.png); + list-style-image: url(getImgPath(); ?>s_lang.png); } li#li_select_mysql_collation, li#li_select_mysql_charset { - list-style-image: url(../getImgPath(); ?>s_asci.png); + list-style-image: url(getImgPath(); ?>s_asci.png); } li#li_select_theme{ - list-style-image: url(../getImgPath(); ?>s_theme.png); + list-style-image: url(getImgPath(); ?>s_theme.png); } li#li_server_info{ - list-style-image: url(../getImgPath(); ?>s_host.png); + list-style-image: url(getImgPath(); ?>s_host.png); } li#li_user_info{ - /* list-style-image: url(../getImgPath(); ?>s_rights.png); */ + /* list-style-image: url(getImgPath(); ?>s_rights.png); */ } li#li_mysql_status{ - list-style-image: url(../getImgPath(); ?>s_status.png); + list-style-image: url(getImgPath(); ?>s_status.png); } li#li_mysql_variables{ - list-style-image: url(../getImgPath(); ?>s_vars.png); + list-style-image: url(getImgPath(); ?>s_vars.png); } li#li_mysql_processes{ - list-style-image: url(../getImgPath(); ?>s_process.png); + list-style-image: url(getImgPath(); ?>s_process.png); } li#li_mysql_collations{ - list-style-image: url(../getImgPath(); ?>s_asci.png); + list-style-image: url(getImgPath(); ?>s_asci.png); } li#li_mysql_engines{ - list-style-image: url(../getImgPath(); ?>b_engine.png); + list-style-image: url(getImgPath(); ?>b_engine.png); } li#li_mysql_binlogs { - list-style-image: url(../getImgPath(); ?>s_tbl.png); + list-style-image: url(getImgPath(); ?>s_tbl.png); } li#li_mysql_databases { - list-style-image: url(../getImgPath(); ?>s_db.png); + list-style-image: url(getImgPath(); ?>s_db.png); } li#li_export { - list-style-image: url(../getImgPath(); ?>b_export.png); + list-style-image: url(getImgPath(); ?>b_export.png); } li#li_import { - list-style-image: url(../getImgPath(); ?>b_import.png); + list-style-image: url(getImgPath(); ?>b_import.png); } li#li_change_password { - list-style-image: url(../getImgPath(); ?>s_passwd.png); + list-style-image: url(getImgPath(); ?>s_passwd.png); } li#li_log_out { - list-style-image: url(../getImgPath(); ?>s_loggoff.png); + list-style-image: url(getImgPath(); ?>s_loggoff.png); } li#li_pma_docs { - list-style-image: url(../getImgPath(); ?>b_docs.png); + list-style-image: url(getImgPath(); ?>b_docs.png); } li#li_phpinfo { - list-style-image: url(../getImgPath(); ?>php_sym.png); + list-style-image: url(getImgPath(); ?>php_sym.png); } li#li_pma_homepage { - list-style-image: url(../getImgPath(); ?>b_home.png); + list-style-image: url(getImgPath(); ?>b_home.png); } li#li_mysql_privilegs{ - list-style-image: url(../getImgPath(); ?>s_rights.png); + list-style-image: url(getImgPath(); ?>s_rights.png); } li#li_switch_dbstats { - list-style-image: url(../getImgPath(); ?>b_dbstatistics.png); + list-style-image: url(getImgPath(); ?>b_dbstatistics.png); } li#li_flush_privileges { - list-style-image: url(../getImgPath(); ?>s_reload.png); + list-style-image: url(getImgPath(); ?>s_reload.png); } /* END iconic view for ul items */ diff --git a/themes/darkblue_orange/img/logo_left.png b/themes/darkblue_orange/img/logo_left.png index d75bdee0c..26acf2e3b 100644 Binary files a/themes/darkblue_orange/img/logo_left.png and b/themes/darkblue_orange/img/logo_left.png differ diff --git a/themes/darkblue_orange/layout.inc.php b/themes/darkblue_orange/layout.inc.php index 10cfe0d66..21a7f4135 100644 --- a/themes/darkblue_orange/layout.inc.php +++ b/themes/darkblue_orange/layout.inc.php @@ -30,7 +30,7 @@ $GLOBALS['cfg']['MainColor'] = '#000000'; // background for the main frame $GLOBALS['cfg']['MainBackground'] = '#ffffff'; -//$GLOBALS['cfg']['MainBackground'] = '#ffffff url(../' . $_SESSION['PMA_Theme']->getImgPath() . 'vertical_line.png) repeat-y'; +//$GLOBALS['cfg']['MainBackground'] = '#ffffff url(' . $_SESSION['PMA_Theme']->getImgPath() . 'vertical_line.png) repeat-y'; // foreground (text) color of the pointer in browse mode $GLOBALS['cfg']['BrowsePointerColor'] = '#000000'; @@ -64,7 +64,7 @@ $GLOBALS['cfg']['FontFamilyFixed'] = 'monospace'; // border $GLOBALS['cfg']['Border'] = 0; // table header and footer color -$GLOBALS['cfg']['ThBackground'] = '#ff9900 url(../' . $_SESSION['PMA_Theme']->getImgPath() . 'tbl_th.png) repeat-x top'; +$GLOBALS['cfg']['ThBackground'] = '#ff9900 url(' . $_SESSION['PMA_Theme']->getImgPath() . 'tbl_th.png) repeat-x top'; // table header and footer background $GLOBALS['cfg']['ThColor'] = '#000000'; // table data row background diff --git a/themes/original/css/theme_left.css.php b/themes/original/css/theme_left.css.php index f45d86ebb..599d1254b 100644 --- a/themes/original/css/theme_left.css.php +++ b/themes/original/css/theme_left.css.php @@ -102,7 +102,7 @@ div#leftframelinks a:hover { /* serverlist */ #body_leftFrame #list_server { - list-style-image: url(..//original/img/s_host.png); + list-style-image: url(/original/img/s_host.png); list-style-position: inside; list-style-type: none; margin: 0; diff --git a/themes/original/css/theme_right.css.php b/themes/original/css/theme_right.css.php index f32cf4ad0..d40b30a50 100644 --- a/themes/original/css/theme_right.css.php +++ b/themes/original/css/theme_right.css.php @@ -169,13 +169,16 @@ table tr.even { text-align: ; } + /* marked table rows */ table tr.marked th, table tr.marked { background: ; color: ; } + + /* hovered items */ .odd:hover, .even:hover, @@ -191,6 +194,7 @@ table tr.hover th { background: ; color: ; } + /** * marks table rows/cells if the db field is in a where condition @@ -340,7 +344,7 @@ div.notice { margin: 0.5em 0 0.5em 0; border: 0.1em solid #FFD700; - background-image: url(../getImgPath(); ?>s_notice.png); + background-image: url(getImgPath(); ?>s_notice.png); background-repeat: no-repeat; background-position: 10px 50%; @@ -370,7 +374,7 @@ div.warning { margin: 0.5em 0 0.5em 0; border: 0.1em solid #CC0000; - background-image: url(../getImgPath(); ?>s_warn.png); + background-image: url(getImgPath(); ?>s_warn.png); background-repeat: no-repeat; background-position: 10px 50%; @@ -400,7 +404,7 @@ div.error { margin: 0.5em 0 0.5em 0; border: 0.1em solid #ff0000; - background-image: url(../getImgPath(); ?>s_error.png); + background-image: url(getImgPath(); ?>s_error.png); background-repeat: no-repeat; background-position: 10px 50%; @@ -431,7 +435,7 @@ fieldset.confirmation legend { border-right: 0.1em solid #FF0000; font-weight: bold; - background-image: url(../getImgPath(); ?>s_really.png); + background-image: url(getImgPath(); ?>s_really.png); background-repeat: no-repeat; background-position: 5px 50%; @@ -621,7 +625,7 @@ a.tab:hover, span.tab, a.warning, span.tabcaution { - cursor: url(../getImgPath(); ?>error.ico), default; + cursor: url(getImgPath(); ?>error.ico), default; } /* end topmenu */ @@ -889,7 +893,7 @@ div#queryboxcontainer div#bookmarkoptions { /* main page */ #maincontainer { - background-image: url(../getImgPath(); ?>logo_right.png); + background-image: url(getImgPath(); ?>logo_right.png); background-position: bottom; background-repeat: no-repeat; border-bottom: 1px solid silver; @@ -902,7 +906,7 @@ div#queryboxcontainer div#bookmarkoptions { } #maincontainer ul { - list-style-image: url(../getImgPath(); ?>item_.png); + list-style-image: url(getImgPath(); ?>item_.png); vertical-align: middle; } @@ -915,96 +919,96 @@ div#queryboxcontainer div#bookmarkoptions { /* iconic view for ul items */ li#li_create_database { - list-style-image: url(../getImgPath(); ?>b_newdb.png); + list-style-image: url(getImgPath(); ?>b_newdb.png); } li#li_select_lang { - list-style-image: url(../getImgPath(); ?>s_lang.png); + list-style-image: url(getImgPath(); ?>s_lang.png); } li#li_select_mysql_collation, li#li_select_mysql_charset { - list-style-image: url(../getImgPath(); ?>s_asci.png); + list-style-image: url(getImgPath(); ?>s_asci.png); } li#li_select_theme{ - list-style-image: url(../getImgPath(); ?>s_theme.png); + list-style-image: url(getImgPath(); ?>s_theme.png); } li#li_server_info{ - list-style-image: url(../getImgPath(); ?>s_host.png); + list-style-image: url(getImgPath(); ?>s_host.png); } li#li_user_info{ - /* list-style-image: url(../getImgPath(); ?>s_rights.png); */ + /* list-style-image: url(getImgPath(); ?>s_rights.png); */ } li#li_mysql_status{ - list-style-image: url(../getImgPath(); ?>s_status.png); + list-style-image: url(getImgPath(); ?>s_status.png); } li#li_mysql_variables{ - list-style-image: url(../getImgPath(); ?>s_vars.png); + list-style-image: url(getImgPath(); ?>s_vars.png); } li#li_mysql_processes{ - list-style-image: url(../getImgPath(); ?>s_process.png); + list-style-image: url(getImgPath(); ?>s_process.png); } li#li_mysql_collations{ - list-style-image: url(../getImgPath(); ?>s_asci.png); + list-style-image: url(getImgPath(); ?>s_asci.png); } li#li_mysql_engines{ - list-style-image: url(../getImgPath(); ?>b_engine.png); + list-style-image: url(getImgPath(); ?>b_engine.png); } li#li_mysql_binlogs { - list-style-image: url(../getImgPath(); ?>s_tbl.png); + list-style-image: url(getImgPath(); ?>s_tbl.png); } li#li_mysql_databases { - list-style-image: url(../getImgPath(); ?>s_db.png); + list-style-image: url(getImgPath(); ?>s_db.png); } li#li_export { - list-style-image: url(../getImgPath(); ?>b_export.png); + list-style-image: url(getImgPath(); ?>b_export.png); } li#li_import { - list-style-image: url(../getImgPath(); ?>b_import.png); + list-style-image: url(getImgPath(); ?>b_import.png); } li#li_change_password { - list-style-image: url(../getImgPath(); ?>s_passwd.png); + list-style-image: url(getImgPath(); ?>s_passwd.png); } li#li_log_out { - list-style-image: url(../getImgPath(); ?>s_loggoff.png); + list-style-image: url(getImgPath(); ?>s_loggoff.png); } li#li_pma_docs { - list-style-image: url(../getImgPath(); ?>b_docs.png); + list-style-image: url(getImgPath(); ?>b_docs.png); } li#li_phpinfo { - list-style-image: url(../getImgPath(); ?>php_sym.png); + list-style-image: url(getImgPath(); ?>php_sym.png); } li#li_pma_homepage { - list-style-image: url(../getImgPath(); ?>b_home.png); + list-style-image: url(getImgPath(); ?>b_home.png); } li#li_mysql_privilegs{ - list-style-image: url(../getImgPath(); ?>s_rights.png); + list-style-image: url(getImgPath(); ?>s_rights.png); } li#li_switch_dbstats { - list-style-image: url(../getImgPath(); ?>b_dbstatistics.png); + list-style-image: url(getImgPath(); ?>b_dbstatistics.png); } li#li_flush_privileges { - list-style-image: url(../getImgPath(); ?>s_reload.png); + list-style-image: url(getImgPath(); ?>s_reload.png); } /* END iconic view for ul items */ diff --git a/themes/original/img/logo_left.png b/themes/original/img/logo_left.png index e3c47e465..26acf2e3b 100644 Binary files a/themes/original/img/logo_left.png and b/themes/original/img/logo_left.png differ diff --git a/themes/original/layout.inc.php b/themes/original/layout.inc.php index 549f3392b..ab855df20 100644 --- a/themes/original/layout.inc.php +++ b/themes/original/layout.inc.php @@ -29,7 +29,7 @@ $GLOBALS['cfg']['MainColor'] = '#000000'; // background for the main frame $GLOBALS['cfg']['MainBackground'] = '#F5F5F5'; -//$GLOBALS['cfg']['MainBackground'] = '#F5F5F5 url(../' . $_SESSION['PMA_Theme']->getImgPath() . 'vertical_line.png) repeat-y'; +//$GLOBALS['cfg']['MainBackground'] = '#F5F5F5 url(' . $_SESSION['PMA_Theme']->getImgPath() . 'vertical_line.png) repeat-y'; // foreground (text) color of the pointer in browse mode $GLOBALS['cfg']['BrowsePointerColor'] = '#000000'; diff --git a/translators.html b/translators.html index b1a288d7a..4e3c42cdb 100644 --- a/translators.html +++ b/translators.html @@ -8,7 +8,7 @@ - phpMyAdmin 2.10.0-dev - Official translators + phpMyAdmin 2.11.0-dev - Official translators @@ -31,7 +31,7 @@
    • Glossary
    • -

      phpMyAdmin 2.10.0-dev official translators list

      +

      phpMyAdmin 2.11.0-dev official translators list

      Here is the list of the "official translators" of phpMyAdmin.

      @@ -57,7 +57,7 @@
      Afrikaans - Andreas Pauley (pauley@buitegroep.org.za) + volunteer needed
      Georgian - --volunteer needed-- + volunteer needed
      Hindi - Girish Nair (girish_nair@users.sourceforge.net) + volunteer needed
      Korean - WooSuhan (kjh@unews.co.kr) + volunteer needed
      Malay - Mohammad Shafiq bin Mohd Mustapa (sicksand@users.sourceforge.net) + volunteer needed
      Persian - Parham Ghaffarian (parham@bornisgroup.com) + volunteer needed
      + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      +
      +
      +
      WITH + + + + + + +
      + +
      + +
      + + +