summaryrefslogtreecommitdiff
path: root/httemplate/elements/select-table.html
diff options
context:
space:
mode:
Diffstat (limited to 'httemplate/elements/select-table.html')
-rw-r--r--httemplate/elements/select-table.html45
1 files changed, 45 insertions, 0 deletions
diff --git a/httemplate/elements/select-table.html b/httemplate/elements/select-table.html
new file mode 100644
index 000000000..10cc8b995
--- /dev/null
+++ b/httemplate/elements/select-table.html
@@ -0,0 +1,45 @@
+<%
+
+ ##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' => {},
+ # 'records' => \@records, #instead of hashref
+
+ my( %opt ) = @_;
+
+ my $key = dbdef->table($opt{'table'})->primary_key; #? $opt{'primary_key'} ||
+
+ my $name_col = $opt{'name_col'};
+
+ my @records = ();
+ if ( $opt{'records'} ) {
+ @records = @{ $opt{'records'} };
+ } else {
+ @records = qsearch( $opt{'table'}, ( $opt{'hashref'} || {} ) );
+ }
+
+%>
+
+<SELECT NAME="<%= $key %>">
+
+ <OPTION VALUE=""><%= $opt{'empty_label'} || 'all' %></OPTION>
+
+ <% foreach my $record ( sort { $a->$name_col() cmp $b->$name_col() }
+ @records
+ )
+ {
+ %>
+
+ <OPTION VALUE="<%= $record->$key() %>"<%= $opt{'value'} == $record->$key() ? ' SELECTED' : '' %>><%= $record->$name_col() %>
+
+ <% } %>
+
+</SELECT>
+