%# With a gentleman I try to be a gentleman and a half, and with a fraud I
%# try to be a fraud and a half.
%#		-- Otto von Bismarck

<TABLE BORDER=0 WIDTH=<% $ReadOnly ? 730 : 630 %> name="EntryTable" id="EntryTable" cellpadding=1 cellspacing=1>
%# THEAD
<TR>
<THEAD>
<TH height="10" width=60 ALIGN=LEFT>
&nbsp;
</TH>
% my $rejected;
% foreach my $cf (@CustomFields) {
%     next if $IsHidden{$cf->Id};
%     $rejected ||= $m->notes("InvalidField-" . $cf->Id);
<TH class="tableTitle" height="20" ALIGN="LEFT" VALIGN="TOP">
<% $cf->DescriptionOrName %>
<& ShowHints, CustomField => $cf, Loc => $Loc, HintsPrefix => '<BR>' &>
</TH>
% }
% if (!$ReadOnly) {
<TH height="20" width=100 ALIGN=LEFT>
&nbsp;
</TH>
% }
</THEAD>
</TR>

%# current values
% foreach my $row (0 .. $LastIndex) {
%     my $IDs = "";
<TR>
<TD ALIGN=LEFT>
<LABEL>
% if ($RT::IsMSIE) {
<INPUT TYPE="CHECKBOX" NAME="DeleteEntry" id="DeleteEntry" VALUE="1" <% $ReadOnly ? 'DISABLED' : '' %>>
% } else {
<INPUT TYPE="CHECKBOX" NAME="DeleteEntry-<% $row %>" id="DeleteEntry-<% $row %>" VALUE="1" <% $ReadOnly ? 'DISABLED' : '' %>>
% }
<&|/l&>(delete)</&>
</LABEL>
</TD>
%     foreach my $col (0 .. $#Current) {
%         my $cf = $CustomFields[$col] or next;
%	  my $name = ('Entry-' . $cf->Id);
%     $IDs .= "-" . $cf->Id;
%#         $name = "Disabled$name" if $ReadOnly;
%         $name .= "-$row" if $cf->Type eq 'EntryBoolean';
<& EditCustomFieldEntry,
    cf => $cf,
    Name => $name,
    Hidden => $IsHidden{$cf->Id},
    ReadOnly => ($ReadOnly || $IsReadOnly{$cf->Id}),
    Value => $Current[$col][$row],
    TicketObj => $TicketObj, 
    &>
%     }
%     if (!$ReadOnly) {
%	if ($row == $LastIndex and $RT::IsMSIE) {
<TD ALIGN=LEFT><INPUT STYLE="width: 100%"
TYPE="button" 
onclick="AddMoreEntry_Access(this);"
NAME="AddMoreEntry<% $m->request_args->{UpdateAll} ? '-' : $IDs %>" VALUE="<&|/l&>Update</&>"></TD>
%	} else {
<TD ALIGN=LEFT></TD>	
%	}
%     }
</TR>
% }

%# final row
%if (!$ReadOnly and ($LastIndex == -1 or !$RT::IsMSIE)) {
<TR>
<TD ALIGN=LEFT>
% if ($RT::IsMSIE) {
<INPUT TYPE="CHECKBOX" NAME="DeleteEntry" id="DeleteEntry" VALUE="1"><&|/l&>(delete)</&>
% }
</TD>
% my $IDs = "";
% $ARGSRef ||= $m->request_args;
% foreach my $cf (@CustomFields) {
%     $IDs .= "-" . $cf->Id;
%     my $value;
%     $value = $ARGSRef->{'AddEntry-' . $cf->Id} if $rejected;
%     $value = $cf->Attribute('Default') unless defined $value;
<& EditCustomFieldEntry,
    cf => $cf,
    Name => (($RT::IsMSIE ? '' : 'Add') . $Prefix . $cf->Id . $Postfix),
    Hidden => $IsHidden{$cf->Id},
    ReadOnly => $IsReadOnly{$cf->Id},
    Value => $value,
    TicketObj => $TicketObj,
    &>
% }
<TD ALIGN=LEFT><INPUT STYLE="width: 100%"
% if ($RT::IsMSIE) {
TYPE="button" 
onclick="AddMoreEntry_Access(this);"
% } else {
TYPE="submit" 
% }
NAME="AddMoreEntry<% $m->request_args->{UpdateAll} ? '-' : $IDs %>" VALUE="<&|/l&>Update</&>"></TD>
</TR>
%}
</TABLE>
<BR>

%# $m->notes('ValidFields', $m->notes('ValidFields') && !$rejected);

<%INIT>
my @Current;
my $LastIndex = -1;
my $UserObj;
my (%IsReadOnly, %IsHidden);

foreach my $cf (@CustomFields) {
    my $values;
    if ($TicketObj->Id) {
	$values = [ map {
	    $_->Content
	} @{$TicketObj->CustomFieldValues($cf->Id)->ItemsArrayRef} ];
    }
    elsif (exists $TempValues->{$cf->Id}) {
	$values = $TempValues->{$cf->Id};
    }

    push @Current, $values;
    $LastIndex = $#{$values} if $#{$values} > $LastIndex;

    $IsReadOnly{$cf->Id} = ($cf->Attribute($Check) =~ /readonly|hidden/),
    $IsHidden{$cf->Id} = ($cf->Attribute($Check) eq 'hidden'),
}

# If all fields are read-only, then this table is also read-only.
$ReadOnly = 1 unless grep !$IsReadOnly{$_->Id}, @CustomFields;

</%INIT>
<%ARGS>
$Check => 'OnUpdate'
$Prefix => 'Entry-'
$Postfix => ''
$ReadOnly => undef
$TicketObj => undef
$ARGSRef => undef
@CustomFields => ()
$TempValues => undef
$Loc => undef
</%ARGS>
