--- loncom/interface/Attic/londropadd.pm 2007/07/26 23:56:35 1.165 +++ loncom/interface/Attic/londropadd.pm 2007/08/26 21:09:42 1.166 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to drop and add students in courses # -# $Id: londropadd.pm,v 1.165 2007/07/26 23:56:35 albertel Exp $ +# $Id: londropadd.pm,v 1.166 2007/08/26 21:09:42 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -45,7 +45,13 @@ use LONCAPA(); ############################################################### ############################################################### sub header { - my $start_page=&Apache::loncommon::start_page('Enrollment Manager'); + my ($jscript,$loaditems) = @_; + my $start_page; + if (ref($loaditems) eq 'HASH') { + $start_page=&Apache::loncommon::start_page('Enrollment Manager',$jscript,{'add_entries' => $loaditems,}); + } else { + $start_page=&Apache::loncommon::start_page('Enrollment Manager',$jscript); + } return(<print(&mt('Invalid username or domain')); } $r->print("

".&mt("Enroll another student")."

"); + if (ref($srcharray) eq 'ARRAY') { + foreach my $item (@{$srcharray},'ccuname','ccdomain') { + $r->print(''."\n"); + } + } + foreach my $item ('sortby','seluname','seludom') { + if (exists($env{'form.'.$item})) { + $r->print(''."\n"); + } + } + $r->print(''."\n". + ''."\n". + ''."\n". + ''."\n". + ''); } sub setup_date_selectors { @@ -936,9 +957,23 @@ sub make_dates_default { ## Single student enrollment routines (some of them) ## sub get_student_username_domain_form { - my $r = shift; - my $domform = &Apache::loncommon::select_dom_form - ($env{'course.'.$env{'request.course.id'}.'.domain'},'cudomain',0); + my ($r,$elements,$response,$srch,$forcenewuser) = @_; + my $loaditems = { + 'onload' => "javascript:setFormElements(document.studentform)", + }; + $r->print(&header(undef,$loaditems)); + &Apache::lonhtmlcommon::add_breadcrumb + ({href=>"javascript:backPage(document.studentform,'','')", + text=>"Single user search"}); + $r->print(&Apache::lonhtmlcommon::breadcrumbs('Enroll Student', + 'Course_Add_Student')); + my $defdom=$env{'request.role.domain'}; + + my $jscript = &Apache::loncommon::studentbrowser_javascript()."\n". + ''."\n"; + my %lt=&Apache::lonlocal::texthash( 'eos' => "Enroll One Student", 'usr' => "Username", @@ -946,34 +981,48 @@ sub get_student_username_domain_form { 'been' => "Begin Enrollment", ); $r->print(< - +$jscript

$lt{'eos'}

- - - - - - - -
:
:$domform
  - -
