X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Felements%2Fcheckboxes-table.html;h=96d13033374be0524c292ad13bd5331a966d98a2;hb=b65bbe5e2161ac6dd4e0e8239ccb7249e001639f;hp=16376fa3d5659ac7f06514523c8c907c9c590d0a;hpb=c738a3c4923774b64960aa87fa58bd0751487edb;p=freeside.git diff --git a/httemplate/elements/checkboxes-table.html b/httemplate/elements/checkboxes-table.html index 16376fa3d..96d130333 100644 --- a/httemplate/elements/checkboxes-table.html +++ b/httemplate/elements/checkboxes-table.html @@ -1,122 +1,142 @@ -<% +% +% +% ## +% # required +% ## +% # 'target_table' => 'table_name', +% # 'link_table' => 'table_name', +% # +% # 'name_col' => 'name_column', +% # #or +% # 'name_callback' => sub { }, +% # +% ## +% # recommended (required?) +% ## +% # 'source_obj' => $obj, +% # #or? +% # #'source_table' => 'table_name', +% # #'sourcenum' => '4', #current value of primary key in source_table +% # # # (none is okay, just pass it if you have it) +% ## +% # optional +% ## +% # 'disable-able' => 1, +% +% my( %opt ) = @_; +% +% my $target_pkey = dbdef->table($opt{'target_table'})->primary_key; +% +% my( $source_pkey, $sourcenum, $source_obj ); +% if ( $opt{'source_obj'} || $opt{'object'} ) { +% +% $source_obj = $opt{'source_obj'} || $opt{'object'}; +% #$source_table = $source_obj->dbdef_table->table; +% $source_pkey = $source_obj->dbdef_table->primary_key; +% $sourcenum = $source_obj->$source_pkey(); +% +% } else { +% +% #$source_obj? +% $source_pkey = $opt{'source_table'} +% ? dbdef->table($opt{'source_table'})->primary_key +% : ''; +% $sourcenum = $opt{'sourcenum'}; +% } +% +% my $hashref = $opt{'hashref'} || {}; +% +% my $extra_sql = $opt{'extra_sql'} || ''; +% +% if ( $opt{'agent_virt'} ) { +% $extra_sql .= ' AND' . $FS::CurrentUser::CurrentUser->agentnums_sql( +% 'null_right' => $opt{'agent_null_right'} +% ); +% } +% +% if ( $opt{'disable-able'} ) { +% $hashref->{'disabled'} = ''; +% +% $extra_sql .= ( $sourcenum && $source_pkey ) +% ? " OR $source_pkey = $sourcenum" +% : ''; +% } +% +% +% foreach my $target_obj ( +% qsearch({ 'table' => $opt{'target_table'}, +% 'hashref' => $hashref, +% 'select' => $opt{'target_table'}. '.*', +% 'addl_from' => "LEFT JOIN $opt{'link_table'} USING ( $target_pkey )", +% 'extra_sql' => $extra_sql, +% 'order_by' => $opt{'order_by'}, +% }) +% ) { +% +% my $targetnum = $target_obj->$target_pkey(); +% +% my $checked; +% if ( $cgi->param('error') ) { +% +% $checked = $cgi->param($target_pkey.$targetnum) +% ? 'CHECKED' +% : ''; +% +% } elsif ( !$sourcenum ) { # newly created object, has no links yet +% +% if ( ref($opt{'default'}) ) { +% $checked = $opt{'default'}->{$targetnum} ? 'CHECKED' : ''; +% } else { +% $checked = $opt{'default'} ? 'CHECKED' : '' +% } +% +% } else { +% +% $checked = qsearchs( $opt{'link_table'}, { +% $source_pkey => $sourcenum, +% $target_pkey => $targetnum, +% } ) +% ? 'CHECKED' +% : '' +% +% } +% + +% ### use name sent to function else use target table and key. +% my $checkbox_name; +% if ($opt{'field'}) { $checkbox_name = $opt{'field'}; } else { $checkbox_name = "$target_pkey$targetnum"; } + +% ### use values sent to function rather than values in table to determine CHECKED if values are sent. +% my $values; +% if (ref $opt{'value'} eq ref {} ) { $values = $opt{'value'}; } +% else { foreach my $value ( split(/\,/, $opt{'value'}) ) { $values->{$value} = $value; } } +% if ($values->{$targetnum}) { $checked = "CHECKED"; } + +% my $color_col = $opt{'color_col'}; + VALUE="<% $targetnum %>">