Diff for /loncom/interface/lonmodifycourse.pm between versions 1.35 and 1.38

version 1.35, 2007/12/05 02:55:40 version 1.38, 2008/06/30 01:28:56
Line 33  use Apache::lonnet; Line 33  use Apache::lonnet;
 use Apache::loncommon;  use Apache::loncommon;
 use Apache::lonhtmlcommon;  use Apache::lonhtmlcommon;
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::londropadd;  use Apache::lonuserutils;
 use Apache::lonpickcourse;  use Apache::lonpickcourse;
 use LONCAPA::Enrollment;  use LONCAPA::Enrollment;
 use lib '/home/httpd/lib/perl';  use lib '/home/httpd/lib/perl';
Line 43  sub get_dc_settable { Line 43  sub get_dc_settable {
     return ('courseowner','coursecode','authtype','autharg');      return ('courseowner','coursecode','authtype','autharg');
 }  }
   
   sub catalog_settable {
       my ($confhash) = @_;
       my @settable;
       if (ref($confhash) eq 'HASH') {
           if ($confhash->{'togglecats'} ne 'crs') {
               push(@settable,'togglecats');
           }
           if ($confhash->{'categorize'} ne 'crs') {
               push(@settable,'categorize');
           }
       } else {
           push(@settable,('togglecats','categorize'));
       }
       return @settable;
   }
   
 sub get_enrollment_settings {  sub get_enrollment_settings {
     my ($cdom,$cnum) = @_;      my ($cdom,$cnum) = @_;
     my %settings = &Apache::lonnet::dump('environment',$cdom,$cnum);      my %settings = &Apache::lonnet::dump('environment',$cdom,$cnum);
Line 108  sub print_course_search_page { Line 124  sub print_course_search_page {
     my $action = '/adm/modifycourse';      my $action = '/adm/modifycourse';
     my $cctitle = &Apache::lonnet::plaintext('cc',$type);      my $cctitle = &Apache::lonnet::plaintext('cc',$type);
     my $dctitle = &Apache::lonnet::plaintext('dc');      my $dctitle = &Apache::lonnet::plaintext('dc');
     my %lt=&Apache::lonlocal::texthash(      $r->print(
                     'some' => "Certain settings which control auto-enrollment of students from your institution's student information system.",          '<h3>'.&mt('Search for a course in the [_1] domain',$domdesc).'</h3>'.
                     'crqo' => 'The total disk space allocated for storage of portfolio files in all groups in a course.',          &mt('Actions available after selecting a course:').'<ul>'.  
                     'tmod' => 'To view or modify these settings use the criteria below to select a course from this domain.',          '<li>'.&mt('Enter the course with the role of [_1]',$cctitle).'</li>'."\n".
     );          '<li>'.&mt('View or modify course settings which only a [_1] may modify.'
     $r->print('<h3>'.                    ,$dctitle).'</li>'."\n".'</ul>');
               &mt('Course settings which only a [_1] may modify.'  
                   ,$dctitle).'</h3>'.  
               &mt('Although almost all course settings can be modified by a [_1], a number of settings exist which only a [_2] may change:',$cctitle,$dctitle).'  
 <ul>  
   <li>'.$lt{'some'}.'</li>  
   <li>'.$lt{'crqo'}.'</li>  
 </ul>'.  
 $lt{'tmod'}.' ('.$domdesc.')  
 <br /><br />  
     ');  
     $r->print(&Apache::lonpickcourse::build_filters($filterlist,$type,      $r->print(&Apache::lonpickcourse::build_filters($filterlist,$type,
                              undef,undef,$filter,$action,'modifycourse'));                               undef,undef,$filter,$action,'modifycourse'));
 }  }
Line 149  sub print_course_selection_page { Line 155  sub print_course_selection_page {
     $filter{'domainfilter'} = $dom;      $filter{'domainfilter'} = $dom;
     my %courses = &Apache::lonpickcourse::search_courses($r,$type,0,      my %courses = &Apache::lonpickcourse::search_courses($r,$type,0,
                                                          \%filter);                                                           \%filter);
     if (keys(%courses) > 0) {  
         $r->print(&mt("Click a 'Select' button to view or modify settings for a [_1] which may only be modified by a [_2] in this domain.",lc($type),$dctitle).'<br /><br />');  
     }  
   
     &Apache::lonpickcourse::display_matched_courses($r,$type,0,$action,      &Apache::lonpickcourse::display_matched_courses($r,$type,0,$action,
                                                     %courses);                                                      %courses);
     return;      return;
 }  }
   
 sub print_modification_menu {  sub print_modification_menu {
     my ($r,$cdesc) = @_;      my ($r,$cdesc,$domdesc,$dom) = @_;
     &print_header($r,$cdesc);      &print_header($r,$cdesc);
       my $type = 'Course';
       my $action = '/adm/modifycourse';
       my $cctitle = &Apache::lonnet::plaintext('cc',$type);
       my $dctitle = &Apache::lonnet::plaintext('dc');
       my %lt=&Apache::lonlocal::texthash(
                       'some' => "Certain settings which control auto-enrollment of students from your institution's student information system.",
                       'crqo' => 'The total disk space allocated for storage of portfolio files in all groups in a course.',
       );
     my @menu =      my @menu =
         (          (
           { text  => 'Modify quota for group portfolio files',            { text  => 'Modify quota for group portfolio files',
Line 171  sub print_modification_menu { Line 181  sub print_modification_menu {
             },              },
           { text => 'Modify institutional code, course owner and/or default authentication',            { text => 'Modify institutional code, course owner and/or default authentication',
             phase => 'setparms',              phase => 'setparms',
             }            },
          );           );
       my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$dom);
       my @additional_params = &catalog_settable($domconf{'coursecategories'});
       if (@additional_params > 0) {
           push (@menu, { text => 'Modify course catalog settings for course',
                          phase => 'catsettings',
                        });
       }
     my $menu_html = '<h3>'.&mt('View/Modify settings for: ').$cdesc.'</h3>'."\n".      my $menu_html = '<h3>'.&mt('View/Modify settings for: ').$cdesc.'</h3>'."\n".
                     '<form name="menu" method="post" action="/adm/modifycourse" />'."\n".                &mt('Although almost all course settings can be modified by a [_1], a number of settings exist which only a [_2] may change:',$cctitle,$dctitle).'
                      &hidden_form_elements();  <ul>
     <li>'.$lt{'some'}.'</li>
     <li>'.$lt{'crqo'}.'</li>'."\n";
       foreach my $item (@additional_params) {
           if ($item eq 'togglecats') {
               $menu_html .= '  <li>'.&mt('Hiding a course from the course catalog (can be [_1]configured[_2] to be modifiable in course context)','<a href="/adm/domainprefs?actions=coursecategories&phase=display">','</a>').'</li>'."\n";
           } elsif ($item eq 'categorize') {
               $menu_html .= '  <li>'.&mt('Manual cataloging of a course (can be [_1]configured[_2] to be modifiable in course context)','<a href="/adm/domainprefs?actions=coursecategories&phase=display">','</a>').'</li>'."\n";
   
           }
       }
       $menu_html .= ' </ul>
   <form name="menu" method="post" action="'.$action.'" />'."\n".
       &hidden_form_elements();
   
     foreach my $menu_item (@menu) {      foreach my $menu_item (@menu) {
         $menu_html.='<p>';          $menu_html.='<p>';
         $menu_html.='<font size="+1">';          $menu_html.='<font size="+1">';
Line 189  sub print_modification_menu { Line 220  sub print_modification_menu {
     return;      return;
 }  }
   
   sub print_ccrole_selected {
       my ($r,$cdesc,$domdesc) = @_;
       &print_header($r);
       my ($cdom,$cnum) = split(/_/,$env{'form.pickedcourse'});
       $r->print('<form name="ccrole" method="post" action="/adm/roles">
   <input type="hidden" name="selectrole" value="1" />
   <input type="hidden" name="newrole" value="cc./'.$cdom.'/'.$cnum.'" />
   </form>');
   }
   
 sub print_settings_display {  sub print_settings_display {
     my ($r,$cdom,$cnum,$cdesc,$type) = @_;      my ($r,$cdom,$cnum,$cdesc,$type) = @_;
     my %enrollvar = &get_enrollment_settings($cdom,$cnum);      my %enrollvar = &get_enrollment_settings($cdom,$cnum);
Line 239  sub print_settings_display { Line 280  sub print_settings_display {
 </p><p>  </p><p>
 <a href="javascript:changePage(document.viewparms,'."'menu'".')">'.$lt{'back'}.'</a>&nbsp;&nbsp;&nbsp;&nbsp;  <a href="javascript:changePage(document.viewparms,'."'menu'".')">'.$lt{'back'}.'</a>&nbsp;&nbsp;&nbsp;&nbsp;
 <a href="javascript:changePage(document.viewparms,'."'setparms'".')">'.&mt('Modify [_1]-only settings',$dctitle).'</a>'."\n".  <a href="javascript:changePage(document.viewparms,'."'setparms'".')">'.&mt('Modify [_1]-only settings',$dctitle).'</a>'."\n".
 &hidden_form_elements().      &hidden_form_elements().
 '</form>');  '</form>');
 }  }
   
Line 279  ENDDOCUMENT Line 320  ENDDOCUMENT
     return;      return;
 }  }
   
   sub print_catsettings {
       my ($r,$cdom,$cnum,$cdesc) = @_;
       &print_header($r,$cdesc);
       my %lt = &Apache::lonlocal::texthash(
                                            'back' => 'Back to options page',
                                           );
       $r->print('<form action="/adm/modifycourse" method="post" name="catsettings">'.
                 '<h3>'.&mt('Catalog Settings for Course').'</h3>');
       my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$cdom);
       my @cat_params = &catalog_settable($domconf{'coursecategories'});
       if (@cat_params > 0) {
           my %currsettings = 
               &Apache::lonnet::get('environment',['hidefromcat','categories'],$cdom,$cnum);
           if (grep(/^togglecats$/,@cat_params)) {
               my $excludeon = '';
               my $excludeoff = ' checked="checked" ';
               if ($currsettings{'hidefromcat'} eq 'yes') {
                   $excludeon = $excludeoff;
                   $excludeoff = ''; 
               }
               $r->print('<h4>'.&mt('Visibility in Course Catalog').'</h4>'.
                         &mt("Unless excluded, a course is listed in this domain's publicly accessible course catalog if at least of one the following applies").':<ul>'.
                         '<li>'.&mt('Auto-cataloging is enabled and the course is assigned an institutional code').'</li>'.
                         '<li>'.&mt('The course has been categorized into at least one of the course categories defined for the domain.').'</li></ul>'.
                         '<br />'.&mt('Exclude from course catalog').'&nbsp;<label><input name="hidefromcat" type="radio" value="yes" '.$excludeon.' />'.&mt('Yes').'</label>&nbsp;&nbsp;&nbsp;<label><input name="hidefromcat" type="radio" value="" '.$excludeoff.' />'.&mt('No').'</label><br />'); 
           }
           if (grep(/^categorize$/,@cat_params)) {
               $r->print('<h4>'.&mt('Categorize Course').'</h4>');
               if (ref($domconf{'coursecategories'}) eq 'HASH') {
                   my $cathash = $domconf{'coursecategories'}{'cats'};
                   if (ref($cathash) eq 'HASH') {
                       $r->print(&mt('Assign one or more categories to this course.').'<br /><br />'.
                                 &Apache::loncommon::assign_categories_table($cathash,
                                                        $currsettings{'categories'}));
                   } else {
                       $r->print(&mt('No categories defined for this domain'));
                   }
               } else {
                   $r->print(&mt('No categories defined for this domain'));
               }
               $r->print('<p>'.&mt('If auto-cataloging based on institutional code is enabled in the domain, a course will continue to be listed in the catalog of official courses, in addition to receiving a listing under any manually assigned categor(ies).').'</p>');
           }
           $r->print('<input type="button" name="chgcatsettings" value="'.
                     &mt('Save').'" onclick="javascript:changePage(document.catsettings,'."'processcat'".');" />');
       } else {
           $r->print('<span class="LC_warning">'.&mt('Catalog settings in this domain are set in course context via "Set Course Environment".').'</span><br /><br />'."\n".
                     '<a href="javascript:changePage(document.catsettings,'."'menu'".');">'.
                     $lt{'back'}.'</a>');
       }
       $r->print(&hidden_form_elements().'</form>'."\n");
       return;
   }
   
 sub print_course_modification_page {  sub print_course_modification_page {
     my ($r,$cdom,$cnum,$cdesc,$domdesc) = @_;      my ($r,$cdom,$cnum,$cdesc,$domdesc) = @_;
     my %longtype = &course_settings_descrip();      my %longtype = &course_settings_descrip();
Line 369  all settings except course code, course Line 463  all settings except course code, course
     unless ($curr_authtype eq '') {      unless ($curr_authtype eq '') {
         $curr_authfield = $curr_authtype.'arg';          $curr_authfield = $curr_authtype.'arg';
     }      }
     my $javascript_validations=&Apache::londropadd::javascript_validations('modifycourse',$krbdefdom,$curr_authtype,$curr_authfield);      my $javascript_validations=&Apache::lonuserutils::javascript_validations('modifycourse',$krbdefdom,$curr_authtype,$curr_authfield);
     my %param = ( formname => 'document.'.$env{'form.phase'},      my %param = ( formname => 'document.'.$env{'form.phase'},
    kerb_def_dom => $krbdefdom,     kerb_def_dom => $krbdefdom,
    kerb_def_auth => $krbdef,     kerb_def_auth => $krbdef,
Line 498  sub modify_course { Line 592  sub modify_course {
     my @nochanges = ();      my @nochanges = ();
     my @sections = ();      my @sections = ();
     my @xlists = ();      my @xlists = ();
     my $changecode = 0;      my %changed = ( code       => 0,
     my $changeowner = 0;                      owner      => 0,
                     );
     unless ($settings{'internal.sectionnums'} eq '') {      unless ($settings{'internal.sectionnums'} eq '') {
         if ($settings{'internal.sectionnums'} =~ m/,/) {          if ($settings{'internal.sectionnums'} =~ m/,/) {
             @sections = split/,/,$settings{'internal.sectionnums'};              @sections = split/,/,$settings{'internal.sectionnums'};
Line 522  sub modify_course { Line 617  sub modify_course {
     }      }
   
     my $description = $settings{'description'};      my $description = $settings{'description'};
     my %cenv = ();  
   
     if ($env{'form.login'} eq 'krb') {      if ($env{'form.login'} eq 'krb') {
         $newattr{'authtype'} = $env{'form.login'};          $newattr{'authtype'} = $env{'form.login'};
Line 549  sub modify_course { Line 643  sub modify_course {
     if ( exists($env{'form.courseowner'}) ) {      if ( exists($env{'form.courseowner'}) ) {
         $newattr{'courseowner'}=$env{'form.courseowner'};          $newattr{'courseowner'}=$env{'form.courseowner'};
         unless ( $newattr{'courseowner'} eq $currattr{'courseowner'} ) {          unless ( $newattr{'courseowner'} eq $currattr{'courseowner'} ) {
             $changeowner = 1;              $changed{'owner'} = 1;
         }           } 
     }      }
               
     if ( exists($env{'form.coursecode'}) ) {      if ( exists($env{'form.coursecode'}) ) {
         $newattr{'coursecode'}=$env{'form.coursecode'};          $newattr{'coursecode'}=$env{'form.coursecode'};
         unless ( $newattr{'coursecode'} eq $currattr{'coursecode'} ) {          unless ( $newattr{'coursecode'} eq $currattr{'coursecode'} ) {
             $changecode = 1;              $changed{'code'} = 1;
         }          }
     }      }
     if ($changeowner == 1 || $changecode == 1) {      if ($changed{'owner'} || $changed{'code'}) { 
         my $courseid_entry = &escape($cdom.'_'.$cnum).'='.&escape($description).':'.&escape($env{'form.coursecode'}).':'.&escape($env{'form.courseowner'}).':'.&escape($type);          my %crsinfo = &Apache::lonnet::courseiddump($cdom,'.',1,'.','.',$cnum,
         my %courseid_entry = (                                                      undef,undef,'.');
              $cdom.'_'.$cnum => {          if (ref($crsinfo{$env{'form.pickedcourse'}}) eq 'HASH') {
                                 description => $description,              $crsinfo{$env{'form.pickedcourse'}}{'inst_code'} = $env{'form.coursecode'};
                                 inst_code   => $env{'form.coursecode'},              $crsinfo{$env{'form.pickedcourse'}}{'owner'} = $env{'form.courseowner'};
                                 owner       => $env{'form.courseowner'},              my $chome = &Apache::lonnet::homeserver($cnum,$cdom);
                                 type        => $type,              my $putres = &Apache::lonnet::courseidput($cdom,\%crsinfo,$chome,'notime');
                                },          }
         );  
         &Apache::lonnet::courseidput($cdom,\%courseid_entry,  
                                      &Apache::lonnet::homeserver($cnum,$cdom),'notime');  
     }      }
     foreach my $param (@modifiable_params) {      foreach my $param (@modifiable_params) {
         if ($currattr{$param} eq $newattr{$param}) {          if ($currattr{$param} eq $newattr{$param}) {
Line 599  sub modify_course { Line 690  sub modify_course {
             $nochgresponse .= "<li>$longtype{$attr} ".&mt("still set to \"").$currattr{$attr}."\".</li>";              $nochgresponse .= "<li>$longtype{$attr} ".&mt("still set to \"").$currattr{$attr}."\".</li>";
                 }                  }
             }              }
             if ($changecode || $changeowner) {              if ($changed{'code'} || $changed{'owner'}) {
                 if ( $newattr{'courseowner'} eq '') {                  if ( $newattr{'courseowner'} eq '') {
             $warning .= &mt("There is no owner associated with this LON-CAPA course.  If automated enrollment in LON-CAPA courses at your institution requires validation of course owners, automated enrollment will fail for this course.<br/>");              $warning .= &mt("There is no owner associated with this LON-CAPA course.  If automated enrollment in LON-CAPA courses at your institution requires validation of course owners, automated enrollment will fail for this course.<br/>");
                 } else {                  } else {
             if (@sections > 0) {              if (@sections > 0) {
                         if ($changecode) {                          if ($changed{'code'}) {
                     foreach my $sec (@sections) {                      foreach my $sec (@sections) {
                 if ($sec =~ m/^(.+):/) {                  if ($sec =~ m/^(.+):/) {
                     my $inst_course_id = $newattr{'coursecode'}.$1;                      my $inst_course_id = $newattr{'coursecode'}.$1;
Line 621  sub modify_course { Line 712  sub modify_course {
             $warning .= &mt("If automatic enrollment is enabled for LON-CAPA course: ").$description.&mt(", automated enrollment may fail for ").$newattr{'coursecode'}.&mt(" - section $sec because this is not a valid section entry.<br/>");              $warning .= &mt("If automatic enrollment is enabled for LON-CAPA course: ").$description.&mt(", automated enrollment may fail for ").$newattr{'coursecode'}.&mt(" - section $sec because this is not a valid section entry.<br/>");
                 }                  }
             }              }
                 } elsif ($changeowner) {                  } elsif ($changed{'owner'}) {
                             foreach my $sec (@sections) {                              foreach my $sec (@sections) {
                                 if ($sec =~ m/^(.+):/) {                                  if ($sec =~ m/^(.+):/) {
                                     my $inst_course_id = $newattr{'coursecode'}.$1;                                      my $inst_course_id = $newattr{'coursecode'}.$1;
Line 637  sub modify_course { Line 728  sub modify_course {
             } else {              } else {
                 $warning .= &mt("As no section numbers are currently listed for LON-CAPA course: ").$description.&mt(", automated enrollment will not occur for any sections of coursecode: ").$newattr{'coursecode'}."<br/>";                  $warning .= &mt("As no section numbers are currently listed for LON-CAPA course: ").$description.&mt(", automated enrollment will not occur for any sections of coursecode: ").$newattr{'coursecode'}."<br/>";
             }              }
             if ( (@xlists > 0) && ($changeowner) ) {              if ( (@xlists > 0) && ($changed{'owner'}) ) {
                 foreach my $xlist (@xlists) {                  foreach my $xlist (@xlists) {
             if ($xlist =~ m/^(.+):/) {              if ($xlist =~ m/^(.+):/) {
                                 my $outcome = &Apache::lonnet::auto_new_course($cnum,$cdom,$1,$newattr{'courseowner'});                                  my $outcome = &Apache::lonnet::auto_new_course($cnum,$cdom,$1,$newattr{'courseowner'});
Line 740  sub modify_quota { Line 831  sub modify_quota {
     return;      return;
 }  }
   
   sub modify_catsettings {
       my ($r,$cdom,$cnum,$cdesc,$domdesc) = @_;
       &print_header($r,$cdesc);
       my %lt = &Apache::lonlocal::texthash(
                                            'back' => 'Back to options page',
                                           );
       my %desc = &Apache::lonlocal::texthash(
                                              'hidefromcat' => 'Excluded from course catalog',
                                              'categories' => 'Assigned categories for this course',
                                             );
       $r->print('
   <form action="/adm/modifycourse" method="post" name="processcat">
   <h3>'.&mt('Category settings').'</h3>');
       my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$cdom);
       my @cat_params = &catalog_settable($domconf{'coursecategories'});
       if (@cat_params > 0) {
           my (%cenv,@changes,@nochanges);
           my %currsettings =
               &Apache::lonnet::get('environment',['hidefromcat','categories'],$cdom,$cnum);
           my (@newcategories,%showitem); 
           if (grep(/^togglecats$/,@cat_params)) {
               if ($currsettings{'hidefromcat'} ne $env{'form.hidefromcat'}) {
                   push(@changes,'hidefromcat');
                   $cenv{'hidefromcat'} = $env{'form.hidefromcat'};
               } else {
                   push(@nochanges,'hidefromcat');
               }
               if ($env{'form.hidefromcat'} eq 'yes') {
                   $showitem{'hidefromcat'} = '"'.&mt('Yes')."'";
               } else {
                   $showitem{'hidefromcat'} = '"'.&mt('No').'"';
               }
           }
           if (grep(/^categorize$/,@cat_params)) {
               my (@cats,@trails,%allitems,%idx,@jsarray);
               if (ref($domconf{'coursecategories'}) eq 'HASH') {
                   my $cathash = $domconf{'coursecategories'}{'cats'};
                   if (ref($cathash) eq 'HASH') {
                       &Apache::loncommon::extract_categories($cathash,\@cats,\@trails,
                                                              \%allitems,\%idx,\@jsarray);
                   }
               }
               @newcategories =  &Apache::loncommon::get_env_multiple('form.usecategory');
               if (@newcategories == 0) {
                   $showitem{'categories'} = '"'.&mt('None').'"';
               } else {
                   $showitem{'categories'} = '<ul>';
                   foreach my $item (@newcategories) {
                       $showitem{'categories'} .= '<li>'.$trails[$allitems{$item}].'</li>';
                   }
                   $showitem{'categories'} .= '</ul>';
               }
               my $catchg = 0;
               if ($currsettings{'categories'} ne '') {
                   my @currcategories = split('&',$currsettings{'categories'});
                   foreach my $cat (@currcategories) {
                       if (!grep(/^\Q$cat\E$/,@newcategories)) {
                           $catchg = 1;
                           last;
                       }
                   }
                   if (!$catchg) {
                       foreach my $cat (@newcategories) {
                           if (!grep(/^\Q$cat\E$/,@currcategories)) {
                               $catchg = 1;
                               last;                     
                           } 
                       } 
                   }
               } else {
                   if (@newcategories > 0) {
                       $catchg = 1;
                   }
               }
               if ($catchg) {
                   $cenv{'categories'} = join('&',@newcategories);
                   push(@changes,'categories');
               } else {
                   push(@nochanges,'categories');
               }
               if (@changes > 0) {
                   my $putreply = &Apache::lonnet::put('environment',\%cenv,$cdom,$cnum);
                   if ($putreply eq 'ok') {
                       my %crsinfo = &Apache::lonnet::courseiddump($cdom,'.',1,'.','.',
                                                                   $cnum,undef,undef,'.');
                       if (ref($crsinfo{$env{'form.pickedcourse'}}) eq 'HASH') {
                           if (grep(/^hidefromcat$/,@changes)) {
                               $crsinfo{$env{'form.pickedcourse'}}{'hidefromcat'} = $env{'form.hidefromcat'};
                           }
                           if (grep(/^categories$/,@changes)) {
                               $crsinfo{$env{'form.pickedcourse'}}{'categories'} = $cenv{'categories'};
                           }
                           my $chome = &Apache::lonnet::homeserver($cnum,$cdom);
                           my $putres = &Apache::lonnet::courseidput($cdom,\%crsinfo,$chome,'notime');
                       }
                       $r->print(&mt('The following changes occurred').'<ul>');
                       foreach my $item (@changes) {
                           $r->print('<li>'.&mt('[_1] now set to [_2]',$desc{$item},$showitem{$item}).'</li>');
                       }
                       $r->print('</ul><br />');
                   }
               }
               if (@nochanges > 0) {
                   $r->print(&mt('The following were unchanged').'<ul>');
                   foreach my $item (@nochanges) {
                       $r->print('<li>'.&mt('[_1] still set to [_2]',$desc{$item},$showitem{$item}).'</li>');
                   }
                   $r->print('</ul>');
               }
           }
       } else {
           $r->print(&mt('Category settings for courses in this domain should be modified in course context (via "Set Course Environment").').'<br />');
       }
       $r->print('<br />'."\n".
                 '<a href="javascript:changePage(document.processcat,'."'menu'".')">'.
                 $lt{'back'}.'</a>');
       $r->print(&hidden_form_elements().'</form>');
       return;
   }
   
 sub print_header {  sub print_header {
     my ($r,$cdesc,$javascript_validations) = @_;      my ($r,$cdesc,$javascript_validations) = @_;
     my $phase = "start";      my $phase = "start";
Line 788  function verify_quota(formname) { Line 999  function verify_quota(formname) {
 </script>  </script>
 ENDSCRIPT  ENDSCRIPT
     }      }
       my $starthash;
       if ($env{'form.phase'} eq 'ccrole') {
           $starthash = {
              add_entries => {'onload' => "javascript:document.ccrole.submit();"},
                        };
       }
     $r->print(&Apache::loncommon::start_page('View/Modify Course Settings',      $r->print(&Apache::loncommon::start_page('View/Modify Course Settings',
      $js));       $js,$starthash));
     my $bread_text = "View/Modify Courses";      my $bread_text = "View/Modify Courses";
     if ($cdesc ne '') {      if ($cdesc ne '') {
         $bread_text = "Course Settings: $cdesc";           $bread_text = "Course Settings: $cdesc"; 
Line 817  sub check_course { Line 1034  sub check_course {
     if ($cdom eq $dom) {      if ($cdom eq $dom) {
         my $description;          my $description;
         my %courseIDs = &Apache::lonnet::courseiddump($cdom,'.',1,'.','.',          my %courseIDs = &Apache::lonnet::courseiddump($cdom,'.',1,'.','.',
                                            $cnum,undef,undef,'.');                                                        $cnum,undef,undef,'.');
         if (keys(%courseIDs) > 0) {          if (keys(%courseIDs) > 0) {
             $ok_course = 'ok';              $ok_course = 'ok';
             my ($instcode,$owner);              my ($instcode,$owner);
Line 861  sub course_settings_descrip { Line 1078  sub course_settings_descrip {
 sub hidden_form_elements {  sub hidden_form_elements {
     my $hidden_elements =       my $hidden_elements = 
       &Apache::lonhtmlcommon::echo_form_input(['gosearch','coursecode',        &Apache::lonhtmlcommon::echo_form_input(['gosearch','coursecode',
                                                'numlocalcc','courseowner',            'prevphase','numlocalcc','courseowner','login','coursequota','intarg',
                                                'login','coursequota','intarg',                                               'locarg','krbarg','krbver']);            'locarg','krbarg','krbver','counter','hidefromcat','usecategory'])."\n".
             '<input type="hidden" name="prevphase" value="'.$env{'form.phase'}.'" />';
     return $hidden_elements;      return $hidden_elements;
 }  }
   
Line 882  sub handler { Line 1100  sub handler {
         &Apache::lonhtmlcommon::clear_breadcrumbs();          &Apache::lonhtmlcommon::clear_breadcrumbs();
   
         my $phase = $env{'form.phase'};          my $phase = $env{'form.phase'};
         &Apache::lonhtmlcommon::add_breadcrumb          if ($phase eq '') {
               &Apache::lonhtmlcommon::add_breadcrumb
             ({href=>"/adm/modifycourse",              ({href=>"/adm/modifycourse",
               text=>"Course search"});                text=>"Course search"});
         if ($phase eq '') {  
             &print_course_search_page($r,$dom,$domdesc);              &print_course_search_page($r,$dom,$domdesc);
         } else {          } else {
               my $firstform = $phase;
               if ($phase eq 'courselist') {
                   $firstform = 'filterpicker';
               } 
             &Apache::lonhtmlcommon::add_breadcrumb              &Apache::lonhtmlcommon::add_breadcrumb
             ({href=>"javascript:changePage(document.$phase,'courselist')",              ({href=>"javascript:changePage(document.$firstform,'')",
                 text=>"Course search"},
                 {href=>"javascript:changePage(document.$phase,'courselist')",
               text=>"Choose a course"});                text=>"Choose a course"});
             if ($phase eq 'courselist') {              if ($phase eq 'courselist') {
                 &print_course_selection_page($r,$dom,$domdesc);                  &print_course_selection_page($r,$dom,$domdesc);
             } else {              } else {
                 &Apache::lonhtmlcommon::add_breadcrumb  
                 ({href=>"javascript:changePage(document.$phase,'menu')",  
                   text=>"Pick action"});  
                 my ($checked,$cdesc) = &check_course($r,$dom,$domdesc);                  my ($checked,$cdesc) = &check_course($r,$dom,$domdesc);
                 my $type = $env{'form.type'};                  my $type = $env{'form.type'};
                 if ($type eq '') {                  if ($type eq '') {
Line 904  sub handler { Line 1125  sub handler {
                 }                  }
                 if ($checked eq 'ok') {                  if ($checked eq 'ok') {
                     if ($phase eq 'menu') {                      if ($phase eq 'menu') {
                         &print_modification_menu($r,$cdesc);                          &Apache::lonhtmlcommon::add_breadcrumb
                           ({href=>"javascript:changePage(document.$phase,'menu')",
                             text=>"Pick action"});
                           &print_modification_menu($r,$cdesc,$domdesc,$dom);
                       } elsif ($phase eq 'ccrole') {
                           &Apache::lonhtmlcommon::add_breadcrumb
                            ({href=>"javascript:changePage(document.$phase,'ccrole')",
                              text=>"Enter course"});
                           &print_ccrole_selected($r,$cdesc,$domdesc);
                     } else {                      } else {
                           &Apache::lonhtmlcommon::add_breadcrumb
                           ({href=>"javascript:changePage(document.$phase,'menu')",
                             text=>"Pick action"});
                         my ($cdom,$cnum) = split(/_/,$env{'form.pickedcourse'});                          my ($cdom,$cnum) = split(/_/,$env{'form.pickedcourse'});
                         if ($phase eq 'setquota') {                          if ($phase eq 'setquota') {
                             &Apache::lonhtmlcommon::add_breadcrumb                              &Apache::lonhtmlcommon::add_breadcrumb
                             ({href=>"javascript:changePage(document.$phase,'$phase')",                              ({href=>"javascript:changePage(document.$phase,'$phase')",
                               text=>"Set quota"});                                text=>"Set quota"});
                             &print_setquota($r,$cdom,$cnum,$cdesc,$type)                              &print_setquota($r,$cdom,$cnum,$cdesc,$type);
                         } elsif ($phase eq 'processquota') {                           } elsif ($phase eq 'processquota') { 
                             &Apache::lonhtmlcommon::add_breadcrumb                              &Apache::lonhtmlcommon::add_breadcrumb
                             ({href=>"javascript:changePage(document.$phase,'setquota')",                              ({href=>"javascript:changePage(document.$phase,'setquota')",
Line 938  sub handler { Line 1170  sub handler {
                             ({href=>"javascript:changePage(document.$phase,'$phase')",                              ({href=>"javascript:changePage(document.$phase,'$phase')",
                               text=>"Result"});                                text=>"Result"});
                             &modify_course($r,$cdom,$cnum,$cdesc,$domdesc,$type);                              &modify_course($r,$cdom,$cnum,$cdesc,$domdesc,$type);
                           } elsif ($phase eq 'catsettings') {
                               &Apache::lonhtmlcommon::add_breadcrumb
                               ({href=>"javascript:changePage(document.$phase,'$phase')",
                                 text=>"Catalog settings"});
                               &print_catsettings($r,$cdom,$cnum,$cdesc,$type);
                           } elsif ($phase eq 'processcat') {
                               &Apache::lonhtmlcommon::add_breadcrumb
                               ({href=>"javascript:changePage(document.$phase,'catsettings')",
                                 text=>"Catalog settings"});
                               &Apache::lonhtmlcommon::add_breadcrumb
                               ({href=>"javascript:changePage(document.$phase,'$phase')",
                                 text=>"Result"});
                               &modify_catsettings($r,$cdom,$cnum,$cdesc,$domdesc);
                         }                          }
                     }                      }
                 } else {                  } else {

Removed from v.1.35  
changed lines
  Added in v.1.38


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