%# Philosophy will clip an angel's wings.
%# 		-- John Keats
<INPUT TYPE=HIDDEN NAME=id VALUE="<%$UserObj->Id%>">

% if ($NoUI) {
<p align="center" style="color: red">
<% @results %>
% }
<TABLE WIDTH=100% BORDER=0>
<TR>

<TD VALIGN=TOP ROWSPAN=2>
<input type=hidden name="Name" value="<%$UserObj->Name%>">
<& /Work/Elements/TitleBoxStart, title => loc('Identity') &>
<tr><td>
<&|/l&>Email</&></td><td><input name="EmailAddress" value="<% $UserObj->EmailAddress %>">
</td></tr><tr><td>
<&|/l&>Real Name</&></td><td><input name="RealName" value="<%$UserObj->RealName%>"> 
</td></tr><tr><td>
% if ($NoUI and $OriginObj) {
%    if (exists $ARGS{'PersonalHomepage'}) {
%       $OriginObj->AddCustomFieldValue( Field => '23', Value => $ARGS{'PersonalHomepage'});
%    }
<&|/l&>PersonalHomepage</&></td><td><input name="PersonalHomepage" value="<% eval { $ARGS{'PersonalHomepage'} || $OriginObj->CustomFieldValue('PersonalHomepage') } %>">
% } else {
<&|/l&>Nickname</&></td><td><input name="NickName" value="<%$UserObj->NickName%>">
% }
</td></tr><tr><td>
<&|/l&>Language</&></td><td><& /Elements/SelectLang, Name => 'Lang', Default => $UserObj->Lang &>
</td></tr></table>
% if (!$NoUI) {
<& /Work/Elements/TitleBoxStart, title => loc('Phone numbers') &>
<tr><td>
<&|/l&>Residence</&></td><td><input name="HomePhone" value="<%$UserObj->HomePhone%>" size=13>
</td></tr><tr><td>
<&|/l&>Work</&></td><td><input name="WorkPhone" value="<%$UserObj->WorkPhone%>" size=13>
</td></tr><tr><td>
<&|/l&>Mobile</&></td><td><input name="MobilePhone" value="<%$UserObj->MobilePhone%>" size=13>
</td></tr><tr><td>
<&|/l&>Pager</&></td><td><input name="PagerPhone" value="<%$UserObj->PagerPhone%>" size=13>
</td></tr></table>
% }
</TD>
<TD VALIGN=TOP>
% unless ($RT::WebExternalAuth and !$RT::WebFallbackToInternalAuth) {
<& /Work/Elements/TitleBoxStart, title => loc('Password') &>
<TR>
<TD ALIGN=RIGHT>
<&|/l&>New Password</&>
</TD>
<TD ALIGN=LEFT>
<input type=password name="Pass1">
</TD>
</TR>
<TR><TD ALIGN=RIGHT>
<&|/l&>Retype Password</&>
</TD>
<TD>
<input type=password name="Pass2">
</TD>
</TR>
</TABLE>
% }
</TD>
<TR>

<TD VALIGN=TOP>
% if ($NoUI and $OriginObj) {
% ProcessTicketCustomFieldUpdates(ARGSRef => \%ARGS);
<& /Work/Elements/TitleBoxStart, title => loc('Public Info') &>
<tr><td>
<& /Work/Tickets/Elements/EditCustomField, TicketObj => $OriginObj, CustomField => $OriginObj->QueueObj->CustomField('Public Info'), Queue => $OriginObj->Queue, NamePrefix => 'Ticket-' . $OriginObj->Id . '-CustomField-', Loc => 1 &>
</td></tr></table>
% } else {
<& /Work/Elements/TitleBoxStart, title => loc('Location') &>
<tr><td>
<&|/l&>Organization</&></td><td><input name="Organization" value="<%$UserObj->Organization%>">
</td></tr><tr><td>
<&|/l&>Address1</&></td><td><input name="Address1" value="<%$UserObj->Address1%>">
</td></tr><tr><td>
<&|/l&>Address2</&></td><td><input name="Address2" value="<%$UserObj->Address2%>">
</td></tr><tr><td>
<&|/l&>City</&></td><td><input name="City" value="<%$UserObj->City%>" size=14>

<&|/l&>State</&><input name="State" value="<%$UserObj->State%>" size=3>

<&|/l&>Zip</&><input name="Zip" value="<%$UserObj->Zip%>" size=9>
</td></tr><tr><td>
<&|/l&>Country</&></td><td><input name="Country" value="<%$UserObj->Country%>">
</td></tr></table>
% }
</TD>
</TR>
<TR>



