--- loncom/interface/lonuserutils.pm 2020/10/15 13:47:45 1.183.2.1 +++ loncom/interface/lonuserutils.pm 2019/07/26 18:37:16 1.184.4.3 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Utility functions for managing LON-CAPA user accounts # -# $Id: lonuserutils.pm,v 1.183.2.1 2020/10/15 13:47:45 raeburn Exp $ +# $Id: lonuserutils.pm,v 1.184.4.3 2019/07/26 18:37:16 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1121,8 +1121,15 @@ sub print_upload_manager_form { if (!$env{'form.datatoken'}) { $datatoken=&Apache::loncommon::upfile_store($r); } else { - $datatoken=$env{'form.datatoken'}; - &Apache::loncommon::load_tmp_file($r); + $datatoken=&Apache::loncommon::valid_datatoken($env{'form.datatoken'}); + if ($datatoken ne '') { + &Apache::loncommon::load_tmp_file($r,$datatoken); + } + } + if ($datatoken eq '') { + $r->print('<p class="LC_error">'.&mt('Error').': '. + &mt('Invalid datatoken').'</p>'); + return 'missingdata'; } my @records=&Apache::loncommon::upfile_record_sep(); if($env{'form.noFirstLine'}){ @@ -1206,6 +1213,7 @@ sub print_upload_manager_form { } &print_upload_manager_footer($r,$i,$keyfields,$defdom,$today,$halfyear, $context,$permission,$crstype,$showcredits); + return 'ok'; } sub setup_date_selectors { @@ -2279,7 +2287,6 @@ sub build_user_record { sub courses_selector { my ($cdom,$formname) = @_; - my %coursecodes = (); my %codes = (); my @codetitles = (); my %cat_titles = (); @@ -2292,14 +2299,15 @@ sub courses_selector { my $jscript = ''; my $totcodes = 0; - $totcodes = - &Apache::courseclassifier::retrieve_instcodes(\%coursecodes, - $cdom,$totcodes); - if ($totcodes > 0) { - $format_reply = - &Apache::lonnet::auto_instcode_format($caller,$cdom,\%coursecodes, - \%codes,\@codetitles,\%cat_titles,\%cat_order); - if ($format_reply eq 'ok') { + my $instcats = &Apache::lonnet::get_dom_instcats($cdom); + if (ref($instcats) eq 'HASH') { + if ((ref($instcats->{'codetitles'}) eq 'ARRAY') && (ref($instcats->{'codes'}) eq 'HASH') && + (ref($instcats->{'cat_titles'}) eq 'HASH') && (ref($instcats->{'cat_order'}) eq 'HASH')) { + %codes = %{$instcats->{'codes'}}; + @codetitles = @{$instcats->{'codetitles'}}; + %cat_titles = %{$instcats->{'cat_titles'}}; + %cat_order = %{$instcats->{'cat_order'}}; + $totcodes = scalar(keys(%codes)); my $numtypes = @codetitles; &Apache::courseclassifier::build_code_selections(\%codes,\@codetitles,\%cat_titles,\%cat_order,\%idlist,\%idnums,\%idlist_titles); my ($scripttext,$longtitles) = &Apache::courseclassifier::javascript_definitions(\@codetitles,\%idlist,\%idlist_titles,\%idnums,\%cat_titles); @@ -2336,7 +2344,8 @@ function setCourseCat(formname) { } courseSet('$codetitles[1]'); for (var j=0; j<formname.Department.length; j++) { - if (formname.Department.options[j].value == "$env{'form.Department'}") { formname.Department.options[j].selected = true; + if (formname.Department.options[j].value == "$env{'form.Department'}") { + formname.Department.options[j].selected = true; } } if (formname.Department.options[formname.Department.selectedIndex].value == -1) { @@ -2757,7 +2766,7 @@ END .'<input type="checkbox" name="userwin" value="1"'.$checkwin.' />'.$lt{'owin'} .'</label></span></td></tr></table></fieldset></div>'; } - $output .= "\n".'<br clear="all" />'."\n". + $output .= "\n".'<div style="padding:0;clear:both;margin:0;border:0"></div>'."\n". &Apache::loncommon::start_data_table(). &Apache::loncommon::start_data_table_header_row(); if ($mode eq 'autoenroll') { @@ -4096,7 +4105,7 @@ sub print_first_users_upload_form { .&Apache::lonhtmlcommon::end_pick_box(); $str .= '<p>' - .'<input type="submit" name="fileupload" value="'.&mt('Next').'"' + .'<input type="button" name="fileupload" value="'.&mt('Next').'"' .' onclick="javascript:checkUpload(this.form);" />' .'</p>'; @@ -4107,7 +4116,10 @@ sub print_first_users_upload_form { # ================================================= Drop/Add from uploaded file sub upfile_drop_add { my ($r,$context,$permission,$showcredits) = @_; - &Apache::loncommon::load_tmp_file($r); + my $datatoken = &Apache::loncommon::valid_datatoken($env{'form.datatoken'}); + if ($datatoken ne '') { + &Apache::loncommon::load_tmp_file($r,$datatoken); + } my @userdata=&Apache::loncommon::upfile_record_sep(); if($env{'form.noFirstLine'}){shift(@userdata);} my @keyfields = split(/\,/,$env{'form.keyfields'}); @@ -4121,10 +4133,6 @@ sub upfile_drop_add { $fields{$env{'form.f'.$i}}=$keyfields[$i]; } } - if ($env{'form.fullup'} ne 'yes') { - $r->print('<form name="studentform" method="post" action="/adm/createuser">'."\n". - '<input type="hidden" name="action" value="'.$env{'form.action'}.'" />'); - } # # Store the field choices away my @storefields = qw/username names fname mname lname gen id @@ -4169,10 +4177,10 @@ sub upfile_drop_add { } else { my %home_servers = &Apache::lonnet::get_servers($defdom,'library'); if (! exists($home_servers{$desiredhost})) { - $r->print('<span class="LC_error">'.&mt('Error'). - &mt('Invalid home server specified').'</span>'); + $r->print('<p class="LC_error">'.&mt('Error').': '. + &mt('Invalid home server specified').'</p>'); $r->print(&Apache::loncommon::end_page()); - return; + return 'invalidhome'; } } # Determine authentication mechanism @@ -4272,6 +4280,11 @@ sub upfile_drop_add { } } } + if ($datatoken eq '') { + $r->print('<p class="LC_error">'.&mt('Error').': '. + &mt('Invalid datatoken').'</p>'); + return 'missingdata'; + } if ( $domain eq &LONCAPA::clean_domain($domain) && ($amode ne '')) { ####################################### @@ -4786,16 +4799,16 @@ sub upfile_drop_add { } } } - } - if (!$multiple) { - ($userresult,$authresult,$roleresult,$idresult) = - &modifyuserrole($context,$setting, - $changeauth,$cid,$userdomain,$username, - $id,$amode,$password,$fname, - $mname,$lname,$gen,$singlesec, - $env{'form.forceid'},$desiredhost, - $email,$role,$enddate,$startdate, - $checkid,$inststatus); + if (!$multiple) { + ($userresult,$authresult,$roleresult,$idresult) = + &modifyuserrole($context,$setting, + $changeauth,$cid,$userdomain,$username, + $id,$amode,$password,$fname, + $mname,$lname,$gen,$singlesec, + $env{'form.forceid'},$desiredhost, + $email,$role,$enddate,$startdate, + $checkid,$inststatus); + } } } if ($multiple) { @@ -4824,7 +4837,9 @@ sub upfile_drop_add { "</p>\n"); if ($counts{'role'} > 0) { $r->print("<p>\n". - &mt('Roles added for [quant,_1,user].',$counts{'role'}).' '.&mt('If a user is currently logged-in to LON-CAPA, any new roles which are active will be available when the user next logs in.')."</p>\n"); + &mt('Roles added for [quant,_1,user].',$counts{'role'}).' '. + &mt('If a user is currently logged-in to LON-CAPA, any new roles which are active will be available when the user next logs in.'). + "</p>\n"); } else { $r->print('<p>'.&mt('No roles added').'</p>'); } @@ -4842,10 +4857,9 @@ sub upfile_drop_add { # Get current classlist my $classlist = &Apache::loncoursedata::get_classlist(); if (! defined($classlist)) { - $r->print('<form name="studentform" method="post" action="/adm/createuser">'. - '<input type="hidden" name="action" value="'.$env{'form.action'}.'" />'. - '<p class="LC_info">'.&mt('There are no students with current/future access to the course.').'</p>'. - '</form>'."\n"); + $r->print('<p class="LC_info">'. + &mt('There are no students with current/future access to the course.'). + '</p>'."\n"); } elsif (ref($classlist) eq 'HASH') { # Remove the students we just added from the list of students. foreach my $line (@userdata) { @@ -4861,9 +4875,7 @@ sub upfile_drop_add { } } } # end of unless - if ($env{'form.fullup'} ne 'yes') { - $r->print('</form>'); - } + return 'ok'; } sub print_namespacing_alerts {