--- loncom/interface/lonpickuser.pm 2009/08/04 20:08:34 1.1 +++ loncom/interface/lonpickuser.pm 2009/09/06 19:09:54 1.4 @@ -1,7 +1,7 @@ # The LearningOnline Network # Search for a user # -# $Id: lonpickuser.pm,v 1.1 2009/08/04 20:08:34 raeburn Exp $ +# $Id: lonpickuser.pm,v 1.4 2009/09/06 19:09:54 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -71,15 +71,116 @@ sub handler { # Get parameters from query string &Apache::loncommon::get_unprocessed_cgi ($ENV{'QUERY_STRING'},['srchdom','form','udomelement','unameelement','ulastelement', - 'ufirstelement','uemailelement','hideudomelement']); + 'ufirstelement','uemailelement','hideudomelement','coursedom','caller']); my $js; - if ($env{'form.phase'} eq 'get_user_info') { + if (($env{'form.phase'} eq 'get_user_info') || + ($env{'form.phase'} eq 'store_newuser')) { $js = &gochoose_javascript(); + } elsif ($env{'form.phase'} eq 'define_newuser') { + $js = <<"ENDSP"; + +ENDSP + } elsif ($env{'form.caller'} eq 'checkusername') { + $js = <<"ENDCHK"; + +ENDCHK + } elsif ($env{'form.phase'} eq '') { + $js = <<"ENDSET"; + +ENDSET + } + my $startargs = {'no_nav_bar' => 1, }; + if ($env{'form.phase'} eq 'store_newuser') { + my $uname = $env{'form.srchterm'}; + my $udom = $env{'form.srchdomain'}; + my $newfirst = $env{'form.newfirst'}; + my $newlast = $env{'form.newlast'}; + my $newemail = $env{'form.newemail'}; + $startargs->{'add_entries'} = { onload => 'javascript:gochoose('."'$uname','$udom','$newfirst','$newlast','$newemail'".');' }; + } elsif ($env{'form.caller'} eq 'checkusername') { + $startargs->{'add_entries'} = { onload => 'javascript:checkUser();' }; + } elsif ($env{'form.phase'} eq '') { + $startargs->{'add_entries'} = { onload => 'javascript:setUserSearch();' }; + } + $r->print(&Apache::loncommon::start_page('Selecting course personnel', + $js,$startargs)); + if ($env{'form.caller'} eq 'checkusername') { + $r->print(&check_user_form(). + &Apache::loncommon::end_page()); + return OK; } - - $r->print(&Apache::loncommon::start_page('Selecting course personnel',$js, - {'no_nav_bar' => 1, })); my %toset = ( uname => 'unameelement', udom => 'udomelement', @@ -108,7 +209,7 @@ sub handler { $srch{'srchterm'},$rules); } - my $dom = $env{'form.srchdom'}; + my $dom = $env{'form.coursedom'}; my $cancreate = &Apache::lonuserutils::can_create_user($dom,$context,$usertype); @@ -118,23 +219,23 @@ sub handler { my $srchbutton = &mt('Search'); my $headertext = &mt('Search for a user to add to course personnel'); - my $opener_elems; - foreach my $item (keys(%toset)) { - if (exists($env{'form.'.$toset{$item}})) { - $opener_elems .= ''."\n"; - } - } - $r->print(<<"ENDBLOCK"); + my $opener_elems = ''."\n". + ''."\n". + &set_opener_elems(); + unless ($env{'form.phase'} eq 'define_newuser') { + $r->print(<<"ENDBLOCK");

$headertext

$opener_elems - $userpicker
ENDBLOCK - if ($env{'form.phase'} eq 'get_user_info') { + } + if (($env{'form.phase'} eq 'get_user_info') && ($env{'form.srchterm'} ne '')) { $r->print('
'.&mt('Searching ...').'
'); $r->rflush(); my ($currstate,$response,$forcenewuser,$results) = @@ -144,7 +245,69 @@ ENDBLOCK \@search,$context,$opener_elems); } else { $r->print('
'.$response.'
'); + if ($forcenewuser) { + if ($srch{'srchby'} eq 'uname' && + $srch{'srchtype'} eq 'exact' && + $srch{'srchin'} eq 'dom' && + $srch{'srchdomain'} eq $env{'form.coursedom'}) { + if ($cancreate) { + $r->print("\n".'
'); + foreach my $item (keys(%srch)) { + $r->print(''."\n"); + } + $r->print(' + +&"').'" />'."\n". +$opener_elems.' +
'); + } else { + my $helplink = 'javascript:helpMenu('."'display'".')'; + my %usertypetext = + &Apache::lonlocal::texthash( + official => 'You are not authorized to create new institutional users in this domain.', + unofficial => 'You are not authorized to create new non-institutional users in this domain.', + ); + $r->print('
'. + $usertypetext{$usertype}.' '. + &mt('Please contact the [_1]helpdesk[_2] for assistance.','','').'
'); + + } + } + } + } + } + if ($env{'form.phase'} eq 'define_newuser') { + $r->print('

'.&mt('Define new user').' '.$srch{'srchterm'}.':'. + $srch{'srchdomain'}.'

'."\n".'
'. + '
'."\n". + ''."\n". + $opener_elems. + &Apache::lonhtmlcommon::start_pick_box()."\n". + &Apache::lonhtmlcommon::row_title(&mt('First Name')). + ''. + &Apache::lonhtmlcommon::row_closure()."\n". + &Apache::lonhtmlcommon::row_title(&mt('Last Name')). + '' +. + &Apache::lonhtmlcommon::row_closure()."\n". + &Apache::lonhtmlcommon::row_title(&mt('E-mail Address')). + '' +. + &Apache::lonhtmlcommon::row_closure(1)."\n". + &Apache::lonhtmlcommon::end_pick_box()); + foreach my $item (keys(%srch)) { + $r->print(''."\n"); } + $r->print('
'."\n". + '
'); } $r->print(&Apache::loncommon::end_page()); return OK; @@ -153,6 +316,7 @@ ENDBLOCK sub gochoose_javascript { return <<"ENDGC"; ENDGC } +sub check_user_form { + return ' +
+ +'."\n". + &set_opener_elems().' + + + + + + +
'."\n"; +} + +sub set_opener_elems { + my %toset = ( + uname => 'unameelement', + udom => 'udomelement', + first => 'ufirstelement', + lastn => 'ulastelement', + email => 'uemailelement', + hidedom => 'hideudomelement', + ); + my $output; + foreach my $item (keys(%toset)) { + if (exists($env{'form.'.$toset{$item}})) { + $output .= ''."\n"; + } + } + return $output; +} + 1;