Diff for /loncom/interface/lonmodifycourse.pm between versions 1.79.2.7 and 1.79.2.8

version 1.79.2.7, 2019/07/26 17:43:54 version 1.79.2.8, 2019/08/27 15:34:34
Line 52  sub get_dc_settable { Line 52  sub get_dc_settable {
         if (&showcredits($cdom)) {          if (&showcredits($cdom)) {
             push(@items,'defaultcredits');              push(@items,'defaultcredits');
         }          }
           my %passwdconf = &Apache::lonnet::get_passwdconf($cdom);
           if (($passwdconf{'crsownerchg'}) && ($type ne 'Placement')) {
               push(@items,'nopasswdchg');
           }
         return @items;          return @items;
     }      }
 }  }
Line 97  sub get_enrollment_settings { Line 101  sub get_enrollment_settings {
         @items = map { 'internal.'.$_; } (@{$internals});          @items = map { 'internal.'.$_; } (@{$internals});
         push(@items,@{$accessdates});          push(@items,@{$accessdates});
     }      }
       push(@items,'internal.nopasswdchg');
     my %settings = &Apache::lonnet::get('environment',\@items,$cdom,$cnum);      my %settings = &Apache::lonnet::get('environment',\@items,$cdom,$cnum);
     my %enrollvar;      my %enrollvar;
     $enrollvar{'autharg'} = '';      $enrollvar{'autharg'} = '';
