X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Felements%2Fselect-table.html;h=3235ef6277cb897c2d55aff599cdfbae66bb96fd;hb=83a6a677f62ca501011d9bac6371344dbb5a13b3;hp=10cc8b995073f8a13fde7bfeb054e541fee18eaa;hpb=1a033848671cad2cbe7687b37fc718b3b2a68b83;p=freeside.git diff --git a/httemplate/elements/select-table.html b/httemplate/elements/select-table.html index 10cc8b995..3235ef627 100644 --- a/httemplate/elements/select-table.html +++ b/httemplate/elements/select-table.html @@ -1,45 +1,85 @@ -<% + +% } - + +<%init> - <% foreach my $record ( sort { $a->$name_col() cmp $b->$name_col() } - @records - ) - { - %> +##required +# 'table' => 'table_name', +# 'name_col' => 'name_column', +# +##strongly recommended (you want your forms to be "sticky" on errors, right?) +# 'value' => 'current_value', +# +##opt +# 'empty_label' => '', #better specify it though, the default might change +# 'hashref' => {}, +# 'extra_sql' => '', +# 'records' => \@records, #instead of hashref +# 'pre_options' => [ 'value' => 'option' ], #before normal options +# 'element_name' => '', #HTML element name, defaults to the name of +# # the primary key column +# 'element_etc' => '', #additional attributes (i.e. "DISABLED") for the +# # +my $key = dbdef->table($opt{table})->primary_key; #? $opt{primary_key} || + +my $name_col = $opt{name_col}; + +$opt{hashref} ||= {}; + +my @records = (); +if ( $opt{records} ) { + @records = @{ $opt{records} }; +} else { + @records = qsearch( { + 'table' => $opt{table}, + 'hashref' => $opt{hashref}, + 'extra_sql' => ( $opt{extra_sql} || '' ), + }); +} + +unless ( ! $opt{value} + or ref($opt{value}) + or ! exists( $opt{hashref}->{disabled} ) #?? + or grep { $opt{value} == $_->$key() } @records + ) { + delete $opt{hashref}->{disabled}; + $opt{hashref}->{$key} = $opt{value}; + my $record = qsearchs( { + 'table' => $opt{table}, + 'hashref' => $opt{hashref}, + 'extra_sql' => ( $opt{extra_sql} || '' ), + }); + push @records, $record if $record; +} + +if ( ref( $opt{value} ) eq 'ARRAY' ) { + $opt{value} = { map { $_ => 1 } @{$opt{value}} }; +} + +my @pre_options = $opt{pre_options} ? @{ $opt{pre_options} } : (); +