- END + $r->print(&single_user_entry_form($defdom,$srch,$forcenewuser)); return; } +sub single_user_entry_form { + my ($dom,$srch,$forcenewuser) = @_; + my $userpicker = + &Apache::loncommon::user_picker($dom,$srch,$forcenewuser, + 'document.studentform'); + my $srchbutton = &mt('Search'); + my $output = <<"ENDDOCUMENT"; + + + +$userpicker + +ENDDOCUMENT + return $output; +} + sub print_enroll_single_student_form { - my $r=shift; + my ($r,$jscript,$ccuname,$ccdomain,$srch) = @_; + $r->print(&header($jscript)); + &Apache::lonhtmlcommon::add_breadcrumb + ({href=>"javascript:backPage(document.studentform,'','')", + text=>"Single user search"}); + if ($env{'form.phase'} eq 'userpicked') { + &Apache::lonhtmlcommon::add_breadcrumb + ({href=>"javascript:backPage(document.studentform,'get_user_info','select')", + text=>"Select user",}); + } + &Apache::lonhtmlcommon::add_breadcrumb + ({href=>"javascript:backPage(document.studentform,'$env{'form.phase'}','modify')", + text=>"Set enrollment",}); + $r->print(&Apache::lonhtmlcommon::breadcrumbs('Enroll Student', + 'Course_Add_Student')); $r->print("

".&mt('Enroll One Student')."

"); # - my $username = &LONCAPA::clean_username($env{'form.cuname'}); - my $domain = &LONCAPA::clean_domain($env{'form.cudomain'}); - my $home = &Apache::lonnet::homeserver($username,$domain); + my $home = &Apache::lonnet::homeserver($ccuname,$ccdomain); # $new_user flags whether we are creating a new user or using an old one my $new_user = 1; if ($home ne 'no_host') { @@ -983,10 +1032,31 @@ sub print_enroll_single_student_form { my $user_data_html = ''; my $javascript_validations = ''; if ($new_user) { + my $usertoadd; + my $instsrch = { + srchin => 'instd', + srchby => 'uname', + srchtype => 'exact', + srchterm => $ccuname, + srchdomain => $ccdomain, + }; + if (($instsrch->{'srchterm'} ne '') && ($instsrch->{'srchdomain'} ne '')) { + $usertoadd = $instsrch->{'srchterm'}.':'.$instsrch->{'srchdomain'}; + } + my (%dirsrch_results,%inst_results); + if ($usertoadd) { + if (&Apache::loncreateuser::directorysrch_check($instsrch) eq 'ok') { + %dirsrch_results = &Apache::lonnet::inst_directory_query($instsrch); + if (ref($dirsrch_results{$usertoadd}) eq 'HASH') { + %inst_results = %{$dirsrch_results{$usertoadd}}; + } + } + } + my $defdom=$env{'course.'.$env{'request.course.id'}.'.domain'}; # Set up authentication forms my ($krbdef,$krbdefdom) = - &Apache::loncommon::get_kerberos_defaults($domain); + &Apache::loncommon::get_kerberos_defaults($ccdomain); $javascript_validations=&javascript_validations('auth',$krbdefdom); my %param = ( formname => 'document.studentform', kerb_def_dom => $krbdefdom, @@ -998,7 +1068,7 @@ sub print_enroll_single_student_form { # # Set up domain selection form my $homeserver_form = ''; - my %servers = &Apache::lonnet::get_servers($domain,'library'); + my %servers = &Apache::lonnet::get_servers($ccdomain,'library'); $homeserver_form = ' + : - + : - + : - + : $homeserver_form : - +

$lt{'pswd'}

$lt{'psam'}$authhelp @@ -1049,7 +1119,7 @@ $locform END } else { # User already exists. Do not worry about authentication - my %uenv = &Apache::lonnet::dump('environment',$domain,$username); + my %uenv = &Apache::lonnet::dump('environment',$ccdomain,$ccuname); $javascript_validations = &javascript_validations('noauth'); my %lt=&Apache::lonlocal::texthash( 'udf' => "User Data for", @@ -1060,7 +1130,7 @@ END 'mail' => "Email Address", ); $user_data_html = <$lt{'udf'} $username:$domain +

$lt{'udf'} $ccuname:$ccdomain

@@ -1087,9 +1157,9 @@ END ); $r->print(< - - - + + + '; + if ($env{'form.state'} eq 'gotusername') { + my $srch; + foreach my $item (@search) { + $srch->{$item} = $env{'form.'.$item}; + } + print STDERR "phase = $env{'form.phase'}\n"; + if ($env{'form.phase'} eq 'get_user_info') { + my ($currstate,$response,$forcenewuser,$results) = + &Apache::loncreateuser::user_search_result($srch); + if ($currstate eq 'select') { + $r->print(&header()); + &Apache::lonhtmlcommon::add_breadcrumb + ({href=>"javascript:backPage(document.usersrchform,'','')", + text=>"Single user search"}, + {href=>"javascript:backPage(document.usersrchform,'get_user_info','select')", + text=>"Select User",}); + $r->print(&Apache::lonhtmlcommon::breadcrumbs('Enroll Student', + 'Course_Add_Student')); + &Apache::loncreateuser::print_user_selection_page($r, + $response,$srch,$results,'enrollstudent',\@search); + } elsif ($currstate eq 'modify') { + my ($ccuname,$ccdomain); + if (($srch->{'srchby'} eq 'uname') && + ($srch->{'srchtype'} eq 'exact')) { + $ccuname = $srch->{'srchterm'}; + $ccdomain= $srch->{'srchdomain'}; + } else { + my @matchedunames = keys(%{$results}); + ($ccuname,$ccdomain) = split(/:/,$matchedunames[0]); + } + $ccuname =&LONCAPA::clean_username($ccuname); + $ccdomain=&LONCAPA::clean_domain($ccdomain); + &print_enroll_single_student_form($r,$jscript,$ccuname, + $ccdomain,$srch,$response); + } elsif ($currstate eq 'query') { + $r->print(&header($jscript)); + &Apache::lonhtmlcommon::add_breadcrumb + ({href=>"javascript:backPage(document.studentform,'','')", + text=>"Single user search"}); + $r->print(&Apache::lonhtmlcommon::breadcrumbs('Enroll Student', + 'Course_Add_Student')); + &Apache::loncreateuser::print_user_query_page($r,'enrollstudent'); + } else { + &get_student_username_domain_form($r,$elements,$response, + $srch,$forcenewuser); + } + } elsif ($env{'form.phase'} eq 'userpicked') { + my $ccuname = &LONCAPA::clean_username($env{'form.seluname'}); + my $ccdomain = &LONCAPA::clean_domain($env{'form.seludom'}); + &print_enroll_single_student_form($r,$jscript,$ccuname, + $ccdomain,$srch); + } else { + &get_student_username_domain_form($r,$elements); + } } elsif ($env{'form.state'} eq 'enrolling') { - &enroll_single_student($r); + $r->print(&header($jscript)); + &Apache::lonhtmlcommon::add_breadcrumb + ({href=>"javascript:backPage(document.studentform,'','')", + text=>"Single user search"}); + if ($env{'form.prevphase'} eq 'userpicked') { + &Apache::lonhtmlcommon::add_breadcrumb + ({href=>"javascript:backPage(document.studentform,'get_user_info','select')", + text=>"Select user",}); + } + &Apache::lonhtmlcommon::add_breadcrumb + ({href=>"javascript:backPage(document.studentform,'$env{'form.prevphase'}','modify')", + text=>"Set enrollment",}, + {href=>"javascript:backPage(document.studentform,$env{'form.phase'},'')", + text=>"Result",}); + $r->print(&Apache::lonhtmlcommon::breadcrumbs('Enroll Student', + 'Course_Add_Student')); + &enroll_single_student($r,\@search); } else { - &get_student_username_domain_form($r); + &get_student_username_domain_form($r,$elements); } } elsif ($env{'form.action'} eq 'classlist' && $permission->{'view'}) { &Apache::lonhtmlcommon::add_breadcrumb
: