This commit was generated by cvs2svn to compensate for changes in r4407,
[freeside.git] / rt / html / Admin / Users / Modify.html
index b424ae9..8a24f9c 100644 (file)
@@ -1,8 +1,14 @@
-%# BEGIN LICENSE BLOCK
+%# BEGIN BPS TAGGED BLOCK {{{
 %# 
-%# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com>
+%# COPYRIGHT:
+%#  
+%# This software is Copyright (c) 1996-2005 Best Practical Solutions, LLC 
+%#                                          <jesse@bestpractical.com>
 %# 
-%# (Except where explictly superceded by other copyright notices)
+%# (Except where explicitly superseded by other copyright notices)
+%# 
+%# 
+%# LICENSE:
 %# 
 %# 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
 %# 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.
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+%# 
+%# 
+%# CONTRIBUTION SUBMISSION POLICY:
+%# 
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
 %# 
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
 %# 
-%# END LICENSE BLOCK
+%# END BPS TAGGED BLOCK }}}
 <& /Admin/Elements/Header, Title => $title  &>
 <& /Admin/Elements/UserTabs, 
     id => $id, 
     UserObj => $UserObj,
-    current_subtab => $current_tab, 
+    current_tab => $current_tab, 
     Title => $title &>
 
 <& /Elements/ListActions, actions => \@results &>
 
-<FORM ACTION="<%$RT::WebPath%>/Admin/Users/Modify.html" METHOD=POST>
+<FORM ACTION="<%$RT::WebPath%>/Admin/Users/Modify.html" METHOD=POST ENCTYPE="multipart/form-data">
 %if ($Create) {
 <INPUT TYPE=HIDDEN NAME=id VALUE="new">
 % } else {
@@ -39,7 +61,7 @@
 <TABLE WIDTH=100% BORDER=0>
 <TR>
 
-<TD VALIGN=TOP ROWSPAN=2>
+<TD VALIGN=TOP class="boxcontainer">
 <& /Elements/TitleBoxStart, title => loc('Identity') &>
 
 <TABLE>
 <input name="Gecos" value="<%$UserObj->Gecos%>">
 </TD></TR>
 <TR><TD ALIGN="RIGHT">
+<&|/l&>Language</&>: 
+</TD><TD>
+<& /Elements/SelectLang, Name => 'Lang', Default => $UserObj->Lang &>
+</TD></TR>
+<TR><TD ALIGN="RIGHT">
 <&|/l&>Extra info</&>: 
 </TD><TD>
 <textarea name="FreeformContactInfo" cols=20 rows=5><%$UserObj->FreeformContactInfo%></TEXTAREA>
 % }
 <& /Elements/TitleBoxEnd &>
 </TD>
-</TR>
-<TR>
 
-<TD VALIGN=TOP>
+<TD VALIGN=TOP class="boxcontainer">
 <& /Elements/TitleBoxStart, title => loc('Location') &>
 <TABLE>
 <TR><TD ALIGN="RIGHT">
 <TR>
 </TR>
 </TABLE>
+<BR>
+<& /Elements/TitleBoxStart, title => loc('Custom Fields') &>
+<TABLE>
+% my $CFs = $UserObj->CustomFields;
+% while (my $CF = $CFs->Next) {
+<TR VALIGN="TOP"><TD ALIGN="RIGHT">
+<% $CF->Name %>:
+</TD><TD>
+<& /Elements/EditCustomField, %ARGS, Object => $UserObj, CustomField => $CF &>
+</TD></TR>
+% }
+<TR>
+</TR>
+</TABLE>
+<& /Elements/TitleBoxEnd &>
 <TR>
 <TD colspan="2">
 <& /Elements/TitleBoxStart, title => loc('Comments about this user') &>
-<TEXTAREA name="Comments" COLS=80 ROWS=5 WRAP=VIRTUAL><%$UserObj->Comments%>
-</TEXTAREA>
+<TEXTAREA class="comments" name="Comments" COLS=80 ROWS=5 WRAP=VIRTUAL><%$UserObj->Comments%></TEXTAREA>
 <& /Elements/TitleBoxEnd &>
 %if ($UserObj->Privileged) {
 <BR>
 <& /Elements/TitleBoxStart, title => loc('Signature') &>
-<TEXTAREA COLS=80 ROWS=5 name="Signature" WRAP=HARD>
-<%$UserObj->Signature%></TEXTAREA>
+<TEXTAREA class="signature" COLS=80 ROWS=5 name="Signature" WRAP=HARD><%$UserObj->Signature%></TEXTAREA>
 <& /Elements/TitleBoxEnd &>
 % }
 
 </TR>
 </TABLE>
 
-<& /Elements/Submit &>
+<& /Elements/Submit, Label => loc('Save Changes') &>
 </form>
 
 <%INIT>
