Diff for /loncom/interface/loncoursequeueadmin.pm between versions 1.52.2.5 and 1.53

version 1.52.2.5, 2021/12/09 18:14:44 version 1.53, 2016/04/04 01:09:48
Line 105  sub send_selfserve_notification { Line 105  sub send_selfserve_notification {
         $rawsubj = 'Self-enrollment requests processed';          $rawsubj = 'Self-enrollment requests processed';
         push(@rawmsg,{          push(@rawmsg,{
                       mt => 'Enrollment requests in the following course: [_1] have been processed.',                        mt => 'Enrollment requests in the following course: [_1] have been processed.',
                       args => ["\n$contextdesc\n"],                        args => ["\n$contextdesc"],
                      });                       });
     } elsif ($context eq 'domainmanagers') {      } elsif ($context eq 'domainmanagers') {
         $rawsubj = 'Course/Community requests reviewed';          $rawsubj = 'Course/Community requests reviewed';
         push(@rawmsg,{          push(@rawmsg,{
                       mt  => 'Course/Community creation requests in the following domain: [_1] have been reviewed.',                        mt  => 'Course/Community creation requests in the following domain: "[_1]" have been reviewed.',
                       args => ["\n$contextdesc\n"],                        args => ["\n$contextdesc"],
                      });                       });
         if (ref($textstr) eq 'ARRAY') {          if (ref($textstr) eq 'ARRAY') {
             push(@rawmsg,@{$textstr});              push(@rawmsg,@{$textstr});
Line 119  sub send_selfserve_notification { Line 119  sub send_selfserve_notification {
     } elsif ($context eq 'authormanagers') {      } elsif ($context eq 'authormanagers') {
         $rawsubj = 'Authoring Space requests reviewed';          $rawsubj = 'Authoring Space requests reviewed';
         push(@rawmsg,{          push(@rawmsg,{
                       mt  => 'Authoring requests in the following domain: [_1] have been reviewed.',                        mt  => 'Authoring requests in the following domain: "[_1]" have been reviewed.',
                       args => ["\n$contextdesc\n"],                        args => ["\n$contextdesc"],
                      });                       });
         if (ref($textstr) eq 'ARRAY') {          if (ref($textstr) eq 'ARRAY') {
             push(@rawmsg,@{$textstr});              push(@rawmsg,@{$textstr});
Line 128  sub send_selfserve_notification { Line 128  sub send_selfserve_notification {
     } elsif ($context eq 'usernamemanagers') {      } elsif ($context eq 'usernamemanagers') {
         $rawsubj = 'LON-CAPA account requests reviewed';          $rawsubj = 'LON-CAPA account requests reviewed';
         push(@rawmsg,{          push(@rawmsg,{
                       mt  => 'Account requests in the following domain: [_1] have been reviewed.',                        mt  => 'Account requests in the following domain: "[_1]" have been reviewed.',
                       args => ["\n$contextdesc\n"],                        args => ["\n$contextdesc"],
                      });                       });
         if (ref($textstr) eq 'ARRAY') {          if (ref($textstr) eq 'ARRAY') {
             push(@rawmsg,@{$textstr});              push(@rawmsg,@{$textstr});
Line 396  sub display_queued_requests { Line 396  sub display_queued_requests {
         if ($context eq 'pending') {          if ($context eq 'pending') {
             $disposition = 'pending';              $disposition = 'pending';
             $nextphase = 'requestvalidation';              $nextphase = 'requestvalidation';
         } elsif ($context eq 'displaypending') {  
             $disposition = 'pending';  
         }          }
         %requesthash = &Apache::lonnet::dump_dom($namespace,$dom,'_'.$disposition);          %requesthash = &Apache::lonnet::dump_dom($namespace,$dom,'_'.$disposition);
         $nextelement = '<input type="hidden" name="phase" value="'.$nextphase.'" />';          $nextelement = '<input type="hidden" name="phase" value="'.$nextphase.'" />';
Line 424  sub display_queued_requests { Line 422  sub display_queued_requests {
                     my ($cnum,$disposition) = split('_',$item);                      my ($cnum,$disposition) = split('_',$item);
                     $entry = $cnum.':'.$requesthash{$item}{'ownername'}.':'.                      $entry = $cnum.':'.$requesthash{$item}{'ownername'}.':'.
                              $requesthash{$item}{'ownerdom'}.':';                               $requesthash{$item}{'ownerdom'}.':';
                     if (($context eq 'pending') || ($context eq 'displaypending')) {                      if ($context eq 'pending') {
                         $entry .= $requesthash{$item}{'instcode'};                          $entry .= $requesthash{$item}{'instcode'};
                     } else {                      } else {
                         $entry .= $requesthash{$item}{'crstype'};                          $entry .= $requesthash{$item}{'crstype'};
Line 443  sub display_queued_requests { Line 441  sub display_queued_requests {
         if (keys(%queue_by_date) > 0) {          if (keys(%queue_by_date) > 0) {
             if ($context eq 'course') {              if ($context eq 'course') {
                 $output .=  '<h3>'.&mt('Self-enrollment requests queued pending approval by a Coordinator').'</h3>';                  $output .=  '<h3>'.&mt('Self-enrollment requests queued pending approval by a Coordinator').'</h3>';
             } elsif (($context eq 'pending') || ($context eq 'displaypending')) {              } elsif ($context eq 'pending') {
                 $output .= '<h3>'.&mt('Requests for official courses queued pending validation').'</h3>'.                  $output .= '<h3>'.&mt('Requests for official courses queued pending validation').'</h3>'.
                            '<p>'.&mt('Requests are validated against institutional data to confirm that the requestor is an instructor of record.').'<br />'.                             '<p>'.&mt('Requests are validated against institutional data to confirm that the requestor is an instructor of record.').'<br />'.
                            &mt('Validation is attempted when the request is submitted.').' '.                             &mt('Validation is attempted when the request is submitted.').' '.&mt('If unvalidated, the request will be held in a queue.').' '.&mt('Validation of pending requests is automatically repeated daily.').'</p>';
                            &mt('If unvalidated, the request will be held in a queue.').' '.  
                            &mt('Validation of pending requests is automatically repeated daily.').'</p>';  
             } elsif ($context eq 'requestauthor') {              } elsif ($context eq 'requestauthor') {
                 $output .= '<h3>'.&mt('Requests for Authoring Space queued pending approval by a Domain Coordinator').'</h3>';                  $output .= '<h3>'.&mt('Requests for Authoring Space queued pending approval by a Domain Coordinator').'</h3>';
             } elsif ($context eq 'requestusername') {              } elsif ($context eq 'requestusername') {
Line 476  sub display_queued_requests { Line 472  sub display_queued_requests {
         if ($context eq 'pending') {          if ($context eq 'pending') {
             $output .= '<br /><input type="submit" name="validationcheck" value="'.              $output .= '<br /><input type="submit" name="validationcheck" value="'.
                        &mt('Validate').'" /><br />'."\n".                         &mt('Validate').'" /><br />'."\n".
                        '<p>'.&mt('Any course/community requests which are successfully validated will be created immediately.').' '.                         '<p>'.&mt('Any course/community requests which are successfully validated will be created immediately.').' '.&mt('Unvalidated requests will be listed for manual approval/rejection.').'</p>';
                              &mt('Unvalidated requests will be listed for manual approval/rejection.').'</p>';          } else {
         } elsif (($context ne 'helpdesk') && ($context ne 'displaypending')) {  
             $output .= '<br /><input type="submit" name="processqueue" value="'.&mt('Save').'" />';              $output .= '<br /><input type="submit" name="processqueue" value="'.&mt('Save').'" />';
         }          }
         $output .= '</form>';          $output .= '</form>';
Line 486  sub display_queued_requests { Line 481  sub display_queued_requests {
         $output .= '<div class="LC_info">';          $output .= '<div class="LC_info">';
         if ($context eq 'course') {          if ($context eq 'course') {
             $output .= &mt('There are currently no enrollment requests awaiting approval.');              $output .= &mt('There are currently no enrollment requests awaiting approval.');
         } elsif (($context eq 'pending') || ($context eq 'displaypending')) {          } elsif ($context eq 'pending') {
             $output .= &mt('There are currently no requests for official courses awaiting validation.');              $output .= &mt('There are currently no requests for official courses awaiting validation.');
         } elsif ($context eq 'requestauthor') {          } elsif ($context eq 'requestauthor') {
             $output .= &mt('There are currently no requests for Authoring Space awaiting approval.');              $output .= &mt('There are currently no requests for Authoring Space awaiting approval.');
Line 506  sub build_queue_display { Line 501  sub build_queue_display {
     my %crstypes;      my %crstypes;
     my $output =  &Apache::loncommon::start_data_table().      my $output =  &Apache::loncommon::start_data_table().
                   &Apache::loncommon::start_data_table_header_row();                    &Apache::loncommon::start_data_table_header_row();
     unless (($context eq 'pending') || ($context eq 'displaypending') || ($context eq 'helpdesk')) {      unless ($context eq 'pending') { 
         $output .= '<th>'.&mt('Action').'</th>';          $output .= '<th>'.&mt('Action').'</th>';
     }      }
     $output .= '<th>'.&mt('Requestor').'</th>';      $output .= '<th>'.&mt('Requestor').'</th>';
Line 518  sub build_queue_display { Line 513  sub build_queue_display {
     } elsif ($context eq 'requestusername') {      } elsif ($context eq 'requestusername') {
         $output .= '<th>'.&mt('Date requested').'</th>'.          $output .= '<th>'.&mt('Date requested').'</th>'.
                    '<th>'.&mt('Details').'</th>';                     '<th>'.&mt('Details').'</th>';
     } elsif ($context eq 'pending' || $context eq 'displaypending' || $context eq 'stillpending') {      } elsif ($context eq 'pending' || $context eq 'stillpending') {
         $output .= '<th>'.&mt('Institutional code').'</th>'.          $output .= '<th>'.&mt('Institutional code').'</th>'.
                    '<th>'.&mt('Date requested').'</th>'.                     '<th>'.&mt('Date requested').'</th>'.
                    '<th>'.&mt('Details').'</th>';                     '<th>'.&mt('Details').'</th>';
Line 528  sub build_queue_display { Line 523  sub build_queue_display {
                         unofficial => 'Unofficial course',                          unofficial => 'Unofficial course',
                         community  => 'Community',                          community  => 'Community',
                         textbook   => 'Textbook course',                          textbook   => 'Textbook course',
                           placement  => 'Placement test',
                     );                      );
         $output .= '<th>'.&mt('Type').'</th>'.          $output .= '<th>'.&mt('Type').'</th>'.
                    '<th>'.&mt('Date requested').'</th>'.                     '<th>'.&mt('Date requested').'</th>'.
Line 573  sub build_queue_display { Line 569  sub build_queue_display {
                 } else {                  } else {
                     my ($cnum,$ownername,$ownerdom,$type,$cdesc);                      my ($cnum,$ownername,$ownerdom,$type,$cdesc);
                     my $queued = 'approval';                       my $queued = 'approval'; 
                     if ($context eq 'pending' || $context eq 'displaypending' || $context eq 'stillpending') {                      if ($context eq 'pending' || $context eq 'stillpending') {
                         ($cnum,$ownername,$ownerdom,$instcode,$cdesc)=split(/:/,$request,5);                          ($cnum,$ownername,$ownerdom,$instcode,$cdesc)=split(/:/,$request,5);
                         $queued = 'pending';                                                  $queued = 'pending';                        
                     } else {                      } else {
Line 591  sub build_queue_display { Line 587  sub build_queue_display {
                                 &Apache::loncommon::plainname($ownername,$ownerdom),                                  &Apache::loncommon::plainname($ownername,$ownerdom),
                                 $ownername,$ownerdom);                                  $ownername,$ownerdom);
                 }                  }
                 unless (($context eq 'pending') || ($context eq 'displaypending') || ($context eq 'helpdesk')) {                  unless ($context eq 'pending') {
                     $row = '<td><span class="LC_nobreak"><label>'.                      $row = '<td><span class="LC_nobreak"><label>'.
                            '<input type="radio" value="'.$approve.'" name="'.$count.'radioreq" />'.&mt('Approve').'</label>'.                             '<input type="radio" value="'.$approve.'" name="'.$count.'radioreq" />'.&mt('Approve').'</label>'.
                            '<label>'.('&nbsp;'x2).                             '<label>'.('&nbsp;'x2).
Line 609  sub build_queue_display { Line 605  sub build_queue_display {
                 } elsif ($context eq 'requestusername') {                  } elsif ($context eq 'requestusername') {
                     $row .= '<td>'.$showtime.'</td>'."\n".                      $row .= '<td>'.$showtime.'</td>'."\n".
                             '<td>'.$detailslink.'</td>'."\n";                              '<td>'.$detailslink.'</td>'."\n";
                 } else {                  } else { 
                     if ($context eq 'pending' || $context eq 'displaypending' || $context eq 'stillpending') {                      if ($context eq 'pending' || $context eq 'stillpending') {
                         $row .= '<td>'.$instcode.'</td>'."\n";                          $row .= '<td>'.$instcode.'</td>'."\n";
                     } else {                      } else {
                         $row .= '<td>'.$crstype.'</td>'."\n";                          $row .= '<td>'.$crstype.'</td>'."\n";
Line 879  sub update_request_queue { Line 875  sub update_request_queue {
             my $dbname = 'nohist_requestedusernames';              my $dbname = 'nohist_requestedusernames';
             my $domconfiguser = &Apache::lonnet::get_domainconfiguser($cdom);              my $domconfiguser = &Apache::lonnet::get_domainconfiguser($cdom);
             my %curr = &Apache::lonnet::get($dbname,[$uname],$cdom,$domconfiguser);              my %curr = &Apache::lonnet::get($dbname,[$uname],$cdom,$domconfiguser);
               
             if (ref($curr{$uname}) eq 'HASH') {              if (ref($curr{$uname}) eq 'HASH') {
                 my ($logtoken,$serverid,$encpass,$courseid,$id,$firstname,                  my ($username,$logtoken,$serverid,$encpass,$courseid,$id,$firstname,
                     $middlename,$lastname,$generation,$inststatus,$email);                      $middlename,$lastname,$generation,$inststatus);
                 $curr{$uname}{'timestamp'} = $now;                  $curr{$uname}{'timestamp'} = $now;
                 $curr{$uname}{'adjudicator'} = $env{'user.name'}.':'.$env{'user.domain'};                  $curr{$uname}{'adjudicator'} = $env{'user.name'}.':'.$env{'user.domain'};
                 $courseid   = $curr{$uname}{'courseid'};                  $courseid   = $curr{$uname}{'courseid'};
Line 893  sub update_request_queue { Line 889  sub update_request_queue {
                 $generation = $curr{$uname}{'generation'};                  $generation = $curr{$uname}{'generation'};
                 $inststatus = $curr{$uname}{'inststatus'};                  $inststatus = $curr{$uname}{'inststatus'};
   
                 if ($curr{$uname}{'email'} ne '') {                  my ($key,$caller)=split(/&/,$curr{$uname}{'tmpinfo'});
                     $email = $curr{$uname}{'email'};                  if ($caller eq 'createaccount') {
                 } elsif ($uname =~ /^[^\@]+\@[^\@]+$/) {                      my $upass = &Apache::loncommon::des_decrypt($key,$curr{$uname}{'upass'});
                     $email = $uname;  
                 }  
   
                 my $upass;  
                 if ($curr{$uname}{'tmpinfo'}) {  
                     my ($key,$caller)=split(/&/,$curr{$uname}{'tmpinfo'});  
                     if ($caller eq 'createaccount') {  
                         if ($curr{$uname}{'upass'} eq '') {  
                             $upass = $curr{$uname}{'upass'};  
                         } else {  
                             $upass = &Apache::loncommon::des_decrypt($key,$curr{$uname}{'upass'});  
                         }  
                     } else {  
                         push(@processing_errors,$uname);  
                     }  
                 } else {  
                     $upass = $curr{$uname}{'upass'};  
                 }  
                 if ($upass eq '') {  
                     push(@processing_errors,$uname);  
                 } else {  
                     undef($curr{$uname}{'upass'});                      undef($curr{$uname}{'upass'});
                     my $result =                      my $result =
                         &Apache::lonnet::modifyuser($cdom,$uname,$id,'internal',$upass,                          &Apache::lonnet::modifyuser($cdom,$uname,$id,'internal',$upass,
                                                     $firstname,$middlename,$lastname,                                                      $firstname,$middlename,$lastname,
                                                     $generation,undef,undef,$email);                                                      $generation,undef,undef,$uname);
                     if ($result eq 'ok') {                      if ($result eq 'ok') {
                         $curr{$uname}{'status'} = 'created';                          $curr{$uname}{'status'} = 'created';
                         push(@completed,$uname);                           push(@completed,$uname); 
Line 942  sub update_request_queue { Line 917  sub update_request_queue {
                     } else {                      } else {
                         push(@processing_errors,$uname);                          push(@processing_errors,$uname);
                     }                      }
                   } else {
                       push(@processing_errors,$uname);
                 }                  }
             } else {              } else {
                 push(@invalidusers,$uname);                  push(@invalidusers,$uname);
Line 1656  sub course_creation { Line 1633  sub course_creation {
         $owneremail = $emails{$email};          $owneremail = $emails{$email};
         last if ($owneremail ne '');          last if ($owneremail ne '');
     }      }
     my %reqdetails = &build_batchcreatehash($dom,$cnum,$context,$details,$owneremail,$domdefs);      my %reqdetails = &build_batchcreatehash($dom,$context,$details,$owneremail,$domdefs);
     my $cid = &LONCAPA::batchcreatecourse::build_course($dom,$cnum,'requestcourses',      my $cid = &LONCAPA::batchcreatecourse::build_course($dom,$cnum,'requestcourses',
                   \%reqdetails,$longroles,$logmsg,$newusermsg,$addresult,                    \%reqdetails,$longroles,$logmsg,$newusermsg,$addresult,
                   $enrollcount,$output,$keysmsg,$ownerdom,$ownername,$cnum,$crstype,$coderef);                    $enrollcount,$output,$keysmsg,$ownerdom,$ownername,$cnum,$crstype,$coderef);
Line 1677  sub course_creation { Line 1654  sub course_creation {
 }  }
   
 sub build_batchcreatehash {  sub build_batchcreatehash {
     my ($dom,$cnum,$context,$details,$owneremail,$domdefs) = @_;      my ($dom,$context,$details,$owneremail,$domdefs) = @_;
     my %batchhash;      my %batchhash;
     my @items = qw{owner domain coursehome clonecrs clonedom datemode dateshift enrollstart enrollend accessstart accessend sections users uniquecode};      my @items = qw{owner domain coursehome clonecrs clonedom datemode dateshift enrollstart enrollend accessstart accessend sections crosslists users uniquecode};
     if ((ref($details) eq 'HASH') && (ref($domdefs) eq 'HASH')) {      if ((ref($details) eq 'HASH') && (ref($domdefs) eq 'HASH')) {
         my $emailenc = &escape($owneremail);          my $emailenc = &escape($owneremail);
         my $owner = $details->{'owner'}.':'.$details->{'domain'};          my $owner = $details->{'owner'}.':'.$details->{'domain'};
         foreach my $item (@items) {          foreach my $item (@items) {
             $batchhash{$item} = $details->{$item};              $batchhash{$item} = $details->{$item};
         }          }
         if (ref($details->{'crosslists'}) eq 'HASH') {  
             foreach my $key (keys(%{$details->{'crosslists'}})) {  
                 if (ref($details->{'crosslists'}->{$key}) eq 'HASH') {  
                     my $instsec = $details->{crosslists}->{$key}->{instsec};  
                     $batchhash{'crosslists'}{$key}{'inst'} = $details->{crosslists}->{$key}->{instcode};  
                     my $crskey = $cnum.':'.$batchhash{'crosslists'}{$key}{'inst'};  
                     my %formatted = &Apache::lonnet::auto_instsec_reformat($dom,'clutter',  
                                                                            {$crskey => [$instsec]});  
                     if (ref($formatted{$crskey}) eq 'ARRAY') {  
                         $batchhash{'crosslists'}{$key}{'inst'} .= $formatted{$crskey}->[0];  
                     }  
                     $batchhash{'crosslists'}{$key}{'loncapa'} = $details->{crosslists}->{$key}->{loncapa};  
                 }  
             }  
         }  
         $batchhash{'title'} = $details->{'cdescr'};          $batchhash{'title'} = $details->{'cdescr'};
         $batchhash{'coursecode'} = $details->{'instcode'};          $batchhash{'coursecode'} = $details->{'instcode'};
         if ($domdefs->{'officialcredits'} || $domdefs->{'unofficialcredits'}) {          if ($domdefs->{'officialcredits'} || $domdefs->{'unofficialcredits'}) {
Line 1713  sub build_batchcreatehash { Line 1675  sub build_batchcreatehash {
         $batchhash{'authparam'} = $domdefs->{'auth_arg_def'};          $batchhash{'authparam'} = $domdefs->{'auth_arg_def'};
         if ($details->{'crstype'} eq 'community') {          if ($details->{'crstype'} eq 'community') {
             $batchhash{'crstype'} = 'Community';              $batchhash{'crstype'} = 'Community';
           } elsif ($details->{'crstype'} eq 'placement') {
               $batchhash{'crstype'} = 'Placement';
         } else {          } else {
             if ($details->{'crstype'} eq 'textbook') {              if ($details->{'crstype'} eq 'textbook') {
                 if ($details->{'clonecrs'} && $details->{'clonedom'}) {                  if ($details->{'clonecrs'} && $details->{'clonedom'}) {
Line 1758  sub build_batchcreatehash { Line 1722  sub build_batchcreatehash {
         $batchhash{'users'}{$owner}{lastname} = $owner_lastname;          $batchhash{'users'}{$owner}{lastname} = $owner_lastname;
         $batchhash{'users'}{$owner}{emailenc} = $emailenc;          $batchhash{'users'}{$owner}{emailenc} = $emailenc;
         $batchhash{'users'}{$owner}{owneremail} = $owneremail;          $batchhash{'users'}{$owner}{owneremail} = $owneremail;
         $batchhash{'setcomment'} = 1;  
     }      }
     return %batchhash;      return %batchhash;
 }  }

Removed from v.1.52.2.5  
changed lines
  Added in v.1.53


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>