diff options
Diffstat (limited to 'httemplate/elements/checkboxes-table.html')
| -rw-r--r-- | httemplate/elements/checkboxes-table.html | 129 | 
1 files changed, 129 insertions, 0 deletions
| diff --git a/httemplate/elements/checkboxes-table.html b/httemplate/elements/checkboxes-table.html new file mode 100644 index 000000000..b6b04d111 --- /dev/null +++ b/httemplate/elements/checkboxes-table.html @@ -0,0 +1,129 @@ +% +% +%  ## +%  # 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 = ''; +% +%  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, +%            }) +%   ) { +% +%     my $targetnum = $target_obj->$target_pkey(); +% +%     my $checked; +%     if ( $cgi->param('error') ) { +% +%       $checked = $cgi->param($target_pkey.$targetnum) +%                    ? 'CHECKED' +%                    : ''; +% +%     } else { +% +%       $checked = qsearchs( $opt{'link_table'}, { +%                                                  $source_pkey => $sourcenum, +%                                                  $target_pkey => $targetnum, +%                                                }                             ) +%                    ? 'CHECKED' +%                    : '' +% +%     } +% +% + + +  <INPUT TYPE="checkbox" NAME="<% $target_pkey. $targetnum %>" <% $checked %> VALUE="ON"> +% if ( $opt{'target_link'} ) {  + + +    <A HREF="<% $opt{'target_link'} %><% $targetnum %>"> +% +% +%  } +%   +<% $targetnum %>:  +% if ( $opt{'name_callback'} ) {  + + +    <% &{ $opt{'name_callback'} }( $target_obj ) %><% $opt{'target_link'} ? '</A>' : '' %> +% } else { +%       my $name_col = $opt{'name_col'}; +%   + + +    <% $target_obj->$name_col() %><% $opt{'target_link'} ? '</A>' : '' %> +% }  +% if ( $opt{'disable-able'} ) {  + + +    <% $target_obj->disabled =~ /^Y/i ? ' (DISABLED)' : '' %> +% }  + + +  <BR> +% }  + + | 