@@ -216,18 +254,44 @@ else {
 
     $current_tab = 'Admin/Users/Modify.html?id='.$id;
     if ($id eq 'new') {
-       ($val, $msg) = $UserObj->Create( Name => $Name,
-                                        EmailAddress => $ARGS{'EmailAddress'}
-                                      );
+       ( $val, $msg ) = $UserObj->Create(
+           Name                  => $Name,
+           EmailAddress          => $ARGS{'EmailAddress'},
+           Name                  => $ARGS{'Name'},
+           Comments              => $ARGS{'Comments'},
+           Signature             => $ARGS{'Signature'},
+           EmailAddress          => $ARGS{'EmailAddress'},
+           FreeformContactInfo   => $ARGS{'FreeformContactInfo'},
+           Organization          => $ARGS{'Organization'},
+           RealName              => $ARGS{'RealName'},
+           NickName              => $ARGS{'NickName'},
+           Lang                  => $ARGS{'Lang'},
+           EmailEncoding         => $ARGS{'EmailEncoding'},
+           WebEncoding           => $ARGS{'WebEncoding'},
+           ExternalContactInfoId => $ARGS{'ExternalContactInfoId'},
+           ContactInfoSystem     => $ARGS{'ContactInfoSystem'},
+           Gecos                 => $ARGS{'Gecos'},
+           ExternalAuthId        => $ARGS{'ExternalAuthId'},
+           AuthSystem            => $ARGS{'AuthSystem'},
+           HomePhone             => $ARGS{'HomePhone'},
+           WorkPhone             => $ARGS{'WorkPhone'},
+           MobilePhone           => $ARGS{'MobilePhone'},
+           PagerPhone            => $ARGS{'PagerPhone'},
+           Address1              => $ARGS{'Address1'},
+           Address2              => $ARGS{'Address2'},
+           City                  => $ARGS{'City'},
+           State                 => $ARGS{'State'},
+           Zip                   => $ARGS{'Zip'},
+           Country               => $ARGS{'Country'},
+           Privileged           => $ARGS{'Privileged'},
+           Disabled            => ($ARGS{'Enabled'} ? 0 : 1)
+       );
+
        if ($val) {
                push @results, $msg;
        } else {
                push @results, loc('User could not be created: [_1]', $msg);
-       }       
-
-       # set the id, so the the menu will have the right info
-       $id = $UserObj->Id;     
-
+       }
     } else {
        $UserObj->Load($id) || $UserObj->Load($Name) || Abort("Couldn't load user '$Name'");
        $val = $UserObj->Id();
@@ -235,66 +299,69 @@ else {
 
     if ($val) {
        $title = loc("Modify the user [_1]", $UserObj->Name);
-    }  
+    }
 
     # If the create failed
     else {
        $title = loc("Create a new user");
        $Create = 1;
-    }    
-
-    
-
+    }
 }
 
 
 
 
 # If we have a user to modify, lets try. 
-if ($UserObj->Id) {
-    
+if ($UserObj->Id && $id ne 'new') {
+
     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 
+                   Address2 City State Zip Country 
                   );
-    
+
     my @fieldresults = UpdateRecordObject ( AttributesRef => \@fields,
                                            Object => $UserObj,
                                            ARGSRef => \%ARGS );
     push (@results,@fieldresults);
+    push @results, ProcessObjectCustomFieldUpdates( ARGSRef => \%ARGS, Object => $UserObj );
 
 
-# {{{ 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));
-}
+    # {{{ Deal with special fields: Privileged, Enabled
+    if  ( $SetPrivileged and $Privileged != $UserObj->Privileged ) {
+         my ($code, $msg) = $UserObj->SetPrivileged($Privileged);
+         push @results, loc('Privileged status: [_1]', loc_fuzzy($msg));
+    }
 
-#we're asking about enabled on the web page but really care about disabled.
-if ($Enabled == 1) {
-    $Disabled = 0;
-}      
-else {
-    $Disabled = 1;
-}
-if  ( ($SetEnabled) and ( $Disabled != $UserObj->Disabled) ) { 
-    my  ($code, $msg) = $UserObj->SetDisabled($Disabled);
-    push @results, loc('Enabled status [_1]', loc_fuzzy($msg));
-}
+    #we're asking about enabled on the web page but really care about disabled.
+    $Disabled = $Enabled ? 0 : 1;
+
+    if  ( ($SetEnabled) and ( $Disabled != $UserObj->Disabled) ) { 
+        my  ($code, $msg) = $UserObj->SetDisabled($Disabled);
+        push @results, loc('Enabled 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.");
+    # }}}
 }
 
-# }}}
+if ( $UserObj->Id ) {
+    my $password_not_set;
+    # Deal with Password field
+    if ( !$Pass1 and !$Pass2 ) {
+       $password_not_set = 1;
+    } elsif ( $Pass1 ne $Pass2 ) {
+       $password_not_set = 1;
+        push @results, loc("Passwords do not match.");
+    } elsif ( $Pass1 eq $Pass2 and !$UserObj->IsPassword($Pass1) ) {
+        my ($code, $msg) = $UserObj->SetPassword($Pass1);
+        push @results, loc_fuzzy($msg);
+       $password_not_set = 1 unless $code;
+    }
+    if ($id eq 'new' and $password_not_set) {
+       push @results, loc("A password was not set, so user won't be able to login.");
+    } 
 }
 
 
@@ -308,6 +375,11 @@ if ($UserObj->Privileged()) {
 }
 
 # }}}
+
+# set the id, so the the menu will have the right info, this needs to
+# be done here to avoid creating and then modifying a user
+$id = $UserObj->Id;
+
 </%INIT>