ACLs: finish group edit (agents + rights) & browse
[freeside.git] / httemplate / elements / checkboxes-table.html
1 <%
2
3   ##
4   # required
5   ##
6   # 'target_table'    => 'table_name',
7   # 'link_table'      => 'table_name',
8   #
9   # 'name_col' => 'name_column',
10   # #or
11   # 'name_callback' => sub { },
12   #
13   ##
14   # recommended (required?)
15   ##
16   # 'source_obj'   => $obj,
17   # #or?
18   # #'source_table' => 'table_name',
19   # #'sourcenum'    => '4', #current value of primary key in source_table
20   # #                       # (none is okay, just pass it if you have it)
21   ##
22   # optional
23   ##
24   # 'disable-able' => 1,
25
26   my( %opt ) = @_;
27
28   my $target_pkey = dbdef->table($opt{'target_table'})->primary_key;
29
30   my( $source_pkey, $sourcenum, $source_obj );
31   if ( $opt{'source_obj'} ) {
32
33     $source_obj = $opt{'source_obj'};
34     #$source_table = $source_obj->dbdef_table->table;
35     $source_pkey = $source_obj->dbdef_table->primary_key;
36     $sourcenum = $source_obj->$source_pkey();
37
38   } else {
39
40     #$source_obj?
41     $source_pkey = $opt{'source_table'}
42                      ? dbdef->table($opt{'source_table'})->primary_key
43                      : '';
44     $sourcenum = $opt{'sourcenum'};
45   }
46
47   my $hashref = $opt{'hashref'} || {};
48
49   my $extra_sql = '';
50
51   if ( $opt{'disable-able'} ) {
52     $hashref->{'disabled'} = '';
53
54     $extra_sql .= ( $sourcenum && $source_pkey ) 
55                     ? "OR $source_pkey = $sourcenum"
56                     : '';
57   }
58
59 %>
60
61 <% foreach my $target_obj (
62      qsearch({ 'table'     => $opt{'target_table'},
63                'hashref'   => $hashref,
64                'select'    => $opt{'target_table'}. '.*',
65                'addl_from' => "LEFT JOIN $opt{'link_table'} USING ( $target_pkey )",
66                'extra_sql' => $extra_sql,
67             })
68    ) {
69
70      my $targetnum = $target_obj->$target_pkey();
71
72      my $checked;
73      if ( $cgi->param('error') ) {
74
75        $checked = $cgi->param($target_pkey.$targetnum)
76                     ? 'CHECKED'
77                     : '';
78
79      } else {
80
81        $checked = qsearchs( $opt{'link_table'}, {
82                                                   $source_pkey => $sourcenum,
83                                                   $target_pkey => $targetnum,
84                                                 }                             )
85                     ? 'CHECKED'
86                     : ''
87
88      }
89
90 %>
91
92   <INPUT TYPE="checkbox" NAME="<%= $target_pkey. $targetnum %>" <%= $checked %> VALUE="ON">
93
94   <% if ( $opt{'target_link'} ) { %>
95
96     <A HREF="<%= $opt{'target_link'} %><%= $targetnum %>"><%
97
98   }
99   %><%= $targetnum %>: 
100
101   <% if ( $opt{'name_callback'} ) { %>
102
103     <%= &{ $opt{'name_callback'} }( $target_obj ) %><%= $opt{'target_link'} ? '</A>' : '' %>
104
105   <% } else {
106        my $name_col = $opt{'name_col'};
107   %>
108
109     <%= $target_obj->$name_col() %><%= $opt{'target_link'} ? '</A>' : '' %>
110
111   <% } %>
112
113   <% if ( $opt{'disable-able'} ) { %>
114
115     <%= $target_obj->disabled =~ /^Y/i ? ' (DISABLED)' : '' %>
116
117   <% } %>
118
119   <BR>
120
121 <% } %>
122