Diff for /loncom/interface/lonmodifycourse.pm between versions 1.71 and 1.72

version 1.71, 2014/03/31 01:37:28 version 1.72, 2014/03/31 02:31:05
Line 34  use Apache::loncommon; Line 34  use Apache::loncommon;
 use Apache::lonhtmlcommon;  use Apache::lonhtmlcommon;
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::lonuserutils;  use Apache::lonuserutils;
   use Apache::loncreateuser;
 use Apache::lonpickcourse;  use Apache::lonpickcourse;
 use lib '/home/httpd/lib/perl';  use lib '/home/httpd/lib/perl';
 use LONCAPA;  use LONCAPA qw(:DEFAULT :match);
   
 sub get_dc_settable {  sub get_dc_settable {
     my ($type,$cdom) = @_;      my ($type,$cdom) = @_;
     if ($type eq 'Community') {      if ($type eq 'Community') {
         return ('courseowner');          return ('courseowner','selfenrollmgrdc','selfenrollmgrcc');
     } else {      } else {
         my @items = ('courseowner','coursecode','authtype','autharg');          my @items = ('courseowner','coursecode','authtype','autharg','selfenrollmgrdc','selfenrollmgrcc');
         if (&showcredits($cdom)) {          if (&showcredits($cdom)) {
             push(@items,'defaultcredits');              push(@items,'defaultcredits');
         }          }
Line 122  sub get_enrollment_settings { Line 123  sub get_enrollment_settings {
                 if (&showcredits($cdom)) {                  if (&showcredits($cdom)) {
                     $enrollvar{$type} = $settings{$item};                      $enrollvar{$type} = $settings{$item};
                 }                  }
               } elsif ($type eq 'selfenrollmgr') {
                   $enrollvar{$type} = $settings{$item};    
             } elsif ($type eq 'courseowner') {              } elsif ($type eq 'courseowner') {
                 if ($settings{$item} =~ /^[^:]+:[^:]+$/) {                  if ($settings{$item} =~ /^[^:]+:[^:]+$/) {
                     $enrollvar{$type} = $settings{$item};                      $enrollvar{$type} = $settings{$item};
Line 252  sub print_modification_menu { Line 255  sub print_modification_menu {
         $setquota_text = &mt('Total disk space allocated for storage of portfolio files in all groups in a course.');          $setquota_text = &mt('Total disk space allocated for storage of portfolio files in all groups in a course.');
         $setuploadquota_text = &mt('Disk space allocated for storage of content uploaded directly to a course via Content Editor.');          $setuploadquota_text = &mt('Disk space allocated for storage of content uploaded directly to a course via Content Editor.');
         if (&showcredits($dom)) {          if (&showcredits($dom)) {
             $setparams_text = 'View/Modify course owner, institutional code, and default authentication and credits';              $setparams_text = 'View/Modify course owner, institutional code, default authentication, credits, and self-enrollment';
         } else {          } else {
             $setparams_text = 'View/Modify course owner, institutional code, and default authentication';              $setparams_text = 'View/Modify course owner, institutional code, default authentication, and self-enrollment';
         }          }
         $cat_text = 'View/Modify catalog settings for course';          $cat_text = 'View/Modify catalog settings for course';
     }      }
Line 263  sub print_modification_menu { Line 266  sub print_modification_menu {
     my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$dom);      my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$dom);
     my @additional_params = &catalog_settable($domconf{'coursecategories'},$type);      my @additional_params = &catalog_settable($domconf{'coursecategories'},$type);
   
       sub manage_selfenrollment {
           my ($cdom,$cnum,$type,$coursehash) = @_;
           my ($managed_by_cc,$managed_by_dc) = &Apache::lonuserutils::selfenrollment_administration($cdom,$cnum,$type,$coursehash);
           if (ref($managed_by_dc) eq 'ARRAY') {
               if (@{$managed_by_dc}) {
                   return 1;
               } 
           }
           return 0;
       }
   
     sub phaseurl {      sub phaseurl {
         my $phase = shift;          my $phase = shift;
         return "javascript:changePage(document.menu,'$phase')"          return "javascript:changePage(document.menu,'$phase')"
Line 310  sub print_modification_menu { Line 324  sub print_modification_menu {
                 icon => 'roles.png',                  icon => 'roles.png',
                 linktitle => ''                  linktitle => ''
             },              },
               {
                   linktext => 'View/Modify Self-Enrollment configuration',
                   icon => 'self_enroll.png',
                   #help => 'Course_Self_Enrollment',
                   url => &phaseurl('selfenroll'),
                   permission => &manage_selfenrollment($cdom,$cnum,$type,$coursehash),
                   linktitle => 'Configure user self-enrollment.',
               },
         ]          ]
         },          },
         );          );
Line 326  sub print_modification_menu { Line 348  sub print_modification_menu {
     }      }
     $menu_html .= '</p>'."\n".'<ul>';      $menu_html .= '</p>'."\n".'<ul>';
     if ($type eq 'Community') {      if ($type eq 'Community') {
         $menu_html .= '<li>'.&mt('Community owner (permitted to assign Coordinator roles in the community).').'</li>';          $menu_html .= '<li>'.&mt('Community owner (permitted to assign Coordinator roles in the community).').'</li>'."\n".
                         '<li>'.&mt('Override defaults for who configures self-enrollment for this specific community').'</li>'."\n";
     } else {      } else {
         $menu_html .=  '<li>'.&mt('Course owner (permitted to assign Course Coordinator roles in the course).').'</li>'.          $menu_html .=  '<li>'.&mt('Course owner (permitted to assign Course Coordinator roles in the course).').'</li>'."\n".
                        '<li>'.&mt("Institutional code and default authentication (both required for auto-enrollment of students from institutional datafeeds).").'</li>';                         '<li>'.&mt("Institutional code and default authentication (both required for auto-enrollment of students from institutional datafeeds).").'</li>'."\n";
         if (&showcredits($dom)) {          if (&showcredits($dom)) {
             $menu_html .= '<li>'.&mt('Default credits earned by student on course completion.').'</li>';              $menu_html .= '<li>'.&mt('Default credits earned by student on course completion.').'</li>'."\n";
         }          }
           $menu_html .= ' <li>'.&mt('Override defaults for who configures self-enrollment for this specific course.').'</li>'."\n";
     }      }
     $menu_html .= '<li>'.$setquota_text.'</li>'.      $menu_html .= '<li>'.$setquota_text.'</li>'."\n".
                   '<li>'.$setuploadquota_text.'</li>'.                    '<li>'.$setuploadquota_text.'</li>'."\n".
                   '<li>'.$anon_text.'</li>'."\n";                    '<li>'.$anon_text.'</li>'."\n";
     foreach my $item (@additional_params) {      foreach my $item (@additional_params) {
         if ($type eq 'Community') {          if ($type eq 'Community') {
Line 425  sub print_settings_display { Line 449  sub print_settings_display {
               '<p>'.$lt{'cose'}.'<ul>'.                '<p>'.$lt{'cose'}.'<ul>'.
               '<li>'.&mt('Settings modifiable by a [_1] via the [_2]Automated Enrollment Manager[_3] in a course.',$cctitle,'<a href="'.$escuri.'">','</a>').'</li>');                '<li>'.&mt('Settings modifiable by a [_1] via the [_2]Automated Enrollment Manager[_3] in a course.',$cctitle,'<a href="'.$escuri.'">','</a>').'</li>');
     if (&showcredits($cdom)) {      if (&showcredits($cdom)) {
         $r->print('<li>'.&mt('Settings modifiable by a [_1] via [_2]View/Modify course owner, institutional code, and default authentication and credits[_3].',$dctitle,'<a href="javascript:changePage(document.viewparms,'."'setparms'".');">','</a>')."\n");          $r->print('<li>'.&mt('Settings modifiable by a [_1] via [_2]View/Modify course owner, institutional code, default authentication, credits, and self-enrollment[_3].',$dctitle,'<a href="javascript:changePage(document.viewparms,'."'setparms'".');">','</a>')."\n");
     } else {      } else {
         $r->print('<li>'.&mt('Settings modifiable by a [_1] via [_2]View/Modify course owner, institutional code, and default authentication[_3].',$dctitle,'<a href="javascript:changePage(document.viewparms,'."'setparms'".');">','</a>')."\n");          $r->print('<li>'.&mt('Settings modifiable by a [_1] via [_2]View/Modify course owner, institutional code, default authentication, and self-enrollment[_3].',$dctitle,'<a href="javascript:changePage(document.viewparms,'."'setparms'".');">','</a>')."\n");
     }      }
     $r->print('</li></ul></p>'.      $r->print('</li></ul></p>'.
               '<p>'.$lt{'cour'}.'</p><p>'.$disp_table.'</p><p>'.                '<p>'.$lt{'cour'}.'</p><p>'.$disp_table.'</p><p>'.
Line 461  sub print_setquota { Line 485  sub print_setquota {
     }      }
     if ($uploadquota eq '') {      if ($uploadquota eq '') {
         my %domdefs = &Apache::lonnet::get_domain_defaults($cdom);          my %domdefs = &Apache::lonnet::get_domain_defaults($cdom);
         if ($type eq 'Community') {          my $quotatype = &Apache::lonuserutils::get_extended_type($cdom,$cnum,$type,\%settings);
             $uploadquota = $domdefs{$lctype.'quota'};          $uploadquota = $domdefs{$quotatype.'quota'};
         } elsif ($settings{'internal.coursecode'}) {  
             $uploadquota = $domdefs{'officialquota'};  
         } elsif ($settings{'internal.textbook'}) {  
             $uploadquota = $domdefs{'textbookquota'};  
         } else {  
             $uploadquota = $domdefs{'unofficialquota'};  
         }  
         if ($uploadquota eq '') {          if ($uploadquota eq '') {
             $uploadquota = $staticdefaults{'uploadquota'};              $uploadquota = $staticdefaults{'uploadquota'};
         }          }
Line 617  sub print_catsettings { Line 634  sub print_catsettings {
 }  }
   
 sub print_course_modification_page {  sub print_course_modification_page {
     my ($r,$cdom,$cnum,$cdesc,$type) = @_;      my ($r,$cdom,$cnum,$cdesc,$crstype) = @_;
     my %lt=&Apache::lonlocal::texthash(      my %lt=&Apache::lonlocal::texthash(
             'actv' => "Active",              'actv' => "Active",
             'inac' => "Inactive",              'inac' => "Inactive",
Line 627  sub print_course_modification_page { Line 644  sub print_course_modification_page {
             'stus' => "Status",              'stus' => "Status",
             'nocc' => 'There is currently no owner set for this course.',              'nocc' => 'There is currently no owner set for this course.',
             'gobt' => "Save",              'gobt' => "Save",
               'sett' => 'Setting',
               'domd' => 'Domain default',
               'whom' => 'Who configures',  
     );      );
     my ($ownertable,$ccrole,$javascript_validations,$authenitems,$ccname);      my ($ownertable,$ccrole,$javascript_validations,$authenitems,$ccname);
     my %enrollvar = &get_enrollment_settings($cdom,$cnum);      my %enrollvar = &get_enrollment_settings($cdom,$cnum);
     if ($type eq 'Community') {      my %settings = &Apache::lonnet::get('environment',['internal.coursecode','internal.textbook',
                                                          'internal.selfenrollmgrdc','internal.selfenrollmgrcc'],
                                           $cdom,$cnum);
       my $type = &Apache::lonuserutils::get_extended_type($cdom,$cnum,$crstype,\%settings);
       my @specific_managebydc = split(/,/,$settings{'internal.selfenrollmgrdc'});
       my @specific_managebycc = split(/,/,$settings{'internal.selfenrollmgrcc'});
       my %domdefaults = &Apache::lonnet::get_domain_defaults($cdom);
       my @default_managebydc = split(/,/,$domdefaults{$type.'selfenrolladmdc'});
       if ($crstype eq 'Community') {
         $ccrole = 'co';          $ccrole = 'co';
         $lt{'nocc'} = &mt('There is currently no owner set for this community.');          $lt{'nocc'} = &mt('There is currently no owner set for this community.');
     } else {      } else {
         $ccrole ='cc';          $ccrole ='cc';
         ($javascript_validations,$authenitems) = &gather_authenitems($cdom,\%enrollvar);          ($javascript_validations,$authenitems) = &gather_authenitems($cdom,\%enrollvar);
     }      }
     $ccname = &Apache::lonnet::plaintext($ccrole,$type);      $ccname = &Apache::lonnet::plaintext($ccrole,$crstype);
     my %roleshash = &Apache::lonnet::get_my_roles($cnum,$cdom,'','',[$ccrole]);      my %roleshash = &Apache::lonnet::get_my_roles($cnum,$cdom,'','',[$ccrole]);
     my (@local_ccs,%cc_status,%pname);      my (@local_ccs,%cc_status,%pname);
     foreach my $item (keys(%roleshash)) {      foreach my $item (keys(%roleshash)) {
Line 690  sub print_course_modification_page { Line 718  sub print_course_modification_page {
         }          }
         $ownertable .= &Apache::loncommon::end_data_table();          $ownertable .= &Apache::loncommon::end_data_table();
     }      }
     &print_header($r,$type,$javascript_validations);      &print_header($r,$crstype,$javascript_validations);
     my $dctitle = &Apache::lonnet::plaintext('dc');      my $dctitle = &Apache::lonnet::plaintext('dc');
     my $mainheader = &modifiable_only_title($type);      my $mainheader = &modifiable_only_title($crstype);
     my $hidden_elements = &hidden_form_elements();      my $hidden_elements = &hidden_form_elements();
     $r->print('<form action="/adm/modifycourse" method="post" name="'.$env{'form.phase'}.'">'."\n".      $r->print('<form action="/adm/modifycourse" method="post" name="'.$env{'form.phase'}.'">'."\n".
               '<h3>'.$mainheader.' <span class="LC_nobreak">'.$cdesc.'</span></h3><p>'.                '<h3>'.$mainheader.' <span class="LC_nobreak">'.$cdesc.'</span></h3><p>'.
               &Apache::lonhtmlcommon::start_pick_box());                &Apache::lonhtmlcommon::start_pick_box());
     if ($type 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').
                   '&nbsp;'.&mt('Community Owner'))."\n");                    '&nbsp;'.&mt('Community Owner'))."\n");
Line 705  sub print_course_modification_page { Line 733  sub print_course_modification_page {
         $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').
                       '&nbsp;'.&mt('Course Code'))."\n".                        '&nbsp;'.&mt('Course Code'))."\n".
                   '<input type="text" size="10" name="coursecode" value="'.$enrollvar{'coursecode'}.'" />'.                    '<input type="text" size="15" name="coursecode" value="'.$enrollvar{'coursecode'}.'" />'.
                   &Apache::lonhtmlcommon::row_closure());                    &Apache::lonhtmlcommon::row_closure());
         if (&showcredits($cdom)) {          if (&showcredits($cdom)) {
             $r->print(&Apache::lonhtmlcommon::row_title(              $r->print(&Apache::lonhtmlcommon::row_title(
Line 723  sub print_course_modification_page { Line 751  sub print_course_modification_page {
                    &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");
     }      }
     $r->print($ownertable."\n".&Apache::lonhtmlcommon::row_closure(1).      my ($cctitle,$rolename,$currmanages,$ccchecked,$dcchecked,$defaultchecked);
       my ($selfenrollrows,$selfenrolltitles) = &Apache::lonuserutils::get_selfenroll_titles();
       if ($type eq 'Community') {
           $cctitle = &mt('Community personnel');
       } else {
           $cctitle = &mt('Course personnel');
       }
   
       $r->print($ownertable."\n".&Apache::lonhtmlcommon::row_closure().
                 &Apache::lonhtmlcommon::row_title(
                 &Apache::loncommon::help_open_topic('Modify_Course_Selfenrolladmin').
                     '&nbsp;'.&mt('Self-enrollment configuration')).
                 &Apache::loncommon::start_data_table()."\n".
                 &Apache::loncommon::start_data_table_header_row()."\n".
                 '<th>'.$lt{'sett'}.'</th>'.
                 '<th>'.$lt{'domd'}.'</th>'.
                 '<th>'.$lt{'whom'}.'</th>'.
                 &Apache::loncommon::end_data_table_header_row()."\n");
       my %optionname;
       $optionname{''} = &mt('Use domain default'); 
       $optionname{'0'} = $dctitle;
       $optionname{'1'} = $cctitle;
       foreach my $item (@{$selfenrollrows}) {
           my %checked;
           my $default = $cctitle;
           if (grep(/^\Q$item\E$/,@default_managebydc)) {
               $default = $dctitle;
           }
           if (grep(/^\Q$item\E$/,@specific_managebydc)) {
               $checked{'0'} = ' checked="checked"';
           } elsif (grep(/^\Q$item\E$/,@specific_managebycc)) {
               $checked{'1'} = ' checked="checked"';
           } else {
               $checked{''} = ' checked="checked"';
           } 
           $r->print(&Apache::loncommon::start_data_table_row()."\n".
                    '<td>'.$selfenrolltitles->{$item}.'</td>'."\n".
                    '<td>'.&mt('[_1] configures',$default).'</td>'."\n".
                    '<td>');
           foreach my $option ('','0','1') {  
               $r->print('<span class="LC_nobreak"><label>'.
                         '<input type="radio" name="selfenrollmgr_'.$item.'" '.
                         'value="'.$option.'"'.$checked{$option}.' />'.
                         $optionname{$option}.'</label></span><br />');
           }
           $r->print('</td>'."\n".
                     &Apache::loncommon::end_data_table_row()."\n");
       }
       $r->print(&Apache::loncommon::end_data_table()."\n".
                 '<br />'.&Apache::lonhtmlcommon::row_closure(1).
               &Apache::lonhtmlcommon::end_pick_box().'</p><p>'.$hidden_elements.                &Apache::lonhtmlcommon::end_pick_box().'</p><p>'.$hidden_elements.
               '<input type="button" onclick="javascript:changePage(this.form,'."'processparms'".');');                '<input type="button" onclick="javascript:changePage(this.form,'."'processparms'".');');
     if ($type eq 'Community') {      if ($crstype eq 'Community') {
         $r->print('this.form.submit();"');          $r->print('this.form.submit();"');
     } else {      } else {
         $r->print('javascript:verify_message(this.form);"');          $r->print('javascript:verify_message(this.form);"');
Line 735  sub print_course_modification_page { Line 812  sub print_course_modification_page {
     return;      return;
 }  }
   
   sub print_selfenrollconfig {
       my ($r,$type,$cdesc,$coursehash) = @_;
       return unless(ref($coursehash) eq 'HASH');
       my $cnum = $coursehash->{'num'};
       my $cdom = $coursehash->{'domain'};
       my %currsettings = &get_selfenroll_settings($coursehash);
       &print_header($r,$type);
       $r->print('<h3>'.&mt('Self-enrollment with a student role in: [_1]',
                 '<span class="LC_nobreak">'.$cdesc.'</span>').'</h3>'."\n");
       &Apache::loncreateuser::print_selfenroll_menu($r,'domain',$env{'form.pickedcourse'},
                                                     $cdom,$cnum,\%currsettings,
                                                     &hidden_form_elements());
       return;
   }
   
   sub modify_selfenrollconfig {
       my ($r,$type,$cdesc,$coursehash) = @_;
       return unless(ref($coursehash) eq 'HASH');
       my $cnum = $coursehash->{'num'};
       my $cdom = $coursehash->{'domain'};
       my %currsettings = &get_selfenroll_settings($coursehash);
       &print_header($r,$type);
       $r->print('<h3>'.&mt('Self-enrollment with a student role in: [_1]',
                '<span class="LC_nobreak">'.$cdesc.'</span>').'</h3>'."\n");
       $r->print('<form action="/adm/modifycourse" method="post" name="selfenroll">'."\n".
                 &hidden_form_elements().'<br />');
       &Apache::loncreateuser::update_selfenroll_config($r,$env{'form.pickedcourse'},
                                                        $cdom,$cnum,\%currsettings);
       $r->print('</form>');
       return;
   }
   
   sub get_selfenroll_settings {
       my ($coursehash) = @_;
       my %currsettings;
       if (ref($coursehash) eq 'HASH') {
           %currsettings = (
               selfenroll_types              => $coursehash->{'internal.selfenroll_types'},
               selfenroll_registered         => $coursehash->{'internal.selfenroll_registered'},
               selfenroll_section            => $coursehash->{'internal.selfenroll_section'},
               selfenroll_notifylist         => $coursehash->{'internal.selfenroll_notifylist'},
               selfenroll_approval           => $coursehash->{'internal.selfenroll_approval'},
               selfenroll_limit              => $coursehash->{'internal.selfenroll_limit'},
               selfenroll_cap                => $coursehash->{'internal.selfenroll_cap'},
               selfenroll_start_date         => $coursehash->{'internal.selfenroll_start_date'},
               selfenroll_end_date           => $coursehash->{'internal.selfenroll_end_date'},
               selfenroll_start_access       => $coursehash->{'internal.selfenroll_start_access'},
               selfenroll_end_access         => $coursehash->{'internal.selfenroll_end_access'},
               default_enrollment_start_date => $coursehash->{'default_enrollment_start_date'},
               default_enrollment_end_date   => $coursehash->{'default_enrollment_end_date'},
           );
       }
       return %currsettings;
   }
   
 sub modifiable_only_title {  sub modifiable_only_title {
     my ($type) = @_;      my ($type) = @_;
     my $dctitle = &Apache::lonnet::plaintext('dc');      my $dctitle = &Apache::lonnet::plaintext('dc');
Line 788  sub modify_course { Line 920  sub modify_course {
     my ($r,$cdom,$cnum,$cdesc,$domdesc,$type) = @_;      my ($r,$cdom,$cnum,$cdesc,$domdesc,$type) = @_;
     my %longtype = &course_settings_descrip($type);      my %longtype = &course_settings_descrip($type);
     my @items = ('internal.courseowner','description','internal.co-owners',      my @items = ('internal.courseowner','description','internal.co-owners',
                  'internal.pendingco-owners');                   'internal.pendingco-owners','internal.selfenrollmgrdc',
                    'internal.selfenrollmgrcc');
       my ($selfenrollrows,$selfenrolltitles) = &Apache::lonuserutils::get_selfenroll_titles();
     unless ($type eq 'Community') {      unless ($type eq 'Community') {
         push(@items,('internal.coursecode','internal.authtype','internal.autharg',          push(@items,('internal.coursecode','internal.authtype','internal.autharg',
                      'internal.sectionnums','internal.crosslistings'));                       'internal.sectionnums','internal.crosslistings'));
Line 863  sub modify_course { Line 997  sub modify_course {
             $newattr{'defaultcredits'} =~ s/[^\d\.]//g;              $newattr{'defaultcredits'} =~ s/[^\d\.]//g;
             $newattr{'defaultcredits'}=$env{'form.defaultcredits'};              $newattr{'defaultcredits'}=$env{'form.defaultcredits'};
         }          }
       }
   
       my @newmgrdc = ();
       my @newmgrcc = ();
       my @currmgrdc = split(/,/,$currattr{'selfenrollmgrdc'});
       my @currmgrcc = split(/,/,$currattr{'selfenrollmgrcc'});
   
       foreach my $item (@{$selfenrollrows}) {
           if ($env{'form.selfenrollmgr_'.$item} eq '0') {
               push(@newmgrdc,$item);
           } elsif ($env{'form.selfenrollmgr_'.$item} eq '1') {
               push(@newmgrcc,$item);
           }
       }
   
       $newattr{'selfenrollmgrdc'}=join(',',@newmgrdc);
       $newattr{'selfenrollmgrcc'}=join(',',@newmgrcc);
   
       my $cctitle;
       if ($type eq 'Community') {
           $cctitle = &mt('Community personnel');
       } else {
           $cctitle = &mt('Course personnel');
     }      }
       my $dctitle = &Apache::lonnet::plaintext('dc');
   
     if ( exists($env{'form.courseowner'}) ) {      if ( exists($env{'form.courseowner'}) ) {
         $newattr{'courseowner'}=$env{'form.courseowner'};          $newattr{'courseowner'}=$env{'form.courseowner'};
Line 916  sub modify_course { Line 1073  sub modify_course {
             }              }
             $response .= '<br/>'.&mt('Error: ').$putreply.'</p>';              $response .= '<br/>'.&mt('Error: ').$putreply.'</p>';
         } else {          } else {
               if ($env{'course.'.$cdom.'_'.$cnum.'.description'} ne '') {
                   my %newenv;
                   map { $newenv{'course.'.$cdom.'_'.$cnum.'.internal.'.$_} = $newattr{$_}; } @changes;   
                   &Apache::lonnet::appenv(\%newenv);
               }
             foreach my $attr (@modifiable_params) {              foreach my $attr (@modifiable_params) {
                 if (grep/^\Q$attr\E$/,@changes) {                  if (grep/^\Q$attr\E$/,@changes) {
             $chgresponse .= '<li>'.$longtype{$attr}.' '.&mt('now set to:').' "'.$newattr{$attr}.'".</li>';                      my $shown = $newattr{$attr};
                       if ($attr eq 'selfenrollmgrdc') {
                           $shown = &selfenroll_config_status(\@newmgrdc,$selfenrolltitles);
                       } elsif ($attr eq 'selfenrollmgrcc') {
                           $shown = &selfenroll_config_status(\@newmgrcc,$selfenrolltitles);
                       } elsif (($attr eq 'defaultcredits') && ($shown eq '')) {
                           $shown = &mt('None');
                       }
                       $chgresponse .= '<li>'.&mt('[_1] now set to: [_2]',$longtype{$attr},$shown).'</li>';
                 } else {                  } else {
             $nochgresponse .= '<li>'.$longtype{$attr}.' '.&mt('still set to:').' "'.$currattr{$attr}.'".</li>';                      my $shown = $currattr{$attr};
                       if ($attr eq 'selfenrollmgrdc') {
                           $shown = &selfenroll_config_status(\@currmgrdc,$selfenrolltitles);
                       } elsif ($attr eq 'selfenrollmgrcc') {
                           $shown = &selfenroll_config_status(\@currmgrcc,$selfenrolltitles);
                       } elsif (($attr eq 'defaultcredits') && ($shown eq '')) {
                           $shown = &mt('None');
                       }
                       $nochgresponse .= '<li>'.&mt('[_1] still set to: [_2]',$longtype{$attr},$shown).'</li>';
                 }                  }
             }              }
             if (($type ne 'Community') && ($changed{'code'} || $changed{'owner'})) {              if (($type ne 'Community') && ($changed{'code'} || $changed{'owner'})) {
Line 983  sub modify_course { Line 1161  sub modify_course {
         }          }
     } else {      } else {
         foreach my $attr (@modifiable_params) {          foreach my $attr (@modifiable_params) {
             $nochgresponse .= '<li>'.$longtype{$attr}.' '.&mt('still set to').' "'.$currattr{$attr}.'".</li>';              my $shown = $currattr{$attr};
               if ($attr eq 'selfenrollmgrdc') {
                   $shown = &selfenroll_config_status(\@currmgrdc,$selfenrolltitles);
               } elsif ($attr eq 'selfenrollmgrcc') {
                   $shown = &selfenroll_config_status(\@currmgrcc,$selfenrolltitles);
               } elsif (($attr eq 'defaultcredits') && ($shown eq '')) {
                   $shown = &mt('None');
               }
               $nochgresponse .= '<li>'.&mt('[_1] still set to: [_2]',$longtype{$attr},$shown).'</li>';
         }          }
     }      }
   
Line 1029  sub modify_course { Line 1215  sub modify_course {
     return;      return;
 }  }
   
   sub selfenroll_config_status {
       my ($items,$selfenrolltitles) = @_;
       my $shown;
       if ((ref($items) eq 'ARRAY') && (ref($selfenrolltitles) eq 'HASH')) {
           if (@{$items} > 0) {
               $shown = '<ul>';
               foreach my $item (@{$items}) {
                   $shown .= '<li>'.$selfenrolltitles->{$item}.'</li>';
               }
               $shown .= '</ul>';
           } else {
               $shown = &mt('None');
           }
       }
       return $shown;
   }
   
 sub update_coowners {  sub update_coowners {
     my ($cdom,$cnum,$chome,$settings,$newattr) = @_;      my ($cdom,$cnum,$chome,$settings,$newattr) = @_;
     return unless ((ref($settings) eq 'HASH') && (ref($newattr) eq 'HASH'));      return unless ((ref($settings) eq 'HASH') && (ref($newattr) eq 'HASH'));
Line 1314  sub modify_anonsurvey_threshold { Line 1517  sub modify_anonsurvey_threshold {
                            );                             );
                 my $putreply = &Apache::lonnet::put('environment',\%cenv,$cdom,                  my $putreply = &Apache::lonnet::put('environment',\%cenv,$cdom,
                                                     $cnum);                                                      $cnum);
                   if ($putreply eq 'ok') {
                       if ($env{'course.'.$cdom.'_'.$cnum.'.description'} ne '') {
                           &Apache::lonnet::appenv(
                              {'course.'.$cdom.'_'.$cnum.'.internal.anonsurvey_threshold' => $env{'form.threshold'}});
                       }
                   }
                 if (($oldsettings{'internal.anonsurvey_threshold'} eq '') &&                  if (($oldsettings{'internal.anonsurvey_threshold'} eq '') &&
                     ($env{'form.threshold'} == $defaultthreshold)) {                      ($env{'form.threshold'} == $defaultthreshold)) {
                     $r->print(&mt('The responder threshold for display of anonymous survey submissions is the default for this domain: [_1].',$defaultthreshold));                      $r->print(&mt('The responder threshold for display of anonymous survey submissions is the default for this domain: [_1].',$defaultthreshold));
Line 1424  sub modify_catsettings { Line 1633  sub modify_catsettings {
             if (@changes > 0) {              if (@changes > 0) {
                 my $putreply = &Apache::lonnet::put('environment',\%cenv,$cdom,$cnum);                  my $putreply = &Apache::lonnet::put('environment',\%cenv,$cdom,$cnum);
                 if ($putreply eq 'ok') {                  if ($putreply eq 'ok') {
                       if ($env{'course.'.$cdom.'_'.$cnum.'.description'} ne '') {
                           my %newenvhash;
                           foreach my $item (@changes) {
                               $newenvhash{'course.'.$cdom.'_'.$cnum.'.'.$item} = $cenv{$item};
                           }
                           &Apache::lonnet::appenv(\%newenvhash);
                       }
                     my %crsinfo = &Apache::lonnet::courseiddump($cdom,'.',1,'.','.',                      my %crsinfo = &Apache::lonnet::courseiddump($cdom,'.',1,'.','.',
                                                                 $cnum,undef,undef,'.');                                                                  $cnum,undef,undef,'.');
                     if (ref($crsinfo{$env{'form.pickedcourse'}}) eq 'HASH') {                      if (ref($crsinfo{$env{'form.pickedcourse'}}) eq 'HASH') {
Line 1614  sub course_settings_descrip { Line 1830  sub course_settings_descrip {
     my %longtype;      my %longtype;
     if ($type eq 'Community') {      if ($type eq 'Community') {
          %longtype = &Apache::lonlocal::texthash(           %longtype = &Apache::lonlocal::texthash(
                       'courseowner' => "Username:domain of community owner",                        'courseowner'      => "Username:domain of community owner",
                       'co-owners'   => "Username:domain of each co-owner",                        'co-owners'        => "Username:domain of each co-owner",
                         'selfenrollmgrdc'  => "Community-specific self-enrollment configuration by Domain Coordinator",
                         'selfenrollmgrcc'  => "Community-specific self-enrollment configuration by Community personnel",
          );           );
     } else {      } else {
          %longtype = &Apache::lonlocal::texthash(           %longtype = &Apache::lonlocal::texthash(
Line 1633  sub course_settings_descrip { Line 1851  sub course_settings_descrip {
                       'notifylist' => 'Course Coordinators to be notified of enrollment changes',                        'notifylist' => 'Course Coordinators to be notified of enrollment changes',
                       'sectionnums' => 'Course section number:LON-CAPA section',                        'sectionnums' => 'Course section number:LON-CAPA section',
                       'crosslistings' => 'Crosslisted class:LON-CAPA section',                        'crosslistings' => 'Crosslisted class:LON-CAPA section',
                       'defaultcredits' => 'Credits',                         'defaultcredits' => 'Credits',
                         'selfenrollmgrdc'  => "Course-specific self-enrollment configuration by Domain Coordinator",
                         'selfenrollmgrcc'  => "Course-specific self-enrollment configuration by Course personnel",
   
          );           );
     }      }
     return %longtype;      return %longtype;
Line 1644  sub hidden_form_elements { Line 1865  sub hidden_form_elements {
       &Apache::lonhtmlcommon::echo_form_input(['gosearch','updater','coursecode',        &Apache::lonhtmlcommon::echo_form_input(['gosearch','updater','coursecode',
           'prevphase','numlocalcc','courseowner','login','coursequota','intarg',            'prevphase','numlocalcc','courseowner','login','coursequota','intarg',
           'locarg','krbarg','krbver','counter','hidefromcat','usecategory',            'locarg','krbarg','krbver','counter','hidefromcat','usecategory',
           'threshold','defaultcredits','uploadquota'])."\n".            'threshold','defaultcredits','uploadquota','selfenrollmgrdc','selfenrollmgrcc',
             'action','state','currsec_st','sections','newsec'],['^selfenrollmgr_'])."\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 1664  sub handler { Line 1886  sub handler {
         $r->send_http_header;          $r->send_http_header;
         return OK;          return OK;
     }      }
   
     my $dom = $env{'request.role.domain'};      my $dom = $env{'request.role.domain'};
     my $domdesc = &Apache::lonnet::domain($dom,'description');      my $domdesc = &Apache::lonnet::domain($dom,'description');
   
     if (&Apache::lonnet::allowed('ccc',$dom)) {      if (&Apache::lonnet::allowed('ccc',$dom)) {
         &Apache::loncommon::content_type($r,'text/html');          &Apache::loncommon::content_type($r,'text/html');
         $r->send_http_header;          $r->send_http_header;
Line 1786  sub handler { Line 2010  sub handler {
                             ({href=>"javascript:changePage(document.$phase,'$phase')",                              ({href=>"javascript:changePage(document.$phase,'$phase')",
                               text=>"Result"});                                text=>"Result"});
                             &modify_catsettings($r,$cdom,$cnum,$cdesc,$domdesc,$type);                              &modify_catsettings($r,$cdom,$cnum,$cdesc,$domdesc,$type);
                           } elsif ($phase eq 'selfenroll') {
                               &Apache::lonhtmlcommon::add_breadcrumb
                               ({href => "javascript:changePage(document.$phase,'$phase')",
                                 text => "Self-enrollment settings"});
                               if (!exists($env{'form.state'})) {
                                   &print_selfenrollconfig($r,$type,$cdesc,$coursehash);
                               } elsif ($env{'form.state'} eq 'done') {
                                   &Apache::lonhtmlcommon::add_breadcrumb 
                                   ({href=>"javascript:changePage(document.$phase,'$phase')",
                                     text=>"Result"});
                                   &modify_selfenrollconfig($r,$type,$cdesc,$coursehash);
                               }
                         }                          }
                     }                      }
                 } else {                  } else {
                     $r->print('<span class="LC_error">');                      $r->print('<span class="LC_error">');
                     if ($type eq 'Community') {                      if ($type eq 'Community') {
                         $r->print(&mt('The course you selected is not a valid course in this domain'));  
                     } else {  
                         $r->print(&mt('The community you selected is not a valid community in this domain'));                          $r->print(&mt('The community you selected is not a valid community in this domain'));
                       } else {
                           $r->print(&mt('The course you selected is not a valid course in this domain'));
                     }                      }
                     $r->print(" ($domdesc)</span>");                      $r->print(" ($domdesc)</span>");
                 }                  }

Removed from v.1.71  
changed lines
  Added in v.1.72


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