Diff for /loncom/interface/lonconfigsettings.pm between versions 1.29 and 1.41

version 1.29, 2014/04/23 10:11:26 version 1.41, 2018/01/01 01:29:38
Line 36  use Apache::loncommon(); Line 36  use Apache::loncommon();
 use Apache::lonhtmlcommon();  use Apache::lonhtmlcommon();
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::lonparmset();  use Apache::lonparmset();
   use Apache::courseclassifier();
   use LONCAPA qw(:DEFAULT :match); 
   
 sub print_header {  sub print_header {
     my ($r,$phase,$context,$jscript,$container) = @_;      my ($r,$phase,$context,$jscript,$container,$instcode,$dom,$values) = @_;
     my ($pagetitle,$brcrumtitle,$action,$call_category_check,$crstype);      my ($pagetitle,$brcrumtitle,$action,$call_category_check,$instcode_check,
           $crstype,@actions,@code_order);
       if ($phase eq 'display') {
           @actions = &Apache::loncommon::get_env_multiple('form.actions');
       }
     if ($context eq 'domain') {      if ($context eq 'domain') {
         ($pagetitle, $brcrumtitle) = ('View/Modify Domain Settings','View/Modify Domain Settings');          ($pagetitle, $brcrumtitle) = ('View/Modify Domain Settings','View/Modify Domain Settings');
         $action = '/adm/domainprefs';          $action = '/adm/domainprefs';
         if ($phase eq 'display') {          if ($phase eq 'display') {
             my @actions = &Apache::loncommon::get_env_multiple('form.actions');  
             if (grep(/^coursecategories$/,@actions)) {              if (grep(/^coursecategories$/,@actions)) {
                 $call_category_check = qq|                  $call_category_check = qq|
     if (formname == document.display) {      if (formname == document.display) {
Line 63  sub print_header { Line 68  sub print_header {
             ($pagetitle,$brcrumtitle) = ('Course Configuration','Course Configuration');              ($pagetitle,$brcrumtitle) = ('Course Configuration','Course Configuration');
         }          }
         $action = '/adm/courseprefs';          $action = '/adm/courseprefs';
           if ($phase eq 'display') {
               if (grep(/^courseinfo$/,@actions)) {
                   my %codedefaults;
                   &Apache::lonnet::auto_instcode_defaults($env{'request.role.domain'},\%codedefaults,
                                                           \@code_order);
                   if (@code_order) {
                      my $noinstcodestr = &mt('You indicated cloning based on category, but did not select any categories.');
                      &js_escape(\$noinstcodestr);
                      $instcode_check = <<"ENDSCRIPT";
       if (formname == document.display) {
           if (formname.cloners_instcode.length) {
               for (var j=0; j<formname.cloners_instcode.length; j++) {
                   if (formname.cloners_instcode[j].checked) {
                       if (formname.cloners_instcode[j].value == 1) {
                           var codes;
                           if (document.getElementsByClassName) {
                               codes = document.getElementsByClassName('LC_cloners_instcodes');
                           } else {
                               codes = getElementsByClassName(document.body,'LC_cloners_instcodes');
                           }
                           if (codes.length) {
                               var gotcode = 0;
                               for (var i=0; i<codes.length; i++) {
                                   if (codes[i].selectedIndex != 0) {
                                        gotcode = 1; 
                                        break;
                                   }
                               }
                               if (!gotcode) {
                                   for (var k=0; k<formname.cloners_instcode.length; k++) {
                                       if (formname.cloners_instcode[k].value == 0) {
                                           formname.cloners_instcode[k].checked = true;
                                       }
                                   }
                                   toggleCloners(document.display.cloners_instcode);
                                   alert('$noinstcodestr');
                                   return false;
                               }
                           }
                       }
                   }
               }
           }
       }
   
   ENDSCRIPT
                   }
               }
           }
     }      }
     my $alert = &mt('You must select at least one functionality type to display.');      my $alert = &mt('You must select at least one functionality type to display.');
       &js_escape(\$alert);
     my $js = '      my $js = '
 <script type="text/javascript">  <script type="text/javascript">
 // <![CDATA[  // <![CDATA[
Line 91  function changePage(formname,newphase) { Line 146  function changePage(formname,newphase) {
             return;              return;
         }          }
     }      }
     '.$call_category_check.'      '.$instcode_check.$call_category_check.'
     formname.submit();      formname.submit();
 }'."\n";  }'."\n";
     if ($phase eq 'pickactions') {      if ($phase eq 'pickactions') {
Line 120  $jscript Line 175  $jscript
                     'onload' => "setFormElements(document.pickactions);",                      'onload' => "setFormElements(document.pickactions);",
                         );                          );
         $additem = {'add_entries' => \%loaditems,};          $additem = {'add_entries' => \%loaditems,};
       } elsif ($phase eq 'display') {
           if ($context eq 'domain') {
               my $onload;
               if (grep(/^coursedefaults$/,@actions)) {
                   $onload = "toggleDisplay(document.display,'cloneinstcode');".
                             "toggleDisplay(document.display,'credits');".
                             "toggleDisplay(document.display,'studentsubmission');";
               }
               if (grep(/^selfcreation$/,@actions)) {
                   my $prefix = 'cancreate_emailverified';
                   my $customclass = 'LC_selfcreate_email';
                   my $classprefix = 'LC_canmodify_emailusername_';
                   my $optionsprefix = 'LC_options_emailusername_';
                   $onload .= "toggleRows(document.display,'cancreate_email','selfassign','$customclass','$classprefix','$optionsprefix');";
                   my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom);
                   my $hascustom;
                   my ($emailrules,$emailruleorder) = &Apache::lonnet::inst_userrules($dom,'email');
                   if (ref($emailrules) eq 'HASH') {
                       if (keys(%{$emailrules}) > 0) {
                           $hascustom = 'cancreate_emailrule';
                       }
                   }
                   my @posstypes;
                   if (ref($types) eq 'ARRAY') {
                       @posstypes = @{$types};
                       push(@posstypes,'default');
                       foreach my $type (@posstypes) {
                           $onload .= "toggleEmailOptions(document.display,'cancreate_emailoptions','$hascustom',".
                                                                  "'cancreate_emaildomain','$type');";
                       }
                   } else {
                       $onload .= "toggleEmailOptions(document.display,'cancreate_emailoptions','$hascustom',".
                                                          "'cancreate_emaildomain','default');";
                   }
               } 
               if (grep(/^contacts$/,@actions)) {
                   my $customclass = 'LC_helpdesk_override';
                   my $optionsprefix = 'LC_options_helpdesk_';
                   $onload .= "toggleHelpdeskRow(document.display,'overrides','$customclass','$optionsprefix');";
               }
               if (grep(/^lti$/,@actions)) {
                   $onload .= "toggleLTI(document.display,'user','add');".
                              "toggleLTI(document.display,'crs','add');".
                              "toggleLTI(document.display,'sec','add');";
                   if (ref($values) eq 'HASH') {
                       if (ref($values->{'lti'}) eq 'HASH') {
                           my $numlti = scalar(keys(%{$values->{'lti'}}));
                           for (my $i=0; $i<$numlti; $i++) {
                               $onload .= "toggleLTI(document.display,'user','$i');".
                                          "toggleLTI(document.display,'crs','$i');".
                                          "toggleLTI(document.display,'sec','$i');";
                           }
                       }
                   }
               }
               if (grep(/^ltitools$/,@actions)) {
                   $onload .= "toggleLTITools(document.display,'passback','add');".
                              "toggleLTITools(document.display,'roster','add');".
                              "toggleLTITools(document.display,'user','add');";
                   if (ref($values) eq 'HASH') {
                       if (ref($values->{'ltitools'}) eq 'HASH') {
                           my $numltitools = scalar(keys(%{$values->{'ltitools'}}));
                           for (my $i=0; $i<$numltitools; $i++) {
                               $onload .= "toggleLTITools(document.display,'passback','$i');".
                                          "toggleLTITools(document.display,'roster','$i');".
                                          "toggleLTITools(document.display,'user','$i');";
                           }
                       }
                   }
               }
               if ($onload) {
                   my %loaditems = (
                                     'onload' => $onload,
                                   );
                   $additem = {'add_entries' => \%loaditems,};
               }
           } elsif ($context eq 'course') {
               if (grep(/^courseinfo$/,@actions)) {
                   if (@code_order) { 
                       $additem = {
                                      add_entries => {'onload' => "courseSet('','load');toggleCloners(document.display.cloners_instcode);"},
                                  };
                   }
               }
           }
     }      }
     $r->print(&Apache::loncommon::start_page($pagetitle,$js,$additem));      $r->print(&Apache::loncommon::start_page($pagetitle,$js,$additem));
     $r->print(&Apache::lonhtmlcommon::breadcrumbs($brcrumtitle));      $r->print(&Apache::lonhtmlcommon::breadcrumbs($brcrumtitle));
Line 139  $jscript Line 279  $jscript
 }  }
   
 sub print_footer {  sub print_footer {
     my ($r,$phase,$newphase,$button_text,$actions,$container) = @_;      my ($r,$phase,$newphase,$button_text,$actions,$container,$parm_permission) = @_;
     $button_text = &mt($button_text);      $button_text = &mt($button_text);
     $r->print('<input type="hidden" name="phase" value="" />');      $r->print('<input type="hidden" name="phase" value="" />');
     if (defined($env{'form.origin'})) {      if (defined($env{'form.origin'})) {
Line 164  sub print_footer { Line 304  sub print_footer {
         } else {          } else {
             $onclick = '"javascript:changePage(document.'.$phase.','."'$newphase'".')"';              $onclick = '"javascript:changePage(document.'.$phase.','."'$newphase'".')"';
         }          }
         $r->print('<p><input type="button" name="store" value="'.          my $showbutton = 1;
                   $button_text.'" onclick='.$onclick.' /></p>');          if (ref($parm_permission) eq 'HASH') {
               unless (($parm_permission->{'process'}) || ($newphase eq 'display')) {
                   $showbutton = 0;
               }
           }
           if ($showbutton) {
               $r->print('<p><input type="button" name="store" value="'.
                         $button_text.'" onclick='.$onclick.' /></p>');
           } 
     }      }
     if ($phase eq 'process') {      if ($phase eq 'process') {
         $r->print('</form>');          $r->print('</form>');
Line 178  sub print_footer { Line 326  sub print_footer {
 }  }
   
 sub make_changes {  sub make_changes {
     my ($r,$dom,$phase,$context,$prefs_order,$prefs,$values,$confname,$roles,$allitems,$container) = @_;      my ($r,$dom,$phase,$context,$prefs_order,$prefs,$values,$confname,$roles,
           $allitems,$container,$parm_permission) = @_;
     my %brcrumtext = &get_crumb_text();      my %brcrumtext = &get_crumb_text();
     my @actions = &Apache::loncommon::get_env_multiple('form.actions');      my @actions = &Apache::loncommon::get_env_multiple('form.actions');
     my ($numchanged,%changes,%disallowed);      my ($numchanged,%changes,%disallowed);
Line 242  sub make_changes { Line 391  sub make_changes {
     if ($context eq 'course') {      if ($context eq 'course') {
         $footer_text = 'Back to display/edit settings';           $footer_text = 'Back to display/edit settings'; 
     }      }
     &print_footer($r,$phase,'display',$footer_text,\@actions,$container);      &print_footer($r,$phase,'display',$footer_text,\@actions,$container,$parm_permission);
     $r->print('</p>');      $r->print('</p>');
     return \%lastact;      return \%lastact;
 }  }
   
 sub display_settings {  sub display_settings {
     my ($r,$dom,$phase,$context,$prefs_order,$prefs,$values,$confname,$jscript,      my ($r,$dom,$phase,$context,$prefs_order,$prefs,$values,$confname,$jscript,
         $allitems,$crstype,$container) = @_;          $allitems,$crstype,$container,$parm_permission) = @_;
     my %brcrumtext = &get_crumb_text();      my %brcrumtext = &get_crumb_text();
     my @actions = &Apache::loncommon::get_env_multiple('form.actions');      my @actions = &Apache::loncommon::get_env_multiple('form.actions');
     &Apache::lonhtmlcommon::add_breadcrumb      &Apache::lonhtmlcommon::add_breadcrumb
         ({href=>"javascript:changePage(document.$phase,'display')",          ({href=>"javascript:changePage(document.$phase,'display')",
           text=>"Display/Edit Settings"});            text=>"Display/Edit Settings"});
     &print_header($r,$phase,$context,$jscript,$container);      my $instcode;
       if (ref($values) eq 'HASH') {
           $instcode = $values->{'internal.coursecode'};
       }
       &print_header($r,$phase,$context,$jscript,$container,$instcode,$dom,$values);
     my $divwidth = 900;      my $divwidth = 900;
     if ((ref($prefs_order) eq 'ARRAY') && (ref($prefs) eq 'HASH') && (ref($values) eq 'HASH')) {       if ((ref($prefs_order) eq 'ARRAY') && (ref($prefs) eq 'HASH') && (ref($values) eq 'HASH')) { 
         if (@actions > 0) {          if (@actions > 0) {
             my $rowsum = 0;              my $rowsum = 0;
             my (%output,%rowtotal,@items);              my (%output,%rowtotal,@items,$got_check_uncheck);
             foreach my $item (@{$prefs_order}) {              foreach my $item (@{$prefs_order}) {
                 if (grep(/^\Q$item\E$/,@actions)) {                  if (grep(/^\Q$item\E$/,@actions)) {
                     push(@items,$item);                      push(@items,$item);
Line 269  sub display_settings { Line 422  sub display_settings {
                         if (ref($values) eq 'HASH') {                           if (ref($values) eq 'HASH') { 
                             $settings = $values->{$item};                              $settings = $values->{$item};
                         }                          }
                         if ($item eq 'usersessions') {                          if (($item eq 'usersessions') || ($item eq 'ssl')) {
                             $r->print('<script type="text/javascript">'."\n".                              unless ($got_check_uncheck) {
                                       '// <![CDATA['."\n".                                  $r->print('<script type="text/javascript">'."\n".
                                       &Apache::loncommon::check_uncheck_jscript()."\n".                                            '// <![CDATA['."\n".
                                       '// ]]>'."\n".                                            &Apache::loncommon::check_uncheck_jscript()."\n".
                                       '</script>'."\n");                                            '// ]]>'."\n".
                                             '</script>'."\n");
                                   $got_check_uncheck = 1;
                               }
                         } elsif ($item eq 'selfcreation') {                          } elsif ($item eq 'selfcreation') {
                             if (ref($values) eq 'HASH') {                              if (ref($values) eq 'HASH') {
                                 $settings = $values->{'usercreation'};                                  $settings = $values->{'usercreation'};
Line 306  sub display_settings { Line 462  sub display_settings {
                     } else {                      } else {
                         ($output{$item},$rowtotal{$item}) =                          ($output{$item},$rowtotal{$item}) =
                             &Apache::courseprefs::print_config_box($r,$dom,$phase,                              &Apache::courseprefs::print_config_box($r,$dom,$phase,
                                 $item,$prefs->{$item},$values,$allitems,$crstype);                                  $item,$prefs->{$item},$values,$allitems,$crstype,$parm_permission);
                     }                      }
                     $rowsum += $rowtotal{$item};                      $rowsum += $rowtotal{$item};
                 }                  }
Line 316  sub display_settings { Line 472  sub display_settings {
                 $r->print($output{$items[$i]});                  $r->print($output{$items[$i]});
             }              }
             $r->print('</div>');              $r->print('</div>');
             $r->print(&print_footer($r,$phase,'process','Save Changes',\@actions,$container));              $r->print(&print_footer($r,$phase,'process','Save Changes',\@actions,$container,$parm_permission));
         } else {          } else {
             $r->print('<input type="hidden" name="phase" value="" />'.              $r->print('<input type="hidden" name="phase" value="" />'.
                       '<span class="LC_error">'.&mt('No settings chosen').                        '<span class="LC_error">'.&mt('No settings chosen').
Line 332  sub display_settings { Line 488  sub display_settings {
 }  }
   
 sub display_choices {  sub display_choices {
     my ($r,$phase,$context,$prefs_order,$prefs,$container) = @_;      my ($r,$phase,$context,$prefs_order,$prefs,$container,$parm_permission) = @_;
     if ($phase eq '') {      if ($phase eq '') {
         $phase = 'pickactions';          $phase = 'pickactions';
     }      }
Line 343  sub display_choices { Line 499  sub display_choices {
               &Apache::loncommon::check_uncheck_jscript()."\n".                &Apache::loncommon::check_uncheck_jscript()."\n".
               '// ]]>'."\n".                '// ]]>'."\n".
               '</script>'."\n");                '</script>'."\n");
     $r->print('<h3>'.&mt('Settings to display/modify').'</h3>'.      my $heading = &mt('Settings to display/modify');
       if (ref($parm_permission) eq 'HASH') {
           unless ($parm_permission->{'process'}) {
               $heading = &mt('Settings to display');
           }
       }
       $r->print('<h3>'.$heading.'</h3>'.
               '<div><input type="button" value="'.&mt('check all').'" '.                '<div><input type="button" value="'.&mt('check all').'" '.
               'onclick="javascript:checkAll(document.pickactions.actions)"'.                'onclick="javascript:checkAll(document.pickactions.actions)"'.
               ' />'.('&nbsp;'x2).                ' />'.('&nbsp;'x2).
Line 381  sub display_choices { Line 543  sub display_choices {
         }          }
         $r->print('</div><br clear="all" />');          $r->print('</div><br clear="all" />');
     }      }
     $r->print(&print_footer($r,$phase,'display','Display',undef,$container));      $r->print(&print_footer($r,$phase,'display','Display',undef,$container,$parm_permission));
     $r->print('</form>');      $r->print('</form>');
     if ($container) {      if ($container) {
         &Apache::lonparmset::endSettingsScreen($r);          &Apache::lonparmset::endSettingsScreen($r);

Removed from v.1.29  
changed lines
  Added in v.1.41


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.