--- loncom/interface/lonrequestcourse.pm 2020/07/01 20:08:54 1.109 +++ loncom/interface/lonrequestcourse.pm 2023/03/11 04:44:51 1.116 @@ -1,7 +1,7 @@ # The LearningOnline Network # Request a course # -# $Id: lonrequestcourse.pm,v 1.109 2020/07/01 20:08:54 raeburn Exp $ +# $Id: lonrequestcourse.pm,v 1.116 2023/03/11 04:44:51 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -337,8 +337,6 @@ sub handler { $jscript = &Apache::lonhtmlcommon::set_form_elements($elementsref,\%stored); if ($state eq 'courseinfo') { $jscript .= &cloning_javascript(); - } elsif ($state eq 'process') { - $jscript .= &processing_javascript(); } } } @@ -450,17 +448,6 @@ function setCloneDisplay(courseForm) { END } -sub processing_javascript { - return <<"END"; -function hideProcessing() { - if (document.getElementById('processing')) { - document.getElementById('processing').style.display="none"; - } -} - -END -} - sub get_breadcrumbs { my ($dom,$action,$state,$states,$trail) = @_; my ($crumb,$newinstcode,$codechk,$checkedcode,$numtitles,$description); @@ -739,9 +726,6 @@ sub onload_action { if ($state eq 'courseinfo') { $loaditems{'onload'} .= 'javascript:setCloneDisplay(document.requestcrs);'; } - if ($state eq 'process') { - $loaditems{'onload'} .= 'javascript:hideProcessing();'; - } } return \%loaditems; } @@ -2427,7 +2411,7 @@ sub print_cancel_request { &Apache::loncommon::start_data_table_row(). '<td>'.$history{details}{'cdescr'}.'</td><td>'. &Apache::lonlocal::locallocaltime($timestamp).'</td>'. - '<td>'.$showtype.'</td>'. + '<td>'.&mt($showtype).'</td>'. &Apache::loncommon::end_data_table_row(). &Apache::loncommon::end_data_table(). '<br /><div class="LC_warning">'; @@ -2781,7 +2765,7 @@ sub requestlog_display_filter { $typename = $typenames->{$crstype}; } } - $output .= '<option value="'.$crstype.'"'.$selstr.'>'.$typename.'</option>'."\n"; + $output .= '<option value="'.$crstype.'"'.$selstr.'>'.&mt($typename).'</option>'."\n"; } $output .= '</select></td>'; } @@ -3242,7 +3226,7 @@ sub clone_form { '</label><br /><label>'. '<input type="radio" name="datemode" value="shift" checked="checked" /> '. $lt{'shd'}.'</label>'. - '<input type="text" size="5" name="dateshift" value="365" />'. + '<input type="text" size="5" name="dateshift" value="364" />'. &Apache::lonhtmlcommon::row_closure(1). &Apache::lonhtmlcommon::row_title($lt{'dpl'}).'<label>'. '<input type="radio" name="tinyurls" value="delete" /> '.$lt{'nsl'}. @@ -3705,6 +3689,19 @@ sub print_request_outcome { } } } + if ($env{'form.chome'} eq 'default') { + my %servers = &Apache::lonnet::get_servers($dom,'library'); + my $numlib = keys(%servers); + if ($numlib) { + my $loadm=10000000; + my $chome; + foreach my $tryserver (keys(%servers)) { + ($chome,$loadm) = + &Apache::lonnet::compare_server_load($tryserver,$chome,$loadm); + } + $env{'form.chome'} = $chome; + } + } my $details = { owner => $env{'user.name'}, domain => $env{'user.domain'}, @@ -3865,9 +3862,20 @@ sub process_request { foreach my $role (@roles) { $longroles{$role}=&Apache::lonnet::plaintext($role,$type); } - $r->print('<div id="processing" style="display:block;">'."\n". - &mt('Your request is being processed; this page will update when processing is complete.'). - '</div>'); + my $preamble = '<div id="LC_update" class="LC_info">'. + '<br />'. + &mt("Please be patient while your request is processed"). + '<br /></div>'. + '<div style="padding:0;clear:both;margin:0;border:0"></div>'; + my $closure = <<ENDCLOSE; +<script type="text/javascript"> +// <![CDATA[ +\$("#LC_update").hide('slow'); +// ]]> +</script> +ENDCLOSE + my %prog_state = &Apache::lonhtmlcommon::Create_PrgWin($r,undef,$preamble); + &Apache::lonhtmlcommon::Update_PrgWin($r,\%prog_state,&mt('Processing ...')); $r->rflush(); if (ref($details) eq 'HASH') { if ($details->{'clonecrs'}) { @@ -3892,6 +3900,9 @@ sub process_request { 'autocreate',$details,\$logmsg,$clonemsg,\$newusermsg, \$addresult,\$enrollcount,\$response,\$keysmsg,\%domdefs, \%longroles,\$code,\%customitems); + &Apache::lonhtmlcommon::Update_PrgWin($r,\%prog_state,&mt('Finished!')); + &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); + $r->print($closure); if (ref($postprocess) eq 'HASH') { $customized = $postprocess->{'createdcustomized'}; } @@ -4066,7 +4077,7 @@ sub process_request { } elsif ($disposition eq 'pending') { my $pendingform; if ($crstype ne 'official') { - $pendingform = &pending_validation_form($dom,$cnum,$crstype,$now,$token, + $pendingform = &pending_validation_form($r,$dom,$cnum,$crstype,$now,$token, $lonhost,$env{'form.cdescr'}); } if ($pendingform) { @@ -4384,7 +4395,7 @@ sub notification_information { } sub pending_validation_form { - my ($cdom,$cnum,$crstype,$now,$token,$lonhost,$cdesc) = @_; + my ($r,$cdom,$cnum,$crstype,$now,$token,$lonhost,$cdesc) = @_; my $output; my %postvalues = ( 'owner' => $env{'user.name'}.':'.$env{'user.domain'}, @@ -4420,6 +4431,8 @@ sub pending_validation_form { my $hostname = &Apache::lonnet::hostname($lonhost); my $protocol = $Apache::lonnet::protocol{$lonhost}; $protocol = 'http' if ($protocol ne 'https'); + my $alias = &Apache::lonnet::use_proxy_alias($r,$lonhost); + $hostname = $alias if ($alias ne ''); my $crscreator = $protocol.'://'.$hostname.'/cgi-bin/createpending.pl'; $output .= '<input type="hidden" name="crscreator" value="'.$crscreator.'" />'."\n". '<input type="hidden" name="token" value="'.$token.'" />'."\n". @@ -4918,7 +4931,7 @@ sub print_textbook_form { '</label><br /><label>'. '<input type="radio" name="owndatemode" value="shift" checked="checked" /> '. $lt{'shd'}.'</label>'. - '<input type="text" size="5" name="owndateshift" value="365" />'. + '<input type="text" size="5" name="owndateshift" value="364" />'. '</fieldset><fieldset style="display:inline-block">'. '<legend>'.$lt{'dpl'}.'</legend><label>'. '<input type="radio" name="owntinyurls" value="delete" />'.$lt{'nsl'}. @@ -4942,7 +4955,7 @@ sub print_textbook_form { '</label><br /><label>'. '<input type="radio" name="colldatemode" value="shift" checked="checked" /> '. $lt{'shd'}.'</label>'. - '<input type="text" size="5" name="colldateshift" value="365" />'. + '<input type="text" size="5" name="colldateshift" value="364" />'. '</fieldset><fieldset style="display:inline-block">'. '<legend>'.$lt{'dpl'}.'</legend><label>'. '<input type="radio" name="colltinyurls" value="delete" />'.$lt{'nsl'}. @@ -5144,15 +5157,11 @@ sub process_textbook_request { undef($clonedom); } } - my $js = &processing_javascript(); - my ($loaditems,$args); - $loaditems = { - onload => 'javascript:hideProcessing();', - }; + my $args; if ($crstype eq 'lti') { $args = { 'only_body' => 1}; } - $r->print(&header('Course Creation',$js,$loaditems,undef,$args)); + $r->print(&header('Course Creation','','',undef,$args)); unless ($crstype eq 'lti') { if (ref($can_request) eq 'HASH') { @@ -5224,9 +5233,18 @@ sub process_textbook_request { '',$req_notifylist,[],$domconfig); $r->print($output); if ($crstype eq 'lti') { - my %consumers = &Apache::lonnet::get_dom('lticonsumers',[$env{'form.sourcecrs'}],$dom); - if (($env{'form.lti.sourcecrs'} ne '') && ($consumers{$env{'form.lti.sourcecrs'}} eq '') && ($cnum ne '')) { - &Apache::lonnet::put_dom('lticonsumers',{ $env{'form.lti.sourcecrs'} => $cnum },$dom); + my $storecrs; + if ($env{'request.lti.login'}) { + my %lti = &Apache::lonnet::get_domain_lti($dom,'provider'); + if (ref($lti{$env{'request.lti.login'}}) eq 'HASH') { + $storecrs = $lti{$env{'request.lti.login'}}{'storecrs'}; + } + if ($storecrs) { + my %consumers = &Apache::lonnet::get_dom('lticonsumers',[$env{'form.sourcecrs'}],$dom); + if (($env{'form.lti.sourcecrs'} ne '') && ($consumers{$env{'form.lti.sourcecrs'}} eq '') && ($cnum ne '')) { + &Apache::lonnet::put_dom('lticonsumers',{ $env{'form.lti.sourcecrs'} => $env{'request.lti.login'}.':'.$cnum },$dom); + } + } } } elsif (&Apache::loncoursequeueadmin::author_prompt()) { unless ($customized) {