<TD COLSPAN=2 VALIGN=TOP>
%if ($NoUI) {
%    if (exists $ARGS{Description} and $OriginObj) {
%        my $Object = $OriginObj->Transactions->First->ContentObj;
%	 $Object->__Set( Field => 'Content', Value => $ARGS{Description});
%    }
<BR>
<& /Work/Elements/TitleBoxStart, title => loc($NoUI ? 'Self Introduction' : 'Description') &>
<tr><td colspan=2>
<TEXTAREA COLS=80 ROWS=5 name="Description" WRAP=HARD style="width: 100%">
<% eval { $OriginObj->Transactions->First->Content } %>
</TEXTAREA>
</td></tr></table>
%} elsif ($UserObj->Privileged) {
<BR>
<& /Work/Elements/TitleBoxStart, title => loc('Signature') &>
<tr><td colspan=2>
<TEXTAREA COLS=80 ROWS=5 name="Signature" WRAP=HARD style="width: 100%">
<%$UserObj->Signature%></TEXTAREA>
</td></tr></table>
% }

</TD>

</TR>
</TABLE>

<%INIT>

my $UserObj = new RT::User($session{'CurrentUser'});
my ($title, $PrivilegedChecked, $EnabledChecked, $Disabled, $result, @results);

my ($val, $msg);


	$UserObj->Load($id) || $UserObj->Load($Name) || Abort("Couldn't load user '$Name'");
	$val = $UserObj->Id();
    





# If we have a user to modify, lets try. 
if ($UserObj->Id) {
    
    my @fields = qw(Name Comments Signature EmailAddress FreeformContactInfo 
		    Organization RealName NickName Lang EmailEncoding WebEncoding 
		    ExternalContactInfoId ContactInfoSystem Gecos ExternalAuthId 
		    AuthSystem HomePhone WorkPhone MobilePhone PagerPhone Address1
		Address2 City State Zip Country 
		   );
    
    my @fieldresults = UpdateRecordObject ( AttributesRef => \@fields,
					    Object => $UserObj,
					    ARGSRef => \%ARGS );
    if ($Lang) {
	$session{'CurrentUser'}->LanguageHandle($Lang);
	$session{'CurrentUser'} = $session{'CurrentUser'}; # force writeback
    }
    push (@results,@fieldresults);


# {{{ Deal with special fields: Privileged, Enabled and Password
if  ( ($SetPrivileged) and ( $Privileged != $UserObj->Privileged) ) {
my  ($code, $msg) = $UserObj->SetPrivileged($Privileged);
     push @results, loc('Privileged status: [_1]', loc_fuzzy($msg));
}



#TODO: make this report errors properly
if ((defined $Pass1) and ($Pass1 ne '') and ($Pass1 eq $Pass2) and (!$UserObj->IsPassword($Pass1))) {
    my ($code, $msg);
    ($code, $msg) = $UserObj->SetPassword($Pass1);
    push @results, loc('Password: [_1]', loc_fuzzy($msg));
} elsif ( $Pass1 && ($Pass1 ne $Pass2)) {
    push @results, loc("Passwords do not match. Your password has not been changed");
}

# }}}
}


</%INIT>


<%ARGS>
$id => $session{'CurrentUser'}->Id
$Name  => undef
$Comments  => undef
$Signature  => undef
$EmailAddress  => undef
$FreeformContactInfo => undef
$Organization  => undef
$RealName  => undef
$NickName  => undef
$Privileged => undef
$SetPrivileged => undef
$Enabled => undef
$SetEnabled => undef
$Lang  => undef
$EmailEncoding  => undef
$WebEncoding => undef
$ExternalContactInfoId  => undef
$ContactInfoSystem  => undef
$Gecos => undef
$ExternalAuthId  => undef
$AuthSystem  => undef
$HomePhone => undef
$WorkPhone  => undef
$MobilePhone  => undef
$PagerPhone  => undef
$Address1 => undef
$Address2  => undef
$City  => undef
$State  => undef
$Zip  => undef
$Country => undef
$Pass1 => undef
$Pass2=> undef
$Create=> undef
$NoUI => undef
$OriginObj => $RT::Nothing
</%ARGS>
