From d2ed4e15ba5c155f865fd38fe502f88e63d5539d Mon Sep 17 00:00:00 2001 From: Jamie Cameron Date: Tue, 10 Mar 2009 17:37:24 +0000 Subject: [PATCH] Fixed default inputs --- mysql/CHANGELOG | 1 + mysql/edit_field.cgi | 14 ++++++++++---- mysql/edit_table.cgi | 3 ++- mysql/lang/en | 2 ++ mysql/mysql-lib.pl | 1 + mysql/save_field.cgi | 2 +- 6 files changed, 17 insertions(+), 6 deletions(-) diff --git a/mysql/CHANGELOG b/mysql/CHANGELOG index 116194731..5f585e04b 100644 --- a/mysql/CHANGELOG +++ b/mysql/CHANGELOG @@ -80,3 +80,4 @@ The correct character set is ready from my.cnf when connecting using DBI mode, t The password is passed to all MySQL commands using the MYSQL_PWD environment variables on systems running MySQL 4.1 and later, version 5.1 in older Webmin releases. ---- Changes since 1.450 ---- Use DBI for listing databases and tables, to reduce dependency on the un-reliable MYSQL_PWD environment variable. +Fixed the input for setting the default value for fields. diff --git a/mysql/edit_field.cgi b/mysql/edit_field.cgi index 325648924..510e06250 100755 --- a/mysql/edit_field.cgi +++ b/mysql/edit_field.cgi @@ -114,12 +114,18 @@ print &ui_table_row($text{'field_null'}, [ [ 1, $text{'yes'} ], [ 0, $text{'no'} ] ])); # Default value -$defmode = $f->{'default'} eq 'NULL' ? 0 : +$defmode = $f->{'default'} eq 'NULL' || !defined($f->{'default'}) ? 0 : $f->{'default'} eq 'CURRENT_TIMESTAMP' ? 2 : $f->{'default'} eq '' ? 3 : 1; -@defs = ( [ 3, $in{'type'} ? $text{'field_defnone'} - : $text{'field_defleave'} ], - [ 0, 'NULL' ] ); +@defs = ( [ 0, 'NULL' ] ); +if ($in{'type'}) { + # Let MySQL decide + push(@defs, [ 3, $text{'field_defdef'} ]); + } +elsif ($type eq 'char' || $type eq 'varchar') { + # Empty string + push(@defs, [ 3, $text{'field_defempty'} ]); + } if ($type eq "timestamp") { push(@defs, [ 2, $text{'field_current'} ]); } diff --git a/mysql/edit_table.cgi b/mysql/edit_table.cgi index 31db46105..3a5afac2e 100755 --- a/mysql/edit_table.cgi +++ b/mysql/edit_table.cgi @@ -38,7 +38,8 @@ foreach $r (@desc) { $r->{'key'} eq 'PRI' ? $text{'table_pri'} : $r->{'key'} eq 'MUL' ? $text{'table_mul'} : $text{'table_none'}); - push(@cols, &html_escape($r->{'default'})); + push(@cols, &html_escape(defined($r->{'default'}) ? $r->{'default'} + : 'NULL')); push(@cols, &html_escape($r->{'extra'})); print &ui_checked_columns_row(\@cols, \@tds, "d", $r->{'field'}); $i++; diff --git a/mysql/lang/en b/mysql/lang/en index 2034ca109..cd2d8277e 100644 --- a/mysql/lang/en +++ b/mysql/lang/en @@ -167,7 +167,9 @@ field_null=Allow nulls? field_default=Default value field_current=Current time field_defval=Value +field_defdef=MySQL default field_defnone=No default +field_defempty=Empty string field_defleave=Don't change field_dmode0=None field_dmode1=Null diff --git a/mysql/mysql-lib.pl b/mysql/mysql-lib.pl index 4b0066a1d..bfd9e3e62 100644 --- a/mysql/mysql-lib.pl +++ b/mysql/mysql-lib.pl @@ -212,6 +212,7 @@ return @rv; # Returns a list of hashes detailing the structure of a table sub table_structure { +#local $config{'nodbi'} = 1; local $s = &execute_sql_safe($_[0], "desc "."estr($_[1])); local (@rv, $r); local (%tp, $i); diff --git a/mysql/save_field.cgi b/mysql/save_field.cgi index b8c70247c..bea7794ef 100755 --- a/mysql/save_field.cgi +++ b/mysql/save_field.cgi @@ -16,7 +16,7 @@ elsif ($in{'default_def'} == 2) { $default = "default CURRENT_TIMESTAMP"; } elsif ($in{'default_def'} == 3) { - $default = $in{'new'} ? "" : "default none"; + $default = $in{'new'} ? "" : "default ''"; } else { $default = "default '$in{'default'}'";