%# BEGIN LICENSE BLOCK
%# 
%# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com>
%# 
%# (Except where explictly superceded by other copyright notices)
%# 
%# This work is made available to you under the terms of Version 2 of
%# the GNU General Public License. A copy of that license should have
%# been provided with this software, but in any event can be snarfed
%# from www.gnu.org.
%# 
%# This work is distributed in the hope that it will be useful, but
%# WITHOUT ANY WARRANTY; without even the implied warranty of
%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
%# General Public License for more details.
%# 
%# Unless otherwise specified, all modifications, corrections or
%# extensions to this work which alter its source code become the
%# property of Best Practical Solutions, LLC when submitted for
%# inclusion in the work.
%# 
%# 
%# END LICENSE BLOCK
<& /Elements/Header, Title=>loc("Preferences") &>
<& /User/Elements/Tabs, 
    current_tab => 'User/Prefs.html', 
    Title=>loc("Preferences") &>

<& /Elements/ListActions, actions => \@results &>

<FORM ACTION="<%$RT::WebPath%>/User/Prefs.html" METHOD=POST>
<INPUT TYPE=HIDDEN NAME=id VALUE="<%$UserObj->Id%>">

<TABLE WIDTH=100% BORDER=0>
<TR>

<TD VALIGN=TOP ROWSPAN=2>
<& /Elements/TitleBoxStart, title => loc('Identity') &>

<input type=hidden name="Name" value="<%$UserObj->Name%>">
<table callspacing=0 cellpadding=0>
  <tr>
    <td class=label><&|/l&>Email</&>: </td>
    <td class=value><input name="EmailAddress" value="<%$UserObj->EmailAddress%>"></td>
  </tr>
  <tr>
    <td class=label><&|/l&>Real Name</&>:</td>
    <td class=value><input name="RealName" value="<%$UserObj->RealName%>"></td>  </tr>
  <tr>
    <td class=label><&|/l&>Nickname</&>:</td>
    <td class=value><input name="NickName" value="<%$UserObj->NickName%>"></td>
  </tr>
  <tr>
    <td class=label><&|/l&>Language</&>:</td>
    <td class=value><& /Elements/SelectLang, Name => 'Lang', Default => $UserObj->Lang &></td>
  </tr>
</table>
<& /Elements/TitleBoxEnd &>
<br>
<& /Elements/TitleBoxStart, title => loc('Phone numbers') &>
<table callspacing=0 cellpadding=0>
  <tr>
    <td class=label><&|/l&>Residence</&>:</td>
    <td class=value><input name="HomePhone" value="<%$UserObj->HomePhone%>" size=13></td>
  </tr>
  <tr>
    <td class=label><&|/l&>Work</&>:</td>
    <td class=value><input name="WorkPhone" value="<%$UserObj->WorkPhone%>" size=13></td>
  </tr>
  <tr>
    <td class=label><&|/l&>Mobile</&>:</td>
    <td class=value><input name="MobilePhone" value="<%$UserObj->MobilePhone%>" size=13></td>
  </tr>
  <tr>
    <td class=label><&|/l&>Pager</&>:</td>
    <td class=value><input name="PagerPhone" value="<%$UserObj->PagerPhone%>" size=13></td>
  </tr>
</table>
<& /Elements/TitleBoxEnd &>
</TD>
<TD VALIGN=TOP>
% unless ($RT::WebExternalAuth and !$RT::WebFallbackToInternalAuth) {
<& /Elements/TitleBoxStart, title => loc('Password') &>
<TABLE>
<TR>
<TD class=label>
<&|/l&>New Password</&>:
</TD>
<TD class=value>
<input type=password name="Pass1">
</TD>
</TR>
<TR><TD class=label>
<&|/l&>Retype Password</&>:
</TD>
<TD class=value>
<input type=password name="Pass2">
</TD>
</TR>
</TABLE>
<& /Elements/TitleBoxEnd &>
% }
</TD>
<TR>

<TD VALIGN=TOP>
<& /Elements/TitleBoxStart, title => loc('Location') &>
<table callspacing=0 cellpadding=0>
  <tr>
    <td class=label><&|/l&>Organization</&>:</td>
    <td class=value><input name="Organization" value="<%$UserObj->Organization%>"></td>
  </tr>
  <tr>
    <td class=label><&|/l&>Address1</&>:</td>
    <td class=value><input name="Address1" value="<%$UserObj->Address1%>"></td>
  </tr>
  <tr>
    <td class=label><&|/l&>Address2</&>:</td>
    <td class=value><input name="Address2" value="<%$UserObj->Address2%>"></td>
  </tr>
  <tr>
    <td class=label><&|/l&>City</&>:</td>
    <td><input name="City" value="<%$UserObj->City%>" size=14></td>
  </tr>
  <tr>
    <td class=label><&|/l&>State</&>:</td>
    <td class=value><input name="State" value="<%$UserObj->State%>" size=3></td>
  </tr>
  <tr>
    <td class=label><&|/l&>Zip</&>:</td>
    <td class=value><input name="Zip" value="<%$UserObj->Zip%>" size=9></td>
  </tr>
  <tr>
    <td class=label><&|/l&>Country</&>:</td>
    <td class=value><input name="Country" value="<%$UserObj->Country%>"></td>
  </tr>
</table>
<& /Elements/TitleBoxEnd &>
</TD>
</TR>
<TR>



<TD COLSPAN=2 VALIGN=TOP>
%if ($UserObj->Privileged) {
<BR>
<& /Elements/TitleBoxStart, title => loc('Signature') &>
<TEXTAREA COLS=80 ROWS=5 name="Signature" WRAP=HARD>
<%$UserObj->Signature%></TEXTAREA>
<& /Elements/TitleBoxEnd &>
% }

</TD>

</TR>
</TABLE>


<& /Elements/Submit, Label => loc('Save Preferences') &>
</form>


<%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 Lang
		   );
    
    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
</%ARGS>
