X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Felements%2Fcheckboxes-table.html;h=96d13033374be0524c292ad13bd5331a966d98a2;hp=d26ebef35703ec0dc4d8bad26cb6a670012efee3;hb=11bbf29de447fe39e9d7155fe280a0df70fa8c3c;hpb=2c757d7db4cb6a7b9655de13206fcc84fb7ce61f diff --git a/httemplate/elements/checkboxes-table.html b/httemplate/elements/checkboxes-table.html index d26ebef35..96d130333 100644 --- a/httemplate/elements/checkboxes-table.html +++ b/httemplate/elements/checkboxes-table.html @@ -1,110 +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 %>">
+% if ( $opt{'target_link'} ) { + +% } +% +% if ( $opt{'name_callback'} ) { + + + <% &{ $opt{'name_callback'} }( $target_obj ) %><% $opt{'target_link'} ? '' : '' %> +% } else { +% my $name_col = $opt{'name_col'}; +% + + + <% $target_obj->$name_col() %>
<% $opt{'target_link'} ? '' : '' %> +% } +% if ( $opt{'disable-able'} ) { + + + <% $target_obj->disabled =~ /^Y/i ? ' (DISABLED)' : '' %> +% } - ## - # 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'} ) { - - $source_obj = $opt{'source_obj'}; - #$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{'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(); -%> - - $sourcenum, - $target_pkey => $targetnum, - }) - ? 'CHECKED ' - : '' - %> VALUE="ON"> - - <% if ( $opt{'target_link'} ) { %> - - <% - - } - %><%= $targetnum %>: - - <% if ( $opt{'name_callback'} ) { %> - - <%= &{ $opt{'name_callback'} }( $target_obj ) %><%= $opt{'target_link'} ? '' : '' %> - - <% } else { - my $name_col = $opt{'name_col'}; - %> - - <%= $target_obj->$name_col() %><%= $opt{'target_link'} ? '' : '' %> - - <% } %> - - <% if ( $opt{'disable-able'} ) { %> - - <%= $target_obj->disabled =~ /^Y/i ? ' (DISABLED)' : '' %> - - <% } %>
+% } -<% } %>