start of package class web UI (add/edit package classes, package class selection...
[freeside.git] / httemplate / elements / select-table.html
1 <%
2
3   ##required
4   # 'table'    => 'table_name',
5   # 'name_col' => 'name_column',
6   #
7   ##strongly recommended (you want your forms to be "sticky" on errors, right?)
8   # 'value'    => 'current_value',
9   #
10   ##opt
11   # 'empty_label' => '', #better specify it though, the default might change
12   # 'hashref'     => {},
13   # 'records'     => \@records, #instead of hashref
14
15   my( %opt ) = @_;
16
17   my $key = dbdef->table($opt{'table'})->primary_key; #? $opt{'primary_key'} ||
18
19   my $name_col = $opt{'name_col'};
20
21   my @records = ();
22   if ( $opt{'records'} ) {
23     @records = @{ $opt{'records'} };
24   } else {
25     @records = qsearch( $opt{'table'}, ( $opt{'hashref'} || {} ) );
26   }
27
28 %>
29
30 <SELECT NAME="<%= $key %>">
31
32   <OPTION VALUE=""><%= $opt{'empty_label'} || 'all' %></OPTION>
33
34   <% foreach my $record ( sort { $a->$name_col() cmp $b->$name_col() }
35                                @records
36                         )
37      {
38   %>
39
40     <OPTION VALUE="<%= $record->$key() %>"<%= $opt{'value'} == $record->$key() ? ' SELECTED' : '' %>><%= $record->$name_col() %>
41
42   <% } %>
43
44 </SELECT>
45