%# You can make it illegal, but you can't make it unpopular.
<TD <% exists($ARGS{Value}) ? 'bgcolor=white' : '' %>
    ALIGN="<% ($cf->Type eq 'EntryBoolean') ? 'CENTER' : 'LEFT' %>"
    <% $Hidden ? 'style="display: none"' : '' |n %>>
% if ($ReadOnly) {
<INPUT TYPE=HIDDEN NAME="ReadOnly-<% $Name %>" VALUE=1
% if($m->notes("InvalidField-" . $cf->Id)){
 SHV='1' #
% }else{
 SHV='0' #
% } 
% if ($cf->Type eq 'FreeformExternal') {
%       my $descr = $UserObj->describe($cf->Description);
    descp="<% $descr || $cf->Name %>"
%   } elsif ($cf->Type eq 'SelectExternal') {
%       my $descr = $UserObj->field_cname($cf->Description);
    descp="<% $descr || $cf->Name %>"
%   } else {
    descp="<% loc($cf->Description || $cf->Name) %>"
%   }
>
% }
%   if ($cf->Type eq 'EntryFreeform') {
<INPUT <% $Style |n %> NAME="<% $Name %>" VALUE="<% $Value %>" title="<% $Value %>" <% $ReadOnly ? 'readonly' : '' %>
<& ShowHTMLAttr, CustomField => $cf &> 
% if($m->notes("InvalidField-" . $cf->Id)){
 SHV='1'
% }else{
 SHV='0'
% }
%   if ($cf->Type eq 'FreeformExternal') {
%       my $descr = $UserObj->describe($cf->Description);
    descp="<% $descr || $cf->Name %>"
%   } elsif ($cf->Type eq 'SelectExternal') {
%       my $descr = $UserObj->field_cname($cf->Description);
    descp="<% $descr || $cf->Name %>"
%   } else {
    descp="<% loc($cf->Description || $cf->Name) %>"
%   }
>
%   } elsif ($cf->Type eq 'EntryDate') {
<INPUT <% $Style |n %> NAME="<% $Name %>" title="<% $Value %>"  <& /Work/Elements/Date, ReadOnly => $ReadOnly &> VALUE="<% $Value %>" <% $ReadOnly ? 'readonly' : '' %>
<& ShowHTMLAttr, CustomField => $cf &>
% if($m->notes("InvalidField-" . $cf->Id)){
 SHV='1'
% }else{
 SHV='0'
% }
%   if ($cf->Type eq 'FreeformExternal') {
%       my $descr = $UserObj->describe($cf->Description);
    descp="<% $descr || $cf->Name %>"
%   } elsif ($cf->Type eq 'SelectExternal') {
%       my $descr = $UserObj->field_cname($cf->Description);
    descp="<% $descr || $cf->Name %>"
%   } else {
    descp="<% loc($cf->Description || $cf->Name) %>"
%   }
 >
%   } elsif ($cf->Type eq 'EntryTime') {
<INPUT <% $Style |n %> NAME="<% $Name %>" title="<% $Value %>"  <& /Work/Elements/Time, ReadOnly => $ReadOnly &> VALUE="<% $Value %>" <% $ReadOnly ? 'readonly' : '' %>
<& ShowHTMLAttr, CustomField => $cf &> 
% if($m->notes("InvalidField-" . $cf->Id)){
 SHV='1'
% }else{
 SHV='0'
% }
%   if ($cf->Type eq 'FreeformExternal') {
%       my $descr = $UserObj->describe($cf->Description);
    descp="<% $descr || $cf->Name %>"
%   } elsif ($cf->Type eq 'SelectExternal') {
%       my $descr = $UserObj->field_cname($cf->Description);
    descp="<% $descr || $cf->Name %>"
%   } else {
    descp="<% loc($cf->Description || $cf->Name) %>"
%   }
>
%   } elsif ($cf->Type eq 'EntryNumber') {
<INPUT <% $Style |n %> NAME="<% $Name %>" title="<% $Value %>"  <& /Work/Elements/Number, ReadOnly => $ReadOnly &> VALUE="<% $Value %>" <% $ReadOnly ? 'readonly' : '' %>
<& ShowHTMLAttr, CustomField => $cf &>
% if($m->notes("InvalidField-" . $cf->Id)){
 SHV='1'
% }else{
 SHV='0'
% }
%   if ($cf->Type eq 'FreeformExternal') {
%       my $descr = $UserObj->describe($cf->Description);
    descp="<% $descr || $cf->Name %>"
%   } elsif ($cf->Type eq 'SelectExternal') {
%       my $descr = $UserObj->field_cname($cf->Description);
    descp="<% $descr || $cf->Name %>"
%   } else {
    descp="<% loc($cf->Description || $cf->Name) %>"
%   }
 >
%   } elsif ($cf->Type eq 'EntryBoolean') {
%        if (exists $ARGS{Value}) {
<INPUT TYPE=HIDDEN NAME="<% $Name %>-Boolean-Magic" VALUE=1
% if($m->notes("InvalidField-" . $cf->Id)){
 SHV='1'
% }else{
 SHV='0'
% }
%   if ($cf->Type eq 'FreeformExternal') {
%       my $descr = $UserObj->describe($cf->Description);
    descp="<% $descr || $cf->Name %>"
%   } elsif ($cf->Type eq 'SelectExternal') {
%       my $descr = $UserObj->field_cname($cf->Description);
    descp="<% $descr || $cf->Name %>"
%   } else {
    descp="<% loc($cf->Description || $cf->Name) %>"
%   }
>
%        }
<INPUT TYPE=CHECKBOX NAME="<% $Name %>-Boolean" <% $Value ? 'CHECKED' : '' %> <% $ReadOnly ? 'readonly disabled' : '' %> 
<& ShowHTMLAttr, CustomField => $cf &> 
% if($m->notes("InvalidField-" . $cf->Id)){
 SHV='1'
% }else{
 SHV='0'
% }
%   if ($cf->Type eq 'FreeformExternal') {
%       my $descr = $UserObj->describe($cf->Description);
    descp="<% $descr || $cf->Name %>"
%   } elsif ($cf->Type eq 'SelectExternal') {
%       my $descr = $UserObj->field_cname($cf->Description);
    descp="<% $descr || $cf->Name %>"
%   } else {
    descp="<% loc($cf->Description || $cf->Name) %>"
%   }
>
%   } elsif ($cf->Type eq 'EntryExternal') {
<SELECT <% $ReadOnly && !length($Value) && 'readonly disabled' %> <% $Style |n %> NAME="<% $Name %>"  title="<% $Value %>"
<& ShowHTMLAttr, CustomField => $cf &> 
% if($m->notes("InvalidField-" . $cf->Id)){
 SHV='1'
% }else{
 SHV='0'
% }
%   if ($cf->Type eq 'FreeformExternal') {
%       my $descr = $UserObj->describe($cf->Description);
    descp="<% $descr || $cf->Name %>"
%   } elsif ($cf->Type eq 'SelectExternal') {
%       my $descr = $UserObj->field_cname($cf->Description);
    descp="<% $descr || $cf->Name %>"
%   } else {
    descp="<% loc($cf->Description || $cf->Name) %>"
%   }
>
%   $UserObj ||= eval { $TicketObj->FirstRequestor } || $session{CurrentUser}->UserObj;

%   my @SubHash;
%   my $cache_key = "CFCache-" . $UserObj->Id . "-" . $cf->Description;
%   if (my $cached = $m->notes($cache_key)) {
%	@SubHash = @$cached;
%   } else {
%	@SubHash = $UserObj->field_values($cf->Description);
%	$m->notes($cache_key => [@SubHash]);
%   }
% if (!$ReadOnly or !length($Value)) {
<option value="">
% if (!$ReadOnly) {
(<&|/l&>Please Select</&>)
% }
</option>
% }
%     while (my($v, $descr) = splice(@SubHash, 0, 2)) {
%          next if $ReadOnly and length($Value) and $v ne $Value;
        <option <% ($v eq $Value) ? 'SELECTED' : '' %> value="<% $v %>"><% $descr %></option>
%     }
</SELECT>
%   } elsif ($cf->Type eq 'EntrySelect') {
<SELECT <% $ReadOnly && !length($Value) && 'readonly disabled' %> <% $Style |n %> NAME="<% $Name %>"
<& ShowHTMLAttr, CustomField => $cf &> 
% if($m->notes("InvalidField-" . $cf->Id)){
 SHV='1'
% }else{
 SHV='0'
% }
%   if ($cf->Type eq 'FreeformExternal') {
%       my $descr = $UserObj->describe($cf->Description);
    descp="<% $descr || $cf->Name %>"
%   } elsif ($cf->Type eq 'SelectExternal') {
%       my $descr = $UserObj->field_cname($cf->Description);
    descp="<% $descr || $cf->Name %>"
%   } else {
    descp="<% loc($cf->Description || $cf->Name) %>"
%   }
>
% if (!$ReadOnly or !length($Value)) {
<option value="">
% if (!$ReadOnly) {
(<&|/l&>Please Select</&>)
% }
</option>
% }
%     my $CustomFieldValues = $cf->Values;
%     while (my $value = $CustomFieldValues->Next) {
%          next if $ReadOnly and length($Value) and $value->Name ne $Value;
<OPTION <% ($value->Name eq $Value) ? 'SELECTED' : '' %> VALUE="<% $value->Name %>"><% $value->Description || $value->Name %></OPTION>
%     }
</SELECT>
%   }
</TD>
<%INIT>
if (lc($cf->Attribute('HTMLAttr')) =~ /\bstyle=/) {
    $Style = '';
}
else {
    $Style ||= 'border: 0; background: white; color: black; ' if $ReadOnly;
    $Style .= 'cursor: hand; ' if ($cf->Type eq 'EntryDate');
    $Style .= 'width: 100%';
    $Style = " style='$Style' ";
}
</%INIT>
<%ARGS>
$cf
$Name
$TicketObj
$UserObj    => undef
$Value	    => ''
$ReadOnly   => 0
$Hidden     => 0
$Style	    => ''
</%ARGS>