Line 122  sub get_enrollment_settings { Line 127  sub get_enrollment_settings {
             } elsif ($type eq "authtype"              } elsif ($type eq "authtype"
                      || $type eq "autharg"    || $type eq "coursecode"                       || $type eq "autharg"    || $type eq "coursecode"
                      || $type eq "crosslistings" || $type eq "selfenrollmgr"                       || $type eq "crosslistings" || $type eq "selfenrollmgr"
                      || $type eq "autodropfailsafe") {                       || $type eq "autodropfailsafe" || $type eq 'nopasswdchg') {
                 $enrollvar{$type} = $settings{$item};                  $enrollvar{$type} = $settings{$item};
             } elsif ($type eq 'defaultcredits') {              } elsif ($type eq 'defaultcredits') {
                 if (&showcredits($cdom)) {                  if (&showcredits($cdom)) {
Line 1014  sub print_course_modification_page { Line 1019  sub print_course_modification_page {
     my @specific_managebydc = split(/,/,$settings{'internal.selfenrollmgrdc'});      my @specific_managebydc = split(/,/,$settings{'internal.selfenrollmgrdc'});
     my @specific_managebycc = split(/,/,$settings{'internal.selfenrollmgrcc'});      my @specific_managebycc = split(/,/,$settings{'internal.selfenrollmgrcc'});
     my %domdefaults = &Apache::lonnet::get_domain_defaults($cdom);      my %domdefaults = &Apache::lonnet::get_domain_defaults($cdom);
       my %passwdconf = &Apache::lonnet::get_passwdconf($cdom);
     my @default_managebydc = split(/,/,$domdefaults{$type.'selfenrolladmdc'});      my @default_managebydc = split(/,/,$domdefaults{$type.'selfenrolladmdc'});
     if ($crstype eq 'Community') {      if ($crstype eq 'Community') {
         $ccrole = 'co';          $ccrole = 'co';
Line 1088  sub print_course_modification_page { Line 1094  sub print_course_modification_page {
     if ($crstype eq 'Community') {      if ($crstype eq 'Community') {
         $r->print(&Apache::lonhtmlcommon::row_title(          $r->print(&Apache::lonhtmlcommon::row_title(
                   &Apache::loncommon::help_open_topic('Modify_Community_Owner').                    &Apache::loncommon::help_open_topic('Modify_Community_Owner').
                   ' '.&mt('Community Owner'))."\n");                    ' '.&mt('Community Owner'))."\n".
                     $ownertable."\n".&Apache::lonhtmlcommon::row_closure());
     } else {      } else {
         $r->print(&Apache::lonhtmlcommon::row_title(          $r->print(&Apache::lonhtmlcommon::row_title(
                       &Apache::loncommon::help_open_topic('Modify_Course_Instcode').                        &Apache::loncommon::help_open_topic('Modify_Course_Instcode').
Line 1098  sub print_course_modification_page { Line 1105  sub print_course_modification_page {
         if (&showcredits($cdom)) {          if (&showcredits($cdom)) {
             $r->print(&Apache::lonhtmlcommon::row_title(              $r->print(&Apache::lonhtmlcommon::row_title(
                           &Apache::loncommon::help_open_topic('Modify_Course_Credithours').                            &Apache::loncommon::help_open_topic('Modify_Course_Credithours').
                       ' '.&mt('Credits (students)'))."\n".                            ' '.&mt('Credits (students)'))."\n".
                       '<input type="text" size="3" name="defaultcredits" value="'.$enrollvar{'defaultcredits'}.'"'.$disabled.' />'.                        '<input type="text" size="3" name="defaultcredits" value="'.$enrollvar{'defaultcredits'}.'"'.$disabled.' />'.
                       &Apache::lonhtmlcommon::row_closure());                        &Apache::lonhtmlcommon::row_closure());
         }          }
Line 1108  sub print_course_modification_page { Line 1115  sub print_course_modification_page {
                   $authenitems."\n".                    $authenitems."\n".
                   &Apache::lonhtmlcommon::row_closure().                    &Apache::lonhtmlcommon::row_closure().
                   &Apache::lonhtmlcommon::row_title(                    &Apache::lonhtmlcommon::row_title(
                   &Apache::loncommon::help_open_topic('Modify_Course_Owner').                        &Apache::loncommon::help_open_topic('Modify_Course_Owner').
                      '&nbsp;'.&mt('Course Owner'))."\n");                        '&nbsp;'.&mt('Course Owner'))."\n".
                     $ownertable."\n".&Apache::lonhtmlcommon::row_closure());
           if (($passwdconf{'crsownerchg'}) && ($type ne 'Placement')) {
               my $checked;
               if ($enrollvar{'nopasswdchg'}) {
                   $checked = ' checked="checked"';
               }
               $r->print(&Apache::lonhtmlcommon::row_title(
                            &Apache::loncommon::help_open_topic('Modify_Course_Chgpasswd').
                            '&nbsp;'.&mt('Changing passwords (internal)'))."\n".
                            '<label><input type="checkbox" value="1" name="nopasswdchg"'.$checked.$disabled.' />'.
                            &mt('Disable changing password for users with student role by course owner').'<label>'."\n".
                            &Apache::lonhtmlcommon::row_closure());
           }
     }      }
     my ($cctitle,$rolename,$currmanages,$ccchecked,$dcchecked,$defaultchecked);      my ($cctitle,$rolename,$currmanages,$ccchecked,$dcchecked,$defaultchecked);
     my ($selfenrollrows,$selfenrolltitles) = &Apache::lonuserutils::get_selfenroll_titles();      my ($selfenrollrows,$selfenrolltitles) = &Apache::lonuserutils::get_selfenroll_titles();
Line 1119  sub print_course_modification_page { Line 1139  sub print_course_modification_page {
         $cctitle = &mt('Course personnel');          $cctitle = &mt('Course personnel');
     }      }
   
     $r->print($ownertable."\n".&Apache::lonhtmlcommon::row_closure().      $r->print(&Apache::lonhtmlcommon::row_title(
               &Apache::lonhtmlcommon::row_title(  
               &Apache::loncommon::help_open_topic('Modify_Course_Selfenrolladmin').                &Apache::loncommon::help_open_topic('Modify_Course_Selfenrolladmin').
                   '&nbsp;'.&mt('Self-enrollment configuration')).                    '&nbsp;'.&mt('Self-enrollment configuration')).
               &Apache::loncommon::start_data_table()."\n".                &Apache::loncommon::start_data_table()."\n".
Line 1299  sub modify_course { Line 1318  sub modify_course {
         if (&showcredits($cdom)) {            if (&showcredits($cdom)) {  
             push(@items,'internal.defaultcredits');              push(@items,'internal.defaultcredits');
         }          }
           my %passwdconf = &Apache::lonnet::get_passwdconf($cdom);
           if ($passwdconf{'crsownerchg'}) {
               push(@items,'internal.nopasswdchg');
           }
     }      }
     my %settings = &Apache::lonnet::get('environment',\@items,$cdom,$cnum);      my %settings = &Apache::lonnet::get('environment',\@items,$cdom,$cnum);
     my $description = $settings{'description'};      my $description = $settings{'description'};
Line 1314  sub modify_course { Line 1337  sub modify_course {
     } else {      } else {
         %changed = ( code  => 0,          %changed = ( code  => 0,
                      owner => 0,                       owner => 0,
                        passwd => 0,
                    );                     );
         $ccrole = 'cc';          $ccrole = 'cc';
         unless ($settings{'internal.sectionnums'} eq '') {          unless ($settings{'internal.sectionnums'} eq '') {
Line 1366  sub modify_course { Line 1390  sub modify_course {
             $newattr{'mysqltables'} = $env{'form.mysqltables'};              $newattr{'mysqltables'} = $env{'form.mysqltables'};
             $newattr{'mysqltables'} =~ s/\D+//g;              $newattr{'mysqltables'} =~ s/\D+//g;
         }          }
         if (&showcredits($cdom) && exists($env{'form.defaultcredits'})) {          if ($type ne 'Placement') {
             $newattr{'defaultcredits'}=$env{'form.defaultcredits'};              if (&showcredits($cdom) && exists($env{'form.defaultcredits'})) {
             $newattr{'defaultcredits'} =~ s/[^\d\.]//g;                  $newattr{'defaultcredits'}=$env{'form.defaultcredits'};
                   $newattr{'defaultcredits'} =~ s/[^\d\.]//g;
               }
               if (grep(/^nopasswdchg$/,@modifiable_params)) {
                   if ($env{'form.nopasswdchg'}) {
                       $newattr{'nopasswdchg'} = 1;
                       unless ($currattr{'nopasswdchg'}) {
                           $changed{'passwd'} = 1;
                       }
                   } elsif ($currattr{'nopasswdchg'}) {
                       $changed{'passwd'} = 1;
                   }
               }
         }          }
     }      }
   
Line 1403  sub modify_course { Line 1439  sub modify_course {
         }           } 
     }      }
   
     if ($changed{'owner'} || $changed{'code'}) {      if ($changed{'owner'} || $changed{'code'} || $changed{'passwd'}) {
         my %crsinfo = &Apache::lonnet::courseiddump($cdom,'.',1,'.','.',$cnum,          my %crsinfo = &Apache::lonnet::courseiddump($cdom,'.',1,'.','.',$cnum,
                                                     undef,undef,'.');                                                      undef,undef,'.');
         if (ref($crsinfo{$env{'form.pickedcourse'}}) eq 'HASH') {          if (ref($crsinfo{$env{'form.pickedcourse'}}) eq 'HASH') {
Line 1413  sub modify_course { Line 1449  sub modify_course {
             if ($changed{'owner'}) {              if ($changed{'owner'}) {
                 $crsinfo{$env{'form.pickedcourse'}}{'owner'} = $env{'form.courseowner'};                  $crsinfo{$env{'form.pickedcourse'}}{'owner'} = $env{'form.courseowner'};
             }              }
               if ($changed{'passwd'}) {
                   if ($env{'form.nopasswdchg'}) {
                       $crsinfo{$env{'form.pickedcourse'}}{'nopasswdchg'} = 1;
                   } else {
                       delete($crsinfo{'nopasswdchg'});
                   }
               }
             my $chome = &Apache::lonnet::homeserver($cnum,$cdom);              my $chome = &Apache::lonnet::homeserver($cnum,$cdom);
             my $putres = &Apache::lonnet::courseidput($cdom,\%crsinfo,$chome,'notime');              my $putres = &Apache::lonnet::courseidput($cdom,\%crsinfo,$chome,'notime');
             if ($putres eq 'ok') {              if (($putres eq 'ok') && (($changed{'owner'} || $changed{'code'}))) {
                 &update_coowners($cdom,$cnum,$chome,\%settings,\%newattr);                  &update_coowners($cdom,$cnum,$chome,\%settings,\%newattr);
                 if ($changed{'code'}) {                  if ($changed{'code'}) {
                     &Apache::lonnet::devalidate_cache_new('instcats',$cdom);                      &Apache::lonnet::devalidate_cache_new('instcats',$cdom);
Line 1474  sub modify_course { Line 1517  sub modify_course {
                         $shown = &mt('None');                          $shown = &mt('None');
                     } elsif (($attr eq 'mysqltables') && ($shown eq '')) {                      } elsif (($attr eq 'mysqltables') && ($shown eq '')) {
                         $shown = &mt('domain default');                          $shown = &mt('domain default');
                       } elsif ($attr eq 'nopasswdchg') {
                           if ($shown) {
                               $shown = &mt('Yes');
                           } else {
                               $shown = &mt('No');
                           }
                     }                      }
                     $chgresponse .= '<li>'.&mt('[_1] now set to: [_2]',$longtype{$attr},$shown).'</li>';                      $chgresponse .= '<li>'.&mt('[_1] now set to: [_2]',$longtype{$attr},$shown).'</li>';
                 } else {                  } else {
Line 1486  sub modify_course { Line 1535  sub modify_course {
                         $shown = &mt('None');                          $shown = &mt('None');
                     } elsif (($attr eq 'mysqltables') && ($shown eq '')) {                      } elsif (($attr eq 'mysqltables') && ($shown eq '')) {
                         $shown = &mt('domain default');                          $shown = &mt('domain default');
                       } elsif ($attr eq 'nopasswdchg') {
                           if ($shown) {
                               $shown = &mt('Yes');
                           } else {
                               $shown = &mt('No');
                           }
                     }                      }
                     $nochgresponse .= '<li>'.&mt('[_1] still set to: [_2]',$longtype{$attr},$shown).'</li>';                      $nochgresponse .= '<li>'.&mt('[_1] still set to: [_2]',$longtype{$attr},$shown).'</li>';
                 }                  }
Line 2400  sub course_settings_descrip { Line 2455  sub course_settings_descrip {
                       'selfenrollmgrdc'  => "Course-specific self-enrollment configuration by Domain Coordinator",                        'selfenrollmgrdc'  => "Course-specific self-enrollment configuration by Domain Coordinator",
                       'selfenrollmgrcc'  => "Course-specific self-enrollment configuration by Course personnel",                        'selfenrollmgrcc'  => "Course-specific self-enrollment configuration by Course personnel",
                       'mysqltables'      => '"Temporary" student performance tables lifetime (seconds)',                        'mysqltables'      => '"Temporary" student performance tables lifetime (seconds)',
                         'nopasswdchg' => 'Disable changing password for users with student role by course owner',
          );           );
     }      }
     return %longtype;      return %longtype;
Line 2412  sub hidden_form_elements { Line 2468  sub hidden_form_elements {
           'locarg','krbarg','krbver','counter','hidefromcat','usecategory',            'locarg','krbarg','krbver','counter','hidefromcat','usecategory',
           'threshold','postsubmit','postsubtimeout','defaultcredits','uploadquota',            'threshold','postsubmit','postsubtimeout','defaultcredits','uploadquota',
           'selfenrollmgrdc','selfenrollmgrcc','action','state','currsec_st',            'selfenrollmgrdc','selfenrollmgrcc','action','state','currsec_st',
           'sections','newsec','mysqltables'],['^selfenrollmgr_','^selfenroll_'])."\n".            'sections','newsec','mysqltables','nopasswdchg'],
             ['^selfenrollmgr_','^selfenroll_'])."\n".
           '<input type="hidden" name="prevphase" value="'.$env{'form.phase'}.'" />';            '<input type="hidden" name="prevphase" value="'.$env{'form.phase'}.'" />';
     return $hidden_elements;      return $hidden_elements;
 }  }
Line 2428  sub showcredits { Line 2485  sub showcredits {
 sub get_permission {  sub get_permission {
     my ($dom) = @_;      my ($dom) = @_;
     my ($allowed,%permission);      my ($allowed,%permission);
       my %passwdconf = &Apache::lonnet::get_passwdconf($dom);
     if (&Apache::lonnet::allowed('ccc',$dom)) {      if (&Apache::lonnet::allowed('ccc',$dom)) {
         $allowed = 1;          $allowed = 1;
         %permission = (          %permission = (
Line 2445  sub get_permission { Line 2503  sub get_permission {
             selfenroll        => 'edit',              selfenroll        => 'edit',
             adhocrole         => 'coord',              adhocrole         => 'coord',
         );          );
           if ($passwdconf{'crsownerchg'}) {
               $permission{passwdchg} = 'edit';
           }
     } elsif (&Apache::lonnet::allowed('rar',$dom)) {      } elsif (&Apache::lonnet::allowed('rar',$dom)) {
         $allowed = 1;          $allowed = 1;
         %permission = (          %permission = (
Line 2457  sub get_permission { Line 2518  sub get_permission {
             selfenroll    => 'view',              selfenroll    => 'view',
             adhocrole     => 'custom',              adhocrole     => 'custom',
         );          );
           if ($passwdconf{'crsownerchg'}) {
               $permission{passwdchg} = 'view';
           }
     }      }
     return ($allowed,\%permission);      return ($allowed,\%permission);
 }  }

Removed from v.1.79.2.7  
changed lines
  Added in v.1.79.2.8


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