%# "Those who do not do politics will be done in by politics."
%# 		-- French Proverb
% my $Values;
% if ($TicketObj) {
%          $Values  = $TicketObj->CustomFieldValues($CustomField->id);
% }
% if ($CustomField->Type eq 'FreeformSingle') { # {{{
<input <% $ReadOnly %> 
	<% $Style |n %>
 name="<%$NamePrefix%><%$CustomField->Id%>-Values"
        size="<%$Cols%>" <& ShowHTMLAttr, CustomField => $CustomField &>
% if ($TicketObj or $HasValue) {
          value="<%$HasValue ? $Value : $Values->Count ? $Values->First->Content : ''%>"
% }
% if($m->notes("InvalidField-" . $CustomField->Id)){
 SHV='1'
% }else{
 SHV='0'
% }
descp="<%$Description%>"
>
%# }}}
% } elsif ($CustomField->Type eq 'FreeformDate') { # {{{
      <input <% $ReadOnly %>
	<% $Style |n %>
  name="<%$NamePrefix%><%$CustomField->Id%>-Values"
        size="<%$Cols%>" <& /Work/Elements/Date, ReadOnly => $ReadOnly &> <& ShowHTMLAttr, CustomField => $CustomField &>
% if ($TicketObj or $HasValue) {
          value="<%$HasValue ? $Value : $Values->Count ? $Values->First->Content : ''%>"
% }
% if($m->notes("InvalidField-" . $CustomField->Id)){
 SHV='1'
% }else{
 SHV='0'
% }
descp="<%$Description%>"
>
%# }}}
% } elsif ($CustomField->Type eq 'FreeformTime') { # {{{
 <input <% $ReadOnly %> 
	<% $Style |n %>
 name="<%$NamePrefix%><%$CustomField->Id%>-Values"
        size="<%$Cols%>" <& /Work/Elements/Time, ReadOnly => $ReadOnly &> <& ShowHTMLAttr, CustomField => $CustomField &>
% if ($TicketObj or $HasValue) {
          value="<%$HasValue ? $Value : $Values->Count ? $Values->First->Content : ''%>"
% }
% if($m->notes("InvalidField-" . $CustomField->Id)){
 SHV='1'
% }else{
 SHV='0'
% }
descp="<%$Description%>"
>
%# }}}
% } elsif ($CustomField->Type eq 'FreeformNumber') { # {{{
      <input <% $ReadOnly %> 
	<% $Style |n %>
 name="<%$NamePrefix%><%$CustomField->Id%>-Values"
        size="<%$Cols%>" <& /Work/Elements/Number, ReadOnly => $ReadOnly &> <& ShowHTMLAttr, CustomField => $CustomField &>
% if ($TicketObj or $HasValue) {
          value="<%$HasValue ? $Value : $Values->Count ? $Values->First->Content : ''%>"
% }
% if($m->notes("InvalidField-" . $CustomField->Id)){
 SHV='1'
% }else{
 SHV='0'
% }
descp="<%$Description%>"
>
%# }}}
% } elsif ($CustomField->Type eq 'FreeformPassword') { # {{{
      <input <% $ReadOnly %> 
	<% $Style |n %>
      name="<%$NamePrefix%><%$CustomField->Id%>-Values"
        size="<%$Cols%>" type="password" <& ShowHTMLAttr, CustomField => $CustomField &>
% if ($TicketObj) {
          value="<%$Values->Count ? $Values->First->Content : ''%>"
% }
% if($m->notes("InvalidField-" . $CustomField->Id)){
 SHV='1'
% }else{
 SHV='0'
% }
descp="<%$Description%>"
>
%# }}}
% } elsif ($CustomField->Type eq 'FreeformMultiple') { # {{{
% my $content;
% if ($TicketObj) {
%          while (my $value = $Values->Next ) {
%                 $content .= $value->Content;
%           }
%  } else {
%          $content = $Value;
%  }
%     $m->print($Magic);
<textarea <% $ReadOnly %> cols=<%$Cols%> rows=<%$Rows%> name="<%$NamePrefix%><%$CustomField->Id%>-Values"
descp="<%$Description%>" <& ShowHTMLAttr, CustomField => $CustomField &>
><%$content%></textarea>
%# }}}
% } elsif ($CustomField->Type eq 'SelectSingle') { # {{{
%     $m->print($Magic);
%     $HasValue = $Values->Count if $TicketObj;
      <select <% $ReadOnly && !$HasValue && 'readonly disabled' %> <% $Style |n %>
      name="<%$NamePrefix%><%$CustomField->Id%>-Values"
      id="<%$NamePrefix%><%$CustomField->Id%>-Values" <& ShowHTMLAttr, CustomField => $CustomField &>
% if($m->notes("InvalidField-" . $CustomField->Id)){
 SHV='1'
% }else{
 SHV='0'
% }
descp="<%$Description%>"
 >
% my $CustomFieldValues = $CustomField->Values();
% my $selected;
% my $none = 1;
% while (my $value = $CustomFieldValues->Next) {
%       my $v = $value->Name;
%       if ($TicketObj) {
%          $selected = $Values->HasEntry($v);
%       } elsif (length $Value) {
%          $selected = ($v eq $Value);
%       }
%       next if $ReadOnly and $HasValue and !$selected;
%       $none = 0 if $selected;
        <option value="<%$v%>" <% $selected ? 'SELECTED' : '' %>
            ><% ($Loc ? loc($value->Description) : $value->Description) %></option>
% }
% if (($CustomFieldValues->Count > 1 and !$ReadOnly) or ($ReadOnly and $none)) {
        <option value="" <% $none && 'SELECTED' %>><% $Empty %></option>
% }
      </select>
%# }}}
% } elsif ($CustomField->Type eq 'SelectVersion') { # {{{
%     $m->print($Magic);
% # ---- XXX must link with planned queue versions XXX ---
% my $selected;
%# while (my $value = $CustomFieldValues->Next) {
% my $Tickets = RT::Tickets->new( $session{'CurrentUser'} );
% $Tickets->LimitQueue( VALUE => $Queue );
% $Tickets->LimitType( VALUE => 'release' );
% $Tickets->LimitStatus( VALUE => 'resolved' ) if $CustomField->Description eq 'Version';
% $Tickets->OrderBy( FIELD => 'Starts' );
      <select <% $ReadOnly && 'readonly disabled' %> <% $Style |n %>
      name="<%$NamePrefix%><%$CustomField->Id%>-Values"
      id="<%$NamePrefix%><%$CustomField->Id%>-Values" <& ShowHTMLAttr, CustomField => $CustomField &>
% if($m->notes("InvalidField-" . $CustomField->Id)){
 SHV='1'
% }else{
 SHV='0'
% }
descp="<%$Description%>"
      >
% while (my $ticket = $Tickets->Next) {
% my $value = $ticket->Subject;
        <option value="<%$value%>" 
% if ($TicketObj) {
            <% $Values->HasEntry($value) && ($selected = 'SELECTED') %>
% } else {
            <% length($Value) && ($value eq $Value) && ($selected = 'SELECTED') %>
% }
            ><% $value%></option>
% }
        <option value="" <% !$selected && 'SELECTED' %>></option>
      </select>
%# }}}
% } elsif ($CustomField->Type eq 'SelectResolution') { # {{{
%     $m->print($Magic);
      <select <% $ReadOnly && 'readonly disabled' %> <% $Style |n %>
      name="<%$NamePrefix%><%$CustomField->Id%>-Values"
      id="SelectResolution"
      onchange="
var val = this.options[this.selectedIndex].value;
document.getElementById('Status').selectedIndex = (
    (val == '') ? 0 :
    (val == 'FIXED' || val == 'LATER') ? 5 : 6
);
      " <& ShowHTMLAttr, CustomField => $CustomField &>
% if($m->notes("InvalidField-" . $CustomField->Id)){
 SHV='1'
% }else{
 SHV='0'
% }
descp="<%$Description%>"
      >
% my $CustomFieldValues = $CustomField->Values();
% my $selected;
% while (my $value = $CustomFieldValues->Next) {
        <option value="<%$value->Name%>" 
% if ($TicketObj) {
            <% $Values->HasEntry($value->Name) && ($selected = 'SELECTED') %>
% } else {
            <% length($Value) && ($value->Name eq $Value) && ($selected = 'SELECTED') %>
% }
            ><% ($Loc ? loc($value->Description) : $value->Description) %></option>
% }
        <option value="" <% !$selected && 'SELECTED' %>>&nbsp;</option>
      </select>
%# }}}
% } elsif ($CustomField->Type eq 'SelectMultiple') { # {{{
%     $m->print($Magic);
% my $CustomFieldValues = $CustomField->Values();
% my $selected;
% while (my $value = $CustomFieldValues->Next) {
      <input <% $ReadOnly && 'readonly disabled' %> name="<%$NamePrefix%><%$CustomField->Id%>-Values" type="checkbox" value="<% $value->Name %>" <& ShowHTMLAttr, CustomField => $CustomField &>
% if ($TicketObj) {
            <% $Values->HasEntry($value->Name) && 'CHECKED' %>
% } else {
            <% length($Value) && ($value->Name eq $Value or (ref $Value and grep { $value->Name eq $_} @$Value)) && 'CHECKED' %>
% }
% if($m->notes("InvalidField-" . $CustomField->Id)){
 SHV='1'
% }else{
 SHV='0'
% }
descp="<%$Description%>"
>
      <% $Loc ? loc($value->Description) : $value->Description %><br>
% }
%# }}}
% } elsif ($CustomField->Type eq 'FreeformExternal') { # {{{
      <input <% $ReadOnly %> <% $Style |n %> name="<%$NamePrefix%><%$CustomField->Id%>-Values"
        size="<%$Cols%>" class="wro" readonly <& ShowHTMLAttr, CustomField => $CustomField &>
% if ($TicketObj) {
          value="<%eval{$TicketObj->FirstRequestor->get($CustomField->Description)}%>" alt="<%eval{$TicketObj->FirstRequestor->val($CustomField->Description)}%>"
% } else {
          value="<%$session{CurrentUser}->UserObj->get($CustomField->Description)%>" alt="<%$session{CurrentUser}->UserObj->val($CustomField->Description)%>"
% }
% if($m->notes("InvalidField-" . $CustomField->Id)){
 SHV='1'
% }else{
 SHV='0'
% }
descp="<%$Description%>"
>
%# }}}
% } elsif ($CustomField->Type eq 'SelectExternal') { # {{{
%     $m->print($Magic);
%     $HasValue = $Values->Count if $TicketObj;
      <select <% $ReadOnly && !$HasValue && 'readonly disabled' %> <% $Style |n %>
	name="<%$NamePrefix%><%$CustomField->Id%>-Values"
	id="<%$NamePrefix%><%$CustomField->Id%>-Values"
	<& ShowHTMLAttr, CustomField => $CustomField &> 
% if($m->notes("InvalidField-" . $CustomField->Id)){
 SHV='1'
% }else{
 SHV='0'
% }
descp="<%$Description%>"
	>
%   my $UserObj = eval { $TicketObj->FirstRequestor } || $session{CurrentUser}->UserObj;
%   my @SubHash = $UserObj->field_values($CustomField->Description);
%   my $count = @SubHash;
%   my $selected;
%   my $none = 1;
%   while (my ($v, $descr) = splice(@SubHash, 0, 2)) {
%       if ($TicketObj) {
%          $selected = $Values->HasEntry($v);
%       } else {
%          $selected = ($v eq $Value);
%       }
%       next if $ReadOnly and $HasValue and !$selected;
%       $none = 0 if $selected;
        <option value="<%$v%>" <% $selected ? 'SELECTED' : '' %>><% $descr %></option>
%   }
% if (($count > 2 and !$ReadOnly) or ($ReadOnly and $none)) {
        <option value="" <% $none && 'SELECTED' %>><% $Empty %></option>
% }
      </select>
%# }}}
% }

% return if $ReadOnly;

<& ShowHints, CustomField => $CustomField, Loc => $Loc &>
<%INIT>
my $Magic = '';
my $Empty = '(' . loc('Please Select') . ')';
my $HasValue = length($Value);
if ($ReadOnly) {
    $ReadOnly = ' readonly ';
    $Style = "border: 0; color: black; background: transparent; ";
    $Empty = '';
}
else {
    $Magic = "<input type='hidden' name='$NamePrefix".$CustomField->Id."-Values-Magic' value='1' SHV='0'>";
}
if (lc($CustomField->Attribute('HTMLAttr')) =~ /\bstyle=/) {
    $Style = '';
}
else {
    $Style .= "width: 150; ";
    $Style .= "cursor: hand; " if ($CustomField->Type eq 'FreeformDate') and !$ReadOnly;
    $Style = " style='$Style' ";
}
</%INIT>
<%ARGS>
$ReadOnly => undef
$Value => undef
$TicketObj => undef
$CustomField => undef
$NamePrefix => undef
$Loc => undef
$Queue => undef
$Rows => 3
$Cols => 20
$Style => ''
$Description => ''
</%ARGS>
